一、编译环境
1.Ubuntu12.04
2.交叉编译器EABI-4.3.3_EmbedSky_20091210,下载地址 http://dl.dbank.com/c0cpqu06ak
3.uboot版本:u-boot-2010.03,下载地址ftp://ftp.denx.de/pub/u-boot/
4.开发板:天嵌6410
二、交叉编译器的安装
1.将EABI-4.3.3_EmbedSky_20091210.tar解压。
交叉编译器目录有4.3.3和crosstools_3.4.5_softfloat两个版本
EABI-4.3.3_EmbedSky_20091210.rar.out_FILES/opt/EmbedSky/4.3.3
EABI-4.3.3_EmbedSky_20091210.rar.out_FILES/opt/EmbedSky/crosstools_3.4.5_softfloat
文件系统镜像工具目录如下:
EABI-4.3.3_EmbedSky_20091210.rar.out_FILES/usr/local/sbin/mkcramfs
/mkimage
/mkyaffs2image
/mkyaffs2image_2.6.13
/mkyaffsimage
/mkyaffsimage_2
/readme.txt
将EABI-4.3.3_EmbedSky_20091210.rar.out_FILES/opt下的EmbedSky文件拷贝到Ubuntu12.04的/opt目录下,同时将EABI-4.3.3_EmbedSky_20091210.rar.out_FILES/usr/local/sbin/下的子文件全部拷贝到Ubuntu12.04的/usr/local/sbin目录下。
2、为交叉编译器设置环境变量
(1)设置当前用户环境变量(对root用户无效)
vi ~/.bashrc或gedit ~/.bashrc
加入一行 PATH=/opt/EmbedSky/4.3.3.bin:$PATH
保存后,运行source ~/.bashrc生效。
(2)设置环境变量(对所有用户有效)
vi /etc/enviroment或gedit /etc/enviroment
修改
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
为
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/EmbedSky/4.3.3/bin"
保存后,运行source /etc/enviroment生效。
三、编译uboot步骤:1、解压uboot源码 tar -jxvf u-boot-2010.03.tar.bz2 -C /opt/EmbedSky/
cd /opt/EmbedSky/u-boot-2010.03/board/samsung/
2、创建smdk6410文件夹
mkdir smdk6410
cp smdk6400/* smdk6410/ //将6400下所有文件复制到6410下
cd /opt/EmbedSky/u-boot-2010.03/board/samsung/ smdk6410 //进入smdk6410目录
mv smdk6400.c smdk6410.c //将smdk6400.c 改名为smdk6410.c
将/opt/EmbedSky/u-boot-2010.03/board/samsung/ smdk6410/Makefile文件中COBJS-y:= smdk6400.o改为COBJS-y:= smdk6410.o
cp include/configs/smdk6400.h include/configs/smdk6410/.h
cd ../../../ //回到u-boot-2010.03目录
3、修改u-boot-2010.03目录下的Makefile文件
输入命令gedit Makefile打开文件
在文件中添加:
ifeq ($(ARCH),arm)
CROSS_COMPILE = arm-linux-
endif
和
smdk6410_noUSB_config \
smdk6410_config : unconfig
@mkdir -p $(obj)include $(obj)board/samsung/smdk6410
@mkdir -p $(obj)nand_spl/board/samsung/smdk6410
@echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
@if [ -z "$(findstring smdk6410_noUSB_config,$@)" ]; then \
echo "RAM_TEXT = 0x57e00000" >> $(obj)board/samsung/smdk6410/config.tmp;\
$(MKCONFIG) $(@:_config=) arm arm1176 smdk6410 samsung s3c64xx; \
else \
echo "RAM_TEXT = 0xc7e00000" >> $(obj)board/samsung/smdk6410/config.tmp;\
$(MKCONFIG) $(@:_noUSB_config=) arm arm1176 smdk6410 samsung s3c64xx; \
fi
@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
4.进入/u-boot-2010.03/nand_spl/samsung
cd /opt/EmbedSky/u-boot-2010.03/ nand_spl/samsung
cp smdk6400 smdk6410 -r
5.修改/opt/EmbedSky/u-boot-2010.03/cpu/arm1176/config.mk文件
将
PLATFORM_RELFLAGS += -fno-common -ffixed-r8 -msoft-float
修改为
PLATFORM_RELFLAGS += -fno-common -ffixed-r8 #-msoft-float
6.make smdk6410_config //如果出现Configuring for smdk6410 board...则表示设置正确
make