[PIC®/AVR®/dsPIC®产品] 求助:MCC bootloader Boot 和 App 如何合并

[复制链接]
2344|9
 楼主| hzy99 发表于 2021-11-15 23:50 | 显示全部楼层 |阅读模式
本帖最后由 hzy99 于 2021-11-15 23:52 编辑

按照bootloader课程,成功生成了bootloader和App代码,非常好用。只是不会将二者合并在一起,方便写入单片机。
有大神知道吗?
lcczg 发表于 2021-11-17 15:09 | 显示全部楼层
楼主看下这个答案 https://microchipdeveloper.com/m ... oadable-bootloaders
To combine a bootloader with application code:
    Create one project for your application and one project for your bootloader.
    Load the bootloader project or hex file into the application project. See Projects Window – Loadables Setup or Project Properties Window – Loading Setup for how to do this.
 楼主| hzy99 发表于 2021-11-17 23:26 | 显示全部楼层
本帖最后由 hzy99 于 2021-11-17 23:33 编辑
lcczg 发表于 2021-11-17 15:09
楼主看下这个答案 https://microchipdeveloper.com/mplabx:projects-loadable-bootloaders
To combine a bo ...

看了版主提供的链接,测试了下,会提示地址冲突,不知如何解决,单片机型号是dsPIC33EP128GM306。如果先写入bootloader,再用UnifiedHost-1.17.0通过串口写入App,是一切正常的。
错误信息如下:
(944) data conflict at address 0h between dist/default/production/TS3.170GM66.X.production.hex and ../Boot_3_33_6B_GM306.X/dist/default/production/Boot_3_33_6B_GM306.X.production.hex

lcczg 发表于 2021-11-18 14:30 | 显示全部楼层
你看下冲突的位置,是不是地址0处冲突。
 楼主| hzy99 发表于 2021-11-18 18:03 | 显示全部楼层
lcczg 发表于 2021-11-18 14:30
你看下冲突的位置,是不是地址0处冲突。

是的,就是提示地址0冲突。
(944) data conflict at address 0h between dist ......
GeekyGeek 发表于 2021-11-19 13:20 | 显示全部楼层
hzy99 发表于 2021-11-17 23:26
看了版主提供的链接,测试了下,会提示地址冲突,不知如何解决,单片机型号是dsPIC33EP128GM306。如果先写 ...

使用UnifiedHost-1.17.0通过串口写入App之后,再用PicKit3/4读出芯片里面的程序hex. 读出后保存下来的就是bootloader和应用程序的合体
 楼主| hzy99 发表于 2021-11-19 23:00 | 显示全部楼层
GeekyGeek 发表于 2021-11-19 13:20
使用UnifiedHost-1.17.0通过串口写入App之后,再用PicKit3/4读出芯片里面的程序hex. 读出后保存下来的就是 ...

加密了,读不出来。不加密的才能读出来,然后重新修改HEX文件加密?比较麻烦。
GeekyGeek 发表于 2021-11-20 22:53 | 显示全部楼层
如何你的bootloader是放在code flash的头部,Application是放在code flash的尾部的话,其实很好合
打开bootloader的hex,和application hex。只有configuration bits/user ID 是重叠的。只需保留一份
其他的从一边copy/paste到另一边就OK了。
 楼主| hzy99 发表于 2021-11-21 20:34 | 显示全部楼层
GeekyGeek 发表于 2021-11-20 22:53
如何你的bootloader是放在code flash的头部,Application是放在code flash的尾部的话,其实很好合
打开boot ...

今天试了一下,还是不能搞定
lcczg 发表于 2021-11-24 15:31 | 显示全部楼层
本帖最后由 lcczg 于 2021-11-24 15:32 编辑

编译器手册里针对错误的详细解释是:
(944) data conflict at address *h between * and * (Hexmate)

Sources to Hexmate request differing data to be stored to the same address. To force one data source to override the other, use the ‘+’ specifier. If the two named sources of conflict are the same source, then the source can contain an error.
你查看两个HEX文件,在地址零处应该是不一样的。你可以手动修改为一样且是你想要的指令。
两个HEX的地址零处到底是什么指令哪?

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

本版积分规则

2

主题

16

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部