3.4.2 裁减配置及编译
修改完内核设置后,就可以对内核进行裁减配置及编译了,在配置中剪裁掉冗余的部分,使编译生成的最终的内核的映像文件代码量尽可能小。执行如下命令:
# make menuconfig
进入配置菜单,选择处理器类型和所需要的各种外设、协议的支持等等, 包含了LCD 、触摸屏、串口、声音、EXT2、FAT 和JFFS2 文件系统以及TCPIP 协议的支持.
# make dep
搜索Linux 编译输出与源代码之间的依赖关系,并生成依赖文件。
# make zImage
编译Linux 内核,生成压缩的内核映像文件zImage 。存放在/arch/arm/boot/ 目录下。
3.5 驱动程序的编写
驱动程序是操作系统内核和底层硬件之间的接口,驱动程序为应用程序屏蔽了硬件的细节,通过驱动程序,应用程序对硬件的操作可以像对普通的文件操作一样方便。驱动程序的主要作用是初始化和释放硬件设备,检测和处理硬件设备出现的问题,在应用程序、内核和底层硬件之间传输数据。
由于嵌入式系统是针对具体应用的,因此,应该根据具体的平台编写相应设备的驱动程序,以方便应用程序对底层硬件的访问。每一个系统调用都对应着file_operations 结构的每一个成员,编写驱动程序主要是编写底层设备需要的各个操作函数并填充结构file_operations ,该结构在/include/Linux/fs.h 文件中定义。
驱动程序通过设备名、主设备号和从设备号与具体的硬件相联系。驱动程序可以以动态或者静态方式加载到内核当中,在调试阶段,一般以动态的方式加载驱动程序,而在最终形成产品时,添加到内核当中,每次启动内核时自动加载。
3.6 根文件系统
一个嵌入式产品的稳定运行,除了引导程序、内核之外,还必须有一个区域用来为用户提供支持架构和用户使用的应用软件,存放数据读写的结果,这个区域就是根文件系统。嵌入式系统中通常使用的根文件系统有:Romfs 、Cramfs 、Ramfs 、JFFS2、EXT2 等,另外根文件系统既可以建立在RAMDISK 上,也可以建立在Flash 上,在RAMDISK 上建立根文件系统Cramfs 。
4.结束语
本研究具获得了以下创新:
(1)设计了以HMS30C7202 为核心的车载导航装置的硬件系统及其LCD 液晶显示模块、存储器模块(Flash、SDRAM)、GPS 模块、串行接口、USB 接口、IrDA 红外通讯接口河网络接口等外围部分。
(2)建立了软件设计的交叉编译的环境,完成了以HMS30C7202 为核心的车载导航装
置的软件设计。本研究得出以下结论:
1 (1)在车载导航系统中采用源代码完全开放的嵌入式Linux 完全可以代替WinCE 等商业操作系统,从而减低了系统的成本,增加了市场的竞争力。通过对系统的开发,笔者有以下几点感触。
2 (2)在程序中加入一些输出语句,以便在调试过程中,在超级终端上显示一些通过串口打印的调试信息,可以对程序运行情况进行观察。
3 (3)由于串口下载速度较慢,BootLoader 要尽可能支持网络,通过网络下载内核和文件系统,加快开发进度。