完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在做一个hpm6750evk2的bootloader。设计很简单,boot工程代码只做跳转到1M后的APP工程代码处,APP工程就是做的一个点灯的程序而已,boot、APP工程都是跑的rtthread。boot工程烧入在0x80000400处,APP烧入在0x80100000处,但是这样跑起来后boot工程能正常怕跑到跳转的地方,但是在跳转后就没反应了,意思就是说点灯没成功,这个问题究竟在哪里啊?!!!新手小白被折磨好几天了,在哪里修改中断向量表呢?和链接脚本该怎么改? 我修改过链接脚本的__app_load_addr__变量加上了0x00100000,但是效果和上文说的一样。 |
|
相关推荐
1个回答
|
|
首先,我们需要确保bootloader和APP工程的配置是正确的。以下是一些可能的原因和解决方案:
1. 确保bootloader正确跳转到APP工程代码: 在bootloader的跳转代码中,确保使用正确的跳转指令。例如,使用`b`指令跳转到APP工程的入口地址。例如: ```assembly ldr pc, =0x80100000 ``` 2. 确保APP工程的入口地址正确: 在APP工程的链接脚本中,确保`__start__`符号的地址与APP工程的烧录地址(0x80100000)相匹配。例如: ```ld SECTIONS { .text : { . = ALIGN(4); KEEP(*(.start)) *(.text) . = ALIGN(4); __start__ = .; } > FLASH } ``` 3. 确保中断向量表正确: 在APP工程的链接脚本中,确保中断向量表的地址与APP工程的烧录地址(0x80100000)相匹配。例如: ```ld __vector_table_start__ = 0x80100000; ``` 4. 确保bootloader和APP工程的内存映射正确: 在bootloader和APP工程的链接脚本中,确保内存映射与实际烧录地址相匹配。例如: ```ld MEMORY { FLASH (rx) : ORIGIN = 0x80000400, LENGTH = 0x00F00000 RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 0x00020000 } ``` 5. 确保APP工程的堆栈大小足够: 在APP工程的链接脚本中,确保堆栈大小足够。例如: ```ld _estack = ORIGIN(RAM) + LENGTH(RAM); ``` 6. 确保APP工程的启动代码正确: 在APP工程的启动代码中,确保正确初始化硬件和调用RT-Thread的启动函数。例如: ```c #include int main(void) { rt_hw_board_init(); rt_thread_startup(); return 0; } ``` 通过以上步骤,应该可以解决你的问题。如果问题仍然存在,请检查硬件连接和配置是否正确。 |
|
|
|
只有小组成员才能发言,加入小组>>
385个成员聚集在这个小组
加入小组关于hpm6364的femc同时使用外接sdram和sram的问题
301 浏览 1 评论
555 浏览 0 评论
549 浏览 1 评论
652 浏览 0 评论
先楫HPM6E00技术日 | 百人研讨共话工业应用创新及发展趋势
883 浏览 0 评论
【盖楼抢好礼】欢迎先楫半导体HPMicro入驻电子发烧友社区!
22640浏览 532评论
2209浏览 22评论
USBX范例中启用 double FPU , 运行异常,卡死在tx_risc_v_trap_handler函数
2836浏览 5评论
1639浏览 5评论
请问Segger Embedded Studio这个窗口不小心拉出来悬浮后怎么塞回去?
2764浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 16:38 , Processed in 0.422489 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号