完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友william hill官网
|
嗨,我是dspic的新手,但我正在尝试开发一个CAN引导程序应用程序,它似乎工作得很好,但是在第一次应用程序下载之后出现了一个奇怪的行为。o可以看到引导程序运行正常,等待特定的CAN消息开始程序的下载。我的主机应用程序启动.hex文件的下载,目前为止还不错。下载完成后,重启发生,下载的应用程序似乎工作。现在,如果我重新启动e micro,我希望引导加载程序首先执行,等待CAN消息一定时间,但这种情况不会发生。应用程序直接跳到下载的应用程序的内存地址。读取dspic的内存,我可以看到引导加载程序从0x400地址开始,而我下载的应用程序从0x1800开始,这正是它们应该符合我的结构的地方。在下载应用程序之前的内存,我可以在地址0x000中看到一个Goto指令指向Read标签,它正好是我的Bootloader的第一个地址,所以,同样,这是正确的(我想)。但是下载之后,0x000地址包含指向AOTH的Goto指令。ER地址(0x27 70),所以我相信我下载的应用程序正在写这个地址,但我不明白为什么。我的链接器文件根据AN1094文档(http://WW1.Microchip .com/下载/ En/AppNodis/01094A.pdf)进行修改,更何况,你能帮我吗?非常感谢你的时间
|
|
相关推荐
18个回答
|
|
|
谢谢你的回答,你的意思是“应该把所有的Iputt向量跳到应用程序上”?谢谢
|
|
|
|
|
|
当中断发生时,PIC将跳转到中断向量表中的地址。这包括复位向量。你读过关于应用笔记中的IVT吗?
|
|
|
|
|
|
是的,但是我不能理解它是如何与问题相关的,或者也许我没有很好地解释它。当我的应用程序被引导加载程序下载(我的引导加载程序不使用中断)时,一切都正常。包括中断。如果我重新启动图片,应用程序仍然可以正常工作,但是引导加载程序是完全从执行中跳过的。分析内存,我可以看到引导加载程序和应用程序指令正好在我希望看到的地方,唯一的问题是第一个结构为应用程序的goto<地址,而不是bootloader>地址。如果我擦除所有的闪存并编写引导加载程序,而不下载应用程序,我会看到引导加载程序>指令的goto<地址,正如我所预期的。所以在我看来,我的应用程序不知何故覆盖了用自己的第一个地址重置地址。对不起,我是新手,可能对中断向量表一无所知,但我不明白为什么它应该相关。如果你能解释一下,或者指点我的段落,我会很感激。谢谢你的时间。
|
|
|
|
|
|
您的应用程序和引导加载程序都具有IVT位于0x000。它在应用程序的HEX文件中。您的引导加载程序正在擦除它并将其替换为应用程序中的一个。这里有几种选择。如何解决这个问题。但是你应该明白为什么你首先有问题。
|
|
|
|
|
|
NKurzman,“…跳到所有的中断向量……”值得注意的是并非所有的引导加载程序都是这样工作的。一些生产设备提供了一种OTP。允许产品在序列号、最新代码等之前在货架上就绪。此外,即使MChip在重置向量位置具有GOTO_reset,PIC24/33也不必这样做。这两个位置可以用适合Bootloader的任何指令编程。我怀疑所描述的类型是允许重新显示第一页的类型,这是一种更灵活的开发/生产方法。这将通过从引导加载程序代码中排除的整个页面来表示,而不是在IVT.@salamander之后立即启动的引导加载程序,尽管在文档中声明过,但是加载程序可能实际上并不如所承诺的那样工作。它不会是第一个免费软件,不能像承诺的那样运行。查看构建flash页面的部分,看看它是否将现有的ResetVector与flash的第一页(第0页)合并。这可能是一个有条件的语句检查页面0和“保护”复位向量。Yorky
|
|
|
|
|
|
我不确定重置向量,但是IVT是地址而不是代码。(在PIC24HJ上),正如我所说的,有几个选项。1. IVT跳到应用IVT2。引导加载程序使用应用程序IVT,但保持复位向量。3。应用程序还检查CAN包并跳转到Bootloader。4。应用AIVT。5。发射型计算机断层扫描仪。
|
|
|
|
|
|
AFAIK可以通过两种方式配置这些引导加载程序:重置后,输入可以检测某些编程条件的引导加载程序。如果没有编程条件是激活的,它将继续应用程序。当应用程序检测到一个编程条件(例如,带有“prog id”的消息)时,它调用引导加载程序。这不是悲剧,只是不同而已。现在,您可以尝试了解如何运行配置1,或者实现使配置2可操作所需的内容。
|
|
|
|
|
|
嗨,一个关于DSPIC33的引导加载程序的极好的资源:HTTP://www. McCHIP.COM/EZBLATION
|
|
|
|
|
|
谢谢大家,非常有趣的信息。@du00000001:我想我得到了第一个配置,但是它确实只工作了一次:下载第一个应用程序之后,第一个结构被覆盖以直接跳转到我的应用程序代码,而不首先输入引导加载程序。我必须弄清楚第一页的擦除/写入过程有什么问题…再次谢谢大家。
|
|
|
|
|
|
不要混合地址映射***型。如果你的BL认为你想要2型,到目前为止一切都还好。(在初始状态下,很明显,bl是首先启动的:没有应用程序“在板上”。)只是您的应用程序还没有实现bl的调用。
|
|
|
|
|
|
谢谢您这么说。无论如何,我想要一个配置类型为1的BL,实际上我以为是这样的,但是很明显我遗漏了一些东西……
|
|
|
|
|
|
如果您需要类型1,则必须在引导程序加载代码时,在HEX文件被编程时窃取该地址。
|
|
|
|
|
|
是的,没错。现在我认为IVT有问题。问题是当引导加载程序加载我的应用程序时,地址从0x4到0x1FE为NOP。
|
|
|
|
|
|
您不能保护整个页面免于被编程:只要用对引导加载程序的调用覆盖重置条目即可。并最终记住应用程序启动的地址……(仅当应用程序起始地址为非常量时)。
|
|
|
|
|
|
大家好,我又回到了问题中。我最近两天所做的是基于AN1157和其他线程的例子重新映射ivt。现在我成功地用BL加载了我的APP,但是结果是当我重置微地址和goto APP开始地址时,一切都冻结了。在引导程序加载过程中,我使用一些闪烁发光二极管,当我重置最后一个闪烁发光二极管时,保持打开状态……同样的情况发生在我没有重新映射ivt时,所以我真的不知道该怎么想……你可以把我的gld看作附件,也许你可以看到它们有什么问题:(运行loa)我使用Agto to 0x1a00谢谢你的帮助
BL-P33 FJ128MC804.GLD.TXT(40.66 KB)-下载90次 |
|
|
|
|
|
我用我***应用程序做的是,我没有重新映射所有的中断向量。我只重定向了我计划与APP一起使用的那个。在您的情况下,您将所有映射到0x1802,那么为什么不将APP中的ivt ORIGIN设置为0x1802呢?不管怎样,在链接器脚本中创建跳转表并不重要。
|
|
|
|
|
|
对不起,我听不懂你在说什么。我事先不知道这个应用程序会中断什么,所以我把它们重新映射了。文件是否在某个地方出错了?
|
|
|
|
|
|
我没有看到脚本有什么问题,但是你的引导程序是基于AN1094ORAN1157的吗?我不确定你说的“冻结”是什么意思?你能通过以不同的速度闪烁LED来测试一个简单的应用吗?
|
|
|
|
|
只有小组成员才能发言,加入小组>>
5244 浏览 9 评论
2035 浏览 8 评论
1955 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3214 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2261 浏览 5 评论
779浏览 1评论
673浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
599浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
683浏览 0评论
580浏览 0评论
/7
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 17:20 , Processed in 1.783805 second(s), Total 112, Slave 96 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
312