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(在线升级程序). 经过千辛万苦,今天终于 ...
随机推荐
- 0.学习springmvc补充
一.我的截图中的程序错误: 其中的路径写的是:"/user/testString" 这样写会错误当tomcat中配置的根目录为"/"或” “成功,但当配置为”x ...
- [RN] React Native 再按一次退出
实现 React Native 再按一次退出 单页面: ... componentWillMount() { BackHandler.addEventListener('hardwareBackPre ...
- VMware Tools安装后设置自动挂载解决共享文件夹无法显示的问题
一. 确保成功安装了VMware Tools 二. 使用如下命令 1.apt-get install open-vm-tools 2.vmhgfs-fuse .host:/ /mnt/hgfs ...
- A@[G!C]%008
A@[G!C]%008 A Simple Calculator 细节题. B Contiguous Repainting 最后只要有连续\(K\)个鸽子同色就可以构造方案,枚举+前缀和 C Tetro ...
- Instance Segmentation with Mask R-CNN and TensorFlow
Back in November, we open-sourced our implementation of Mask R-CNN, and since then it’s been forked ...
- 利用sftp迁移pve虚拟机
首先在A主机进行虚拟机备份vzdump <vmid>在B主机利用sftp复制备份到A主机cd /var/lib/vz/dump/sftp root@192.168.25.140 回答yes ...
- JMeter的接口测试使用
1 先创建线程组
- 列出python库的内置方法
import cv dir(cv) ['16SC', '16UC', '32FC', '32SC', '64FC', '8SC', '8UC', 'Abs', 'AbsDiff', 'AbsDiffS ...
- 【NWJS】解析node-webkit(NWJS)的打包和发布
目录结构: contents structure [-] 下载和安装node-webkit 建立一个简单的WEB应用 生成EXE可执行文件 修改icon 封包 Enigma Virtual Box I ...
- 部署一个fc网站需要注意的地方
1. php环境 必须5.3 2. yum install nodejs 3. yum install v8-devel 3. 下载v8js php扩展, 版本是 v8js-0.1.3 tar -zx ...