硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2109|回复: 22
收起左侧

[BOOT/IAP] 求助硬汉app和boot合并成一个bin文件问题

  [复制链接]

11

主题

21

回帖

54

积分

初级会员

积分
54
发表于 2022-1-26 10:24:38 | 显示全部楼层 |阅读模式
捕获.PNG
如题,这个小程序输出的文件固定长度是512KB?我的app只有38KB,boot只有12KB,合并后整个文件确是512KB了(我想应该是38KB+12KB=50KB才对呀)
回复

使用道具 举报

11

主题

21

回帖

54

积分

初级会员

积分
54
 楼主| 发表于 2022-1-26 10:26:55 | 显示全部楼层
捕获2.PNG
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2022-1-26 10:35:02 | 显示全部楼层
这个方法要手动指定,不方便,此贴方案简单易用。

使用批处理实现内部flash,外部flash等多个地址hex文件合并,再通过CubeProg同时下载
https://www.armbbs.cn/forum.php? ... 6166&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

0

主题

9

回帖

9

积分

新手上路

积分
9
发表于 2022-1-27 13:44:06 | 显示全部楼层
bin文件不像hex文件有地址扩展,两个bin如果编译地址不连续 中间会填充0    或者说程序里指定flash地址的话,中间没用的地址也会填充0   这就导致了bin非常大,烧写效率低。用hex合并就不会有这个问题
回复

使用道具 举报

77

主题

691

回帖

922

积分

金牌会员

积分
922
发表于 2022-1-27 14:24:54 | 显示全部楼层
你这个应该是命令没写对。使用JFlash合并一下就行。
回复

使用道具 举报

0

主题

13

回帖

13

积分

新手上路

积分
13
发表于 2022-2-14 10:23:21 | 显示全部楼层
回复

使用道具 举报

0

主题

13

回帖

13

积分

新手上路

积分
13
发表于 2022-2-14 10:24:03 | 显示全部楼层
回复

使用道具 举报

335

主题

2038

回帖

3048

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3048
发表于 2022-2-14 13:56:15 | 显示全部楼层
这个方法牛。。。
Snipaste_2022-02-14_13-54-14.jpg
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2022-2-14 14:36:58 | 显示全部楼层
caicaptain2 发表于 2022-2-14 13:56
这个方法牛。。。

这个也是好办法。
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
发表于 2022-2-14 17:08:26 | 显示全部楼层
本帖最后由 brightzeng 于 2022-2-15 08:45 编辑

我以前也是手工删除最后一行来合并,后来觉得太麻烦了。
其实有一个很简单的办法,就是利用J-Flash的合并功能。先打开你的bootloader文件,再用合并功能加载你的app文件,最后保存一下就可以了。
1.png
后来觉得这样也挺麻烦的,其实还可以制作一个批处理文件,让J-Flash自动合并。关于这一点,J-Flash的帮助文档里有介绍方法。
2.png
具体方法如下:
1、在本工程路径下建一个文件夹,自已随便命个名,放入J-Flash的驱动文件和.jflash工程文件。
3.png
2、到jlink的安装路径下找到这三个文件就可以了。
4.png
3、制作一个对应的jflash工程文件,其实主要是要明确使用的芯片型号。
5.png
4、以我上图展示的路径,具体的bat代码如下所示,各位根据各自的路径自行修改,也可以去看一下J-Flash的帮助文档。
@ECHO OFF
ECHO Open a project and data file, startauto processing and exit
ECHO. %换行%
::打开J-Flash工具,加载jflash工程,加载hex文件并指定地址,将合并后的hex另存
::移植此批处理时要注意路径和绝对地址等
tools\jflash\JFlash.exe -openprjtools\jflash_project\stm32f103vc.jflash -openstm32f103_bld\mdk5\release\stm32f1_release.hex,0x8000000 -mergestm32f103_app\mdk5\release\stm32f1_release.hex,0x8002000 -saveasstm32f103vc_iap_app_v1.00_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%.hex -exit
IF ERRORLEVEL 1 goto ERROR
goto END
:ERROR
::成功直接退出,失败则给出提示
ECHO J-Flash ARM:  Error!
pause
:END



回复

使用道具 举报

0

主题

13

回帖

13

积分

新手上路

