Embedded 版 (精华区)
发信人: snows (花自飘零水自流), 信区: Embedded
标 题: 长篇连载--arm linux演艺---第二回
发信站: 哈工大紫丁香 (2004年03月16日12:46:25 星期二), 站内信件
ZZ
长篇连载--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代码如何运行,请看下集
--
-
╭────────────────────────────╮
│ 风萧传瑟声,叶落根深处,青阶入野无归途,他乡不知顾 │
│ 泣下问和谁,叹者行已暮,寒眉傲骨今尚在,奈何入凡土 │
╰────────────────────────────╯
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.229.154]
※ 修改:·snows 於 03月16日12:56:28 修改本文·[FROM: 202.118.229.154]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.767毫秒