u-boot
文章平均质量分 77
tshaun007
这个作者很懒,什么都没留下…
展开
-
加载地址、运行地址
转载地址:http://blog.csdn.net/ce123_zhouwei/article/details/6990100 在连接目标代码时,会提到运行地址和加载地址。这两者有什么区别呢? 加载时地址就是程序放置的地址,运行地址就是程序定位的绝对地址,也即在编译连接时定位的地址。如果程序是在flash里运行,则运行地址和加载地址是相同的。如转载 2013-12-10 11:21:06 · 548 阅读 · 0 评论 -
U-Boot启动过程--详细版的完全分析
我们知道,bootloader是系统上电后最初加载运行的代码。它提供了处理器上电复位后最开始需要执行的初始化代码。 在PC机上引导程序一般由BIOS开始执行,然后读取硬盘中位于MBR(Main Boot Record,主引导记录)中的Bootloader(例如LILO或GRUB),并进一步引导操作系统的启动。 然而在嵌入式系统中通常没有像BIOS那样的固件程序,因此整个转载 2014-03-18 12:31:48 · 593 阅读 · 0 评论 -
u-boot源码分析 --- 启动第二阶段007
转自http://blog.csdn.net/aaronychen/article/details/2815423下面我们就以引导linux内核的命令bootm为例,说一下u-boot到linux过渡及参数传递的整个过程。common/Cmd_bootm.c:U_BOOT_CMD( bootm, CFG_MAXARGS, 1, do_bootm, "boo转载 2013-12-11 16:14:32 · 435 阅读 · 0 评论 -
u-boot源码分析 --- 启动第二阶段006
转自http://blog.csdn.net/aaronychen/article/details/2815050common/main.c:/**************************************************************************** * returns: * 1 - command executed, repeat转载 2013-12-11 16:12:01 · 419 阅读 · 0 评论 -
u-boot源码分析 --- 启动第二阶段005
接下来我们主要分析main_loop()common/main.c:void main_loop (void){#ifndef CFG_HUSH_PARSER static char lastcommand[CFG_CBSIZE] = { 0, }; int len; int rc = 1; int flag;#endif #if转载 2013-12-11 16:09:38 · 467 阅读 · 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. 首先获取由device_init里注册转载 2013-12-11 16:08:01 · 486 阅读 · 0 评论 -
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) { if ((*init_fn转载 2013-12-11 16:06:50 · 359 阅读 · 0 评论 -
u-boot源码分析 --- 启动第二阶段002
转自http://blog.csdn.net/aaronychen/article/details/2802547我们先来看初始化函数表: init_sequencelib_arm/board.c:typedef int (init_fnc_t) (void); init_fnc_t *init_sequence[] = { cpu_init, /*转载 2013-12-11 16:05:27 · 364 阅读 · 0 评论 -
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 // #define DECL转载 2013-12-11 16:03:28 · 429 阅读 · 0 评论 -
uboot源码分析-第一阶段(汇编部分)
4.2 u-boot源码分析 --- 启动第一阶段分析代码当然要从上电后执行的第一条指令开始看起咯, 那第一条指令在哪呢? 还是以smdk2410为例,我们看它的链接脚本:board/smsk2410/u-boot.lds:……ENTRY(_start) //入口地址SECTIONS{ . = 0x00000000; . = ALIGN(4);转载 2013-12-11 16:01:02 · 577 阅读 · 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## 3000'0000 to 3400'0000## Linux-Kernel转载 2013-12-11 15:56:56 · 864 阅读 · 0 评论 -
u-boot源码分析 - 简介,编译
1 u-boot介绍U-Boot是一种通用的Bootloader, U-Boot可以方便地移植到其他硬件平台上,其源代码也值得开发者们研究学习。最早,DENX软件工程中心的Wolfgang Denk基于8xxrom的源码创建了PPCBOOT工程,并且不断添加处理器的支持。后来,Sysgo Gmbh把ppcboot移植到ARM平台上,创建了ARMboot工程。然后以ppcboot转载 2013-12-11 15:53:35 · 445 阅读 · 0 评论 -
U-Boot启动内核分析
转载自:http://blog.chinaunix.net/uid-13701930-id-336465.html先来引用一下这篇介绍“ARM Linux内核启动要求”的文章ARM Linux Kernel Boot Requirements,是ARM Linux内核的维护者Russell King写的。CPU register settingsr0转载 2013-12-11 15:47:47 · 384 阅读 · 0 评论 -
U_BOOT_CMD 分析
start_armboot{}main_loop{1. 环境变量mtdparts, 调用mtdparts_init2. 如果在启动过程中 无空格键按下则boot_zImage有空格键按下则 run_command("menu",0)3. shell过程,读取用户端输入并执行相应的命令{从输入端获得命令,保存在全局变转载 2013-12-11 14:00:20 · 592 阅读 · 0 评论 -
U-Boot启动流程(Linux内核)的分析
这一篇主要就是U-Boot的config.mk进行了分析。如果要使用开发板board/,就先执行“make_config”命令进行配置,然后执行”make all“,就可以生成 如下3个文件。U-boot.bin:二进制可执行文件,它就是可以直接烧入ROM,NORFlash的文件u-Boot:ELF格式的可执行文件,U-Boot.srec:Motorla S-Record格式的可执行文转载 2014-03-18 13:21:34 · 445 阅读 · 0 评论