![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
bootl loader
aaronychen
性格适中,爱好运动
展开
-
u-boot源码分析 - 简介,编译
1 u-boot介绍U-Boot是一种通用的Bootloader, U-Boot可以方便地移植到其他硬件平台上,其源代码也值得开发者们研究学习。最早,DENX软件工程中心的Wolfgang Denk基于8xxrom的源码创建了PPCBOOT工程,并且不断添加处理器的支持。后来,Sysgo Gmbh把ppcboot移植到ARM平台上,创建了ARMboot工程。然后以pp原创 2008-08-19 09:17:00 · 3831 阅读 · 0 评论 -
u-boot源码分析 --- 启动第二阶段002
我们先来看初始化函数表: init_sequencelib_arm/board.c:typedef int(init_fnc_t) (void); init_fnc_t*init_sequence[] = { cpu_init, /*basic cpu dependent setup */ board_init,原创 2008-08-20 16:41:00 · 2903 阅读 · 0 评论 -
uboot源码分析-第一阶段(汇编部分)
4.2 u-boot源码分析 --- 启动第一阶段分析代码当然要从上电后执行的第一条指令开始看起咯, 那第一条指令在哪呢? 还是以smdk2410为例,我们看它的链接脚本:board/smsk2410/u-boot.lds:……ENTRY(_start) //入口地址SECTIONS{ . = 0x00000000;原创 2008-08-20 09:37:00 · 4234 阅读 · 3 评论 -
u-boot源码分析 --- 启动第二阶段001
4.2 u-boot源码分析 --- 启动第二阶段接着我们来看start_armboot,从这开始应该属于bootloader的第2个阶段了,这个阶段的代码主要用c完成。 lib_arm/board.c:void start_armboot(void){ //该宏定义在include/asm-arm/Global_data.h原创 2008-08-20 16:39:00 · 3100 阅读 · 0 评论 -
uboot源码分析-运行时内存分布
4 u-boot源码分析4.1 u-boot源码分析 --- 内存分布我们通过board/smdk2410/config.mk来分析运行时的内存分布情况board/smdk2410/config.mk: ## SMDK2410 has 1 bank of 64 MB DRAM## 30000000 to 34000000#原创 2008-08-19 09:24:00 · 6270 阅读 · 1 评论 -
u-boot源码分析 --- 启动第二阶段003
看完初始化函数表,我们在顺着启动流程继续往下看,在来回顾下start_armboot的代码 lib_arm/Board.c:void start_armboot (void){ …… for (init_fnc_ptr =init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {原创 2008-08-22 10:25:00 · 2247 阅读 · 0 评论 -
u-boot源码分析 --- 启动第二阶段007
下面我们就以引导linux内核的命令bootm为例,说一下u-boot到linux过渡及参数传递的整个过程。common/Cmd_bootm.c:U_BOOT_CMD( bootm, CFG_MAXARGS, 1, do_bootm, "bootm - boot application image frommemory/n",原创 2008-08-22 17:06:00 · 3048 阅读 · 0 评论 -
u-boot源码分析 --- 启动第二阶段004
继续看console_init_r()函数common/console.c:/* Called after the relocation- use desired console functions */int console_init_r (void){ DECLARE_GLOBAL_DATA_PTR; /*1. 首先获取原创 2008-08-22 10:26:00 · 2120 阅读 · 0 评论 -
u-boot源码分析 --- 启动第二阶段005
接下来我们主要分析main_loop()common/main.c:void main_loop(void){#ifndefCFG_HUSH_PARSER static char lastcommand[CFG_CBSIZE] = { 0,}; int len; int rc = 1; int fl原创 2008-08-22 16:04:00 · 2172 阅读 · 0 评论