第五章 汇聚节点软件设计与分析
在上一章节中,我们详细阐述了汇聚节点的硬件组成,嵌入式操作系统只有在硬件平台支撑下才能良好地运行,本章重点对汇聚节点软件进行设计分析,包括嵌入式系统的定制、驱动程序和应用程序的开发。
5.1 嵌入式Linux开发流程
由于Linux操作系统的源码开放、内核可以自由裁剪和内核很小,同时拥有大量开发工具和免费等特点,因此随着嵌入式技术的快速发展而被广泛地移植到嵌入式系统平台上面,现今在x86、ARM、MIPS等多种CPU硬件平台上都能够实现Linux系统的运行。嵌入式软件系统开发可以分为系统层开发和应用层开发两类。通常需要借助相关的辅助工具进行,系统层开发流程如图5.1所示。
DevicedriverBootloaderKernel根文件系统编译连接编译连接编译连接编译连接精简压缩精简压缩可执行文件Bootloader连接器(Jtag)BSP目标板
图5.1 嵌入式Linux操作系统开发流程
嵌入式系统的开发主要包括启动引导项(Bootloader)、系统内核(Kernel)和根文件系统(Root Filesystem)三个部分。每个部分通过不同的剪切、修改和编译连接,通过硬件外部链接下载到目标板,使目标板能够稳定的运行。Bootloader与内核需要根据目标板的实际情况进行修改和定制,经过修改定制的Bootloader烧写到目标板之后,上电能够完成目标板的初始化工作,并引导内核
开始工作。内核是Linux系统最为基础的部分,为整个嵌入式系统运行提供进程、内存等管理,能为目标板各种设备提供驱动工作程序;由于目标板上的设备各不相同,内核无法实现全部的包容,因此大多时候需要对驱动程序进行开发。根文件系统是用户与机器互交通信的基础,且伴随内核开发一起进行。在目标板中Bootloader、内核和文件系统在系统中通过存储器分区连续排列,如图5.2所示。
Boot parametersBootloaderKernelRoot Filesystem
图5.2 嵌入式Linux系统分区结构
Bootloader类似于传统PC的BIOS用来引导程序驱动,它的作用为:在系统上电之后开始运行,为硬件、软件初始化和内核调用做好前期准备工作。Bootloader依赖硬件环境而存在,不同的CPU和外设所需的配置形式各不相同。Bootloader的种类同样很多,表5.1给出常见的Bootloader开发工具。
表5.1 常用Bootloader对比表
Bootloader类型 LILO GRUB Etherboot Uboot Vivi 描述 Linux磁盘引导程序 GUN的LILO替代程序 使用以太网卡启动Linux系统固件 通用引导程序 针对SUMSUNG的ARM CPU引导程序 x86 是 是 是 是 否 ARM PowerPC 否 否 否 是 是 否 否 否 是 否 Uboot是一款开源的,支持流行系列处理器和多种嵌入式操作系统内核的引导程序。Uboot的可靠性和稳定性很高,代码完全开放为系统的开发设计提供有效的帮助,因此本设计选用Uboot来定制汇聚节点使用的Bootloader引导程序。
上面分析了嵌入式系统层的开发,下面对嵌入式应用层开发做简单介绍。应用程序的开发根据实际需求进行设计,并且需要能够在嵌入式系统下运行。不同的应用程序开发时间、难度和开发工具各有不同,但是整体都需要在Linux系统下来完成,因此应用程序的开发有一定的流程,图5.3给出了应用程序的开发流程。首先在宿主机环境下编写、编译完成程序,然后通过交叉编译工具进行编译和调试,最后通过硬件连接下载到嵌入式平台进行测试。
基于矿井安全RFID系统的汇聚节点设计与实现-第5章



