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(在线升级程序). 经过千辛万苦,今天终于 ...
随机推荐
- /bin/bash^M: bad interpreter
(1)使用linux命令dos2unix filename,直接把文件转换为unix格式: (2)使用sed命令sed -i "s/\r//" filename 或者 sed -i ...
- RookeyFrame 一些心得 或者 调试技巧等
因为没有依赖具体的实现层,类库的输出路径又没有设置在web层的bin目录,所以每次都要拷贝实现层的DLL过去,有时候拷贝过去了还是没有反应,估计是缓存什么的吧, 解决:先那几个web层bin目录的 D ...
- js时间练习
编写代码,将当前日期按"2017-12-27 11:11 星期三"格式输出 var t1 = new Date(); console.log(t1.toLocaleString() ...
- 数位dp技巧
一个奇怪的东西 正反都能dp!: 正常我们数位dp都是从高到低,以这样的方式保证其小于给定数-> ll n; int num[N],l; ll dp[]; ll dfs(int p,int li ...
- 使用grpc C++功能
grpc c++开发需要安装相关工具以及框架才能进行开发. rz 远程上传文件 本地开发环境搭建: 1.编译相关工具 pkg-config autoconf automake Libtool shto ...
- [原创]STAR法则
[原创]STAR法则 STAR法则是情境(situation).任务(task).行动(action).结果(result)四项的缩写. STAR法则是一种常常被面试官使用的工具,用来收集面试者与工作 ...
- Dubbo自定义Filter统一处理异常
Dubbo版本:2.7 使用自定义Filter注意事项 1.自定义名称不能和默认Filter相同,否则可能不生效 2.只用定义Filter类和META-INF下的文本文件,不用添加配置,@Activa ...
- 哈希表查找(散列表查找) c++实现HashMap
算法思想: 哈希表 什么是哈希表 在前面讨论的各种结构(线性表.树等)中,记录在结构中的相对位置是随机的,和记录的关键字之间不存在确定的关系,因此,在结构中查找记录时需进行一系列和关键字的比较.这一类 ...
- win10教育版永久激活密钥 win10教育版激活码 win10教育版产品密钥2018(第三种方法亲测可用!)
有没有最新win10教育版激活密钥?win10教育版功能比较全面,增加了一些学术上需要的功能.有用户装了win10教育版,提示需要产品密钥,网上找到的win10教育版永久激活码大多失效,这边小编为大家 ...
- WireMock和Spring MVC模拟器
WireMock和Spring MVC模拟器 Spring Cloud Contract提供了一个方便的类,可以将JSON WireMock存根加载到Spring MockRestServiceSer ...