FS4412开发板是华清远见培训机构使用的嵌入式ARM开发板。FS4412采用的处理器使用Samsung最新的ARM Cortex-A9四核CPU的Exynos4412。三星公司的Galaxy S III手机便是搭载的这颗处理器,经过验证,可以流畅运行android4.3系统。
下面以及以后的调试都是在虚拟机环境下,ubuntu 12.10系统下进行操作。
首先在开始正式进行linux操作系统移植之前,需要进行一些准备工作,需要将后面用到的一些工具进行安装和配置。
这里主要需要进行安装的是5个:
1、串口工具,PuTTY或secureCRT或者linux下的minicom
2、tftp服务器,用于uboot和虚拟机之间进行文件传输
3、nfs服务器,用于开发板挂载nfs文件系统
4、交叉编译工具链
5、SD卡u-boot启动盘制作
1、串口工具其实就是winxp下的超级终端,上边列出的三个工具功能都是一样的,PuTTY或secureCRT是在windows环境下使用的,具体的下载和配置就去百度吧,windows下的软件使用方法网上还是很好找到的。至于minicom是在linux下的串口调试工具,对于它的安装和配置可以参考
http://www.cnblogs.com/pang123hui/archive/2011/05/30/2309887.html
这篇文章,值得一提的是在linux下有些usb转串口的驱动做的不是很好,可能会出现在windows下正常使用在minicom中出现乱码的现象。
2、tftp服务器的安装
安装tftp服务器
sudo apt-get install tftpd-hpa tftp-hpa
检测tftp服务器安装情况
dpkg -s tftpd-hpa
创建tftp共享文件夹
在根目录下创建tftpboot文件夹,并设置为最大权限
linux@ubuntu:~$ cd /
linux@ubuntu:/$ sudo mkdir tftpboot
[sudo] password for linux:
linux@ubuntu:/$ ls
bin cdrom etc initrd.img lost+found mnt proc run selinux sys tmp var
boot dev home lib media opt root sbin srv tftpboot usr vmlinuz
linux@ubuntu:/$ sudo chmod 777 tftpboot/
linux@ubuntu:/$ ll
total 100
drwxr-xr-x 24 root root 4096 May 18 23:03 ./
drwxr-xr-x 24 root root 4096 May 18 23:03 ../
drwxr-xr-x 2 root root 4096 Sep 22 2012 bin/
drwxr-xr-x 3 root root 4096 Feb 21 2013 boot/
drwxr-xr-x 2 root root 4096 Sep 22 2012 cdrom/
drwxr-xr-x 15 root root 4300 May 8 16:11 dev/
drwxr-xr-x 140 root root 12288 May 8 16:13 etc/
drwxr-xr-x 3 root root 4096 Sep 22 2012 home/
lrwxrwxrwx 1 root root 36 Sep 22 2012 initrd.img -> boot/initrd.img-3.2.0-29-generic-pae
drwxr-xr-x 22 root root 4096 Feb 21 2013 lib/
drwx------ 2 root root 16384 Sep 22 2012 lost+found/
drwxr-xr-x 3 root root 4096 Feb 21 2013 media/
drwxr-xr-x 3 root root 4096 Feb 21 2013 mnt/
drwxr-xr-x 5 root root 4096 Apr 18 17:12 opt/
dr-xr-xr-x 177 root root 0 May 8 16:11 proc/
drwx------ 7 root root 4096 Apr 18 08:49 root/
drwxr-xr-x 26 root root 960 May 9 22:27 run/
drwxr-xr-x 2 root root 4096 Feb 21 2013 sbin/
drwxr-xr-x 2 root root 4096 Mar 5 2012 selinux/
drwxr-xr-x 3 root root 4096 Apr 14 10:12 srv/
drwxr-xr-x 13 root root 0 May 8 16:11 sys/
drwxrwxrwx 2 root root 4096 May 18 23:03 tftpboot/
drwxrwxrwt 13 root root 4096 May 16 23:44 tmp/
drwxr-xr-x 10 root root 4096 Aug 18 2012 usr/
drwxr-xr-x 13 root root 4096 Apr 18 18:57 var/
lrwxrwxrwx 1 root root 33 Sep 22 2012 vmlinuz -> boot/vmlinuz-3.2.0-2
配置tftp服务器
linux@ubuntu:/$ sudo vi /etc/default/tftpd-hpa
将文件内容修改为下面:
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-c -s -l"
重启tftp服务器
sudo service tftpd-hpa restart
看到如下返回表示开启成功
tftpd-hpa stop/waiting
tftpd-hpa start/running, process 5191
3、nfs服务器
安装nfs服务器
sudo apt-get install nfs-kernel-server
配置nfs服务器
修改全局环境变量
linux@ubuntu:/$ sudo vi /etc/exports
在最后一行添加如下语句
/source/rootfs *(rw,sync,no_subtree_check,no_root_squash)
创建nfs文件夹和文件系统
在根目录下创建文件夹source,并赋给最大权限
linux@ubuntu:/$ sudo mkdir source
[sudo] password for linux:
linux@ubuntu:/$ sudo chmod 777 source/
linux@ubuntu:/$
将rootfs.tar.xz文件复制到source文件下,并解压,文件下载地址:rootfs.tar.xz
linux@ubuntu:/$ cd source/
linux@ubuntu:/source$ ls
rootfs.tar.xz
linux@ubuntu:/source$ tar vxf rootfs.tar.xz
重启nfs服务器
linux@ubuntu:/$ sudo service nfs-kernel-server restart
* Stopping NFS kernel daemon [ OK ]
* Unexporting directories for NFS kernel daemon... [ OK ]
* Exporting directories for NFS kernel daemon... [ OK ]
* Starting NFS kernel daemon [ OK ]
linux@ubuntu:/$
4、交叉编译工具链的安装
上面把主要的软件都安装完了,下面要进行与硬件相关的一些安装了,首先是交叉编译工具链的安装
把交叉编译工具链下载并在home目录下新建一个目录保存,交叉工具链的下载地址:gcc-4.6.4.tar.xz
linux@ubuntu:/$ cd ~
linux@ubuntu:~$ mkdir armtoolchain
linux@ubuntu:~$ ls
16021 Desktop Downloads Music Public Videos
armtoolchain Documents examples.desktop Pictures Templates
linux@ubuntu:~$ cd armtoolchain/
linux@ubuntu:~/armtoolchain$ ls
gcc-4.6.4.tar.xz
linux@ubuntu:~/armtoolchain$ tar vxf gcc-4.6.4.tar.xz
设置环境变量,这里建议设置在个人环境变量中,好处就是在同时开发多种arm是,需要使用多种交叉编译链时,可以创建不同用户来区分交叉编译工具链的使用。
sudo vi /etc/bash.bashrc
在文件的最后一行添加
export PATH=$PATH:/home/linux/armtoolchain/gcc-4.6.4/bin
重启配置文件
source /etc/bash.bashrc
查看交叉编译链是否安装成功
arm-none-linux-gnueabi-gcc –v
这里需要注意的是在sdfuse_q文件夹下也有一个u-boot-fs4412.bin文件,但是这个文件和需要放在sdupdate目录下的u-boot-fs4412.bin并不是一个文件,在sdfuse_q文件夹下的bin文件是在SD卡启动时使用的,在sdupdate下的bin文件是需在emmc下启动的,如果使用文件对比软件对比就会发现这两个文件是不同的,这里需要特别注意。在使用时如何区别这两个文件是不是被弄错了呢?有一个方法就是通过运行时的uboot支持的指令多少来区别,sd卡启动时使用的uboot支持的指令比较少,在boot下使用“?”命令来查看uboot支持的命令。
这里做的都是一些准备工作,并没有操作开发板,这里还都是在pc机上的操作,所以拿到第一节中讲解,接下来的两节开始要接触硬件开发板,最后的目的是在开发板上运行起来linux系统。