Microchip
直播中

王文娥

7年用户 140经验值
私信 关注
[问答]

调试启动加载程序启动

大家好,按照我在这里之前的帖子http://www..hip.com/for./m1006668.aspx.我正在使用PIC32MX795F512L,SD卡引导程序(AN1338)。应用程序将搜索SD卡中的引导加载文件并加载它的内存。我有以下行为:1-我使用IPE工具加载最新版本的引导加载程序(v06),然后从SD卡加载应用程序,然后应用程序加载相同版本的引导加载程序(v06),一切正常。2-我使用IPE工具和t加载旧版本的引导加载程序(v05)。母鸡从SD卡加载应用程序,然后这个应用程序加载Bootloader(V06)的新版本。之后,没有任何工作,BoooDoad根本没有启动(基于LED)我的问题是我如何调试这个?我应该开始寻找重置地址还是比较配置寄存器?我没有改变应用程序的链接器,也没有改变引导程序。任何想法都是值得赞赏的。

回帖(5)

黄飞高

2020-4-13 10:14:14
这可能是不正确擦除的结果。如果IPE在加载V05引导加载程序之前进行了大量擦除,那么加载应用程序不需要擦除任何内容,因此它无需擦除即可工作,但是当应用程序加载新的引导加载程序时,除非擦除按预期工作,否则无法工作。V05引导程序的NED HEX文件及其应用程序。检查MPLAB X中的可加载文件。然后您可以在应用程序中设置一个断点,它将加载新的引导加载程序并检查发生了什么。我通常将应用程序作为可加载程序加载到Bootloader中。请注意,您需要“读取设备内容”以查看NVM函数所做的内存更改,例如擦除。还要确保对十六进制文件进行规范化。愚蠢的问题——您在应用程序中使用引导加载器中的函数吗?!
举报

张磊

2020-4-13 10:33:42
嗨,Ruben,我相信我做了所有这些,它看起来对我没问题,我再检查一遍,看看有什么变化。是的,我使用了引导加载程序使用的相同函数:EraseFlash()使用NVMemErasePage()WriteHexRecord2Flash(hexRec)
举报

张磊

2020-4-13 10:41:01
我在AppNote(1388b)中发现了一些有趣的东西,其中他们提到了以下内容:因此我使用REAL ICE加载引导加载程序,并发现它加载的数据分两部分:引导闪存(0x1FC00_0000)和程序闪存(0x1D00_0000)(为其lin中的引导加载程序保留)现在,它为什么在加载相同的版本时工作,而不在加载不同的版本时工作。问题是:当我从App中编写引导程序时,我只在引导程序区域(0x1D00_0000-0x1D00_7000)中写入,并且当我检查引导程序加载的十六进制文件时,我没有发现任何广告。属于引导闪存的衣服,这让我感到困惑?我的问题是:如果Bootloader HEX文件中没有信息,应用程序如何更新引导内存?我错过了什么?
举报

胡芝恒

2020-4-13 10:51:39
引导加载程序十六进制文件应该包含引导Flash内存的十六进制记录,其中应该包含重置向量、引导加载程序的中断向量表和配置字。否则,你的引导加载程序根本不起作用。我猜你的应用程序代码可能没有正确解析HEX文件。在十六进制文件中应该有一些类型的4个记录,它们设置了上面的地址(1fc0),类似于:
举报

更多回帖

发帖
×
20
完善资料,
赚取积分