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(在线升级程序). 经过千辛万苦,今天终于 ...
随机推荐
- Git常用命令及配置
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件. Git ...
- 使用mapreduce清洗简单日志文件并导入hive数据库
Result文件数据说明: Ip:106.39.41.166,(城市) Date:10/Nov/2016:00:01:02 +0800,(日期) Day:10,(天数) Traffic: 54 ,(流 ...
- v-model和 .sync
1.v-model的双向数据绑定其实是一个语法糖,类似于,给子组件传入一个value值,并且监听子组件的input事件,在这个事件里将子组件传过来的新值赋值给父组件的value <Input v ...
- 数据接口-免费版(股票数据API)
获取股票数据的源头主要有:数据超市.雅虎.新浪.Google.和讯.搜狐.ChinaStockWebService.东方财富客户端.证券之星.网易财经. 数据超市 2016年5月6日更新.根据最近频繁 ...
- MyBatis传入参数为list、数组、map写法
1.foreach简单介绍: foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有item,index,collection,open,sep ...
- Unity制作棋牌手游之斗地主
目录 大小7.2GB,MP4格式 扫码时备注或说明中留下邮箱 付款后如未回复请至https://shop135452397.taobao.com/ 联系店主
- Java NIO Buffer详解
一.ByteBuffer类型化的put与get方法 /** * ByteBuffer类型化的put与get方法 */ public class NioTest5 { public static voi ...
- iobit-unlocker --- 类似 Unlocker 工具,强制删除文件或文件夹
win10 使用 Unlocker 1.9.2 常有问题,以前在win7上使用完全ok的 更换成:iobit-unlocker ,win10体验还可以,类似Unlocker 下载地址: https:/ ...
- 关于Flink slot 和kafka topic 分区关系的说明
今天又有小伙伴在群里问 slot 和 kafka topic 分区(以下topic,默认为 kafka 的 topic )的关系,大概回答了一下,这里整理一份 首先必须明确的是,Flink Task ...
- Flask自动刷新前端页面(方便调试)livereload
是不是每次调整模板文件,就要停止flask服务器,重启flask服务器,再去浏览器刷新页面? 有没有办法自动完成这3步呢? 安装livereload即可, 仅仅把app.run() 改为下面的例子就可 ...