基于ARM的智能测温系统经典案例
5,使用到的交叉编译器是arm-linux-gcc-4.5.1。
3.1.2 Bootloader程序设计
Bootloader是在操作系统运行前运行的一段专用程序, 可以完成平台硬件设备的初始化,并能完成引导和调试操作 系统。 Bootloader依赖CPU体系结构,一般将Bootloader按功 能划分为两个阶段,其中第1阶段实现基本硬件电路的初始 化,为操作系统的运行准备环境。在平台中,由于使用的是 ARM微控制器,因此第一阶段需要实现设置处理器进入管 理模式、关闭处理器中断与快中断、设置处理器主频、高速 总线主频与告诉外设主频、CPU关闭MMU与数据Cache,初 始化内存控制器,代码由存储器自搬运至内存,设置运行程 序需要的临时堆栈、BSS段清零等工作。第2阶段主要实现 进入交互模式或者自引导模式,实现操作系统的加载,一般 要根据操作系统与硬件平台的需要实现相关硬件的初始化工 作, 如初始化GPIO、串口、网口等外部设备,完成向内核 传递启动参数等功能。
3.1.3 Linux内核的定制
Linux目前已经支持了x86、ARM、MIPS等多种处理器 架构,支持的平台类型多达3000多种。各种ARM处理器的 设计厂商为了更好地推广处理器的使用,都会Linux中添加补丁, 使得该处理器能够在L i nu x 行正常运行。 平台选用Linux-2.6.35版本,面对大规模的Linux源代码,我们需要对Linux进行剪裁移植。
Linux源代码采用模块化的组织方式,可以通过条件编 译的方式对Linux源码的功能进行剪裁,但是条件编译法裁 剪的是功能模块,对于具体的硬件驱动和优化就需要对源代 码进行细微的修改了。
3.1.4 根文件系统的建立
根文件系统是存放各种工具软件、库文件、脚本、配 置文件的地方,任何包括这些Linux系统启动所必须的文件 都可以成为根文件系统。Linux支持jffs2,nfs,cramfs,yaffs2 等多种文件系统。在本系统中使用的Ramdisk文件系统,实 际上是把内存划出一部分当作硬盘使用,使得程序运行效率 更高。系统中的工具集合采用BusyBox完成,BusyBox 将许多 具有共性的小版本的UNIX工具结合到一个单一的可执行文 件。这样的集合可以替代大部分常用工具比如GNU fileuTIls, shelluTIls等工具,BusyBox提供了一个比较完善的环境,可 以适用于任何嵌入式设备。
3.2 温度传感器驱动程序的设计
在Linux中,为实现模型抽象和统一操作接口,设备驱 动程序隐藏了设备的具体细节,向用户提供了统一的设备接 口。Linux设备驱动运行于内核中,完成直接硬件操作、设 备管理等工作,并向用户提供了统一的接口模型。Linux下 将设备分为字符、块和网络设备三类,同样设备驱动也分为 字符驱动、块设备驱动和网络设备驱动。字符设备面向的设 备是流式设备,如鼠标、键盘等;块设备面向的是需要随 机存储的设备,它主要包括硬盘、光驱等存储设备;其中 DS18B20属于字符设备。
在字符与块设备中由一个主设备号和一个次设备号(minor number)标识驱动设备。主设备号用于标识设备类 型,次设备号用于识别同类设备序号。字符驱动程序通过 file_operaTIons结构的指针向用户程序提供接口抽象。
其内核定义如下:
struct file_operaTIons
{
int (*read) (struct inode *inode,struct file *filp,char *buf,int count); /*设备读*/
int (*write) (struct inode *inode,struct file *filp,char *buf,int
count); /*设备写*/int (*ioctl) (struct inode *inode,struct file *filp,unsigned int
cmd,unsigned int arg); /*I/O控制*/
int (*open) (struct inode *inode,struct file *filp); /*设备打 开*/
void (*release) (struct inode *inode,struct file *filp); /*设备 关闭*/
??????
};
在结构file_operations里,指出了设备驱动程序所提供的 入口点位置,分别是:
read读操作,完成由应用设备向应用程序传递的数据。 write写操作,完成由应用程序向设备发送的数据。 ioctl,进行读、写以外的其它命令操作。 open,打开设备准备进行I/O操作。 release,设备释放操作。 每一个字符设备驱动由一个cdev结构体抽象,具体的驱动的实现由 file_operations实现,用户程序通过dev_t代表设 备号查找到内核中的cdev,由cdev调用到file_operations,从 而调用到实际的硬件操作函数。
4 结论
本文以便携式手持温度测试仪为技术、应用背景,设计了一套具备温度测量、数据记录、LCD显示以及网络通信 功能的温度测试设备。
由于便携式手持温度测试仪具有体积孝功耗低同时 又具备
ARM 相关文章:
- 基于ARM+FPGA的大屏幕显示器控制系统设计(06-30)
- 基于ARM和μC/OS-II的车载定位终端的设计(06-24)
- 解读物联网时代下的ARM mbed 操作系统(05-03)
- 用ARM和FPGA搭建神经网络处理器通信方案(07-19)
- ARM新一代Cortex-A73架构解析 千元机也能有高端SoC(05-06)
- 阿里巴巴将大量采用ARM处理器 Intel怎么办?(11-14)
