u-boot学习小结(一)
来源:互联网 发布:vnr网上的数据库 编辑:程序博客网 时间:2024/05/16 08:27
这个总结的内容包括:uboot配置阶段的过程解读。
设计的知识:make工具的使用;makefile语法;shell编程;
U-boot的作用是引导操作系统,可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。它的最终目的是为了启动内核。
U-boot可以引导多种操作系统,支持多种架构的cpu。所以在编译uboot之前我们需要配置一下,源码树中需要的源码,适合我们自己使用的开发板的源码。U-boot的源码树和linux内核有点相似,主要包含开发板相关、架构相关、通用函数、通用驱动。
在编译uboot之前的配置命令是:make <boardname>_config
其目的是为了传入六个参数
Target Architecture CPU Board [VENDOR] [SOC]
Make [target] 是在makefile中找到target 找到后执行下面的命令。查看顶层makefile中:
smdk2400_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920tsmdk2400 samsung s3c24x0
相当于执行mkconfig sml2440 arm arm920t sml2440 NULLs3c24x0
mkconfig 的用法在mkconfig中有说明:Parameters: Target Architecture CPU Board [VENDOR] [SOC]
# makesml2440_config是配置;make all 是编译;
make工具的使用参见博文http://blog.csdn.net/seek_0380/article/details/8520657。
相当于我们向里面传入了六个参数,指定了开发板名称,处理器的体系架构,生产商,soc,cpu。
然后mkconfig这个工具挑选了符合要求的代码。
具体mkconfig做了什么如下:
要建立关于arm arm920t sml2440 s3c24x0的uboot我们关心的文件有
首先是头文件:
include/asm-arm/arch-s3c24x0
include/asm-arm/proc-armv
在配置阶段make sml2440_config 执行了makefile文件的创建的sml2440_config这个【target】
相当于执行了:./mkconfig sml2440 arm arm920t sml2440 NULLs3c24x0
1、这个命令的执行相当于重新建立了头文件的链接:
ln -s asm-arm asm
ln -s arch-s3c24x0 asm-arm/arch
ln -s proc-armv asm-arm/proc
重新链接头文件其本质就是ln –s old new ;new 代替old ,这样在源码文件中就可以直接使用new作为文件路径。
2、创建了顶层makefile所需要的include/config.mk
3、创建开发板相关的头文件include/config.h
在第三点中,其内容已经在mkconfig中有了定义:
#defineCONFIG_BOARDDIR board/$BOARDDIR
#include<config_defaults.h>
#include<configs/$1.h>//$1是sml2440
#include<asm/config.h>
所以如果#define CONFIG_BOARDDIR board/$BOARDDIR 成功,则必须在configs/下创建一个sml2440.h文件
我们直接使用smdk2410的文件即可
在终端执行配置信息之后会生成两个文件在include下面:config.h 和 config.mk。
- u-boot学习小结(一)
- u-boot学习(一):u-boot概述
- U-boot学习笔记(一)
- [uboot学习笔记(一)]u-boot.lds文件分析
- u-boot分析(一)
- U-boot移植(一)
- u-boot分析(一)
- u-boot移植(一)
- u-boot分析(一)
- 回顾U-boot(一)
- u-boot学习笔记一(makefile)
- U-Boot学习笔记(一):基本概念
- u-boot移植(一)---u-boot启动流程分析
- 【u-boot】u-boot-2017.05启动过程分析(一)
- u-boot学习(1)
- U-BOOT移植问题小结
- u-boot编译错误(一)
- U-Boot 的移植(一)
- Java中finally块报finally block does not complete normally
- flume报错 Configured capacity is 100000000 but the checkpoint file capacity is 1000000
- 感冒药攻略
- java反射拿到方法的参数名列表的方法
- Maven +Tomcat+m2eclipse的热部署(hot deploy)
- u-boot学习小结(一)
- Fortran概述
- OANET(一):Fedora9安装
- Windows Socket 网络编程(一) -- TCP/IP体系结构、特点及相关术语
- Windows Socket 网络编程(二) —— 套接字编程原理
- Jquery学习笔记(1) 认识Jquery
- 知识链接
- Windows Sockets 网络编程(三) —— WINDOWS SOCKETS 1.1 程序设
- [c++] 初始化结构体 赋值结构体 输出结构体各成员