完善资料让更多小伙伴认识你,还能领取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。 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
1932个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36420 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
4860 浏览 1 评论
6107 浏览 1 评论
6817 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4248 浏览 0 评论
645浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
641浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
643浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
729浏览 2评论
844浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 01:48 , Processed in 1.094852 second(s), Total 74, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号