信息科学与技术学院学士学位论文
Depends on NET_ETHERNET && ARM && ARCH_SMDK2410 ---help---
Support for cs8900 chipset base Ethernet cards,if you have a network card of
this type
③ 修改driver/net/arm/Makefile文件,对网卡进行支持,添加配置内容为:obj-$(CONFIG_S3C2410_CS8900) += cs8900.o
④ 添加地址映射定义,修改arch/arm/mach/s3c2410/include/mach/map.h文件,添加如下内容:
#define pSMDK2410_ETH_IO #define vSMDK2410_ETH_IO
__phys_to_pfn(0x19000000) 0xE0000000
#define SMDK2410_ETH_IRQ IRQ_EINT9
⑤ 添加平台信息,修改arch/arm/mach-s3c2410-smdk2410.c文件,添加对平台信息的支持,其内容为:
{ vSMDK2410_ETH_IO , pSMDK2410_ETH_IO ,SZ_1M,MT_DEVICE}
⑥ 配置内核,支持cs8900网卡。
(3)LCD驱动也是必不可少的,具体的操作步骤如下:
① 在arch/arm/mach-s3c2410/mach-smdk2410.c中添加LCD参数设置,在本文件中的smdk2410_init函数中添加如下内容: S3c2410xx_fb_set_platdata(&s3c2410_fb_info);
② 配置内核,添加对LCD的支持。 $ make menuconfig
Device Drivers---- >
Graphics support--- >
[*]Support for frame buffer devices--- >
[*]S3C2410 LCD framebuffer support
11
信息科学与技术学院学士学位论文
(4)用make zImage指令编译生成内核镜像文件;
(5)编译完毕后在arch/arm/boot 目录下将会生成ARM Linux内核镜像文件zImage,这就是我们将要下载到目标系统的内核文件,将其拷贝到tftpboot目录下,执行的命令为:cp arch/arm/boot/zImage /tftpboot
3.5根文件系统的制作与移植
(1)根文件系统介绍
根文件系统不仅具有普通文件系统的存储数据文件的功能,它是内核启动时所mount的第一个文件系统,内核代码的映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本(如rcS,inittab)和服务加载到内存中去运行。
(2)根文件系统制作
此处用到的根文件系统是busybox-1.17.3.tar.gz,进行解压并进入该目录。 ① 首先要进行源码的一个安装,在目录有个_install,执行如下命令进行安装:$ make install
② 在安装完成后,进入到_install目录,创建一些要用到的目录,具体的目录创建如下:$ mkdir dev etc mnt proc var tmp sys root;
③ 接着将工具链中的库需要拷贝到_install目录下,实现工具链的可用,其操作如下:$ cp /home/farsight/toolchain/arm-none-linux-gnueabi/lib ./;
④ 接着要对库进行瘦身,删除lib目录下所有.o文件和.a文件,执行的如下命
令:$ arm-none-gnueabi-strip lib/*;
⑤ 最后要在添加系统启动文件,在etc下添加文件inittab文件,在etc下添加fstab文件。
此时根文件系统已经制作完成,接着需要添加内核对根文件系统的支持。 (3)添加内核的支持,具体配置如图3-2所示。
12
信息科学与技术学院学士学位论文
图3-2 内核配置图
(4)创建设备文件
根文件系统中有一个设备节点是必须的,在dev目录下创建console节点,其具体操作为:$ mknod dev/console c 5 1
(5)挂载测试
将我们的文件系统拷贝到/opt/filesystem目录下,cp _install /opt/filesystem –a,重新启动开发板,查看是否可以正常挂载。
3.6 NFS网络文件系统的建立
NFS网络文件系统可以使得系统调试开发更容易进行,只需要将经过交叉编译器编译之后生成的可执行文件通过NFS挂载到板子上为调试做好准备,避免反复的烧写可执行文件到FLASH中[15],造成时间浪费和FlASH寿命的缩短。
(1)安装NFS server端口映射和服务,首先需要下载相应的包,接着进行端口
的映射,其命令如下:$ sudo apt-get install nfs-kernel-server nfs-common portmap $ sudo dpkg-reconfigure portmap,执行完后,在出现提示的时候,选定“不将 portmap 绑定在 loopback 地址”;
(2)通过查看 /etc/default/portmap, 确保#OPTIONS=\127.0.0.1\前面的#号 被添加了,重启portmap服务:$ sudo /etc/init.d/portmap restart;
(3)编辑/etc/exports文件,添加目标系统的根文件系统映射目录,此时需要将目标系统的根文件系统最后映射到/opt/filesytem,在/etc/exports文件的最后添加如下
13
信息科学与技术学院学士学位论文
内容:/opt/filesystem *(subtree_check,rw,no_root_squash,async)
(4)重启NFS服务,并更新,其执行的命令为:$ sudo /etc/init.d/nfs-kernel-server restart,接着进行的操作为:$ sudo exportfs –a,执行完后此时就基本上可以实现NFS服务;
(5)测试NFS服务,将主机上的共享目录mount到自己另外一个目录下,如:mount 192.168.0.125:/home/farsight/toolchain /mnt,然后查看/mnt目录下是否有/home/farsigh/toolchain目录下的文件,如果有的话,则NFS服务启动成功。
3.7 TFTP服务的配置
(1)TFTP[16]服务可以用来在开发板和主机之间进行传输内核,对TFTP服务的配置是必不可少的,具体配置如下: $ sudo mkdir /tftpboot $ cp uImage /tftpboot $ sudo chmod 777 /tftpboot -R $ sudo apt-get install tftp tftpd $ sudo apt-get install openbsd-inetd $ sudo vi /etc/inetd.conf
在inetd.comf文件中填入如下一行:tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot
修改/etc/default/tftpd-hpa下的文件为如下内容: #Defaults for tftpd-hpa RUN_DAEMON=\OPTIONS=\s /tftpboot”
$ sudo /etc/init.d/openbsd-inetd reload $ sudo /etc/init.d/openbsd-inetd restart
(2) TFTP服务的测试
14
信息科学与技术学院学士学位论文
进入内核目录下将已经编译好的内核镜像拷贝到tftp目录下,即/tftpboot。执行 cp arch/arm/boot/zImage /tftpboot
进入/home/farsight目录,在终端输入 $ tftp 192.168.7.125,接着执行 tftp> get zImage,如果tftp服务配置成功后会在当前目录下会看到zImage镜像文件了。
3.8 本章小结
一个好的嵌入式开发平台是进行后续开发的一个重要基础,它在整个嵌入式系统开发的过程中起着非常重要的作用。本章主要阐述了嵌入式ARM-Linux开发平台的搭建。具体的介绍了交叉编译工具链的建立,嵌入式Linux操作系统的裁剪和移植,U-boot制作与移植,以及网络文件系统、TFTP服务的搭建,为后续的开发以及调试打好基础。
15