Chinaunix首页 | 论坛 | 博客
  • 博客访问: 474943
  • 博文数量: 223
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2145
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-01 10:23
个人简介

该坚持的时候坚持,该妥协的时候妥协,该放弃的时候放弃

文章分类

全部博文(223)

文章存档

2017年(56)

2016年(118)

2015年(3)

2014年(46)

我的朋友

分类: 嵌入式

2016-09-29 21:15:36

1、ARM启动流程回顾
2440:启动时,Nand Flash自动拷贝4k的内容到stepping stone中(SRAM)。
利用4k内存代码,拷贝剩余的启动代码从nand flash到内存。
6410:4k变8k
210:BL0三星固定烧好了的,Nand flash(bootload) -->iRam(96kb)
再剩下的拷贝进内存。

2、代码搬移编程
1.起点
sRam(芯片中的地址0x0)
2.终点
连接器脚本(_start中的地址。内存的地址)
3.搬移方式


  1. copy_to_ram:
  2.     ldr r0, =0x0                                  搬移的起点
  3.     ldr r1, =0x30008000                           搬移的终点(内存地址)
  4.     add r3, r0, #1024*4                           搬移的最后地址
  5. copy_loop:
  6.     ldr r2, [r0], #4                              将r0指向的内容存到r2中,r0往下移4位
  7.     str r2, [r1], #4                              将r2中的内容存到r1指向的地址中,r1往下移4位
  8.     cmp r0, r3                                    比较r0,r3的地址是否一致
  9.     bne copy_loop                                 如果不一致
  10.     mov pc, lr                                    返回到bl copy_to_ram


阅读(585) | 评论(0) | 转发(0) |
0

上一篇:内存初始化

下一篇:栈初始化

给主人留下些什么吧!~~