1.编译uboot
a) 安装好toolchain (arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz)并设置好
环境变量PATH,保证可以正常使用。
sudo tar -xvf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz –C /
sudo vim /etc/environment修改PATH为:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/FriendlyARM/toolschain/4.5.1/bin"
问题:
了解几种保存环境变量的方式有什么不同?
b) 解压 uboot_tiny4412-20130729.tgz 并进入相应的目录
tar xzf uboot_tiny4412-20130729.tgz
c) 配置 uboot 并编译
cd uboot_tiny4412
make tiny4412_config
make
d) 编译 用于生成bl2 的工具
make -C sd_fuse
2.制作SD卡启动
假设sd卡在linux中被识别为/dev/sdb。
cd sd_fuse/tiny4412
./sd_fusing.sh /dev/sdb
3.启动uboot
将sd卡插入开发板,选择SD卡启动,开启后就能看到uboot的启动信息。如果开发板是1506的,那么用光盘中的uboot只有打印ok,因为光盘中的uboot是针对1306,1506相对于1306少了两块ddr。要使用最新的uboot,在友善论坛可以找到最新的uboot。
4.编译内核
1.cp tiny4412_linux_defconfig .config
2.make menuconfig
然后将CONFIG_ARM_TRUSTZONE选项去掉,可以在.config中直接去掉。原版的内核配置是和superboot配套的,但是uboot里面暂不支持改功能,如果不去掉,在启动内核的时候,就会提示Uncompressing linux.....done,booting the kernel。
3.关电取出SD卡,并将PC机上的内核zImage拷到SD卡上的第一个分区 fat32。
4.fatls mmc 0:1 / //查看第0个MMC设备 第一个分区 的分区目录
5.fatload mmc 0:1 0x40008000 zImage //将SD卡里面的zImage加载到内存地址0x40008000
6.bootm 0x40008000
问题:
正常bootm是引导uImage的,这里如果使用go 0x40008000还是启动不了。了解bootm和go的不同之处?
7.如果可以正常启动内核,那么再次进入uboot:
set bootcmd "fatload mmc 0:1 0x40008000 zImage ;bootm 0x40008000 ”
save
5.虚拟机安装nfs
sudo apt-get install portmap
sudo apt-get install nfs-kernel-server
sudo apt-get install nfs-common