完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
您好,我刚才重新访问了引导加载程序问题,在用引导加载程序加载应用程序之后,尝试使用外部内存时遇到了完全相同的问题。开发板。编译基本程序并将其加载到板上工作正常。下载建议的dma_led_.(在编译后用于引导)工作正常。然后使用sram_read_write示例编译并在板上测试它,它也工作正常。我重新加载了板wi。引导程序并重新编译了sram_read_write示例,Bootloader Libary构建应用程序脚本集,Bootloader类型设置为USB_DEVICE。我可以使用PIC32引导加载器应用程序很好地加载程序,但是它不能正确运行。oject和作为可加载项目的sram_read_write允许我一起调试它们,并且程序在执行*addr=(uint32_t)addr后失败;第154行。对于(.=0;.<;RAM_SIZE/4;.++){/*将内存位置的地址写入到内存位置*/*addr=(uint32_t)addr;/*将地址递增到下一个地址*/addr+;}我在自定义板上尝试的UART引导加载程序遇到了相同的问题,但是没有找到。我认为这可能与为EBI/SQI内存区域设置基于TLB的MMU初始化部分有关,但我不能理解其中的原因。我使用标准示例和开发板来证明这与我的自定义板设置无关。我真的有麻烦了。我已经修改了链接器文件,尝试了单步完成,无论我尝试了什么,我都会得到相同的问题。CPU寄存器显示BadVAddress 0xE0000000和Cause 0x0080000CAny的帮助将非常感谢。
|
|
相关推荐
19个回答
|
|
|
罗伊,这件事你知道了吗?我也有同样的问题。
|
|
|
|
|
|
这种类型的问题通常是由假定所有寄存器处于默认状态的应用引起的。它们不是因为引导加载程序改变了它们。要么在引导加载程序中恢复寄存器。或者应用程序不假设事物处于默认状态并设置一切。
|
|
|
|
|
|
我想我没有假设。也许我有。我确实在应用程序中建立了EBI接口。Bootloader不使用EBI,所以我不在里面设置它。
|
|
|
|
|
|
它是否依赖于引导加载程序可能更改的其他内容?端口,定时器,DMA,等。
|
|
|
|
|
|
我认为,在OP未知的情况下,链接器文件即编译器插入的运行时代码可能会改变TLB表等。对于Bootloader和App…
|
|
|
|
|
|
嗨,我终于让它工作起来了。我必须更改应用程序的链接器文件。我想我只是将引导加载器链接器脚本内存分配复制到应用程序链接器脚本中。MEMORY{._mem:ORIGIN=0x9D000000,LENGTH=0x1000kseg0_._mem(rx):ORIGIN=0x9D000000+。0x1000+0x480,LENGTH=0x200000-(0x1000+0x480)/*所有C文件将位于这里*/kseg0_boot_mem_boot_mem:ORIGIN=0x9D000000000000kseg1_boot_mem=0x9D000000000000kseg1_boot_met_mem:Ox1000000000000000000x480+0x480,LENGTH=0x000000000000000000000000000000000000000000000x000000000000000000000x1000+0x10001000,LENGTH=0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000=0xFA50config_BFC0FF40:ORIGIN=0xBFC0FF40,LENGTH=0x4config_BFC0FF44:ORIGIN=0xBFC0FF44,LENGTH=0x4等,然后包括kseg1_boot_mem_4B0SECTIons{.tlb_init_.: {.ALIGN(4);u pic32_tlb_tlb_ini_ini_tlb_ini_ini_ini_值_开始_开始_开始_开始_ABSOLUTE(.)___\u_434343434343434343434343434343\u_t3232323232tlb_tlb_tlb_ini_ini_ini_initlb_ini_ini_ini_ini_ini_ini_值_开始_开始_开始_开始_开始_ABABSOSOSOLULULULULULULULU((.)____(.)_\LONG(_pic32_tlb_2_entryhi);LONG(_pic32_tlb_2_entrylo0)LONG(u pic32_tlb_2_tlb_2_2_入口1);LONG(u pic32_tlb_3_tlb_3_3_entrentrentryhi)LONG(u图3323232_tlb_222tlb_2222tlb_2222tlb_2_2____2_实实心1);LONG1);LONG(u_pic32 3 2 3 2 3 2 3 2 3 2 3 2_tlb_tlb_3_3_3_tlb_3_3_入口_3_入口_3_entryy1)1)1)1;LOLOLOLONG1);LOLONG1);LONG(\u__很久以前了,但是引导加载程序已经在p几年来,这是V106 06左右的Bootloader的旧版本。罗伊
|
|
|
|
|
|
你能寄给我一份链接器文件吗?不确定应用程序可以是引导加载程序内存分配的副本,因为引导装载程序需要在引导装载器内存空间中运行。
|
|
|
|
|
|
显然,我不能上传文件。你没有权限访问“http://www. McCys.com /论坛/上载.ASPX?”参考服务器18.35F011714144707304.104C73DDU必须使用正常的应用地址。在本例中,这些_RESET_ADDR=0x9DDDDR=0x9D00000000001000;_SIMPL_TPL_TPL_EEEEEEEXXPL_TXXPL_D1000_XXXXXXXXXXXX1000;_ADDR=0X9D1000;_XPL_XPL_XPL_XXPL_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXDDR=0_ADDR=0_ADDR=0_ADDR=0XXET_ADDR=0XXXET_ADDR=0XXXXADDR_ADDR 0x1000ksg0_._mem(rx):ORIGIN=0x9D0000000000x1000+0x1000+0x1000+0x480,LENGTH=0x200000-(0x1000+0x1000+0x480)/*所有C文件将位于这里*/kseg0_boot_boot_met_mem_mem:ORIGIN=0xeg0_boot0_boot_boot_boot_mem_mem:ORIGTH=0x00000000000000000000000kseg1_boot1_boot_boot_mem_mem:ORIGIN=0x0000000000000000000000000000000000000000000000x1000:ORIGIN=0x9D000000000000000IN=0x9D000000 +0x1000 +0x4b0,长度=0xFA50,然后是表{{TLBG-IITIOLValue:{。ALIGN(4);u pic32_tlb_tlb_ini_ini_tlb_ini_ini_ini_值_开始_开始_开始_开始_ABSOLUTE(.)___\u_434343434343434343434343434343\u_t3232323232tlb_tlb_tlb_ini_ini_ini_initlb_ini_ini_ini_ini_ini_ini_值_开始_开始_开始_开始_开始_ABABSOSOSOLULULULULULULULU((.)____(.)_\LONG(_pic32_tlb_2_entryhi);LONG(_pic32_tlb_2_entrylo0)(LONG(u pic32_tlb_2_2柱状1)的LONG(u_3232tlb_3_tlb_3_entrentryhi)的LONG(u_pic32_tlb_222222tlb_222222tlb_2_2_2NNNNNN栏目1)的龙;LONG(u_pic32 3 2 3 2 3 2 3 2 3 2 3 2_tlb_tlb_22222222_____________2_2_2_实实实心1)的龙1);LOLOLONG(u__________________3838383838为我工作。
|
|
|
|
|
|
你使用的是什么版本的和声?很多较早的链接脚本都是坏的,引导程序和应用程序都需要协调提供的脚本。我想他们现在正在工作。
|
|
|
|
|
|
我现在使用的是v2_02_00b,但是我必须使用我的旧链接器脚本,因为所有旧产品都使用旧的引导加载器代码。很可能是他们已经修复了我尚未尝试的稍后版本中的脚本。对我来说一切都正常(这是引导加载器工作)。Harmony Configurator没有为PIC32MZ2048EFG064生成正确的system_config.h文件(所有端口设置都不正确),我必须为SYS_TMR函数使用动态计时器,并且只能为OC函数使用静态计时器。我想我必须自己写司机。罗伊
|
|
|
|
|
|
好啊。我会尝试一个新的剧本。我的是1.06岁。
|
|
|
|
|
|
V 1.06链接器脚本不适用于MZ。还要注意它可能会启用IMPUT标志。如果Maser-Iutut是启用的,但没有配置ItUPT,则这将导致异常。
|
|
|
|
|
|
我使用了2.02和Bootloader和APP链接器脚本,仍然有问题。
|
|
|
|
|
|
那么你可能会有一个注册问题。有些东西设置不正确。一旦你离开引导装载程序,它就是所有的应用程序。
|
|
|
|
|
|
嗯。应用程序在独立运行时没有停顿(没有引导加载程序链接器文件)。我想可能是TBL条目或其他东西,因为它在调用EBI地址存储数据时有例外。
|
|
|
|
|
|
这对我来说是一个应用程序输入器脚本错误。听起来问题仍然存在。尝试添加我之前建议的、为我的应用程序工作的位。
|
|
|
|
|
|
罗伊,我愿意试试你的建议,但我不太清楚你是如何解决这个问题的。是否更改引导程序链接器脚本以在应用程序空间中放置Bootloader代码。您声明您已经从Bootloader复制了应用程序链接器脚本内存位置,但随后显示了AddiSersKS00BootMyMe:Ont= 0x900000 KSeG1BootmiMe:Ont= 0x9D900M+0x1000,长度=0x000 000 0480KS11BootmiMeMe4B0:Orthix0x9D900M+0x1000 +0x4b0,长度=0xFA50ME引导加载程序必须在上载引导地址空间中,因为它在写入应用程序之前删除所有应用程序内存。必须有一种方法来获取这些链接器脚本的副本。你能把它们全部放在这里吗?它们只是文本。
|
|
|
|
|
|
您的V1.06 EC链接器脚本将无法与EF CPU工作。如果禁用CPU支持,可以让它们工作。不要使用很多中断。问题是应用程序脚本而不是引导加载程序。但它们必须是一组。我发布一个链接脚本大约一年的工作。较新的和声可能奏效。很难说,因为微芯片支持和睦有点好于恐怖。他们不承认它被破坏了,所以他们什么时候和怎么固定它的线索很少。据推测,问题是MZ有一个可变长度的中断向量表,而引导加载程序没有处理它。它只限于代码。如果你的中断表很小,V1.06脚本只能工作。这是应该纠正的。我的脚本的问题是我知道它是有效的,但不是为什么。
|
|
|
|
|
|
我试图使用Harmony 2.02微芯片Bootloader和2.02链接器脚本,以及Harmony 2.02应用程序和Harmony Configurator生成的“app”链接器脚本。当Bootloader跳转到App后,我试图在EBI内存中写入同样的异常。应用程序本身运行良好。所以我在抓稻草。我需要它来工作。已经投入了一张票和Microchip正在与我合作,但它已经三天了,我需要让这个简单的事情来工作。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1124浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1097浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
873浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 07:46 , Processed in 1.099326 second(s), Total 108, Slave 91 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1970