打印
[ZLG-ARM]

长篇连载--arm linux演艺---第二回 (转)

[复制链接]
930|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
amazelove|  楼主 | 2009-3-24 18:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
长篇连载--arm linux演艺---第二回 
  -------------------------------------------------------------------------------- 
  
  上回书说到flashloader把bootloader load到0x0AFE0100, 然回跳了过去, 
  其实0x0AFE0100 就是烧在flash 0x0C000100中的真正的bootloader: 
  
  bootloader 有几个文件组成,先是START.s,也是唯一的一个汇编程序,其余的都是C写成的,START.s主要初始化堆栈: 
  
  _start: 
  ldr r1,=StackInit 
  ldr sp,[r1] 
  b main 
  //此处我们跳到了C代码的main函数,当C代码执行完后,还要调用 
  //下面的JumpToKernel0x跳到LINXU kernel运行 
  
  .equ StackInitValue, __end_data+0x1000 // 4K __end_data在连结脚本中指定 
  
  StackInit: 
  .long StackInitValue 
  
  .global JumpToKernel 
  
  JumpToKernel: 
  // jump to the copy code (get the arguments right) 
  mov pc, r0 
  
  .global JumpToKernel0x 
  // r0 = jump address 
  // r1-r4 = arguments to use (these get shifted) 
  JumpToKernel0x: 
  // jump to the copy code (get the arguments right) 
  mov r8, r0 
  mov r0, r1 
  mov r1, r2 
  mov r2, r3 
  mov r3, r4 
  mov pc, r8 
  .section ".data.boot" 
  .section ".bss.boot" 
  
  欲知bootloader中的c代码如何运行,请看下集

相关帖子

沙发
zcying| | 2009-4-9 15:36 | 只看该作者

还分回呢……整的和小说一样啊

使用特权

评论回复
板凳
reeper| | 2009-4-9 17:18 | 只看该作者

吊人胃口啊

使用特权

评论回复
地板
zcying| | 2009-4-14 10:52 | 只看该作者

那叫小兔

使用特权

评论回复
5
zcying| | 2009-4-14 10:53 | 只看该作者

那叫系统

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

36

帖子

0

粉丝