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. P4141 消失之物

    目录 链接 思路 代码 链接 P4141 消失之物 思路 f[N];//表示删掉物品后能出现容积为i的方案数 a[N];//单纯0-1背包的方案数asd 那么就先求出a[i]来,然后转移就是 if(j ...

  2. nginx 反向代理之 proxy_cache

    proxy_cache将从C上获取到的数据根据预设规则存放到B上(内存+磁盘)留着备用,A请求B时,B会把缓存的这些数据直接给A,而不需要再去向C去获取. proxy_cache相关功能生效的前提是, ...

  3. python 一个二维数组和一个整数,判断数组中是否含有该整数

    在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序. 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. de ...

  4. Oracle 的查询组合语句

    select   a.core_txn_srl_no||a.c_dept||a.c_batch||lpad(a.c_opr_no,5,'0')||case a.txn_dr_cr_ind when ' ...

  5. JPA批量插入优化

    遇到一个需求是excel数据导入,一次大概会批量插入几万的数据.写完一测奇慢无比. 于是开始打日志,分析代码,发现是插入数据库的时候耗时很长,发现是spring data jpa的原因. 翻看jpa的 ...

  6. Elasticsearch与Solr优缺点比较

    Elasticsearch简介 Elasticsearch是一个实时的分布式搜索和分析引擎.它可以帮助你用前所未有的速度去处理大规模数据. 它可以用于全文搜索,结构化搜索以及分析,也可以将这三者进行组 ...

  7. JavaScript初探系列(九)——BOM

    一.什么是BOM? BOM:Browser Object Model 是浏览器对象模型,浏览器对象模型提供了独立与内容的.可以与浏览器窗口进行互动的对象结构,BOM由多个对象构成,其中代表浏览器窗口的 ...

  8. .Net Core3 新特性整理

    .net core 3实现了.net 标准2.1. 1.生成可执行文件 以前版本需要dotnet run运行项目,.net core 3支持直接生成目标平台的可执行文件.比如windows就是exe了 ...

  9. centos7安装python3.7.4和pip3

    亲测有效,针对 阿里云 centos 7 轻量服务器 python ==> 3.7.4 pip ==>  3 一,打开python官网,找到下载Python的tgz文件,有两种方式下载 ( ...

  10. ThinkPHP 5.1 跨域中间件

    <?php namespace app\http\middleware; class CrossDomain { public function handle($request, \Closur ...