在/root_01中 创建文件dev、/etc、/home、/home、/usr、/lib、/mnt、/var、/tmp、/proc、/opt
# mkdir dev etc home lib mnt var tmp proc sys opt
将库文件拷到/lib下,这里是在4.3.2的目录里的库,别的编译器库行丌行没试过。 # cd /home/wyx/usr/local/arm/4.3.2/arm-linux/lib
# cp *.so* /root_01/lib -d
注意这两装载器对应的库文件(ld.so和ld-linux.so)没有到主机里的lib找。
创建etc目录下文件 在root_01/etc目录下创建一个inittab文件 内容如下:
::sysinit:/etc/init.d/rcS ::respawn:-/bin/sh tty2::askfirst:-/bin/sh ::restart:/sbin/init ::ctrlaltdel:/sbin/reboot ::shutdown:/bin/umount -a -r ::shutdown:/sbin/swapoff -a 创建etc/mdev.conf文件,内容为空。 同样的方法创建etc/init.d/rcS文件: #!/bin/sh (相当于windows下的批处理文件.bat) ifconfig eth0 192.168.2.122 mount -a mkdir /dev/pts
mount -t devpts devpts/dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s
最后还要改变它的属性使它能够执行。
# chmod 777 etc/init.d/rcS (777表示所有用户有权限执行) 创建etc/fstab文件:
proc /proc proc defaults 0 0 tmpfs /tmp tmpfs defaults 0 0 sysfs /sys sysfs defaults 0 0 tmpfs /dev tmpfs defaults 0 0 在/root_01/dev 建立节点文件: # mknod console c 5 1
# mknod null c 1 3
下载cramfs-1.1.tar.gz解压后在其顶层make得到mkcramfs 把mkcramfs 和root_01放在一起。
执行
# mkcramfs root_01 myroot01.cramfs 生成可以烧写的根文件myroot.cramfs 将myroot.cramfs改名为 root
# mv myroot.cramfs root
将root文件拷贝到tftpboot文件下以便烧写。
5.3本章小结
本章重点介绍了内核支持的yaffs文件格式,其实我们内核能够支持的文件系统有很多种,本论文研究选择yaffs文件格式进行编译烧写,待以后有时间再对其它的文件系统进行研究。
6测试
6.1简单测试方法的介绍
将编译好的可执行文件下载到目标板目前主要四种方式:
第一种:复制到介质(如优盘) 第二种:通过网络传送文件到开发板 第三种:通过串口传送文件到开发板 第四种:通过 NFS挂载(网络文件系统) 介绍部分测试方法: 一、使用优盘
先把编译好的可执行程序复制到优盘,再把优盘插到目标板上并挂载它,然后把优盘插入到开发板的 USB Host 接口,优盘会自动挂载到/udisk 目录,通过命令运行hello.c。
二、使用 ftp 传送文件
使用ftp 登录目标板,把编译好的程序上传;然后修改上传后目标板上的程序的可执行属性,并执行(put命令传送文件)。
三、通过网络文件系统NFS执行
Linux 中最常用的方法就是采用NFS来执行各种程序,这样可以不必花费很多时间下载程序,虽然在此下载hello程序用不了多久,应用程序如果越来越大,就会发现使用NFS运行的方便所在,所以不推荐使用。
6.2编写简单C程序测试移植的系统
在终端执行vim hello.c编写一个简单的C程序如下: # include
printf(\printf(\return 0 ; }
编写好之后保存退出hello.c,执行以下命令:
# arm-linux-gcc –o hello.c hello (生成可运行的二进制hello文件) # cp hello /udisk
将会生成一个可以在开发板运行的二进制文件hello,将hello拷贝到U盘以便测试。
6.3在开发板执行测试程序
将U盘插入开发板的USB接口,并在windows超级终端下面执行如下命令: # cd udisk # ./hello
此时可以在超级终端下看到如下测试信息:
图6-1测试结果
在windows终端下面可以看到hello.c在开发板上实现的内容,这说明内核移植成功,故在此基础之上可以进行关于嵌入式的应用开发,这促进嵌入式的发展。
7结论与展望
本课题研究了Linux系统移植理论、探索了嵌入式软件系统构建的方法、实践了软件系统构建的整个过程,最终以S3C6410为核心的硬件平台上,搭建了完整的嵌入式Linux软件开发平台。
主要完成了以下工作:下载、配置编译了交叉工具链,在主机上搭建了嵌入式Linux交叉开发环境;详细分析了BootLoader的启动过程,深入地研究了BootLoader从 NAND Flash启动的原理,在此基础上,对BootLoaderl.1.6进行了移植并实现了从 NAND Flash启动;综述了Linux3.3.3的新特性,移植、配置编译了3.3.3版Linux内核。
HelloWorld应用程序在目标板上的实现,验证了该嵌入式Linux软件平台已基本建立,并可用于二次开发。
在本文的研究成果上,可以直接进行应用程序开发,大大加快了嵌入式系统的开发过程。
通过本课题的研究,对嵌入式软件系统的整体结构和具体实现有了更深的理解,这对于嵌入式系统分析和制定系统实现方案等有很大的现实意义。很多嵌入式开发人员因对嵌入式软件系统没有整体上的认识,掌握的知识过于片面,所以在遇到问题时不能快速准确的找到问题的根源。作者虽已基本完成对嵌入式Linux系统的移植,达到了课题的预期目的,但由于时间等因素的限制,有些问题还有待进一步研究:
1)提高移植后Linux内核的稳定性,增强内核的实时性; 2)编译安装Qt/Embedded库和Qtopia; 3)开发嵌入式应用程序,如数据库,GPS导航;
4)发挥ARM处理器体积小,低功耗,高性能的优势,设计实现高端智能手持设备。
相关推荐: