UBoot的工作
来源:互联网 发布:jdk 8 linux x64.rpm 编辑:程序博客网 时间:2024/06/05 20:00
1、引导加载程序:包括固化在固件(firmware)中的boot代码(可选),和Boot Loader两打部分。
2、Linux内核:特定于嵌入式板子的指定内核以及内核的启动参数。
3、文件系统:包括根文件系统和建立于Flash内存设备之上的文件系统。通常用RAM DISK来作为root fs。
4、用户应用程序:特定于用户的应用程序。
Uboot是德国DENX小组开发用于多种嵌入式CPU的bootloader程序,Uboot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS嵌入式操作系统。Uboot除了支持PowerPC系列的处理器外,还能支持MIPS、x86、ARM、NIOS、XScale等诸多通用的处理器。
Uboot代码目录构架
board:和一已有开发板有关的文件。每一个开发板都以一个子目录出现在当前目录中,比如:SMDK2410,子目录中存放与开发板相关的配置文件。
common:实现Uboot命令行下支持的命令,每一条命令都对应一个文件。例如bootm命令对应就是cmd_bootm.c。
cpu:与特定PCU架构相关目录,每一款Uboot下支持的CPU在该目录下对应一个子目录,比如有子目录arm920t等。
disk:对磁盘的支持。
doc:文档目录。Uboot有非常完善的文档,推荐大家参考阅读。
drivers:Uboot支持的设备驱动程序都放在该目录,比如各种网卡、支持CFI的Flash、串口和USB等。
fs:支持的文件系统,Uboot现在支持cramfs、fat、fdos、jffs2和registerfs。
include:Uboot使用的头文件,还有对各种硬件平台支持的汇编文件,系统的配置文件和对文件系统的支持的文件。该目录下configs目录有与开发板相关的配置头文件,如smdk2410.h。该目录下的asm目录有与CPU体系结构相关的头文件,asm对应的是asmarm9
.lib-xxxx:与体系结构相关的库文件。如与ARM相关的库放在.lib_arm中。
net:与网络协议栈相关的代码,BOOTP协议、TFTP洗衣、RARP协议和NFS文件系统的实现。
tools:生成Uboot的工具,如mkimage,crc等等。
(1)、硬件设备的初始化;
(2)、为加载Boot Loader的stage2准备RAM空间;
(3)、拷贝Boot Loader的stage2到RAM空间中;
(4)、设置好堆栈;
(5)、跳转到stage2的C入口点。
Boot Loader的stage2通常包括以下步骤(一执行的先后顺序):
(1)、初始化本阶段要使用到的硬件设备;
(2)、检测系统内存映射(memory map)
(3)、将kernel映像和根文件系统映像从flash上读到RAM空间中;
(4)、为内核设置启动参数;
(5)、调用内核。
Uoot的移植
为当前移植的板取名为teach2410,在Uboot中简历自己的开发板类型。
1、修改Makefile
在Uboot目录下:
# vi Makefile
为teach2410建立编译项(将smdk2410改为teach2410)如:
teach2410_config : unconfig
@./mkconfig $(@:_config=) arm arm920t teach2410 NULL s3c24x0
各项的意思如下:
arm:CPU的架构(ARCH)
arm920t:CPU的类型(CPU),其对应于cpu/arm920t子目录
teach2410:开发板的型号(BOARD),对应于teach2410目录
NULL:开发者或经销商(vender)
s3c24x0:片上系统(SOC)
2、在board子目录中建立teach2410
# cp rf board/smdk2410 board/teach2410
# cd board/teach2410
# mv smdk2410.c teach2410.c
3、在include/config/中简历配置头文件
#cp include/configs/smdk2410.h include/configs/teach2410.h
4、编译
# make teach2410_config
# make CROSS_COMPILE=arm-linux-
5、Uboot移植过程中的调试
使用Uboot命令查看信息、串口打印等。
- UBoot的工作
- uboot的一点工作
- uboot的工作方式
- uboot下phy的工作
- uboot移植之前的工作
- uboot 的启动过程及工作原理
- uboot的作用及主要工作
- 2.1.4 uboot的工作方式
- uboot工作流程分析
- uboot 的启动过程及工作原理 汇编部分
- ARM学习笔记-uboot的作用及主要工作-1
- 二十一.UBOOT工作流程
- uboot配置、编译、工作流程
- [uboot] (番外篇)uboot串口&console&stdio设备工作流程
- [uboot] (番外篇)uboot dm-gpio使用方法以及工作流程
- [uboot] (番外篇)uboot串口&console&stdio设备工作流程
- [uboot] (番外篇)uboot dm-gpio使用方法以及工作流程
- uboot 的启动过程及工作原理 进入 C 代码部分
- ios 内存管理原则及exec_back_assess调试
- 总算解决了swfupload在非IE(chrome firefox opera)统统不能用的问题
- FusionCharts等产品简介
- [shell] linux系统安全shell第二版
- windows 7下如何为netsh命令加入routing选项
- UBoot的工作
- Libgdx中文社区开始招募版主了!
- C#制作WinForm控件
- Spring获得初始化容器
- CSS控制的内容超过容器宽度后显示省略号
- AspectJ切入点语法详解
- GoldenGate系列一:快速搭建单向同步GoldenGate环境
- C++标准库函数
- Chrome浏览器强制http重定向到https的简单方法