U-boot
文章平均质量分 75
如小丧
这个作者很懒,什么都没留下…
展开
-
uboot 启动过程中各函数功能详细分析
转自:http://blog.chinaunix.net/uid-21410064-id-96753.htmluboot启动过程中各函数功能详细分析本文主要分析流程中,各函数的功能。按启动顺序罗列一下启动函数执行细节。我们首先从函数start_armboot流程进行分析:1)DECLARE_GLOBAL_DATA_PTR; 这个宏在include/global_data.h转载 2014-10-06 16:07:10 · 1270 阅读 · 0 评论 -
编译地址 运行地址 相对地址
32 位的处理器,它的每一条指令是4 个字节,以4 个字节存储顺序,进行顺序执行,CPU 是顺序执行的,只要没发生什么跳转,它会顺序进行执行,编译器会对每一条指令分配一个 编译地址,这是编译器分配的,在编译过程中分配的地址,我们称之为编译地址。 运行地址是指,程序指令真正运行的地址,是由用户指定的,用户将运行地址烧录到哪里, 哪里就是运行的地址。比如有一个指令的编译地址是0x5,转载 2014-10-09 14:41:35 · 973 阅读 · 0 评论 -
ARM的存储器映射与存储器重映射
存储器映射是指把芯片中或芯片外的FLASH,RAM,外设等进行统一编址。即用地址来表示对象。这个地址绝大多数是由厂家规定好的,用户只能用而不能改。用户只能在挂外部RAM或FLASH的情况下可进行自定义。 ARM7TDMI的存储器映射可以有0X00000000~0XFFFFFFFF的空间,即4G的映射空间,但所有器件加起来肯定是填不满的。一般来说, 0X00000000依次开始存放转载 2014-10-11 18:25:33 · 2350 阅读 · 0 评论 -
U-boot源码解析
我们知道,bootloader是系统上电后最初加载运行的代码。它提供了处理器上电复位后最开始需要执行的初始化代码。 在PC机上引导程序一般由BIOS开始执行,然后读取硬盘中位于MBR(Main Boot Record,主引导记录)中的Bootloader(例如LILO或GRUB),并进一步引导操作系统的启动。 然而在嵌入式系统中通常没有像BIOS那样的固件程序,因此整个转载 2014-10-03 15:16:24 · 912 阅读 · 1 评论 -
UNIX-LINUX平台可执行文件格式分析
本文讨论了 UNIX/LINUX 平台下三种主要的可执行文件格式:a.out(assembler andlink editor output 汇编器和链接编辑器的输出)、COFF(Common ObjectFile Format 通用对象文件格式)、ELF(Executable and Linking Format 可执行和链接格式)。首先是对可执行文件格式的一个综述,并通过描述 ELF文件加载过转载 2014-10-04 11:52:16 · 630 阅读 · 0 评论 -
最详细的U-BOOT源码分析及移植
源文出处:http://blog.mcuol.com/User/lvembededsys/Article/4728_1.htm本文从以下几个方面粗浅地分析u-boot并移植到FS2410板上:1、u-boot工程的总体结构2、u-boot的流程、主要的数据结构、内存分配。3、u-boot的重要细节,主要分析流程中各函数的功能。4、基于FS2410板子的u-boot移植。转载 2014-10-04 12:02:33 · 550 阅读 · 0 评论 -
U-boot汇编代码分析
第一列就是指令的物理地址,由程序每次装入的不同而可能不同,若在不同机器上大多时候是不相同的,就是在内存中的地址,也就是所谓的"地址编号",可以这样理解的.第二列就是指令字,也就是说二进制才是机器所认识的编码的,由于其计数较难,用十六进制表示,这个十六进行就是说机器码的.比如51就是将ECX入栈.等等,机器码是比较难记的,且一个指令可能有几个码来表示,就比如add指令,如果是加寄存器是一个指令,转载 2014-10-04 22:26:54 · 610 阅读 · 0 评论 -
Linux下的lds链接脚本基础
转自:http://blogold.chinaunix.net/u3/99507/showart_2025436.html今天在看uboot引导Linux部分,发现要对链接脚本深入了解,才能知道各个目标文件的内存分布映像,下面是我看到的一些资料0. Contents1. 概论2. 基本概念3. 脚本格式4. 简单例子5. 简单脚本命令转载 2014-10-04 11:57:18 · 331 阅读 · 0 评论 -
U-boot .balignl 16,0xdeadbeef浅析
转自:http://www.cnblogs.com/liulipeng/archive/2013/09/18/3328506.html最近在分析u-boot的源代码,看到这一行: .balignl 16, 0xdeadbeef不知道为什么要这样写,0xdeadbeef,明显是个单词组,写在这里有何意义呢?查阅了众多资料的时候才晃然大悟。下面我一步步来说明:转载 2014-10-05 16:34:46 · 487 阅读 · 0 评论 -
ARM汇编 .word 解析
转自:http://guliqun1983.blog.163.com/blog/static/5011168520111257719482/3. 令人头疼的ARM汇编伪指令 .word经常碰到那些以“.”打头的一些令人头疼的伪指令,至于.globl _start .balign .align .data .text等等就算了,最最bt的如下:_undefined_instruction: .w转载 2014-10-05 17:58:18 · 818 阅读 · 0 评论 -
u-boot 代码中常见汇编指令
在嵌入式开发中,汇编程序常常用于非常关键的地方,比如系统启动时初始化,进出中断时的环境保护,恢复等对性能有要求的地方。ARM指令集可以分为六大类,分别为数据处理指令 、Load/Store指令 、跳转指令 、程序状态寄存器处理指令 、协处理器指令 和异常产生指令 。 ARM 指令使用的基本格式如下: 〈opcode〉{〈cond〉}{S} 〈Rd〉,〈Rn〉{,〈operand转载 2014-10-18 22:14:19 · 468 阅读 · 0 评论 -
u-boot 代码中常见汇编指令
在嵌入式开发中,汇编程序常常用于非常关键的地方,比如系统启动时初始化,进出中断时的环境保护,恢复等对性能有要求的地方。ARM指令集可以分为六大类,分别为数据处理指令 、Load/Store指令 、跳转指令 、程序状态寄存器处理指令 、协处理器指令 和异常产生指令 。 ARM 指令使用的基本格式如下: 〈opcode〉{〈cond〉}{S} 〈Rd〉,〈Rn〉{,〈opera转载 2014-10-19 15:39:05 · 451 阅读 · 0 评论 -
__asm__ __volatile__("": : :"memory")
memory 强制gcc编译器假设RAM所有内存单元均被汇编指令修改,这样cpu中的registers和cache中已缓存的内存单元中的数据将作废。cpu将不得不在需要的时候重新读取内存中的数据。这就阻止了cpu又将registers,cache中的数据用于去优化指令,而避免去访问内存。 The GCC manual says using 'asm volatile' p转载 2014-10-09 01:49:35 · 751 阅读 · 0 评论 -
u-boot2012.04.01移植到mini2440
软件平台: Windows XP, Ubuntu硬件平台: mini2440软件: Source Insight、u-boot.2012.04.01 (官方下载源码)一、uboot 启动分析 1.set the cpu to SVC32 mode(start.S) 2.turn off the watchdog 3.mask all IRQs by setting al转载 2014-10-08 16:25:17 · 884 阅读 · 0 评论 -
uboot中的TEXT_BASE
都知道U-BOOT分为两个阶段,第一阶段是(~/cpu/arm920t/start.S中)在FLASH上运行(一般情况下),完成对硬件的初始化,包括看门狗,中断缓存等,并且负责把代码搬移到SDRAM中(在搬移的时候检查自身代码是否在SDRAM中),然后完成C程序运行所需要环境的建立,包括堆栈的初始化等,最后执行一句跳转指令: ldr pc, _start_armboot转载 2014-10-23 09:12:29 · 480 阅读 · 0 评论 -
adr和ldr
这两个都是伪指令:adr是小范围的地址读取伪指令,ldr是大范围的读取地址伪指令。可实际上adr是将基于PC相对偏移的地址值或基于寄存器相对地址值读取的为指令,而ldr用于加载32为立即数或一个地址到指定的寄存器中。到这儿就会看到其中的区别了。如果在程序中想加载某个函数或者某个在联接时候指定的地址时请使用adr,例如在lds中需要重新定位的地址。当加载32为的立即数或外部地址时请用ldr。转载 2014-10-23 09:37:23 · 500 阅读 · 0 评论 -
lowlevel_init.S 较详细分析
转自:http://zhouyang340.blog.163.com/blog/static/30240959201222545043332/ 在我迷迷糊学看了lowlevel_init.S中的代码之后,有一个感觉就是,要想读懂其中的代码首先得看一下你所用的芯片手册,因为里面有比较详细的存储器控制(MemoryController)描述。我用的是s3c2440手册里写得十分清楚,总共有8个转载 2014-10-06 22:22:16 · 620 阅读 · 0 评论 -
u-boot中的.balignl 16,0xdeadbeef的理解
最近在分析u-boot的源代码,看到这一行:.balignl 16,0xdeadbeef不理解了,不知道为什么要这样写,0xdeadbeef,明显是个单词组,写在这里有何意义呢?然后在查阅了众多资料的时候才晃然大悟。下面我一步步来说明:首先要弄明白.balignl的意思,这个其实应该算是一个伪操作符,伪操作符的意思就是机器码里,并没有一个汇编指令与其对应,是编译器来转载 2014-10-07 14:21:23 · 643 阅读 · 0 评论 -
start.S进一步、更详细的、深入的解释和分析
#inclde l config.h这个头文件在u-boot-1.1.6/incl?/linux目录下,执行命令# make smdk2410_config之前,内容如下: #ifndef _LINUX_CONFIG_H#define _LINUX_CONFIG_H/* #incl? */#endif执行make smdk2410_config之之转载 2014-10-07 15:37:04 · 532 阅读 · 0 评论 -
_armboot_start 内容的疑问
--------------------------------------------------------------------------------"aaronwong: u-boot中代码的疑问(_armboot_start与_start)?12Gm---------------------------=j我使用的是u-boot-1.3.0-rc2。在cpu/pxa/st转载 2014-10-23 14:44:14 · 465 阅读 · 0 评论 -
u-boot第一阶段初始化流程(反汇编分析)
1.设置中断向量表为了更清楚,彻底的理解u-boot,我会全部从反汇编的代码去分析忘记的朋友先补下课啦,提示:arm-linux-objdump -D u-boot>u-boot.s====================================================================================================.转载 2014-10-07 15:35:21 · 995 阅读 · 0 评论 -
U-boot启动代码第二阶段之 gd_t和bd_t 以及 *gd asm ("r8")
gd_t和bd_t是u-boot中两个重要的数据结构,在初始化操作很多都要靠这两个数据结构来保存或传递.分别定义在./include/asm/global_data.h和./include/asm/u_boot.h1.gd_t: global data数据结构定义,位于文件 include/asm-arm/global_data.h。其成员主要是一些全局的系统初始化参数。需要用到时用宏转载 2014-10-07 20:05:40 · 618 阅读 · 0 评论 -
U-Boot启动第二阶段代码分析
U-Boot第一阶段的启动流程。(nandflash启动,把nand的4k代码考到sram中,因为nand没址线,不能映射到内存,所以通过sram进行过度,sram中4k代码把整个uboot拷贝到sdram上,初始化好堆栈,为c语言提供条件,进入uboot的第二阶段! )这个阶段主要是初始化硬件设备,为加载U-Boot的第二阶段代码准备RAM空间最后跳转到lib_arm/board.c中start转载 2014-10-08 13:23:44 · 546 阅读 · 0 评论 -
u-boot启动之第2阶段浅析
在第一阶段分析中已经知道,经过一系列板级初始化后最后是调用函数start_armboot (void),这个告诉我们第2阶段应该是从这个函数开始进行分析,这个函数是在/lib_arm/board.c文件中。/* Pointer is writable since we allocated a register for it */ gd = (gd_t*)(_armboot_start -转载 2014-10-08 13:32:11 · 433 阅读 · 0 评论 -
U-Boot启动第一阶段代码分析
u-boot的stage1代码通常放在cpu/xxxx/start.S文件中,他用汇编语言写成; u-boot的stage2代码通常放在lib_xxxx/board.c文件中,他用C语言写成。 各个部分的流程图如下: U-Boot启动第一阶段代码分析 这里我选择下载u-boot-1.1.6.tar.bz2(6402K)转载 2014-10-08 13:36:56 · 419 阅读 · 0 评论 -
Buildroot自动化交叉编译工具
转自 :http://blog.csdn.net/youyudehexie/article/details/7583657Buildroot简介Buildroot就是一个自动化生成交叉编译工具的工具,记得当年我搭建自己的ARM交叉编译器的时候,花了很大力气和时间,最好因为各种错误而无奈放弃了,最后还是用别人的交叉编译器,不曾想到有这么有个好用的工具出现,它大大缩减了生成转载 2015-01-31 15:22:50 · 1220 阅读 · 0 评论