• 沒有找到結果。

3.4.4内核修改和裁剪

在文檔中 分类号 (頁 30-34)

内核是所有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开发模式带来的高效性。

在文檔中 分类号 (頁 30-34)

相關文件