RT1052 BootLoader总结
RT1052 BootLoader总结
概述
Bootloader涉及到的RT1052单片机资源有:Cache,ram,外部SDRAM,ARM7汇编指令,外部dataFlash.
升级功能涉及到的其他功能有:服务器存贮和传输升级Bin文件;上位机接收和发送BiN文件;判断升级是否成功和提示。
流程图


app程序与Bootloader程序不同的地方总结如下
3.1 xxx.s启动文件增加了如下区域
AREA |.ram_vtor_table|, DATA, READONLY
IMPORT |Image$$ARM_LIB_STACK$$ZI$$Limit|
R_Vectors DCD |Image$$ARM_LIB_STACK$$ZI$$Limit| ; Top of Stack
DCD Reset_Handler ; Reset Handler
DCD NMI_Handler ;NMI Handler
《MIMXRT1052xxxxx_flexspi_nor_sdram.scf》
#define m_itcm_vectors_start 0x00000000
#define m_itcm_vectors_size 0x00000400
#define m_itcm_start 0x00000400
#define m_itcm_size 0x0001FC00
RW_vectors_data m_itcm_vectors_start m_itcm_vectors_size { ; RW data
startup_MIMXRT1052.o (.ram_vtor_table)
}
ARM_LIB_HEAP +0 EMPTY Heap_Size { ; Heap region growing up
}
ARM_LIB_STACK m_data_start+m_data_size EMPTY -Stack_Size { ; Stack region growing down
}
3.2 evkbimxrt1050_flexspi_nor.ini更改SP,PC
SP = _RDWORD(0x60008000); // Setup Stack Pointer
PC = _RDWORD(0x60008004); // Setup Program Counter
_WDWORD(0xE000ED08, 0x60008000); // Setup Vector Table Offset Register
3.3 ***.scf分散加载文件更改
#define m_interrupts_start 0x60008000
#define m_interrupts_size 0x00000400
3.4 target-->user,生成Bin,命令。
RUN1:fromelf.exe --bincombined --bincombined_base=0x60008000 --output "$L@L.bin" "$L@L.out"
RUN2:fromelf.exe --m32 --output "$L@L.srec" "#L"
3.5 Linker:设置改变:
--remove
--keep=*(.boot_hdr.ivt)
--keep=*(.boot_hdr.boot_data)
--keep=*(.boot_hdr.dcd_data)
--keep=*(.boot_hdr.conf)
--keep=*(NonCacheable)
--keep=*(m_usb_dma_init_data)
--predefine="-DXIP_BOOT_HEADER_ENABLE=1"
改为:
--remove
--keep=*(.ram_vtor_table)
--predefine="-DXIP_BOOT_HEADER_ENABLE=1"
3.6应用程序初始化里面的SDRAM的初始化一定要去掉!!
// /* Set SEMC_PODF. */
// CLOCK_SetDiv(kCLOCK_SemcDiv, 7);
// /* Set Semc alt clock source. */
// CLOCK_SetMux(kCLOCK_SemcAltMux, 0);
// /* Set Semc clock source. */
// CLOCK_SetMux(kCLOCK_SemcMux, 0);
3.8 Main函数里面:增加
__disable_irq();
SCB->VTOR = 0x00000000; //Enable ITCM Vectors Table
__enable_irq();
4.0 keil报错处理:"flexspi_nor_debug\CGAaxf.out": Error: Q0471E: Base address 0x60008000 is above start address 0x60000000 of load region #0
处理办法: 删掉输出文件夹里面的*.bin文件。
4.1需要深入研究的地方有:
__ISB();
__DSB();
/* Enable I cache and D cache */
SCB_DisableDCache();
SCB_DisableICache();
vControlSwitch();
已经确认,vControlSwitch();之前,必须关闭cache。创造一个干净的环境。
Bootloader打印信息如下:
Start xmodem1k client.
App SP:0x81d00000.
App PC:0x6000863d.
mcu ready to recv data...
CCCCCCCCCCCCCCCCCCCC
Wait timeout,Jump App.
------------------------------------------
App SP:0x81d00000.
App PC:0x60008415.
mcu ready to recv data...
Wait timeout,Jump App.
------------------------------------------
20181217 TWO int main2(void) : 0x6000a6b5.
PC:0x6000a6b5
技术咨询请加微信:18124528727
RT1052 BootLoader总结的更多相关文章
- STM8如何使用自带的bootloader
1,首先确认你使用的STM8有没有自带的bootloader.参考下表 2,STM8空器件可以直接使用自带的bootloader. 3,STM8在使用SWIM烧录后,要想继续使用自带的bootload ...
- Android Bootloader LittleKernel的两篇文章 【转】
转自:http://blog.csdn.net/loongembedded/article/details/41747523 2014-12-05 14:37 3599人阅读 评论(2) 收藏 举报 ...
- 斐讯k1路由器刷Breed BootLoader(不死UBoot)教程
刷入Breed BootLoader: 因为这个K1路由器可以开启telnet服务,所以此处刷Breed可以不使用编程器刷Flash芯片的方法进行. 1.打开K1路由器的Telnet服务. 电脑通过有 ...
- Linux学习 : 自己写bootloader
一.bootloader 目标:启动内核 基本功能: ①初始化硬件:关看门狗.设置时钟.设置SDRAM.初始化NAND FLASH ②image比较大需要重定位到SDRAM ②将内核从NAND FLA ...
- How to acquire an Android phone with locked bootloader?
As we know that some devices come with locked bootloaders like Sony, HUAWEI, hTC...If you try to unl ...
- Encrypting bootloader (程序BIN文件加密及在线升级)
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 在上一个博客随笔,我介 ...
- Xmodem Bootloader
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 多年前玩Cisco交换 ...
- 采用TCP协议的PIC32MZ ethernet bootloader
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 趁热打铁,在上一PIC ...
- 采用UDP协议的PIC32MZ ethernet bootloader
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 经过千辛万苦,今天终于 ...
随机推荐
- go中的事件对象time.Duration
const ( Nanosecond Duration = 1 Microsecond = 1000 * Nanosecond Millisecond = 1000 * Microsecond Sec ...
- 计蒜客 41387.XKC's basketball team-线段树(区间查找大于等于x的最靠右的位置) (The Preliminary Contest for ICPC Asia Xuzhou 2019 E.) 2019年徐州网络赛
XKC's basketball team XKC , the captain of the basketball team , is directing a train of nn team mem ...
- SQL进阶-索引设置&sql优化
一.索引设置 1.索引的设置原则 经常出现在WHERE条件.关联条件中的字段作为索引字段: 在满足查询需求的前提下,应尽可能少的创建索引:(对于一个组合索引,可以满足以组合索引左边的一部分字段的查询需 ...
- 前端零基础入门:页面结构层HTML
HTML页面结构层HTML 分以下方面学习: HTML基础, HTML表格, HTML表单, 搭建网页结构 html基础 学习前端的第一门课程,为HTML基础,HTML标记语言,它是网页制作的第一步. ...
- 小程序组件--> 组件传参
小程序组件,在components文件夹右击-->创建文件夹-->右击-->新建component即可 创建一个组件 如果多个地方需要使用到,可以在app.json中加入一下代码,相 ...
- 帝国cms替换iwms幻灯图片问题
在管理标签模板中增加一个新模板 页面模板内容为:[!--empirenews.listtemp--]<!--list.var1-->[!--empirenews.listtemp--] 列 ...
- JAVA字符编码三:Java应用中的编码问题
第三篇:JAVA字符编码系列三:Java应用中的编码问题 这部分采用重用机制,引用一篇文章来完整本部分目标. 来源: Eceel东西在线 问题研究--字符集编码 地址:http://china.e ...
- TypeScript in 5 minutes
https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html Let’s get started by build ...
- CSS Blur() 将高斯模糊应用于输出图片
一.Css Blur() blur() CSS 方法将高斯模糊应用于输出图片. 结果为 <filter-function>. blur(radius) radius模糊的半径,值为< ...
- order by 多个条件
ORDER子句按一个或多个(最多16个)字段排序查询结果,可以是升序(ASC)也可以是降序(DESC),缺省是升序.ORDER子句通常放在SQL语句的最后.ORDER子句中定义了多个字段,则按照字段的 ...