打印
[PIC®/AVR®/dsPIC®产品]

求助:MCC bootloader Boot 和 App 如何合并

[复制链接]
1688|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处冲突。

使用特权

评论回复
5
hzy99|  楼主 | 2021-11-18 18:03 | 只看该作者
lcczg 发表于 2021-11-18 14:30
你看下冲突的位置,是不是地址0处冲突。

是的,就是提示地址0冲突。
(944) data conflict at address 0h between dist ......

使用特权

评论回复
6
GeekyGeek| | 2021-11-19 13:20 | 只看该作者
hzy99 发表于 2021-11-17 23:26
看了版主提供的链接,测试了下,会提示地址冲突,不知如何解决,单片机型号是dsPIC33EP128GM306。如果先写 ...

使用UnifiedHost-1.17.0通过串口写入App之后,再用PicKit3/4读出芯片里面的程序hex. 读出后保存下来的就是bootloader和应用程序的合体

使用特权

评论回复
7
hzy99|  楼主 | 2021-11-19 23:00 | 只看该作者
GeekyGeek 发表于 2021-11-19 13:20
使用UnifiedHost-1.17.0通过串口写入App之后,再用PicKit3/4读出芯片里面的程序hex. 读出后保存下来的就是 ...

加密了,读不出来。不加密的才能读出来,然后重新修改HEX文件加密?比较麻烦。

使用特权

评论回复
8
GeekyGeek| | 2021-11-20 22:53 | 只看该作者
如何你的bootloader是放在code flash的头部,Application是放在code flash的尾部的话,其实很好合
打开bootloader的hex,和application hex。只有configuration bits/user ID 是重叠的。只需保留一份
其他的从一边copy/paste到另一边就OK了。

使用特权

评论回复
9
hzy99|  楼主 | 2021-11-21 20:34 | 只看该作者
GeekyGeek 发表于 2021-11-20 22:53
如何你的bootloader是放在code flash的头部,Application是放在code flash的尾部的话,其实很好合
打开boot ...

今天试了一下,还是不能搞定

使用特权

评论回复
10
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

粉丝