内核是所有Linux软件组件中最核心的部分,由它来规定整个系统的功能。如 果目标体系结构中有某一个硬件是内核不支持的,那么这个组件将不会有任何作 用。从Linux的内核体系结构可知,大部分内核代码是体系结构无关的,即独立 于处理器和体系结构的,但是有一小部分是结构体系相关的代码。因此对于一个 特定的嵌入式应用而言,针对不同的处理器合理的对Linux内核进行配置和剪裁 是嵌入式开发的关键所在。
第二章ARM-Lmux嵌入式技术和系统构建
华南理I:火学硕}:学付论文
Smake clean
Smake dep
make clean作用是清除以自H构核所产生的所有目标文件、模块文件和・些临 时文件.不产生任何新的文件。
(2)编译内核的映像
有了关联文件之后,可以采用如下命令编译内核产生映像文件:
¥make ARc珏=-armCROSS—CoMP目Ll薹=arm—linux—
Smake zlnm--ge
目标文件zlmage就是根据Makefile文件编译的内核映像文件.通常是用gzip 算法柬压缩的文件,它将在内核启动时自动解压缩而且占据很少的硬盘空间。这 个文件一般放在/usrlsrc/linux/lmage目录下。如果目标文件是vmlinux那么编译 产生的就是没有压缩的映像文件,vmlinux和z[mage之间的主要区剐在于 vmlinux是实际的(未压缩的)可执行文件.而zlmage是或多或少包含相同信 息的自解压压缩文件。
(3)编译内核模块
已经编泽完了内核,接F柬就要编泽模块,即使在配置内核时没有使辟;f任何 模块.也不要跳过此步骤,编泽zlmage后立刻编译模块是个好习惯。模块被编 译I而且破安装到/usr/lib/<内核版本号>目录F,
¥make ARCH=arm CRoSS—CoMPlLE=arm・linux.
¥makemodules
3.4.4.3嵌入式Linux内核启动
Bootloader除了负责引导加载Linux内核,还必须设定Linux内核的启动参数,
并将启动参数从Bootloader传递给Linux内核。传递启动参数的方法一般有两种:
标记列表法(TAG)和参数表(parameter)。本引导启动方案采用参数法。参数法 使用的是param—struct结构体的成员,并且每~个参数位于该结构体的特定偏移 处。同时Linux启动参数在内存的存放首地址必须是0x100处,在本系统中.采 用SDRAM作为内存,SDRAM的物理首地址在本系统的映射表中为0xc0000000.
因此Linux启动参数存放是从0xc0000100地址开始的内存空间。
param—struct结构体定义在.,include/asm,setup.h中.其中定义了很多重要 参数,在本系统中bootloader需要传递给Linux内核的参数有如下:
第二章ARM--Linux嵌入式技术枉I系统f{!『建
其中page—size代表Linux的页面大小,定义为4K。 nr—pages代表系统可用 的页面数目。因为本系统不采用ramdisk,所以ramdisk—size为0。rootdev代表根 文件系统挂在的设备。flags定义了内核启动的标识。
Commandline是param—struct一个非常重要的参数,它保存传递给Linux内核 的启动命令行的参数。开发人员町以在编译内核前就定义该命令行,并保存在宏
CoNFIG CMDLINE,这样编译内核的时候,内核就获得了该命令行的内容。一
般在commandline中设定的主要参数有:initrd、root,init、console等,如果 使用NFS(Network File System)网络文件系统,91lJ还可以设定nfsroot和nfsaddr 等参数。
内核启动和引导结束完毕后.就可以进行在arm.Linux嵌入式系统中流媒体服 务器程序丌=发。
3.4.5 NFS开发模式
NFS网络文件系统(NetworkFile System)最主要的功能是让网络上的Linux 电脑共享目录和档案。可以将远端分享出来的档案系统挂载在本地端的系统上.
然后可以方便的使用远端的资源,操作起来就如同在本地操作一样。NFS可以让 嵌入式开发变得更容易。
3.4.5.1设置NFS服务器和DHCP服务器
在开发中需要在PC端设置DHCP和NFS服务器。
●设置NFS
采用NFS开发模式,需要将嵌入式Linux的启动方式改为NFS模式,执行如 下命令:
#param set linux cmd_liae“noinitrd init=/linuxrc console=ttySO root=tdevlnfs nfsroot=192.168.0.10:/bomc/yanhong/nfs mac--OO:Oe:3a:aa:bb:cc”
华南理L.人学硕十学位沧j[
其中root=/dev/nfs是指把NFS作为Linux操作系统的根分区。
nfsroot=192.168.0.10:/home/yanhong/nfs mac=OO:0e:3a:aa:bb:cc是指将使用IP 为192.168.0.10的PC上的,home/yanhong,nfs作为开发板的恨分区。,f:发扳的【P 地址设为192.168,.0.11 。NFS的服务器IP是192.168.0.10
另外在PC上还必须修改/etc/exports文件:
[root@honm]器矗恂犯/etelexports
Ihomelymrhong/nfs 192.168.0.1l(rw,syne。no_root_squash)
然后运行启动NFS就可以了。
静exportfs-ray
#/eteBnitd/nfsi陆start
●设置DHCP
建立_/etc/hdc口d.conf。内容如下:
然后重新启动DHCP服务器就可以使用NFS开发应用程『芋了。
3.4.5.2使用NFS进行开发
设置好了NFS服务器后,就可以进行歼发了。开发时,连接好PC和丌发板,
配置串口.超级终端可以使用Linux下的minicom来代替。
启动,F发板进入到Linux终端.可以在minicom上看到PC主机上的NFS文 件目录。在PC上编辑用户的源程序.并进行交叉编译生成可以直接在开发扳上 执行的二进制文件。在PC上开发的程序可以利用NFS直接在开发板中执行,极 大的方便了程序的开发和调试。使开发者尽情享受NFS开发模式带来的高效性。