基于FS4412嵌入式系统移植(1) 基本环境搭建

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

系统会返回很多信息,最后是
……
Thread model: posix
gcc version 4.6.4 (crosstool-NG hg+default-2685dfa9de14 - tc0002)

5、SD卡驱动盘的制作
将sdfuse_q.zip解压并拷贝到linux虚拟机中,sdfuse_q.zip文件下载地址: sdfuse_q
将SD卡插入电脑,并在linux系统下被识别
进入sdfuse_q执行如下操作
sudo ./mkuboot.sh /dev/sdb
在 SD 卡中创建目录 sdupdate 并把u-boot-fs4412.bin 拷贝到这个目录下u-boot-fs4412.bin文件下载地址: u-boot-fs4412.bin

这里需要注意的是在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系统。








你可能感兴趣的:(嵌入式系统移植)