OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5057|回复: 7

原子哥提供的imxdownload软件的一处bug

[复制链接]

8

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2018-6-10
在线时间
22 小时
发表于 2019-11-24 13:03:35 | 显示全部楼层 |阅读模式
本帖最后由 野指针异常 于 2019-11-24 13:27 编辑

今天看了原子哥的imxdownload.c的源码,我怎么看都觉得怪怪的,不知道是我理解有错
先贴上一部分源码:

        if((argc != 3) && (argc != 4)){
                printf("Error Usage! Reference Below:\r\n");
                printf("sudo ./%s <-512m or -256m> <source_bin> <sd_device>\r\n", argv[0]);
                return -1;
        }

        /* 查找参数,获取DDR容量 */
        for(i = 0; i < argc; i++)
        {
                char *param = argv;
                if(param[0] != '-')
                        continue;
                if(strcmp(param, "-256m") == 0)                 /* 256MB */
                        ddrsize = 1;
                else if(strcmp(param, "-512m") == 0)        /* 512MB */
                        ddrsize = 0;
        }
        if(argc == 3)        /* 三个参数,也就是不输入DDR容量的话默认为512MB */
                ddrsize = 0;



根据打印信息的提示sudo ./%s <-512m or -256m> <source_bin> <sd_device>,可以通过命令的argv[1]选项来选择512M或者256M的DDR来选择不同的头文件信息
例如: sudo ./imxdownload -512m ./led.bin /dev/sdb
但是,从代码的逻辑上看,这样的命令输入,肯定是会报错的
        /// 打开bin文件
        fp = fopen(argv[1], "rb"); /* 以二进制只读方式打开bin文件 */
        if(fp == NULL){
                printf("Can't Open file %s\r\n", argv[1]);
                return -1;
        }

        // 构建烧写的shell命令
        cmdbuf = malloc(SHELLCMD_LEN);
        sprintf(cmdbuf, "sudo dd iflag=dsync oflag=dsync if=load.imx of=%s bs=512 seek=2",argv[2]);       
        printf("Download load.imx to %s  ......\r\n", argv[2]);
       
        // 执行上面的shell命令
        system(cmdbuf);
        free(cmdbuf);


源码后面的  打开二进制文件和创建shell命令时使用到的设备路径,都写死了是以argv[1]和argv[2]作为参数
如果根据printf提示信息输入命令 sudo ./imxdownload -512m ./led.bin /dev/sdb,
那么此时,打开二进制文件和创建shell命令时使用到的设备路径,分别是argv[2]和argv[3]
报错信息如下:
I.MX6ULL bin download software
Edit by:zuozhongkai
Date:2019/6/10
Version:V1.1
log:V1.0 initial version,just support 512MB DDR3
    V1.1 and support 256MB DDR3
Can't Open file -512m



根据上面代码的逻辑分析,如果想正常使用,那么只能是把DDR选项放到最后面,如下:
sudo ./imxdownload ./led.bin /dev/sdb -512m
这样才能顺利通过

或者修改一下源码,也可以修改一下printf的提示信息





正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2018-7-4
在线时间
17 小时
发表于 2019-12-29 18:27:46 | 显示全部楼层
回复 支持 反对

使用道具 举报

26

主题

1538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6379
金钱
6379
注册时间
2015-8-25
在线时间
1004 小时
发表于 2019-12-29 20:11:22 | 显示全部楼层
原子的程序都是以512M DDR的emmc版开发板作为默认,imxdownload使用时应该是默认不输入512M这个参数的
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2015-3-7
在线时间
4 小时
发表于 2020-5-21 21:56:23 | 显示全部楼层
./imxdownload u-boot.bin /dev/sdd -256m
I.MX6UL bin download software
Edit by:zuozhongkai
Date:2018/8/9
Version:V1.0
Error Usage! Reference Below:
sudo ././imxdownload <source_bin> <sd_device>

这个是怎么回事呢
回复 支持 反对

使用道具 举报

9

主题

767

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5274
金钱
5274
注册时间
2019-9-25
在线时间
433 小时
发表于 2020-5-23 18:52:17 | 显示全部楼层
星空ywx 发表于 2020-5-21 21:56
./imxdownload u-boot.bin /dev/sdd -256m
I.MX6UL bin download software
Edit by:zuozhongkai

下载最新的,你这个是v1.0的,好像是不支持加参数
想思考的时候,有时还可以用屁股,QQ 1252699831
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2020-5-29
在线时间
1 小时
发表于 2020-6-1 11:21:36 | 显示全部楼层
茂茂2019 发表于 2020-5-23 18:52
下载最新的,你这个是v1.0的,好像是不支持加参数

请问在哪里下载?
回复 支持 反对

使用道具 举报

9

主题

767

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5274
金钱
5274
注册时间
2019-9-25
在线时间
433 小时
发表于 2020-6-1 11:48:23 | 显示全部楼层
shrong 发表于 2020-6-1 11:21
请问在哪里下载?

就在这个imx6版块,资料总链接http://www.openedv.com/docs/boards/arm-linux/zdyz-i.mx6ull.html
想思考的时候,有时还可以用屁股,QQ 1252699831
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2020-5-29
在线时间
1 小时
发表于 2020-6-1 16:04:22 | 显示全部楼层
茂茂2019 发表于 2020-6-1 11:48
就在这个imx6版块,资料总链接http://www.openedv.com/docs/boards/arm-linux/zdyz-i.mx6ull.html

需要自己编译  imxdownload.c 吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 12:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表