U-Boot学习
文章平均质量分 89
求佛_ce123
专注于嵌入式软件开发
展开
-
图解U-Boot:第一阶段源码分析
U-Boot第一阶段的启动流程。这个阶段主要是初始化硬件设备,为加载U-Boot的第二阶段代码准备RAM空间最后跳转到lib_arm/board.c中start_armboot函数,这是第二阶段的入口点。 U-Boot第一阶段的存储器布局。上图中U-Boot安装在Nand Flash,启动时Nand Flash控制器前4KB的代码复制到SRAM中,这4KB的代码再将整个U-Boot复制到SDRA原创 2012-03-04 23:22:04 · 10859 阅读 · 2 评论 -
系统引导时为什么要关闭Caches?
系统引导时为什么要关闭Catchs?一、引言 U-Boot 1.1.6中有如下代码:/**************************************************************************** CPU_init_critical registers** setup important registers* setup memory timi原创 2012-04-30 20:16:49 · 7231 阅读 · 5 评论 -
U-Boot直接引导zImage内核
U-Boot直接引导zImage内核 U-boot1.1.6只能只能就能过mkimage工具加工后的内核镜像文件。mkimage工具给zImage增加了一个64B大小的头。U-Boot是通过bootm命令来引导Linux内核的,bootm命令调用do_bootm函数来mkimage工具增加的头,最后调用do_bootm_linux函数引导去掉了mkimage工具增加的头的Linux原创 2012-03-11 23:13:26 · 12286 阅读 · 0 评论 -
zImage和uImage的区别
zImage和uImage的区别一、简介 对于Linux内核,编译可以生成不同格式的映像文件,例如:# make zImage# make uImage zImage是ARM Linux常用的一种压缩映像文件,uImage是U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的“头”,说明这个映像文件的类型、加载位置、生成时间、大小等信息。换句话说,如果直接从uImage的0x原创 2011-08-14 15:55:33 · 17346 阅读 · 1 评论 -
详解U-Boot中printf函数的实现
详解U-Boot中printf函数的实现一、printf函数调用关系1.1fputc和srial_putc的关系/* * Output a single byte to the serial port. */void serial_putc (const char c)//发送数据{ S3C24X0_UART * const uart = S3C24X0_GetBase_UART(UAR原创 2012-04-29 19:18:35 · 13751 阅读 · 2 评论 -
U-Boot串口初始化详解
U-Boot串口初始化详解目录零、概述一、init_baudrate二、serial_init三、console_init_f四、devices_init五、console_init_r六、打印信息七、为什么要使用devlist,std_device[]?零、概述 上面这张图是U-Boot中串口设备驱动的流程,从寄存器级别的设置到最后终端信息的输出。下面我们详细讲解每一个步骤。一、init_bau原创 2012-03-21 14:55:42 · 16252 阅读 · 0 评论 -
再谈U-Boot的设备管理框架
再谈U-Boot的设备管理框架一、U-Boot的设备管理框架 在《U-Boot的设备管理》一文中通过源码分析讲解了U-Boot的设备管理。本文将从宏观的角度继续讲解U-Boot的设备管理框架。设备管理框架实现了设备的高度抽象,保持框架的稳定性,允许框架下的代码实时变化,可以很好的实现U-Boot的驱动程序的移植。U-Boot的设备管理框架实现了对串口、LCD、键盘、usbtty、I2C等设备的抽象原创 2012-03-18 13:55:09 · 7091 阅读 · 4 评论 -
U-Boot常用命令
U-Boot常用命令czu2440 # help? - alias for 'help'autoscr - run script from memorybase - print or set address offsetbdinfo - print Board Info structureboot - boot default, i.e., run 'bootcmd'bo原创 2012-03-18 13:54:49 · 3904 阅读 · 0 评论 -
图解U-Boot:第二阶段源码分析
说明:图片上传后有点模糊,可从http://download.csdn.net/detail/ce123/4112241下载清晰的图片(免费)。原创 2012-03-05 11:20:37 · 7082 阅读 · 2 评论 -
U-Boot与Ping命令
U-Boot与Ping命令 开发板运行U-Boot,在终端下使用Ping命令是能Ping通PC机,但PC机Ping不同U-Boot。 在开发行U-Boo下的Ethernet 驱动时,只能在Target上去Ping 外面的主机能检测以太网是否连通,如果在外面的主机上去ping目标板,则即使目标板上的Ethernet一切OK,也是ping 不通的。这是因为行U-Boo是一个单线程main_loop函数原创 2012-03-15 14:08:32 · 10602 阅读 · 1 评论 -
U-Boot的设备管理
U-Boot的设备管理目录一、初始设备链表、初始化设备和注册设备 1.1 devices_init函数 1.2 devices结构的定义 1.3 drv_system_init 函数二、设备注册 2.1 device_register (device_t * dev) 2.2 device_deregister(char *devname)三、设备搜索 U-Boot通过devices_init函数原创 2012-03-08 15:56:39 · 6629 阅读 · 2 评论 -
ARM汇编中的ldr和adr的区别及其在uboot中相关源码的分析
ARM汇编中的ldr和adr的区别及其在uboot中相关源码的分析 ARM汇编有ldr指令以及ldr、adr伪指令,它们都可以将标号表达式作为操作数,下面通过分析一段代码以及对应的反汇编结果来说明它们的区别。ldr r0, _startadr r0, _startldr r0, =_start_start:b _start编译的时候设置 RO 为 0x30000000,下面是反汇编的结果:原创 2012-02-22 20:09:26 · 9356 阅读 · 5 评论 -
mkimage的-a 和 –c参数和内核引导
目录一、mkimage工具简介二、-a参数与-e参数和内核引导的关系三、实例测试3.1 -a参数与-e参数相同,可以将内核下载到SDRAM的任何地址,然后从这启动3.2 -a参数与-e参数不同,只能将内核下载到-a参数后面的地址,然后从这启动;否则无法引导内核3.3 -a参数与-e参数不同,下载地址和-a参数后面的地址不同(无法引导)3.4 覆盖了U-Boot传给内核的参数,会导致这样情形(无法引原创 2012-03-05 16:29:14 · 5171 阅读 · 1 评论 -
图解U-Boot:引导内核分析
U-Boot的命令为用户提供了交互功能,并且已经实现了几十个常用的命令。如果开发板需要很特殊的操作,可以添加新的U-Boot命令。U-Boot的每一个命令都是通过U_Boot_CMD宏定义的。这个宏在头文件中定义#define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help) \cmd_tbl_t __u_boot_cmd_##name Struct_Sect原创 2012-03-05 18:31:16 · 22629 阅读 · 3 评论 -
U-Boot与Linux内核的交互
U-Boot与Linux内核的交互说明:本文所使用的U-Boot的版本是1.1.6,平台是S3C2440。目录一、简介 1.1标记列表二、设置标记存放的地址 2.1相关的结构体定义 2.2标记存放地址的设定三、标记的设置 3.1设置标记ATAG_CORE 3.2设置内存标记ATAG_MEM 3.3设置命令行标记ATAG_CMDLINE 3.4设置ATAG_NONE一、简介 U-Boot与Linux原创 2012-03-11 23:12:50 · 9339 阅读 · 15 评论