积分
13
发表于 2022-2-14 17:26:11 | 显示全部楼层
caicaptain2 发表于 2022-2-14 13:56
这个方法牛。。。

当你有n个项目的时候,再手动去改,一是累人,二是容易出错,出错了,生产烧录就得返工
https://acuity.blog.csdn.net/article/details/106724373
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
发表于 2022-2-14 17:39:58 | 显示全部楼层
brightzeng 发表于 2022-2-14 17:08
我以前也是手工删除最后一行来合并,后来觉得太麻烦了。
其实有一个很简单的办法,就是利用J-Flash的合并 ...

不知道什么情况,放的图片无法显示呀,重新编辑了也不行!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2022-2-14 18:05:00 | 显示全部楼层
brightzeng 发表于 2022-2-14 17:39
不知道什么情况,放的图片无法显示呀,重新编辑了也不行!

手动上传下就可以了,不支持拖拽粘贴。
回复

使用道具 举报

0

主题

43

回帖

43

积分

新手上路

积分
43
发表于 2022-2-15 09:06:31 | 显示全部楼层
试试这个                        

Bin Merger.exe

766 KB, 下载次数: 19

回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
发表于 2022-2-15 10:36:19 | 显示全部楼层
eric2013 发表于 2022-2-14 18:05
手动上传下就可以了,不支持拖拽粘贴。

嗯嗯,用图片上传就可以了,谢谢!
回复

使用道具 举报

6

主题

21

回帖

39

积分

新手上路

积分
39
发表于 2022-2-15 12:25:48 | 显示全部楼层
试试这个挺好用的

BIN合并.rar

140.6 KB, 下载次数: 19

回复

使用道具 举报

1

主题

15

回帖

18

积分

新手上路

积分
18
发表于 2022-2-17 16:20:58 | 显示全部楼层
可以先分别生成hex(编译器生成),把hex合并后再转换为bin文件。
ARM官方推荐方法:
      合并hex:https://developer.arm.com/documentation/ka004500/1-0/?lang=en  
      bin转换hex:https://developer.arm.com/documentation/ka004226/1-0/?lang=en
      hex转换bin:https://developer.arm.com/documentation/ka003932/1-0/?lang=en
合并hex使用:srec_cat.exe(ARM官方推荐),参考指令:srec_cat.exe boot.hex -Intel app.hex -Intel -o boo_app.hex -Intel
hex转换bin使用:srec_cat.exe,参考指令:srec_cat.exe boo_app.hex -Intel -o boo_app.bin -Binary

srec_cat.exe下载链接:https://sourceforge.net/projects/srecord/files/srecord-win32

(补充:hex->bin,工具hex2bin:参考指令:hex2bin -e bin all.hex,链接:https://sourceforge.net/projects/hex2bin/ 或者 http://hex2bin.sourceforge.net/)
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2022-2-18 01:00:57 | 显示全部楼层
SUNRAIN 发表于 2022-2-17 16:20
可以先分别生成hex(编译器生成),把hex合并后再转换为bin文件。
ARM官方推荐方法:
      合并hex:htt ...

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2022-2-18 01:01:05 | 显示全部楼层
xad74 发表于 2022-2-15 12:25
试试这个挺好用的

谢谢分享。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2022-2-18 01:01:18 | 显示全部楼层
brightzeng 发表于 2022-2-14 17:08
我以前也是手工删除最后一行来合并,后来觉得太麻烦了。
其实有一个很简单的办法,就是利用J-Flash的合并 ...

感谢整理。
回复

使用道具 举报

11

主题

21

回帖

54

积分

初级会员

积分
54
 楼主| 发表于 2022-3-7 18:28:35 | 显示全部楼层
感谢各位网友的热心解答
回复

使用道具 举报

3

主题

63

回帖

72

积分

初级会员

积分
72
发表于 2022-3-7 20:38:58 | 显示全部楼层
caicaptain2 发表于 2022-2-14 13:56
这个方法牛。。。

我都是直接粘贴,不删,也能用
回复

使用道具 举报

1

主题

369

回帖

372

积分

高级会员

积分
372
发表于 2022-3-7 23:05:03 | 显示全部楼层
没人推荐mergehex吗,mergehex --merge 111.hex 222.hex --output 333.hex
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-16 01:39 , Processed in 0.242682 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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