Samsung Cortex-A9 Exynos4412 BSP平台搭建

来源:互联网 发布:淘宝店丽婴房童装 编辑:程序博客网 时间:2024/04/29 06:15

本文首先需要的开发工具:

一、配置交叉工具链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/binpwd配置路径


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共享文件夹Ubuntuarm共享

 

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对应Ubuntuip
      192.168.9.233对应板子的ip
这两个 ip 应该根据自己的实际情况适当修改

重启开发板查看现象

看到如下现象表示成功通过网络挂载:


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自动加载、执行内核




0 0
原创粉丝点击