本文首先需要的开发工具:
一、配置交叉工具链:arm-none-linux-gnueabi.tar.bz2
二、Bootloader编译:uboot-fs4412_v2.tar.xz
三、Linux内核编译:linux-3.0-fs4412_v3.tar.xz
四、通过网络加载内核和文件系统:rootfs.tar.gz
~欢迎下载~
Samsung Cortex-A9 Exynos4412开发板平台搭建步骤如下:
一、配置交叉工具链:arm-none-linux-gnueabi.tar.bz2
1、 环境变量的添加
修改文件/etc/bash.bashrc 添加如下内容
export PATH=$PATH: /usr/local/toolchain/toolchain-4.5.1/bin(pwd配置路径)
2、重启配置文件
$ source /etc/bash.bashrc
3、工具链测试
$ arm-none-linux-gnueabi-gcc -v
二、Bootloader编译:uboot-fs4412_v2.tar.xz
1、执行命令:
tar xvf uboot-fs4412_v2.tar.xz
解压后会出现 uboot-fs4412_v2 目录,进入/uboot-fs4412_v2/u-boot-2010.03 目录
cd /uboot-fs4412_v2/u-boot-2010.03
2、修改 Makefile
vi Makefile 找到如下图所示代码
修改为
ifeq (arm,$(ARCH))
CROSS_COMPILE = arm-none-linux-gnueabi-
Endif
3、保存退出后执行脚本 build_uboot.sh
./ build_uboot.sh
编译结果如下图所示
4、SD 启动盘制作
a) 将SD卡插入电脑并识别
b) 在u-boot-2010.03中 执行如下操作
$ sudo ./mkuboot.sh /dev/sdb
c) 在SD卡中创建目录sdupdate并把镜像中的u-boot-fs4412.bin拷贝到这
个目录下
5、u-boot 的烧写
a) 连接串口和板子,运行串口通信程序
b) SD启动模式后打开电源
c) 将刚才做好的SD启动盘插入SD卡插槽
d) 重新打开开发板能够看到如下界面
e) 烧写
在终端上执行
sdfuse flashall
等待终端无输出是表示烧写结束
f) 关闭开发板电源,EMMC启动模式后打开电源可
以看到如下界面表示烧写成功
三、Linux内核编译:linux-3.0-fs4412_v3.tar.xz
1、 解压源码
$ tar xvf linux-3.0-fs4412_vX.tar.xz // X 代表版本号, 随着版本升级会有区别
2、配置源码
$ vim Makefile
修改交叉工具链的路径 196 行代码如下图所示。
196 CROSS_COMPILE = arm-none-linux-gnueabi-
3、Linux 内核通常使用 menuconfig 图形界面配置内核编译选项
在【 .config】 文件中。首先拷贝 FS4412 开发平台的标准配置文件为【 .config】。
$ cp arch/arm/configs/config_fs4412_android_v3 .config
4、在终端下输入下列命令可以进入到 Linux 内核配置图形界面。
$ make menuconfig
5、编译源码
$ make zImage –jX // X 为编译时使用的 CPU 线程数,建议此数与环境搭建中 CPU 个数一致(第一次编译大约需要20min左右)
6、拷贝内核文件到/tftpboot目录下
修改tftpboot权限
sudo chmod 777 tftpboot
$ cp arm/arm/boot/zImage /tftpboot
四、通过网络加载内核和文件系统:rootfs.tar.gz
1、主机端tftp服务器配置
a)检查是否安装tftp server
#dpkg -s tftpd-hpa
b)如果未安装,安装 tftp-server
#apt-get install tftpd-hpa tftp-hpa
c)修改文件vim /etc/default/tftpd-hpa,开启tftp服务
# sudo vi /etc/default/tftpd-hpa
TFTP_USERNAME="tftp" //客户端tftpd服务器端
TFTP_DIRECTORY="/tftpboot" //手动在根文件目录下创建tftpboot文件
TFTP_ADDRESS="0.0.0.0:69" //端口号
TFTP_OPTIONS="-c -s -l" //权限
d)创建tftpboot目录,启动tftp-server
#mkdir /tftpboot
#chmod 777 /tftpboot
#service tftpd-hpa restart
e)登陆本机测试,命令如下:
#tftp 127.0.0.1
tftp>get <download file>
tftp>put <upload file>
tftp>q
2、主机端NFS服务器配置::nfs共享文件夹Ubuntu和arm共享
a)在根文件创建目录/source
b)安装nfs服务器sudo apt-get installnfs-kernel-server
c)NFS服务器配置,修改 /etc/exports文件
/source/rootfs *(rw,sync,no_root_squash,no_subtree_check)
sync自动搜索 no_subtree_check 不检测上层文件权限
d)重启nfs服务器
$sudo /etc/init.d/nfs-kernel-server restart或
$sudo service nfs-kernel-server restart
e) 将镜像文件/rootfs.tar.xz拷贝到ubuntu的/source下并解压
f) 修改虚拟机nfs配置文件/etc/exports,添加如下内容并重启nfs服务
/source/rootfs *(rw,sync,no_subtree_check,no_root_squash)
g) 重新驱动nfs服务
$ sudo /etc/init.d/nfs-kernel-server restart
3、修改 uboot 启动参数
重启板子在系统倒计时是按任意键结束启动,输入如下内容修改 uboot 环境变量:
#setenv serverip 192.168.9.120
#setenv ipaddr 192.168.9.233
#setenv bootcmd tftp 41000000 uImage\;bootm 41000000
#setenv bootargs root=/dev/nfs nfsroot=192.168.9.120:/source/rootfs ip=192.168.9.233:192.1
68.9.120::255.255.255.0::eth0:off console=ttySAC2,115200 init=/linuxrc
注意:192.168.9.120对应Ubuntu的ip
192.168.9.233对应板子的ip
这两个 ip 应该根据自己的实际情况适当修改
l 重启开发板查看现象
看到如下现象表示成功通过网络挂载:
4、 从EMMC加载内核和文件系统
a) 拷贝第一天/镜像文件/ramdisk.img拷贝到虚拟机/tftpboot目录下
b) 烧写内核镜像到EMMC上
# tftp 41000000uImage
# movi write kernel 41000000
c) 烧写设备树文件到EMMC上
# tftp 41000000 exynos4412-fs4412.dtb
# movi write dtb 41000000
d) 烧写文件系统镜像到EMMC上
# tftp 41000000ramdisk.img
# movi write rootfs 41000000 300000
e) 设置启动参数
# setenv bootcmd movi read kernel 41000000\;movi read dtb 42000000\;movi read rootfs 43000000 300000\;bootm 41000000 43000000 42000000
# saveenv
f) 重新启动开发板,u-boot自动加载、执行内核