栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

RT1176程序从QspiFlash跳转到OCRam中重新加载

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RT1176程序从QspiFlash跳转到OCRam中重新加载

1、应用场景:程序从QspiFlash引导启动,作为Boot程序,提供更新程序的功能;将包含应用的完整程序下载到RAM中,重新加载启动。
2、软件源码:MIMXRT1170-EVK中示例代码
3、设计思路:
1)Boot程序的Code使用Flash,Data使用一片OCRAM
2)App程序存放在另一片IOCRAM上,堆栈使用跟Boot相同的OCRAM空间(也可更改)
3)如果Boot程序中开启了中断,在跳转之前要关中断,否则有可能跳转时出现程序运行异常问题
4)在App的程序中,要关闭BOARD_BootClockRUN的时钟初始化函数,因为PLL无法重新配置(还未查明原因)
4、关键代码段:
uint32_t CORE1_RAM_ADDRESS = 0x20242000,CORE1_FLASH_START = 0x30200000;
uint32_t* pBuf = (uint32_t*)CORE1_RAM_ADDRESS;

(void)memcpy((void *)(char *)CORE1_RAM_ADDRESS, (void *)CORE1_FLASH_START, core1_image_size);


__disable_irq();


SCB->VTOR = (uint32_t)CORE1_RAM_ADDRESS;


__set_MSP(pBuf[0]);//将把用户代码的栈顶地址设为栈顶指针


((void (*)())pBuf[1])();      
个人愚见,如有问题,敬请指正!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/722871.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号