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. Vuejs发送Ajax请求

    一.概况 ①vuejs中没有内置任何ajax请求方法 ②在vue1.0版本,使用的插件 vue resource 来发送请求,支持promise ③在vue2.0版本,使用社区的一个第三方库 axio ...

  2. Linux OOM一二三

    Linux开发一般会遇到“/proc/sys/vm/overcommit_memory”,即文件/etc/sysctl.conf中的vm.overcommit_memory,Overcommit的意思 ...

  3. vuex传递数据的流程

    当组件修改数据的时候必须通过store.dispatch来调用actions中的方法,当actions中的方法被触发的时候通过调用commit的方法来触发mutations里面的方法,mutation ...

  4. 洛谷 P1462 通往奥格瑞玛的道路 题解

    P1462 通往奥格瑞玛的道路 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡 ...

  5. .NET总结--ASP.NET工作原理

    前言 前前后后写了不少关于某些技术啥的博客,一直在追新求深,而真正使用上的时候才发现了解的太少太少了,从事.net开发三年有余了不是它不行了而是我坚持不住了,如今不得不向生活低头,这个系列作为三年技术 ...

  6. DDL/DML/DCL区别

    DDL DDL的概述 DDL(Data Definition Language 数据定义语言)用于操作对象和对象的属性,这种对象包括数据库本身,以及数据库对象,像:表.视图等等,DDL对这些对象和属性 ...

  7. UDF——已知入口压力和流量计算压降

    有时候我们在计算内流,比如管道内的流动时,只知道入口压力和流量,而我们想要计算得到出口的压力,这个应该怎么办呢?当然新版本的Fluent已经自带了流量出口边界,而这里我们采用Fluent的UDF来实现 ...

  8. sentinel-dashboard安装、运行(docker)

    https://github.com/alibaba/Sentinel/releases 下载源码 修改成支持nacos(略) mkdir /opt/sentinel-dashboard把编译好的se ...

  9. iis php web.config处理404,500等,跳转友好页面,显示500错误信息

    显示500错误信息<pre name="code" class="html"><?xml version="1.0" en ...

  10. PHP 命令行参数解析工具类

    <?php/** * 命令行参数解析工具类 * @author guolinchao * @email luoyecb@163.com */class CommandLine{ // store ...