完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我已经从 nxp 的网站下载了标准的引导加载程序代码。构建代码并加载到 Eval 板中。
它似乎没有跳到应用程序。无法追踪确切的问题。 我使用了以下引导加载程序代码。 代码: #include "timeout.h" #include "comm.h" #include "clock.h" /* 引导加载程序定义 */ /* 引导加载程序接收的应用程序的起始地址 * 应用程序向量表应从该地址开始 * */ #define APP_START_ADDRESS 0x1000 /* 全局变量 */ uint8_t boot_from_comm = 0; /* 用于在 comm 通道上发出活动信号 */ /* 原型 */ void JumpToUserApplication( unsigned int userSP, unsigned int userStartup); /* 主应用程序 */ int main(void) { /* 初始化时钟 */ clock_initi(); /* 初始化通信接口 */ init_comm(); /* 初始化超时 */ init_timeout(); /* 检查是否接收到引导启动或是否发生超时 */ do{ uint8_t word_received = comm_status_rx(); 如果(word_received){ boot_from_comm = 1; comm_download_app(); } } while((!timeout()) & (!boot_from_comm)); /* 禁用所有系统并让设备保持复位状态 */ disable_timeout(); 禁用通信(); 重置时钟(); /* 检查是否加载了有效的应用程序并跳转到它 */ JumpToUserApplication(*((uint32_t*)APP_START_ADDRESS), *((uint32_t*)(APP_START_ADDRESS + 4))); /* 永远不应该从应用程序代码中返回 */ for (;;) {}; /* 永远不要离开 main */ return 0; } /** * 用于跳转到用户应用程序的入口点 * 用户应用程序的向量表必须位于 0x1000 * * */ void JumpToUserApplication( unsigned int userSP, unsigned int userStartup) { /* 检查入口地址被擦除,如果被擦除则返回 */ if(userSP == 0xFFFFFFFF){ return; } /* 设置堆栈指针 */ __asm("msr msp, r0"); __asm("msr psp, r0"); /* 重定位向量表 */ S32_SCB->VTOR = (uint32_t)APP_START_ADDRESS; /* 跳转到应用程序 PC (r1) */ __asm("mov pc, r1"); } ////////////////////////////////////////////// ///////////////////////////// // EOF //////////////// //////////////////////////////////////////////// ////////////// |
|
相关推荐
1个回答
|
|
可能有几个原因导致引导加载程序未能跳转到应用程序:
1. 应用程序的起始地址不正确。请确保应用程序的向量表从正确的地址开始。 2. 应用程序未正确加载到正确的地址。请确保应用程序已正确构建,并已正确地加载到目标设备的内存中。 3. 引导加载程序中的代码存在错误。请确保引导加载程序中的代码没有语法错误或逻辑错误,并已正确构建。 4. 目标设备的硬件或软件出现问题。请确保目标设备的硬件和软件环境正常,没有出现任何异常问题。 为了更好地调试这些问题,您可以尝试使用调试器来检查代码的执行情况,以及查看目标设备的状态和数据。您也可以添加一些调试代码,例如打印调试消息或将变量的状态写入串口或调试接口。这些调试技巧可以帮助您快速排除问题并找出引导加载程序未跳转到应用程序的原因。 |
|
|
|
只有小组成员才能发言,加入小组>>
1833个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36073 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
4201 浏览 0 评论
5795 浏览 1 评论
6579 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4025 浏览 0 评论
469浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
440浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
440浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
529浏览 2评论
570浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-22 14:27 , Processed in 1.167131 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号