linux 系统移植 (一,uboot启动过程)

linux系统移植分为两部分内容:

1,引导程序:u-boot的移植

2,linux内核的移植

3,根文件系统的移植

这些就是U-boot的代码,官方的,看看就能整理出如下信息。

做好移植,先需要关心和了解以下文件夹。

u-boot要改的信息:

board文件夹(重点改处理器外接的那些部份,处理器里面的芯片公司官方多数已经做好了。)

cpu文件夹:start.S启动过程。

lib_arm文件夹:arm相关库文件。

移植过程:start.S——board.c——main.c

有时就改一下配置就OK了:include/configs

grep -R "字符串" ./*            查找字符串。

下面分析一下start.S:

首先校验信息,芯片手册上已经说明了:

.word 0x2000
.word 0x0
.word 0x0
.word 0x0

正式开始:

各种异常:
.globl _start
_start: breset
ldrpc, _undefined_instruction
ldrpc, _software_interrupt
ldrpc, _prefetch_abort
ldrpc, _data_abort
ldrpc, _not_used
ldrpc, _irq
ldrpc, _fiq
_TEXT_BASE:    //虚拟起始地址,开启MMU之后。
.wordTEXT_BASE
_TEXT_PHY_BASE:
.wordCFG_PHY_UBOOT_BASE       //物理起始地址
之后:

reset:切换到管理模式。

cpu初始化——cpu_init_crit:cache,关掉MMU,电源管理。

然后重点关注:lowlevel_init(board文件中)主要改这个函数,根据不同的板子。

判断从哪里启动,就是扳那就按钮。

从nand flash还是从哪里开始启动。启动后拷贝代码。将nand flash的代码拷贝到dram中。

清bss段

ldrpc, _start_armboot绝对跳转,跳到boot.c中。



你可能感兴趣的:(linux,系统移植)