[国嵌攻略][042][代码搬移不可少]

ARM启动流程

1.处理器内部RAM的大小有限,不能拷贝全部的Bootloader,所以需要用内部RAM BL1的代码来拷贝BL2的代码到内存中。规范的方式的代码搬移的起点是flash,终点是内存。但是由于nand flash还没有初始化,所以先从内部ram中把BL1搬移到内存中。等到初始化nand flash后在采用规范的代码搬移方式。

2.起点SRAM地址:2440 0x00000000,6410 0x0C000000,210 0xD0020000

3.链接起始地址决定了程序第一行代码在内存中出现的位置,链接起始地址做为拷贝的终点

终点DRAM地址:2410 0x30000000,6410 0x50000000,210 0x20000000

 

代码搬移

1
2
3
4
5
6
7
8
9
10
11
12
13
14
copy_from_ram_to_mem:
    //初始化地址
    ldr r1, =RAM_ADDR
    ldr r2, =MEM_ADDR
    add r0, r1, #BOOT_SZIE
     
    //复制代码
loop:
    ldr r3, [r1], #4
    str r3, [r2], #4
    cmp r1, r0
    bne loop
 
    mov pc, lr

 

posted @   盛夏夜  阅读(193)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示