RT1052 BootLoader总结‍

  1. 概述

    Bootloader涉及到的RT1052单片机资源有:Cache,ram,外部SDRAM,ARM7汇编指令,外部dataFlash.

    升级功能涉及到的其他功能有:服务器存贮和传输升级Bin文件;上位机接收和发送BiN文件;判断升级是否成功和提示。​

  2. 流程图

  1. 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:设置改变:

  1. --remove

  2. --keep=*(.boot_hdr.ivt)

  3. --keep=*(.boot_hdr.boot_data)

  4. --keep=*(.boot_hdr.dcd_data)

  1. --keep=*(.boot_hdr.conf)

  2. --keep=*(NonCacheable)

  3. --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总结的更多相关文章

  1. STM8如何使用自带的bootloader

    1,首先确认你使用的STM8有没有自带的bootloader.参考下表 2,STM8空器件可以直接使用自带的bootloader. 3,STM8在使用SWIM烧录后,要想继续使用自带的bootload ...

  2. Android Bootloader LittleKernel的两篇文章 【转】

    转自:http://blog.csdn.net/loongembedded/article/details/41747523 2014-12-05 14:37 3599人阅读 评论(2) 收藏 举报 ...

  3. 斐讯k1路由器刷Breed BootLoader(不死UBoot)教程

    刷入Breed BootLoader: 因为这个K1路由器可以开启telnet服务,所以此处刷Breed可以不使用编程器刷Flash芯片的方法进行. 1.打开K1路由器的Telnet服务. 电脑通过有 ...

  4. Linux学习 : 自己写bootloader

    一.bootloader 目标:启动内核 基本功能: ①初始化硬件:关看门狗.设置时钟.设置SDRAM.初始化NAND FLASH ②image比较大需要重定位到SDRAM ②将内核从NAND FLA ...

  5. 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 ...

  6. Encrypting bootloader (程序BIN文件加密及在线升级)

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 在上一个博客随笔,我介 ...

  7. Xmodem Bootloader

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 多年前玩Cisco交换 ...

  8. 采用TCP协议的PIC32MZ ethernet bootloader

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 趁热打铁,在上一PIC ...

  9. 采用UDP协议的PIC32MZ ethernet bootloader

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 经过千辛万苦,今天终于 ...

随机推荐

  1. 51: Luogu 2485 模板

    $des$ 1.给定y.z.p,计算y^z mod p 的值: 2.给定y.z.p,计算满足xy ≡z(mod p)的最小非负整数x: 3.给定y.z.p,计算满足y^x ≡z(mod p)的最小非负 ...

  2. luoguP4721 【模板】分治 FFT

    P4721 [模板]分治 FFT 链接 luogu 题目描述 给定长度为 \(n-1\) 的数组 \(g[1],g[2],..,g[n-1]\),求 \(f[0],f[1],..,f[n-1]\),其 ...

  3. C语言中常见的图形打印总结

    直角三角形(靠右直立) 示例实现代码如下: int main(){ int n; int i,j; cin >> n; if(n<= 0){ cout << " ...

  4. nginx rewrite中的break和last

    两个指令用法相同,但含义不同,需要放到rewrite规则的末尾,用来控制重写后的链接是否继续被nginx配置执行(主要是rewrite.return指令). 示例1:(连续俩条rewrite规则)se ...

  5. mysql(一)工作原理 & 数据库引擎

    参考文档 http://www.cnblogs.com/xiaotengyi/articles/3641983.html innodb:https://www.cnblogs.com/Aiapple/ ...

  6. 【Gamma】Scrum Meeting 3

    目录 写在前面 进度情况 任务进度表 Gamma阶段燃尽图 照片 写在前面 例会时间:5.27 22:30-23:30 例会地点:微信群语音通话 代码进度记录github在这里 临近期末,团队成员课程 ...

  7. mybatis-generator 模板

    generatorConfig.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ge ...

  8. RunTime.getRunTime().addShutdownHook的用法

    今天在阅读Tomcat源码的时候,catalina这个类中使用了下边的代码,不是很了解,所以google了一下,然后测试下方法,Tomcat中的相关代码如下: Runtime.getRuntime() ...

  9. linux压缩 zip和unzip

    .把/home目录下面的mydata目录压缩为mydata.zip zip -r mydata.zip mydata #压缩mydata目录 .把/home目录下面的mydata.zip解压到myda ...

  10. mqtt概念整理

    运行模式: 服务器: emqx (https://docs.emqx.io/edge/v3/cn/install.html) 协议头字节数: 2个字节 三种消息可能性保障(Qos): Qos0:最多一 ...