基于ARM和QT的多路信号检测系统设计毕业设计论文.doc_第1页
基于ARM和QT的多路信号检测系统设计毕业设计论文.doc_第2页
基于ARM和QT的多路信号检测系统设计毕业设计论文.doc_第3页
基于ARM和QT的多路信号检测系统设计毕业设计论文.doc_第4页
基于ARM和QT的多路信号检测系统设计毕业设计论文.doc_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计说明书 基于 ARM 和 QT 的多路信号检测系统设计 摘 要 I 摘 要 随着嵌入式越来越受到重视 嵌入式系统近年来的发展有目共睹 嵌入式 系统的应用越来越广泛 无论是传统的工业监测 机械控制 还是新兴的移动 通讯 数字娱乐 嵌入式系统正逐渐走进人们的生活生产的方方面面 在工业 检测方面 传统的监控系统主要以单片机为硬件载体进行设计 功能相对单一 可视化及拓展性有限 随着 Linux 系统的不断升级换代 现在出现了以 ARM 芯片为载体 以 Linux 系统为软件平台设计出的新一代监控系统 除了能实现 原有单片机的功能外 其可视化更强 具备网络通信功能 是一台具备功能拓 展更丰富的微型计算机 矚慫润厲钐瘗睞枥庑赖 本文将以北京博创兴业科技有限公司提供的 UP NetARM2410 S 实验仪器 为硬件载体 对监测系统的设计进行研究和应用 系统平台使用的是 Linux2 4 18 的内核 GUI 首次以 Qt 为底层图形模块 用 C 和 Qt 图形用户界 面类库开发图形数据一体化监控平台 聞創沟燴鐺險爱氇谴净 本文先从硬件平台设计入手 根据要求对硬件设备进行了解 设计了功能 模块 在软件部分移植了 Linux 操作系统平台 构建了开发环境 就数模转换 触摸屏驱动程序进行编程 最后详述在了 Qt 下 如何使用 C 语言设计监控系 统图形界面 最后展现了系统运行效果 并提出了改进意见 残骛楼諍锩瀨濟溆塹籟 运行效果表明 设计的监控系统是有效和实时的 关键词 嵌入式系统 Linux 驱动 Qt Abstract II Abstract With the increasing importance of embedded technology the development of embedded systems for all to see in recent years embedded system applications increasingly broad Whether in traditional industrial monitoring mechanical control or the emerging mobile communications digital entertainment embedded systems are gradually moved into all aspects of production and lives of the people In the industrial testing the traditional embedded control systems primarily for the single chip microcomputer hardware vector design function relatively single visualization and limited scalability With the Linux system constantly upgrading and updating and now appeared to ARM chip carrier and Linux systems software platform designed for a new generation of monitoring system In addition to achieving the original microcontroller functions visualizations stronger equipped with the network communication function is a function of developing a more abundant micro computer 酽锕极額閉镇桧猪訣锥 This paper based on UP NetARM2410 S experiment instrument provided by the Beijing Universal Pioneering Technology Co LTD designs a monitoring system to conduct research and application System platform is Linux2 4 18 kernel GUI for the first time in the bottom Qt graphics module using C and Qt graphical user interface library monitor the development of graphical data integration platform 彈贸摄 尔霁毙攬砖卤庑 This article first start with the hardware platform design required to understand the hardware devices designed modules ported in the software part of the Linux operating system platform build the development environment how to build a development environment and were on the A D conversion touch screen driver programming the final details in Qt how to use C language designed monitoring system graphical interface As an application of research papers the paper mainly on the software design while the diagnosis and monitoring technology provides a similar software design and development of the reference model 謀荞抟箧飆鐸怼类蒋薔 The study proved to be effective and real time Key words Embedded system Linux Driver Qt 目 录 III 目 录厦礴恳蹒骈時盡继價骚 摘 要 I茕桢广鳓鯡选块网羈泪 Abstract II鹅娅尽損鹌惨歷茏鴛賴 目 录 III籟丛妈羥为贍偾蛏练淨 第一章 前言 1預頌圣鉉儐歲龈讶骅籴 1 1 课题研究背景和意义 1渗釤呛俨匀谔鱉调硯錦 1 2 嵌入式技术发展现状与未来 1铙誅卧泻噦圣骋贶頂廡 1 3 课题研究内容 2擁締凤袜备訊顎轮烂蔷 第二章 基于 ARM 和 QT 的多路信号监测系统硬件设计 3贓熱俣阃歲匱阊邺镓騷 2 1 系统组成 3坛摶乡囂忏蒌鍥铃氈淚 2 2 S3C2410 介绍 3蜡變黲癟報伥铉锚鈰赘 2 3 设计方案 7買鲷鴯譖昙膚遙闫撷凄 2 4 ADC 硬件设计 8綾镝鯛駕櫬鹕踪韦辚糴 2 4 1 ADC 转换器 8驅踬髏彦浃绥譎饴憂锦 2 4 2 A D 转换器在扩展板的连接 9猫虿驢绘燈鮒诛髅貺庑 第三章 嵌入式 linux 移植及驱动开发 11锹籁饗迳琐筆襖鸥娅薔 3 1 linux 主要特征 11構氽頑黉碩饨荠龈话骛 3 2 驱动程序开发 12輒峄陽檉簖疖網儂號泶 3 2 1 嵌入式 linux 驱动程序开发方法 12尧侧閆繭絳闕绚勵蜆贅 3 2 2 ADC 在 ARM 中的驱动开发 12识饒鎂錕缢灩筧嚌俨淒 3 2 3 触摸屏在 ARM 中的驱动开发 21凍鈹鋨劳臘锴痫婦胫籴 第四章 信号监测应用软件设计 26恥諤銪灭萦欢煬鞏鹜錦 4 1 Qt 主要特性 26鯊腎鑰诎褳鉀沩懼統庫 4 2 Qt 类库及其机制简介 27硕癘鄴颃诌攆檸攜驤蔹 4 2 1 Qt 类库 27阌擻輳嬪諫迁择楨秘騖 4 2 2 Qt 对象间通讯机制 28氬嚕躑竄贸恳彈瀘颔澩 4 3 信号监测 UI 设计 29釷鹆資贏車贖孙滅獅赘 4 4 信号监测 UI 和驱动连接 30怂阐譜鯪迳導嘯畫長凉 第五章 总结与展望 37谚辞調担鈧谄动禪泻類 5 1 全文总结 37嘰觐詿缧铴嗫偽純铪锩 5 2 展望 37熒绐譏钲鏌觶鷹緇機库 参考文献 38鶼渍螻偉阅劍鲰腎邏蘞 致 谢 39纣忧蔣氳頑莶驅藥悯骛 附录 40颖刍莖蛺饽亿顿裊赔泷 第一章 前言 1 第一章 前言 1 1课题研究背景和意义 在现在日益信息化的社会中 计算机和网络已经全面渗透到日常生活的 每一个角落 对于我们每个人 需要的已经不再仅仅是那种放在桌上处理文 档 进行工作管理和生产控制的计算机 机器 各种各样的新型嵌入式系 统设备在应用数量上已经远远超过通用计算机 而在工业和服务领域中 使 用嵌入式技术的数字机床 智能工具 工业机器人 服务机器人也将逐渐改 变传统的工业和服务方式 目前嵌入式系统技术已经成为了最热门的技术 之一 吸引了大批的优秀人才投入其中 嵌入式系统可以称为后PC 时代 和后网络时代的新秀 由于嵌入式系统采用的是微处理器 实现相对单一的 功能 采用独立的操作系统 所以往往不需要大量的外围器件 因而在体积 上 功耗上有其自身的优势 嵌入式在应用中拥有广阔的前景 濫驂膽閉驟羥 闈詔寢賻 1 2嵌入式技术发展现状与未来 嵌入式系统是将计算机技术 半导体技术和电子技术与各个行业的具体 应用相结合后的产物 是一门综合技术学科 由于空间和各种资源相对不足 嵌入式系统的硬件和软件都必须高效率地设计 量体裁衣 去除冗余 力争 在同样的硅片面积上实现更高的性能 这样才能在具体应用中对处理器的选 择更具有竞争力 作为软硬件高度结合的产物 为了提高执行速度和系统 可靠性 嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中 而 不是存贮于磁盘等载体中 片上系统 板上系统的实现 使得以pda 等为 代表的这类产品拥有更加熟悉的操作界面和操作方式 比着传统的商务通等 功能更加完善 实用 銚銻縵哜鳗鸿锓謎諏涼 因为嵌入式系统往往和具体应用有机地结合在一起 它的升级换代也是 和具体产品同步进行 因此嵌入式系统产品一旦进入市场 具有较长的生命 周期 挤貼綬电麥结鈺贖哓类 从软件方面讲 软件功能趋向专一化 掌上设备的各种通讯 管理软件 需求量极大 开发环境齐备 可以完全在PC 机上进行 通过软件模拟调 试 等到模拟通过再下载入机器 而且因为可以使用大量的PC 机的 API 函数 SDK 所以开发过程是在已有的成熟技术基础上进行 相对简单 第一章 前言 2 赔荊紳谘侖驟辽輩袜錈 硬件方面 不仅有各大公司的微处理器芯片 还有用于学习和研发的各 种配套开发包 目前低层系统和硬件平台经过若干年的研究 已经相对比较 成熟 实现各种功能的芯片应有尽有 而且巨大的市场需求给我们提供了学 习研发的资金和技术力量 从软件方面讲 也有相当部分的成熟软件系统 国外商品化的嵌入式实时操作系统 已进入我国市场的有 WindRiver Microsoft QNX 和 Nuclear 等产品 我国自主开发的嵌入式 系统软件产品如科银 CoreTek 公司的嵌入式软件开发平台DeltaSystem 它不仅包括 DeltaCore 嵌入式实时操作系统 而且还包括 LamdaTools 交叉 开发工具套件 测试工具 应用组件等 此外 中科院也推出了Hopen 嵌入式操作系统 虽然还不够完善 同时由于是研究热点 所以我们可以 在网上找到各种各样的免费资源 从各大厂商的开发文档 到各种驱动 程 序源代码 甚至很多厂商还提供微处理器的样片 这对于我们从事这方面的 研发 无疑是个资源宝库 对于软件设计来说 不管是上手还是进一步开发 都相对来说比较容易 这就使得很多生手能够比较快的进入研究状态 利于 发挥大家的积极创造性 6 塤礙籟馐决穩賽釙冊庫 嵌入式系统是这个后 PC 时代的擎天之柱 我们有理由相信 未来的电 子技术就是嵌入式系统技术的天下 1 3课题研究内容 嵌入式系统逐渐成为 IT 业界技术研究和产品开发的热点 其重要性 随着手持设备的普及而越来越突出 本文通过对嵌入式 linux 和 qt 的分析 与研究 在 Qt 和 ADC 自定义驱动的基础上 开发了基于 S3C2410 和 ADC 实现对多路模拟量信号的实时监测系统 利用QT 和液晶实现图形化显示 数据 一体化的图形界面非常方便用户观测 充分地体现了嵌入式系统的优 势 此外 Qt 作为一个 GUI 解决方案 可用于对 GUI 大小要求苛刻的系统 中 裊樣祕廬廂颤谚鍘羋蔺 第二章 基于 ARM 和 QT 的多路信号监测系统硬件设计 3 第二章 基于ARM和QT的多路信号监测系统 硬件设计 2 1系统组成 信号监测 系统设计包括信号采集模块 数据处理功能电路模块 以及液 晶显示模块 如图 2 1 所示 这些模块使得该设备拥有强大的功能 集信 号采集 数据处理 参数显示为一体 用户可方便的对多路信号进行实时 监测 仓嫗盤紲嘱珑詁鍬齊驁 图 2 1 系统概要框图 2 2 S3C2410介绍 S3C2410 处理器是 Samsung 公司基于 ARM 公司的 ARM920T 处理器内 核 采用 0 18um 制造工艺的 32 位微控制器 该处理器拥有 独立的 16KB 指令 Cache 和 16KB 数据 Cache MMU 支持 TFT 的 LCD 控制器 NAND 闪存控制器 3 路 UART 4 路 DMA 4 路带 PWM 的 Timer I O 口 RTC 8 路 10 位 ADC Touch Screen 接口 IIC BUS 接口 IIS BUS 接口 2 个 USB 主机 1 个 USB 设备 SD 主机和 MMC 接口 2 路 SPI S3C2410 处理器最高可运行在 203MHz 1 7 11 绽萬璉轆娛閬蛏鬮绾瀧 第二章 基于 ARM 和 QT 的多路信号监测系统硬件设计 4 图 2 2 S3C2410 资源结构图 CPU S3C2410X 芯片是基于 ARM920T 内核 主频 200M 提供如下功能 1 8V 内核电压 电源管理有 Normal Slow Idle Stop 和 Power 第二章 基于 ARM 和 QT 的多路信号监测系统硬件设计 5 off 模式骁顾燁鶚巯瀆蕪領鲡赙 3 3V 内存电压 3 3V 的处理器 IO 电压 处理器拥有 16KB I Cache 16KB D Cache 和 MMU瑣钋濺暧惲锟缟馭篩凉 外部 SDRAM 控制器 集成 LCD 控制器可以支持 4K color STN and 64K color TFT 1 个 通道的专用 DMA 用于显存刷新 鎦诗涇艳损楼紲鯗餳類 有外部请求引脚的 4 通道 DMA 3 通道的 UART 支持 IrDA1 0 16 byteFIFO 1 个通道的 SPI 栉缏歐锄棗鈕种鵑瑶锬 1 个多主 IIC 总线控制器 一个 IIS 总线控制器 SDHost 支持 1 1 的多媒体协议 两个 USB1 1 控制器 可以配置成为 host 或 device 4 通道 PWM 和一通道的内部定时器 8 通道 10bitADC 和触摸屏控制 器辔烨棟剛殓攬瑤丽阄应 看门狗定时器 117 个外部通用 IO 24 个外部中断源 其中本文主要显示应用 ADC 和 LCD 资源 UP NetARM2410 S 实验仪器硬件配置如下表 表 2 1UP NetARM2410 S 实验仪器硬件配置 配置名称型号说明 CPUARM920T 结构芯片三星 S3C2410X 工作平率 203MHz FLASHSAMSUNG K9F120864M NAND SDRAMHY57V561620AT H32M 2 64M EtherNet 网卡AX88796两片 10 100M 自适应 LCDLQ080V3DG018 寸 16bitTFT 触摸屏SX 080 W4R FBFM7843 驱动 LEDZLG7290四个共阴极 LED 第二章 基于 ARM 和 QT 的多路信号监测系统硬件设计 6 USB 接口4 个 HOST 1 个 DEVICE由 AT43301 构成 USB HUB UART IrDA2 个 RS232 1 个 RS485 1 个 IrDA 从处理器的 UART2 引出 AD由 S3C2410 芯片出3 个电位器控制输入 AUDIOIIS 总线 UDA1341 芯片44 1KHz 音频 拓展卡插槽168Pin EXPORT总线直接拓展 GPS GORS 拓展板SIMCOM 的 SIM100 E 模块支持双道语音通信 IDE CF 卡插座笔记本硬盘 CF 卡 PCMCIA 和 SD 卡插座PCMCIA 型号为 DWL 650 PS2PC 键盘和鼠标由 ATMEGA8 单片机控制 IC 卡座AT24CXX 系列由 ATMEGA8 单片机控制 DC STEP 电机DC 由 PWM 控制 STEP 由 74HC573 控制 CAN BUS由 MCP2510 和 TJA1050 构成 Double DAMAX504两个 10 位 DAC 端口 调试接口JTAG14 针 20 针 UP NetARM2410 S 试验箱图如下 第二章 基于 ARM 和 QT 的多路信号监测系统硬件设计 7 图 2 3 UP NetARM2410 S 试验箱 图 2 4 UP NetARM2410 S 2 3设计方案 图 2 5 系统结构图 第二章 基于 ARM 和 QT 的多路信号监测系统硬件设计 8 如图 2 5 所示 电流电压信号经过电阻分压简单滤波后送入S3C2410 ADC 模块 S3C2410 接受电阻触摸屏输入 和鼠标输入 并送显示 峴扬斕滾澗 辐滠兴渙藺 2 4 ADC硬件设计 2 4 1 ADC 转换器 A D 转换器是模拟信号源和 CPU 之间联系的接口 它的任务是将连续 变化的模拟信号转换为数字信号 以便计算机和数字系统进行处理 存储 控制和显示 在工业控制和数据采集及许多其他领域中 A D 转换是不可 缺少的 A D 转换器有以下类型 逐位比较型 积分型 计数型 并行比 较型 电压 频率型 主要应根据使用场合的具体要求 按照转换速度 精 度 价格 功能以及接口条件等因素来决定选择何种类型 1 常用的有以 下两种 詩叁撻訥烬忧毀厉鋨骜 双积分型的 A D 转换器 双积分式也称二重积分式 其实质是测量和比较两个积分的时间 一个 是对模拟输入电压积分的时间T0 此时间往往是固定的 另一个是以充电 后的电压为初值 对参考电源Vref 反向积分 积分电容被放电至零所需的 时间 T1 模拟输入电压 Vi 与参考电压 VRef 之比 等于上述两个时间之 比 由于 VRef T0 固定 而放电时间 T1 可以测出 因而可计算出模拟 输入电压的大小 VRef 与 Vi 符号相反 由于 T0 VRef 为已知的固定常 数 因此反向积分时间 T1 与输入模拟电压 Vi 在 T0 时间内的平均值成 正比 输入电压 Vi 愈高 VA 愈大 T1 就愈长 在 T1 开始时刻 控制 逻辑同时打开计数器的控制门开始计数 直到积分器恢复到零电平时 计数 停止 则计数器所计出的数字即正比于输入电压Vi 在 T0 时间内的平均 值 于是完成了一次 A D 转换 由于双积分型 A D 转换是测量输入电压 Vi 在 T0 时间内的平均值 所以对常态干扰 串摸干扰 有很强的抑制作用 尤其对正负波形对称的干扰信号 抑制效果更好 双积分型的A D 转换 器电路简单 抗干扰能力强 精度高 这是突出的优点 但转换速度比较慢 常用的 A D 转换芯片的转换时间为毫秒级 例如12 位的积分型 A D 芯 片 ADCETl2BC 其转换时间为 lms 因此适用于模拟信号变化缓慢 采样 第二章 基于 ARM 和 QT 的多路信号监测系统硬件设计 9 速率要求较低 而对精度要求较高 或现场干扰较严重的场合 例如在数字 电压表中常被采用 则鯤愜韋瘓賈晖园栋泷 逐次逼近型的 A D 转换器 逐次逼近型 也称逐位比较式 的 A D 转换器 主要由逐次逼近寄存 器 SAR D A 转换器 比较器以及时序和控制逻辑等部分组成 它的实质是 逐次把设定的 SAR 寄存器中的数字量经 D A 转换后得到电压 Vc 与待转 换模拟电压 V 进行比较 比较时 先从SAR 的最高位开始 逐次确定各 位的数码应是 1 还是 0 其工作过程如下 转换前 先将SAR 寄存 器各位清零 转换开始时 控制逻辑电路先设定SAR 寄存器的最高位为 1 其余位为 0 此试探值经 D A 转换成电压 Vc 然后将 Vc 与模 拟输入电压 Vx 比较 如果 Vx Vc 说明 SAR 最高位的 1 应予保留 如果 Vx Vc 说明 SAR 该位应予清零 然后再对 SAR 寄存器的次高位置 1 依上述方法进行 D A 转换和比较 如此重复上述过程 直至确定 SAR 寄存器的最低位为止 过程结束后 状态线改变状态 表明已完成一次 转换 最后 逐次逼近寄存器SAR 中的内容就是与输入模拟量V 相对应 的二进制数字量 显然 A D 转换器的位数 N 决定于 SAR 的位数和 D A 的 位数 图 2 4 1 b 表示四位 A D 转换器的逐次逼近过程 转换结果能否准 确逼近模拟信号 主要取决于SAR 和 D A 的位数 位数越多 越能准确 逼近模拟量 但转换所需的时间也越长 逐次逼近式的 A D 转换器的主 要特点是 转换速度较快 在1 100 s 以内 分辨率可以达 18 位 特别适用于工业控制系统 转换时间固定 不随输入信号的变化而变化 抗 干扰能力相对积分型的差 例如 对 模拟输入信号采样过程中 若在采样 时刻有一个干扰脉冲迭加在模拟信号上 则采样时 包括干扰信号在内 都 被采样和转换为数字量 这就会造成较大的误差 所以有必要采取适当的滤 波措施 胀鏝彈奥秘孫戶孪钇賻 本文所用为逐次逼近型的 A D 转换器 2 4 2 A D转换器在扩展板的连接 A D 转换器在扩展板的接法如图2 8 所示 前三路通过电位器接到 3 3v 电源上 第二章 基于 ARM 和 QT 的多路信号监测系统硬件设计 10 图 2 6 ADC 电阻分压 第三章 嵌入式 linux 移植及驱动开发 11 第三章 嵌入式linux移植及驱动开发 3 1 linux主要特征 符合 POSIX 1003 1 标准 POSIX 1003 1 标准定义了一个最小的 Unix 操作系统接口 任何操作 系统只有符合这一标准 才有可能运 行 Unix 程序 考虑到 Unix 具有丰 富的应用程序 当今绝大多数操作系统都把满足POSIX 1003 1 标准作为 实现 目标 Linux 也不例外 它完全支持 POSIX 1003 1 标准 另外 为 了使 Unix System V 和 BSD 上的程序能直接在 Linux 上运行 Linux 还 增加了部分 System V 和 BSD 的系统接口 使 Linux 成为一个完善的 Unix 程序开发系统 鳃躋峽祷紉诵帮废掃減 支持多用户访问和多任务编程 Linux 是一个多用户操作系统 它允许多个用户同时访问系统而不会造 成用户之间的相互干扰 另外 Linux 还支持真正的多用户编程 一个用 户可以创建多个进程 并使各个进程协同工作来完成用户的需求 稟虛嬪赈 维哜妝扩踴粜 采用页式存储管理 页式存储管理使 Linux 能更有效地利用物理存储空间 页面的换入换 出为用户提供了更大的存储空间 支持动态链接 用户程序的执行往往离不开标准库的支持 一般的系统往往采用静态链 接方式 即在装配阶段就已将 用户程序和标准库链接好 这样 当多个进 程运行时 可能会出现库代码在内存中有多个副本而浪费存储 空间的情 况 Linux 支持动态链接方式 当 运行时才进行库链接 如果所需要的库 已被其它进程装入内存 则不必再装入 否则才从硬盘中将库调入 这样 能保证内存中的库程序代码是唯一的 陽簍埡鲑罷規呜旧岿錟 支持多种文件系统 Linux 能支持多种文件系统 目前支持的文件系统有 EXT2 EXT XIAFS ISOFS HPFS MSDOS UMSDOS PROC NFS SYSV MINIX SMB UFS NCP VFAT AFFS Linux 最常用 第三章 嵌入式 linux 移植及驱动开发 12 的文件系统是 EXT2 它的文件名长度可 达 255 字符 并且还有许多特有 的功能 使它比常规的 Unix 文件系统更加安全 沩氣嘮戇苌鑿鑿槠谔應 支持 TCP IP SLIP 和 PPP 在 Linux 中 用户可以使用所有的网 络服务 如网络文件系统 远程 登录等 SLIP 和 PPP 能支持串行线上的 TCP IP 协议的使用 这意味着用 户可用一个高速 Modem 通过电话线连入 Internet 网中 10 钡嵐縣緱虜荣产涛團 蔺 3 2 驱动程序开发 3 2 1 嵌入式linux驱动程序开发方法 Linux 中的驱动设计是嵌入式 Linux 开发中十分重要的部分 它要求 开发者不仅要熟悉 Linux 的内核机制 驱动程序与用户级应用程序的接口 关系 考虑系统中对设备的并发操作等等 而且还要非常熟悉所开发硬件的 工作原理 这对驱动开发者提出了比较高的要求 这个实验主要是给大家进 入驱动设计提供一个简单入门的一个实例 并不需要提供太多与硬件相关的 内容 这部分应该是通过仔细阅读芯片厂家提供的资料来解决 驱动程序的 作用是应用程序与硬件之间的一个中间软件层 驱动程序应该为应用程序展 现硬件的所有功能 不应该强加其他的约束 对于硬件使用的权限和限制应 该由应用程序层控制 但是有时驱动程序的设计是跟所开发的项目相关的 这时就可能在驱动层加入一些与应用相关的设计考虑 主要是因为在驱动层 的效率比应用层高 同时为了项目的需要可能只强化或优化硬件的某个功能 而弱化或关闭其他一些功能 到底需要展现硬件的哪些功能全都由开发者根 据需要而定 驱动程序有时会被多个进程同时使用 这时我们要考虑如何处 理并发的问题 就需要调用一些内核的函数使用互斥量和锁等机制 驱动程 序主要需要考虑下面三个方面 提供尽量多的选项给用户 提高驱动程序的 速度和效率 尽量使驱动程序简单 使之易于维护 2 懨俠劑鈍触乐鹇烬觶騮 3 2 2 ADC在ARM中的驱动开发 一 开发环境 主 机 redhat linux2 4 2 开发板 北京博创兴业科技有限公司开发的UP NetARM2410 S 实验仪器 第三章 嵌入式 linux 移植及驱动开发 13 编译器 arm linux gcc 4 3 2 二 硬件原理分析 图 3 1 所示 S3C2410 内部 ADC 结构 图 3 1 S3C2410 内部 ADC 结构 我们从上面的结构图和数据手册可以知道 该ADC 模块总共有 8 个通 道可以进行模拟信号的输入 分别是AIN0 AIN1 AIN2 AIN3 YM YP XM XP 那么 ADC 是怎么实现模拟信号到数字信号的转换呢 首 先模拟信号从任一通道输入 然后设定寄存器中预分频器的值来确定AD 转换器 频率 最后 ADC 将模拟信号转换为数字信号保存到ADC 数据寄存 器 0 中 ADCDAT0 然后 ADCDAT0 中的数据可以通过中断或查询的方式来访 问 对于 ADC 的各寄存器的操作和注意事项请参阅数据手册 謾饱兗争詣繚 鮐癞别瀘 S3C2410 的 ADC 及触摸屏控制寄存器以下有5 种 1 ADC 控制寄存器 ADCCON 该寄存器 各参数描述见表 3 1 表 3 1 ADC 控制寄存器 参数描述 ENABLE START置 1 启动 ADC 转换 置 0 无操作 第三章 嵌入式 linux 移植及驱动开发 14 RESR START置 1 允许读操作启动 ADC 转换 置 0 禁止读操作启动 ADC 转换 STDBM置 1 将 ADC 置为闲置状态 模式 置 0 将 ADC 置为 正常操作状态 SEL MUX选择需要进行转换的 ADC 信道 PRSCVLADC 转换时钟预分频参数 PRSCENADC 转换时钟使能 ECFLGADC 转换完成标志位 只读 为 1 ADC 转换结束 为 0 ADC 转换进行中 2 ADC 触摸屏控制寄存器 ADCTSC 该寄存器主要是通过触摸屏的各 个控制引脚来决定触摸屏转换状态 使其进行坐标轴转换 或者进入中断 状态 等待触摸屏终端 各参数描述见表3 2 呙铉們欤谦鸪饺竞荡赚 表 3 3 ADC 触摸屏控制寄存器 参数描述 XY PST对 X Y 轴手动测量模式进行选择 AUTO PSTX Y 轴的自动转换模式使能位 PULL UPXP 端的上拉电阻使能位 XP SEN设置 nXPON 输出状态 XM SEN设置 XMON 输出状态 YP SEN设置 nYPON 输出状态 YM SEN设置 YMON 输出状态 保留这一位必须被设置为 0 3 ADC 延时寄存器 ADCDLY 该寄存器是只读的 其中控制位都是标 志位和结果位 各参数描述见表3 3 莹谐龌蕲賞组靄绉嚴减 表 3 3 ADC 延时寄存器 第三章 嵌入式 linux 移植及驱动开发 15 参数描述 DEDLY在普通转换模式 独立 X Y 坐标转换模式 自动坐标转 换模式下 X Y 坐标转换的延时时间 在等待中断模式下 当触摸屏发生触摸中断时 该寄存器 在数 ms 间隔内产生 INT TC 中断 4 ADC 数据寄存器 0 ADCDATA0 该寄存器是只读的 其中控制位都是 标志位和结果位 该寄存器各参数描述见表3 4 麸肃鹏镟轿騍镣缚縟糶 表 3 4 ADC 数据寄存器 0 参数描述 XPDATAX 轴转换资料寄存器 XY PST选择 X Y 轴自动转换模式 AUTO PSTX Y 轴自动转换使能位 UPDOWN选择中断等待模式的类型 为 0 按下产生中断 为 1 释放产生中断 保留保留位 5 ADC 数据寄存器 1 ADCDATA1 该寄存器是只读的 其中控制位都是 标志位和结果位 该寄存器各参数描述见表3 5 納畴鳗吶鄖禎銣腻鰲锬 表 3 5 ADC 数据寄存器 1 参数描述 XPDATAX 轴转换资料寄存器 XY PST选择 X Y 轴自动转换模式 AUTO PSTX Y 轴自动转换使能位 UPDOWN选择中断等待模式的类型 为 0 按下产生中断 为 1 释放产生中断 保留保留位 第三章 嵌入式 linux 移植及驱动开发 16 图 3 2 ADC 接口电路图 上图是 UP NetARM2410 S 上的 ADC 应用实例 开发板通过一个10K 的 电位器 可变电阻 来产生电压模拟信号 然后通过第一个通道 即 AIN0 将 模拟信号输入 ADC 1 8 風撵鲔貓铁频钙蓟纠庙 三 实现 方法 ADC 设备在 Linux 中可以看做是简单的字符设备 也可以当做是一混 杂设备 misc 设备 这里我们 作为 misc 设备来实现 ADC 的驱动 注意 这里我们获取 AD 转换后的数据将采用中断的方式 即当AD 转换完成后产 生 AD 中断 在中断服务程序中来读取ADCDAT0 的第 0 9 位的值 即 AD 转 换后的值 灭嗳骇諗鋅猎輛觏馊藹 1 建立驱动程序文件 s3c2410 adc c 实现驱动的 打开 读 写 和 退出 static int s3c2410 adc open struct inode inode struct file filp 铹鸝饷飾镡閌赀诨癱骝 adc 打开句柄 init MUTEX init waitqueue head adcdev channel 0 adcdev prescale 0 xff 第三章 嵌入式 linux 移植及驱动开发 17 MOD INC USE COUNT DPRINTK adc opened n return 0 static ssize t s3c2410 adc write struct file file const char buffer size t count loff t ppos 攙閿频嵘陣澇諗谴隴泸 int data 用来保存应用程序传来的数 据 if count sizeof data printk the size of input data must be d n sizeof data 应用程序传来的数据和 data 长度不 同 报错趕輾雏纨颗锊讨跃满賺 return 0 static ssize t s3c2410 adc read struct file filp char buffer size t count loff t ppos 夹覡闾辁駁档驀迁锬減 int ret 0 if down interruptible START ADC AIN adcdev channel adcdev prescale 开始转换视絀镘鸸鲚鐘脑钧欖粝 ifdef USE IRQ WAITQUEUE interruptible sleep on 休眠进程 让 CPU 做其他的事情偽澀锟攢鴛擋緬铹鈞錠 endif printk in read channel d n adcdev channel printk ADCDAT0 x n ADCDAT0 while ADCCON ret ADCDAT0 ret 10 位 AD 转换 所以取低十位騅憑钶銘侥张礫阵轸蔼 copy to user buffer char 把得到的值传回应用程序疠骐錾农剎貯狱颢幗騮 up 释放信号量镞锊过润启婭澗骆讕瀘 第三章 嵌入式 linux 移植及驱动开发 18 return sizeof ret static int s3c2410 adc release struct inode inode struct file filp 关闭榿贰轲誊壟该槛鲻垲赛 adc MOD DEC USE COUNT DPRINTK adc closed n return 0 由于编译开发板内核时直接把ad 驱动加入到内核里面 对用户的只是 下面的一个文件结构 在用户程序里只需要用到 open read write release 等内核函数即可 邁茑赚陉宾呗擷鹪讼凑 static struct file operations s3c2410 fops owner THIS MODULE open s3c2410 adc open read s3c2410 adc read write s3c2410 adc write release s3c2410 adc release 2 编写用户应用程序测试 my2410 adc 驱动 建立应用程序 adc test c include s3c2410 adc h define ADC DEV dev adc 0raw static int adc fd 1 static int init ADdevice void 初始化设备 if adc fd open ADC DEV O RDWR 0 第三章 嵌入式 linux 移植及驱动开发 19 printf Error opening s adc device n ADC DEV return 1 static int GetADresult int channel 获取 AD 值 int PRESCALE 0XFF int data ADC WRITE channel PRESCALE write adc fd read adc fd return data int main void int i float d pthread t th com void retval set s3c44b0 AD register and start AD if init ADdevice 0 return 1 Create the threads 创建线程 pthread create printf nPress Enter key exit n while stop 0 第三章 嵌入式 linux 移植及驱动开发 20 for i 0 i 2 i 采样 0 2 路 A D 值 d float GetADresult i 3 3 1024 0 printf a d 8 4f t i d usleep 1 printf r GetADresult 函数的具体过程如下 假如我们的比列因子是0XFF 通 道是 1 路 即 0XO1 那么经过 int data ADC WRITE channel PRESCALE 后我们可以得到数据为 0X0100FF 而通过下一条语句 write adc fd unsigned short x unsigned short y unsigned short pad TS RET typedef struct unsigned int PenStatus TS RET buf MAX TS BUF unsigned int head tail wait queue head t wq spinlock t lock 第三章 嵌入式 linux 移植及驱动开发 24 TS DEV static struct file operations s3c2410 fops owner THIS MODULE open s3c2410 ts open read s3c2410 ts read release s3c2410 ts release 穑釓虚绺滟 鳗絲懷紓泺 poll s3c2410 ts poll init module 函数是模块的入口函数 在函数内部通过 s3c2410 ts init 实现模块的初始化工作 在本设计中设备与系统之间 以中断方式进行数据交换 隶誆荧鉴獫纲鴣攣駘賽 在 s3c2410 ts init 中的另一个重要任务是执行接口函数 s3c2410 ts open 在这个函数中初始化缓冲区的头尾指针 触摸屏状态 变量及触摸屏事件等待队列 浹繢腻叢着駕骠構砀湊 module exit 该函数调用 s3c2410 ts exit 主要任务是撤销驱动程序向内核的登 记以及释放申请的中断资源 鈀燭罚櫝箋礱颼畢韫粝 接口函数 s3c2410 ts read 这个函数实现的任务是将事件队列从设备缓存中读到用户空间的数据缓 存中 实现的过程主要是通过一个循环 只有在事件队列的头 尾指针不重 合时 才能成功的从 tsdev tail 指向的队列尾部读取到一组触摸信息数据 并退出循环 否则调用读取函数的进程就要进入睡眠 惬執缉蘿绅颀阳灣熗鍵 坐标读取函数 s3c2410 get XY 在定时器中断处理程序中 当查询到与相连的EINT5 GPF5 为低电平 时 即表示有有效事件 应该调用s3c2410 get XY 函数采集笔触信息 贞廈给鏌綞牵鎮獵鎦龐 ADS7843 有多种转换时序 时序规定了芯片与设备及CPU 间是如何 配合工作的 设计中采用 16 个时钟周期启动一次转换的坐标转换方式 第三章 嵌入式 linux 移植及驱动开发 25 坐标的读取是通过多次采集取平均值的方法 以X 坐标的读取为例 循 环过程中的每一步都在 8 个时钟周期内完成 数据的处理严格按照时序进 行 Y 坐标的采集与 X 坐标类似 嚌鲭级厨胀鑲铟礦毁蕲 第四章 信号监测应用软件设计 26 第四章 信号监测应用软件设计 4 1 Qt 主要特性 随着嵌入式 L i n u x 应用的不断发展 嵌入式处理器运算能力的不 断增强 越来越多的嵌入式设备开始采用较为复杂的G U I 系统 手持 设备中的 G U I 系统发展得非常迅速 传统的GUI 系统 如 Microwindows 等 由于项目规模较小 功能较为薄弱 缺乏第三方软件开 发的支持等诸多原因 在比较高级的手持或移动终端设备 如 PDA Smart Phone 车载导航系统 中应用较少 Qt Embedded 是著名的 Qt 库开发商 Trolltech 公司开发的面向嵌入式系统的Qt 版本 开发人 员多为 K D E 项目的核心开发人员 许多基于Qt 的 XWindow 程序可以非 常方便地移植到 Qt Embedded 上 与 X11 版本的 Qt 在最大程度上接口兼 容 延续了在 X 上的强大功能 在底层彻底摒弃了 Xlib 仅采用 framebuffer 作为底层图形接口 Qt Embedded 类库完全采用 C 封装 丰富的控件资源和较好的可移植性是Qt Embedded 最为优秀的一方面 使 用 X 下的开发工具 Qt Designer 可以直接开发基于 Qt Embedded 的 UI 用户操作接口 界面 越来越多的第三方软件公司也开始采用 Qt Embedded 开发嵌入式 Linux 下的应用软件 其中非常著名的Qt Palmtop Environment Qtopia 早期是一个第三方的开源项目 并已经成功 应用于多款高档 PDA Trolltech 公司针对 Smart Phone 中的应用需求 于 2004 年 5 月底发布了 Qtopia 的 Phone 版本 1 Qt Embedded 的实现 技术基础分析横向来看 由于发布的版权问题 Qt Embedded 采用两种方 式进行发布 在 GPL 协议下发布的 free 版与专门针对商业应用的 commercial 版本 二者除了发布方式外 在源码上没有任何区别 纵向看来 当前主流的版本为 Qtopia 的 2 x 系列与最新的 3 x 系列 其中 2 x 版本 系列较多地应用于采用 Qtopia 作为高档 PDA 主界面的应用中 3 x 版本 系列则应用于功能相对单一 但需要高级GUI 图形支持的场合 如 Volvo 公司的远程公交信息系统 图4 1 为 Qt Embedded 的实现结构 3 薊镔竖牍熒浹醬籬铃騫 第四章 信号监测应用软件设计 27 图 4 1 Qt Embedded 的实现结构 4 2 Qt 类库及其机制简介 Qt 类库是一个跨平台的面向对象的C 类库 目前主要用于 Linux 下的开发 普通的 UI 编程是极其底层和繁琐的 而 Qt 高度面向对象和模 块化的特征将我们从这种繁琐中解脱了出来 Qt 还提供了免费的版本 这对于非商业的科学项目如我们目前正在设计的 基于 ARM 和 Qt 的多路 信号监测系统 特别适合 同时 Qt 还是跨平台的 这对于要求移植性很 强的项目也是很好的选择 齡践砚语蜗铸转絹攤濼 4 2 1 Qt类库 Qt 类库大致可以分为三个部分 控件 框架和工具 控件 控件部分包括环境控件 主窗口控件 标准对话框 基本的 GUI 控 件 扩展 GUI 控件 GUI 组织控件 以及帮助系统控件 主窗口类为应用程 序提供界面框架 可以在上

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论