嵌入式问题解决:ERROR: The hex files cannot be merged since there are conflicts.

一、遇到问题

  • 合并nRF52832生成的三个hex出现问题
  • mergehex --merge nrf52832_xxaa.hex bootload.hex softdevice.hex --output o1.hex
mergehex --merge nrf52832_xxaa.hex bootload.hex softdevice.hex --output o1.hex
Parsing input hex files.
Merging files.
ERROR: The hex files cannot be merged since there are conflicts.

在这里插入图片描述

二、分析问题

  • 错误信息简洁易懂,一目了然
    • Parsing input hex files.:解析输入的hex文件
    • Merging files.:合并文件
    • ERROR: The hex files cannot be merged since there are conflicts.:错误:hex文件不能合并因为这里有冲突
  • 具体什么冲突,这里没说。不过按照合并原理,是按照在flash中的地址进行合并。
  • 所以应该是flash地址冲突了,需要确认几个地方
    • IROM1的地址范围
    • __attribute__指定地址的数组

在这里插入图片描述

在这里插入图片描述

  • 果然,找到了。我把nrf_dfu_settings从bootloader搬到app中用了,所以这一块的地址,bootloader和app重复冲突了。

三、解决问题

  • 要解决这个问题也比较简单,就是不使用__attribute__,将其注释掉。
  • 然后,直接指定地址从flash中读即可。修改如下:

在这里插入图片描述

四、验证

mergehex --merge nrf52832_xxaaV3.hex bootload.hex softdevice.hex --output o1.hex
Parsing input hex files.
Merging files.
Storing merged file.

在这里插入图片描述

觉得好,就一键三连呗(点赞+收藏+关注)

猜你喜欢

转载自blog.csdn.net/kangweijian/article/details/129849301
hex