U-Boot的配置、编译、连接过程
2014-03-20 23:16
225 查看
U-Boot,全称为Universal Boot Loader,即通用Bootloader。通用有两层含义:可以引导多种操作系统、支持多种架构的CPU。
根据U-Boot源码文件夹顶层的Readme文件说明,针对使用的开发板 board/<board_name>,执行:
1、make <board_name>_config
2、make all
可以生成以下三个文件:
1、U-Boot.bin:二进制可执行文件,可以直接烧入ROM、NOR Flash;
2、U-Boot:ELF格式的可执行文件;
3、U-Boot.srec:Motoroal S-Record格式的可执行文件。
通过分析顶层Makefile和mkconfig两个文件,配置简述过程如下:
make <board_name>_config 相当于执行 ./mkconfig <board_name> $2 $3 $4 $5 $6
1、创建到平台/开发板相关的头文件的链接:
ln -s asm-$2 asm
ln -s arch-$6 asm-$2/arch
ln -s proc-armv asm-$2/proc //如果$2不是arm的话,此行没有
2、创建顶层Makefile包含的文件include/config.mk:
ARCH =$2
CPU = $3
BOARD = $4
VENDOR = $5
SOC = $6
3、创建开发板相关的头文件include/config.h:
#include <configs/<board_name>.h>
对于一个拿到手的板子,查看其各个器件型号后,要在board目录下新建一个开发板<board_name>的目录,同时要在include/configs下新建一个头文件<board_name>.h,里面存放的就是开发板的相关配置信息。其中主要包括了一下两类宏:
1、选项(Options),前缀为"CONFIG_",用于选择CPU、SOC、开发板,设置系统时钟,选择设备驱动等;
2、参数(Setting),前缀为"CFG_",用于设置malloc缓冲池的大小、U-Boot的提示符、U-Boot下载文件时的默认加载地址、Flash的起始地址等。
U-Boot在编译、连接过程中,几乎每个文件都被编译和连接了,由宏开关来决定哪些代码是有效的。
总结U-Boot的编译流程如下:
1、首先,编译cpu/$(CPU)/start.S,对于不同的CPU,还有可能编译cpu/$(CPU)下的其他文件;
2、然后,对于平台/开发板相关的每个目录,每个通用目录都使用各自的Makefile生成相应的库;
3、将1、2步骤生成的.o、.a文件按照board/$(BOARDDIR)/config.mk文件中制定的代码起始地址、board/$(BOARDDIR)/U-Boot.lds连接脚本进行连接;
4、第3步得到的是ELF格式的U-Boot, 之后Makefile还会将它转换为二进制格式、S-Record格式。
本文出自 “stay hangry,stay foolish” 博客,请务必保留此出处http://hjctty.blog.51cto.com/1031616/240447
根据U-Boot源码文件夹顶层的Readme文件说明,针对使用的开发板 board/<board_name>,执行:
1、make <board_name>_config
2、make all
可以生成以下三个文件:
1、U-Boot.bin:二进制可执行文件,可以直接烧入ROM、NOR Flash;
2、U-Boot:ELF格式的可执行文件;
3、U-Boot.srec:Motoroal S-Record格式的可执行文件。
通过分析顶层Makefile和mkconfig两个文件,配置简述过程如下:
make <board_name>_config 相当于执行 ./mkconfig <board_name> $2 $3 $4 $5 $6
1、创建到平台/开发板相关的头文件的链接:
ln -s asm-$2 asm
ln -s arch-$6 asm-$2/arch
ln -s proc-armv asm-$2/proc //如果$2不是arm的话,此行没有
2、创建顶层Makefile包含的文件include/config.mk:
ARCH =$2
CPU = $3
BOARD = $4
VENDOR = $5
SOC = $6
3、创建开发板相关的头文件include/config.h:
#include <configs/<board_name>.h>
对于一个拿到手的板子,查看其各个器件型号后,要在board目录下新建一个开发板<board_name>的目录,同时要在include/configs下新建一个头文件<board_name>.h,里面存放的就是开发板的相关配置信息。其中主要包括了一下两类宏:
1、选项(Options),前缀为"CONFIG_",用于选择CPU、SOC、开发板,设置系统时钟,选择设备驱动等;
2、参数(Setting),前缀为"CFG_",用于设置malloc缓冲池的大小、U-Boot的提示符、U-Boot下载文件时的默认加载地址、Flash的起始地址等。
U-Boot在编译、连接过程中,几乎每个文件都被编译和连接了,由宏开关来决定哪些代码是有效的。
总结U-Boot的编译流程如下:
1、首先,编译cpu/$(CPU)/start.S,对于不同的CPU,还有可能编译cpu/$(CPU)下的其他文件;
2、然后,对于平台/开发板相关的每个目录,每个通用目录都使用各自的Makefile生成相应的库;
3、将1、2步骤生成的.o、.a文件按照board/$(BOARDDIR)/config.mk文件中制定的代码起始地址、board/$(BOARDDIR)/U-Boot.lds连接脚本进行连接;
4、第3步得到的是ELF格式的U-Boot, 之后Makefile还会将它转换为二进制格式、S-Record格式。
本文出自 “stay hangry,stay foolish” 博客,请务必保留此出处http://hjctty.blog.51cto.com/1031616/240447
相关文章推荐
- U-Boot的配置、编译、连接过程
- U-Boot的配置、编译、连接过程
- U-Boot的配置、编译、连接过程
- U-boot 编译学习---配置过程
- (二) u-boot 配置、编译过程分析
- u-boot-1.1.6的配置编译过程分析.doc
- u-boot-2012.04.01的配置编译过程分析.doc
- U-Boot 配置、编译、链接过程
- u-boot配置和编译过程浅析
- u-boot2013.01 sdmk2410 配置和编译过程分析
- 初学u-boot之源码配置编译过程分析
- U-BOOT配置编译全过程
- u-boot配置和编译过程详解
- uboot 配置 编译 连接全过程
- tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——编译过程
- Arm Linux交叉编译和连接过程分析(1)
- 详细分析make uboot 最后的编译链接的具体执行过程
- U-Boot编译过程完全分析
- 蘑菇街TeamTalk编译连接过程中遇到的问题及解决方法(iOS)