基于嵌入式开发版的ds18b20数字测温系统内容摘要:
Linux 能够支持 x8 ARM、 MIPS、 ALPHA、 PowerPC 等多种体系结构,目前已经成功移植到数十种硬件平台,几乎能够运行在所有常用的 CPU 上。 Linux有着异常丰富的驱动程序资源,支持各种主流硬件设备和最新硬件技术,甚至可以在没有存储管理单元( MMU)的处理器上运行,这些都进一步促进了 Linux 在嵌入式系统中的应用。 内核高效稳定 Linux 内核的高效和稳定已经在各个领域内得到了大量事实的验证, Li nux 的内 核设计非常精巧,分成进程调度、内存管理、进程间通信、虚拟文件系统和网络接口五大部分,其独特的模块机制可以根据用户的需要,实时地将某些模块插入到内核或从内核中移走。 这些特性使得 Linux 系统内核可以裁剪得非常小巧,很适合于嵌入式系统的需要。 开放源码,软件丰富 Linux 是开放源代码的自由操作系统,它为用户提供了最大限度的自由度,由于嵌入式系统千差万别,往往需要针对具体的应用进行修改和优化,因而获得源代码就变得至关重要了。 Linux 的软件资源十分丰富,每一种通用程序在 Linux 上几乎都可以找到,并且数量还在不断增加。 在 Linux 上开发嵌入式应用软件一般不用从头做起,而是可以选择一个类似的自由软件做为原型,在其上进行二次开发。 优秀的开发工具 开发嵌入式系统的关键是需要有一套完善的开发和调试工具。 传统的嵌入式开发调试工具是在线仿真器( InCircuit Emulator, ICE),它通过取代目标板的微处理器,给目标程序提供一个完整的仿真环境,从而使开发者能够非常清楚地了解到程序在目标板上的工作状态,便于监视和调试程序。 在线仿真器的价格非常昂贵,而且只适合做非常底层的调试, 如果使用的是嵌入式 Linux,一旦软硬件能够支持正常的串口功能时,即使不用在线仿真器也可以很好地进行开发和调试工作,从而节省了一笔不小的开发费用。 嵌入式 Linux 为开发者提供了一套完整的工具链,它利用 GNU 的 gcc 做编译器,用 gdb、 kgdb、 xgdb 做调试工具,能够很方便地实现从操作系统到应用软件各个级别的调试。 完善的网络通信和文件管理机制 Linux 支持所有标准的 Inter 网络协议,并且很容易移植到嵌入式系统当中。 此外, Linux 还支持 ext fat1 fat3 romfs 等文件系统,这些都为开发嵌入式系统应用打下了很好的基础。 综上所述,本系统采用嵌入式 Linux 操作系统作为操作系统。 图形用户界面程序选择 在用户应用程序方面采用采用 Qt 应用程序库进行编程。 Qt 是一个跨平台的 C++ 图形用户界面库,由挪威 TrollTech 公司出品,目前包括 Qt,基于 Framebuffer 的 Qt Embedded,快速开发工具 Qt Designer,国际化工具 Qt Linguist 等部分 Qt 支持所有 Unix 系统,当然也包括 Linux,还 支持 WinNT/Win2k, Win95/98 平台。 基本上, Qt 同 X Window 上的 Motif, Openwin, GTK 等图形界 面库和 Windows 平台上的 MFC, OWL, VCL, ATL 是同类型的东西,但是 Qt 具有下列优点 : : API 2D/3D 图形渲染,支持 OpenGL 支持 基于以上特性,在软件系统的设计方面采用嵌入式 Linux 与 QT Embedded 相结合的方式。 4 软硬件设计 软硬件整体流程 整体 温度测量 》驱动 —》显示 》(软硬件) 硬件整体 设计: ARM9 TQ2440 系统实现如下功能: ( 1)控制温度传感器 DS18B20 读取当前温度值; ( 2)控制 ARM9 内部时钟资源读取时间和日期; ( 3)控制 LCD 液晶屏显示当前温度、时间和日期; 图 硬件整体连接 DS18B20温度传感器的设计 软件整体流程设计: 下图为系统主流程图,主流程图具体介绍如下 : ( 1)系统初始化包括对 DS18B20 进行初始化、设定 GPIO、 RTC 初始化、液晶屏初始化; ( 2)初始化之后显示当前室内温度同时显示日期和时间; ( 3)与此同时进行按键判断,如果有按键继续判断是什么按键,如果是修改时间按键那么修改时间;如果是修改日期按键那么修改日期。 如没有按键按下,那么判断室内温度是否超过预先设定值,如果超过驱动 LED 闪烁报警。 下图为 系统主流程图: 图 系统主流程图 下图为温度传感器功能模块流程图: 开始 系统初始化 显示时间、日期、温度 有按键。 N Y N Y 修改年。 修改年值 N Y 修改月。 修改月值 N Y 修改日。 修改日值 N Y 修改周。 修改周值 N Y 修改时。 修改时值 N Y 修改分。 修改分值 温度超过限。 Y N LED闪 烁报警 图 温度传感器功能模块流程图 下图为液晶显示功能模块 流程图: 图 液晶显示功能模块流程图 下图为 TQ2440 开发板的接口引脚连接说明: 开始 LCD 初始化 写命令到 LCD 写数据到 LCD 显示 开始 初始化 温度传感器 向温度传感器写指令 读取温度传感器数据 数据转化为温度显示 结束 图 开发板引脚图 DS18B20 DQ 口连接到 TQ2440 的 GPG14 口上, 控制数据的读和写; DS18B20 的 VDD 口连接到 TQ2440 的的 VDD 口上; DS18B20 的 GND 口连接到 TQ2440 的 GND 口上。 嵌入式软件架构 本系统的软件系统主要有三个 层次 :嵌入式 Linux 系统的编译移植、底层驱动程序的开发、上层应用程序 的开发。 下图为嵌入式 Linux 开发中程序的层次图: L i n u x 内 核设 备 驱 动 程序文 件 系 统用 户 应 用 程 序硬 件 配 置外 围 设 备片 上 资 源B o o t l o a d e r 图 嵌入式系统层次结构图 引导装载程序 bootloader 设计 Bootloader 引导程序是嵌入式开发很重要的组成部分。 Bootloader 引导程序最基本的功能是对硬件系统的初始化和内核启动参数设置并启动内核。 Bootloader 的存储器映射如下图所示: „ „B S S ( 用 户 堆 栈 区 )B o o t L o a d e r 映 像C F G _ M A L L O C _ L E NG B L _ D A T A _ S I Z EI R Q amp。 F I Q 栈 区用 户 栈 区„ „B o o t L o a d e r 映 像0 X 0 0 0 0 0 0 0 0_ e n d_ b s s _ s t r a tT E X T _ B A S E ( _ s t r a t )用 户 堆 栈 顶 _ s pS D R A M _ B A S E 图 Bootloader 的存储器映射 Bootloader 的主要功能有: ① 初始化 CPU 的主频、 SDRAM、中断、串口等硬件; ② 启动 Linux 内核并提供一个 RAMDISK; ③ 通过串口下载内核或 RAMDISK 到目标板上; ④ 将修改过的内核或 RAMDISK 写入到 Flash 内; ⑤ 为用户提供一个命令接口。 在嵌入式系统开发过程中, Bootloader 还与主机通信,不断检测从主机传来的控制信息和数据信息,完成相应的操作。 Linux 运行在保护模式下,但是当机器启动复位的时候却处于实模式 下。 所以写 Bootloader 的工作也是在实模式之下的。 ① Bootloader 的 stage1 stage1 是 Bootloader 一开始就执行的操作,其目的是为了 stage2 的执行以及随后的内核的执行,设置好一些基本的硬件环境。 包括以下步骤 : 1)屏蔽中断。 为中断提供服务的通常是操作系统,因此在执行 Bootloader 的过程中可以不响应任何中断。 中断屏蔽通过写 CPU 的中断屏蔽寄存器来完成; 2)设置 CPU 的时钟频率和速度; 3)初始化 RAM 设置系统的内存控制器的功能寄存 器和各内存库控制寄存器等; 4)为 stage2 准备 RAM 空间; 5)装载 stage2 到 RAM 中; 6)到 stage2 的入口点。 ② Bootloader 的 stage2 stage2 的主要的功能是通过串口下载 Linux 内核到目标板上。 包括以下几个步骤: 1)初始化本阶段要使用到的硬件设备。 这通常包括:初始化至少一个串口,以便和终端用户进行 I/O 输出信息;初始化计时器等。 2)系统的内存映射。 所谓内存映射就是指在整个 4GB 物理地址空间中有哪些地址范围被分配用来寻址系统的 RAM 单元。 3)将内核映像和根文件系统从 Flash 读入到 Rom 中。 这里包括两个方面:a.内核映像所占用的内存范围; b.根文件系统所占用的内存范围。 在规划内存占用的布局时,主要考虑基地址和映像的大小两个方面。 4)内核的启动参数。 5)调用内核。 Bootloader 调用 Linux 内核的方法是直接跳转到内核的第一条指令处。 Bootloader 启动流程 根据 bootloader 的原理可以得出启动代码的典型流程如下图所示。 在设计中,采用的是开源的 Uboot,然后根据本设计用到 的具体芯片进行相应的配置,编译生成了可移植的 文件,供烧录到 Flash 中做引导程序使用。 图 启动代码的典型流程 进过上述的 Bootloader 的启动过程,程序指针直接跳转到内核代码的起始处,引导程序将处理器的控制权交给内核。 内核的配置与编译 在嵌入式系统开发中, Linux 内核的编译处于软件开发的第一步,首先必须获得最新版本的内核。 进入 文件夹内。 如果机器上已有 内核代码 ,也可以直接使用,可以使用 make distclean 命令清除上次编译的遗留物。 准备结束后,开始配置内核。 在本机编译内核时,我们可以直接 make menuconfig 之类,就可根据当前机器内核的配置产生 .config 文件。 但对于嵌入式当然就很困难。 幸好 Linux 支持上百种平台。 对于不同平台都有默认的配置文件,对于 本设计中 使用的 arm 处理器 ,可以在 /arch/arm/configs 文件夹下看到。 要根据自己所使用的平台来选择。 如本次使用 S3C2440 的处理器,可以选择s3c2440_defconfig。 之后需要修改 Makefile 中的相关选 项,选择正确的交叉编译 器 , 编 译 成 镜 像 文 件。 这 里 编 译 成 make zImage ARCH = arm CROSS_COMPILE=armLinux zImage。 图 内核配置单 根文件系统的编译 一般情况下, Linux 的根文件系统应包含有以下目录: /dev— 设备文件节点用目录。 如果使用设备文件系统,则把它挂载到这里 /proc— 挂载 proc 文件系统 /bin— 存储系统基本命令的目录 /etc— 系统启动配置等脚本 /lib— 系统默认的动态链接库目录 /usr— 用户目录 /sbin— 存储系统 基本命令的目录 /tmp— 临时目录,此目录不是必需的 /var— 包含系统一般运行时要改变的数据,通常这些数据所在的目录大小是要经常变化的 构建 Linux 根文件系统需要用到 busybox 中编译生成的文件,然后利用mkyaffs2image 软件制作 YAFFS 文件系统映像。 YAFFS 文件系统 嵌入式 Linux 下常见的文件系统类型如下: ① RomFS :只读文件系统,可以放在 ROM 空间,也可以在系统的 RAM 中,嵌入式 Linux 中常用来作根文件系统; ② RamFS :利用 VFS 自身结构而形成的内存 文件系统,使用系统的 RAM 空间; ③ JFFS/JFFS2 :为 Flash 设计的日志文件系统; ④ YAFFS :专门为 Nand Flash 设计; ⑤ proc :为内核和内核模块将信息发送给进程提供一种机制,可以查看系统模块装载的信息; ⑥ devFS :设备文件系统。 YAFFS, Yet Another Flash File System,是一种类似于 JFFS/JFFS2 的专门为 Flash 设计的嵌入式文。基于嵌入式开发版的ds18b20数字测温系统
相关推荐
稳定其。 CZV的放大器和传感器设置十分简单,大大改善了以往检测应用中的稳定性问题。 激光传感传感器信号接受电路使用开关电路即可,电路如图: 1 23 4P94Header 2X21 23 4P92Header 2X212P95Header
表示,小时与分钟之间、分钟与秒之间用 3 和 6 位数码管显示 “—”,总计八位七段数码显示管。 此模式下显示当前时间。 ( 2)校时模式: 将 time 键置于 „0‟,运用功能键 set 键对八位数码管 进行选择,并由功能键 up 键进行 +1与 down 键进行 1 操作,通过此 4 个功能键进行校时设置。 Set数码管 7 Set数码管 6 Set数码管 5 Set数码管 4
多元评价教学机制。 些能力 、新技能的学习能力和创新能力。 取信息的能力; 用计算机处理工作领域内的信息和技术交流能力; ; 用缝制设备、打样工具与相关 CAD软件; 、收集、处理、保存各类专业技术的信息资料; 、职业道德等意识,能遵守相关的法律法规; 、协调人际关系的能力。 的培养 同上 主动发展的意识和能力; 个体心理素质; 教学研究与创新能力; 教育教学基本功; 专业技能动手能力;
它快速开发出下一代的智能化小体积连接设备。 借助于完善的操作系统功能和开发工具, Windows CE .NET为开发人员提供了构建、调试和部署基于 Windows 的定制设备所需的一切特性。 平台开发工具 Platform Builder是一个完全集成的开发环境( IDE),并且包括一个软件开发工具包( SDK)导出工具。 因此它具有比之前版本更有效的特点,具体来说详见以下特点。
有现实意义。 软件体系方案 本文所采用的软件试验平台是 Linux 操作系统 ,简单地说, Linux 是一种主要适用于个人计算机的类似于 UNIX 的操作系统。 它的独特之处在于不受任何商品化软件的版权制约,全世界都免费、自由使用。 Linux 继承了 UNIX 系统的许多优良特性,同时又有自己的长处: 重庆大学本科学生毕业设计 (论文) 2 远程温度监测系统设计与软硬件平台搭建 6 ◆
答 辩 小 组 成 员 姓 名 职务(职称) 姓 名 职务(职称) 姓 名 职务(职称) 宫彦军 教授 包本刚 副教授 贾竹君 副教授 何红松 讲师 陈爱武 讲师 游珍珍 讲师 答辩中提出的主要问题及回答的简要情况记录: 会议主持人: 记 录 人: 年 月 日 M 答 辩 小 组 意 见 评语: 评定等级: 负责人(签名): 年 月 日 系 学 位 委 员 会 意 见 评 语: