start_armboot函数简介 (1)这个函数很长,uboot/lib_arm/board.c从444行到908行结束 (2)这个函数里面还调用了其他函数,为什么这么长的函数不分成多个函数,就是因为这个函数整体构成了uboot启动的第二部分,从结构的角度来说,没有分开。这与C语言函数不相符,所以 ...
分类:
其他好文 时间:
2016-05-05 14:40:57
阅读次数:
167
u-boot第一启动阶段的最后跳转到 start_armboot 函数。这个函数在 lib_arm/board.c 中定义。下面就来看看这个函数做了哪些工作。本文的分析过程比较肤浅。只能说是大致流程。更细的流程还需要仔细的钻研。下面是两个整个u-boot所使用的最重要的两个全局变量结构体。u-boo...
分类:
其他好文 时间:
2016-01-19 14:22:45
阅读次数:
117
一,ARM2部分。 1,platform/uboot/uboot-83xx/cpu/ac83xx/start.S 对于 CPU 来说,刚复位之后自然是执行一段汇编代码,然后该代码会做一些简单的通用寄存器的 初始化工作,然后再跳转到start_armboot代码中, 2...
分类:
其他好文 时间:
2015-10-27 22:06:26
阅读次数:
414
uboot的第二阶段主要是start_armboot函数
gd = (gd_t*)(_armboot_start - CFG_MALLOC_LEN - sizeof(gd_t));
在uboot代码和堆空间下面开辟一个全局变量gd的空间,大小就是gd_t的大小
gd->bd = (bd_t*)((char*)gd - sizeof(bd_t));//gd结构体中bd结构体开辟空间,紧挨...
分类:
其他好文 时间:
2015-06-15 11:18:54
阅读次数:
107
/lib_arm/board.c 主要完成了一些初始化的操作,最重要的是有start_armboot函数_armboot_start地址为多少??/* * * U-Boot code: 00F00000 -> 00F3C774 BSS: -> 00FC3274 * IRQ Stack: 00ebf....
分类:
其他好文 时间:
2015-06-14 08:08:35
阅读次数:
116
接下来分析uboot的第二阶段,在第一阶段的start.S的末尾有:
ldr pc, _start_armboot_start_armboot: .word start_armboot
而start_armboot()就是第二阶段的入口,首先我们要认识两个重要的结构体,start_armboot()函数的一系列初始化可以说都是以这个结构体为主线的:typedef struct global...
分类:
其他好文 时间:
2015-05-12 00:10:22
阅读次数:
147
前面分析过在start.S中执行完相关的一些操作之后,会跳转到C语言的部分来执行,跳转到的目标位置就是start_armboot函数,所以现在来看一下这个函数完成了一些什么工作。在这个函数的第一行定义了一个变量如下:
init_fnc_t **init_fnc_ptr;
通过查找uboot源码可以得到下面的类型重定义:
typedef int (init_fnc_t) (void);...
分类:
其他好文 时间:
2015-01-23 11:20:55
阅读次数:
117