新闻中心

EEPW首页>消费电子>设计应用> 基于ARM的智能测温系统设计

基于ARM的智能测温系统设计

作者:田建平 王可宁 时间:2017-02-17 来源:电子产品世界 收藏

(1)DDR2 SDRAM电路
S5PC100 SDRAM控制器通过向外部16位或32位SDRAM
提供接口来扩展芯片存储能力。本平台采用2片K4T1G164
16位宽度DD2 SDRAM组成32位内存,容量256MB,如图3。
(2)NANDFLASH电路与SD卡存储电路 由于系统需要运行Linux系统,系统代码较为复杂,需
要一定容量的存储器存放Linux操作系统源代码以及应用程 序,由于S5PC100内置了NAND FL ASH控制器,因此平台 采用K9F2G08 256MB NAND FLASH直接与S5PC100 NAND FLASH控制器接口连接。SD卡可通过S5PC100内置SDIO1总 线直接连接。其NAND FLASH电路原理图如图4所示、SD卡 的原理图如图5所示。
2.2 温度传感器接口
平台设计了采用DS18B20一线制温度传感器接口。采用 S5PC100处理器GPIO引脚接口控制温度传感器DS18B20的温 度测量,LCD屏输出测量温度,原理图如图6所示。
2.3 温度报警电路
本 设 计 采 用 软 件 处 理 报 警 , 利 用 无 源 蜂 鸣 器 进 行 报 警,当所测温度超限后输出PWM信号,驱动蜂鸣器报警, 其电路原理图如图7所示。

3 系统软件设计
3.1 Linux操作系统移植
完整的嵌入式linux系统由bootloader、kernel、rootfs等
3个基本部分组成。其中bootloader用于引导和装载操作系统、kernel为linux内核程序、rootfs为文件系统,如图8。
3.1.1 交叉编译环境
嵌入式开发系统受到自身硬件以及软件资源的限制, 无法完成代码的本地编译,其开发需要在宿主机上建立交叉 开发环境。
交叉开发环境是包含了编辑器、编译器、连接器、调 试器和libc库等的程序环境。在开发嵌入式Linux相关软件 时,常用的交叉开发工具是GNU工具链。系统中宿主机使 用的开发环境为ubuntu12.04操作系统,目标板内核版本号为 标准linux-2.6.35,使用到的交叉编译器是arm-linux-gcc-4.5.1。
3.1.2 Bootloader程序设计
Bootloader是在操作系统运行前运行的一段专用程序, 可以完成平台硬件设备的初始化,并能完成引导和调试操作 系统。 Bootloader依赖CPU体系结构,一般将Bootloader按功 能划分为两个阶段,其中第1阶段实现基本硬件电路的初始 化,为操作系统的运行准备环境。在平台中,由于使用的是微控制器,因此第一阶段需要实现设置处理器进入管 理模式、关闭处理器中断与快中断、设置处理器主频、高速 总线主频与告诉外设主频、CPU关闭MMU与数据Cache,初 始化内存控制器,代码由存储器自搬运至内存,设置运行程 序需要的临时堆栈、BSS段清零等工作。第2阶段主要实现 进入交互模式或者自引导模式,实现操作系统的加载,一般 要根据操作系统与硬件平台的需要实现相关硬件的初始化工 作, 如初始化GPIO、串口、网口等外部设备,完成向内核 传递启动参数等功能。
3.1.3 Linux内核的定制
Linux目前已经支持了x86、、MIPS等多种处理器 架构,支持的平台类型多达3000多种。各种处理器的 设计厂商为了更好地推广处理器的使用,都会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微控制器作为系 统的核心控制单元,并在平台上移植了Linux操作系统以满 足系统对联网、存储方面的需要。对比众多的处理器,选用 了三星公司基于Cortex-A8 内核的 S5PC100处理器,围绕核 心电路设计了温度采集,大容量存储、人机交互、以及网络 通讯等单元电路;在平台电路的基础上实现了Linux系统的 移植工作,并完成了这些设备接口电路的驱动移植工作; 在Linux系统下实现了DS18B20的驱动设计工作,并编写了基 于液晶显示的测试程序。经过实际测试,应用程序能够在 Linux下采集DS18B20的温度数据,并能够实现在LCD上的显 示、存储功能,存储文件能够通过网络的NFS服务导出到PC 端,实现了课题设计的功能。

本文引用地址://m.amcfsurvey.com/article/201702/344136.htm

上一页 1 2 3 下一页

关键词:ARM智能测温系统

评论


相关推荐

技术专区

关闭