完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我在我的 custum MXRT1052 板上调试从 SDK(SDK_2_11_1_EVKB-IMXRT1050boardsevkbimxrt1050bootloader_examplesflashloader) 导入的闪存加载程序。遇到两个问题:
(1)flashloader不能擦除FlexSPI Nor Flash。它确实执行擦除代码,但在验证FLASH内容时失败。 (2)flashloader不能跳转到APPLICAtiON。由于flashloader不能擦除FLASH,我用J-FLASH工具下载我的APPLICATION代码到flash地址0x60010000。然后修改get_active_peripheral()函数直接跳转到APPLICATION( 仅注释掉语句: //if (!is_boot_pin_asserted() && is_application_ready_for_executing(applicationAddress)) 和 //if (is_direct_boot()) ).休闲代码是修改后的 get_active_peripheral() 函数: static peripheral_descriptor_t const *get_active_peripheral(void) { ...///< #if !BL_FEATURE_TIMEOUT #if BL_FEATURE_POWERDOWN bool shortTimeout = false; #endif const uint64_t ticksPerMillisecond = microseconds_convert_to_ticks(1000); // Get the user application entry point and stack pointer. uint32_t applicationAddress, stackPointer; get_user_application_entry(&applicationAddress, &stackPointer); uint64_t lastTicks = 0; // Value of our last recorded ticks second marker uint64_t timeoutTicks = 0; // The number of ticks we will wait for timeout, 0 means no timeout // If the boot to rom option is not set AND there is a valid jump application determine the timeout value // if (!is_boot_pin_asserted() && is_application_ready_for_executing(applicationAddress)) { //if (is_direct_boot()) { jump_to_application(applicationAddress, stackPointer); } // Calculate how many ticks we need to wait based on the bootloader config. Check to see if // there is a valid configuration data value for the timeout. If there's not, use the // default timeout value. uint32_t milliseconds; if (configurationData->peripheralDetectionTimeoutMs != 0xFFFF) { milliseconds = configurationData->peripheralDetectionTimeoutMs; } else { milliseconds = BL_DEFAULT_PERIPHERAL_DETECT_TIMEOUT; } timeoutTicks = milliseconds * ticksPerMillisecond; // save how many ticks we're currently at before the detection loop starts lastTicks = microseconds_get_ticks(); #if BL_FEATURE_POWERDOWN shortTimeout = true; #endif } #if BL_FEATURE_POWERDOWN else { timeoutTicks = BL_DEFAULT_POWERDOWN_TIMEOUT * ticksPerMillisecond; lastTicks = microseconds_get_ticks(); } #endif #endif // !BL_FEATURE_TIMEOUT ...///< Remainded codes are omitted. return activePeripheral; } cpu可以跳转去执行application的reset_handler,但是在从FLASH拷贝数据段到RAM或者初始化bss段的时候会被reset或者跳转到地址0xdeadbee。 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
2139个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
37405 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
6800 浏览 1 评论
7830 浏览 1 评论
7665 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
5089 浏览 0 评论
1584浏览 2评论
关于NINA-W132 Wi-Fi模块SPI通信遇到的疑问求解
1224浏览 2评论
如何在MPC PowerPC MCU上首次刷写后禁用BDM?
769浏览 1评论
将HFREFR和LFREFR寄存器值设置为错误的值来将故障注入CMU,但CMU_ISR值始终为零,为什么?
760浏览 1评论
将SPSDK for FRDM-MCX-W71 SDK与VS一起安装时出现hidapi构建错误怎么解决?
700浏览 1评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-13 17:59 , Processed in 0.764674 second(s), Total 73, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1808