uboot编译配置过程
一、使用制作好的编译工具链:
1、解压压缩包
tar xjf arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2 #并不会显示解压过程
2、环境变量PATH中增加路径
exprot PATH=$PATH:/work/tools/gcc-3.4.5-glibc-2.3.6/bin
更好的修改方法:
通过修改.bashrc文件:
vim ~/.bashrc
//在最后一行添上:
export PATH=/work/tools/gcc-3.4.5-glibc-2.3.6/bin:$PATH
生效方法:(有以下两种)
1、关闭当前终端窗口,重新打开一个新终端窗口就能生效
2、输入“source ~/.bashrc”命令,立即生效
二、手动制作编译工具链
1、
三、uboot配置、编译、连接
1、make smdk2410_config
相当于执行 ./mkconfig smdk2410 arm arm920t smdk2410 NULL s3c24x0
1)、开发板BOARD_NAME=$1
2)、创建到平台/开发板相关头文件连接
ln -s asm-$2
ln -s arch-$6 asm-$2/arch
ln -s proc-armv asm-$2/proc #如果$2不是arm的话,此行没有
3)、创建顶层Makefile包含的文件
ARCH=$2
CPU=$3
BOARD=$5
SOC=$6
4)、创建开发板相关头文件include/config.h
2、手动修改include/config/<board_name>.h来裁剪、设置uboot,即include/config/smdk2410.h文件
1)、前缀为CONFIG的文件,用于配置CPU、SOC、开发板类型,设置系统时钟、选择设备驱动等,如:
/*
* High Level Configuration Options
* (easy to change)
*/
#define CONFIG_ARM920T 1 /* This is an ARM920T Core */
#define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */
#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */
/* input clock of PLL */
#define CONFIG_SYS_CLK_FREQ 12000000 /* the SMDK2410 has 12MHz input clock */
/* Hardware drivers */
#define CONFIG_DRIVER_CS8900 1 /* we have a CS8900 on-board */
2)、前缀为CFG文件用于设置malloc缓冲池大小、uboot提示符、uboot下载时默认加载地址、flash起始地址
#define CFG_MALLOC_LEN (CFG_ENV_SIZE + 128*1024)
#define CFG_PROMPT "SMDK2410 # " /* Monitor Command Prompt */
#define CFG_LOAD_ADDR 0x33000000 /* default load address */
#define PHYS_FLASH_1 0x00000000 /* Flash Bank #1 */
3、make
总结:
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格式。
附、使用补丁文件
1、cd u-boot-1.1.6/
2、patch -p1 < ../u-boot-1.1.6_jz2440.patch
3、make 100ask24x0_config
4、make