(交通信息工程及控制专业论文)基于嵌入式Linux的点菜系统的设计与实现.pdf_第1页
(交通信息工程及控制专业论文)基于嵌入式Linux的点菜系统的设计与实现.pdf_第2页
(交通信息工程及控制专业论文)基于嵌入式Linux的点菜系统的设计与实现.pdf_第3页
(交通信息工程及控制专业论文)基于嵌入式Linux的点菜系统的设计与实现.pdf_第4页
(交通信息工程及控制专业论文)基于嵌入式Linux的点菜系统的设计与实现.pdf_第5页
已阅读5页,还剩58页未读 继续免费阅读

(交通信息工程及控制专业论文)基于嵌入式Linux的点菜系统的设计与实现.pdf.pdf 免费下载

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

文档简介

西南交通大学硕士研究生学位论文第1 页 摘要 电子点菜系统是餐馆实行信息化管理的一个重要组成部分 使用它 顾 客可以进行查询菜单菜价 添加和删除点菜条目 呼叫服务员等操作 营业 者可以方便地管理菜单 准确计算帐单 轻松地统计营业数据等 本文基于华恒的h h a r m 2 4 1 0 s t u d y r 1 开发平台实现了一个简单可用的 电子点菜系统 论文的主要工作包括 1 在华恒原有l i n u x 2 4 平台的基础上移植了性能更为优越的 l i n u x 2 6 1 7 其中的工作包括修改p p c b o o t 的源代码 把网络驱动从 l i n u x 0 2 4 版本移植到l i n u x 2 6 版本 设计实现了小键盘驱动程序 使4 个 按键扩展到1 6 个键值 根文件系统由原来的r a m d i s k 改为网络文件系统 2 设计与实现虚拟l c d 由于h f i a r m 2 4 1 0 s t u d y r 1 开发板没有l c d 而本设计又涉及q t e m b e d d e d 的图形开发 为了便于显示 本文设计并实现 了一套能在p c 机上显示开发板中运行q t e m b e d d e d 的图形结果的程序 本 文称这套程序为虚拟l c d 该程序借用了q v i b 的思路 采用基于套接口网 络编程方式实现 3 完成了q t e m b e d d e d 基于a r m 平台的配置 编译 分析了q t e m b e d d e d 中的s q l 模块 基于m y s q l 的源代码在p c 机上构建了适合本系统的m y s q l 服务器程序 研究怎样通过适用于p c 机的m y s q l 源代码生成运行在a r m 平台的客户端库文件 4 利用m y s q l 设计构建了点菜系统的数据库服务器和系统数据表 使用 q t e m b e d d e d 实现了点菜系统的客户端程序 描述了该点菜系统的使用方法 5 总结了本设计的优缺点 并给出了改进的方案 关键字 嵌入式系统 l i n u x q t e m b e d d e d m y s q l 虚拟l c d 点菜系统 西南交通大学硕士研究生学位论文第1i 页 a b s t r a c t e l e c t r o n i c o r d e r i n gs y s t e m i s a i m p o r t a n tp a r t o ft h er e s t a u r a n t s i n f o r m a t i o nm a n a g e m e n ts y s t e m w i t hi t c u s t o m e r sa r ea b l et oq u e r yt h ep r i c eo f d i s h e si nt h em c u u a d dar e c o r dt ot h eo r d e r e di t c m s d e l e t ear e c o r df r o mt h e o r d e r e di t e m s c a l lt h ew a i t e r sa n ds oo ni nac o n v e n i e n tw a y t h eb o s sc a n m a n a g et h em e n ud a t ac o n v e n i e n t l y c a l c u l a t et h eb i l l i n ga c c u r a t e l ya n dm a k e t h e s t a t i s t i c so f b u s i n e s sd a t ae a s i l y a s i m p l ea n du s a b l ee l e c t r o n i co r d e r i n gs y s t e mi si m p l e m e n t e db a s e do nt h e h u a h e n gc o m p a n y sh h a r m 2 4 1 0 s t u d y r ld e v e l o p i n gp l a t f o r m t h em a i nj o b s o f t h i sp a p e ri n c l u d e 1 an e wo p e r a t i n gs y s t e mv e r s i o no fl i n u x 一2 6 1 7i st r a n s p l a n t e dt ot h e h a r d w a r ep l a t f o 珊i no r d e rt os u b s t i t u t et h eo n b o a r dl i n u x 2 4 n l ep p c b o o t b o o t l o a d e ri sm o d i f i e dt of i tt h en e wo p e r a t i n gs y s t e m n e t w o r kd r i v e ri sa l s o m o d i f i e dt oa d a p tt h ed r i v e rs t r u c t u r ef r o ml i n u x 2 4t ol i n u x 2 6 ak e y b o a r d d r i v e ri sd e s i g n e da n di m p l e m e n t e d i tm a k e s4k e y sb ee x t e n d e dt o1 6k e yv a l u e s n e t w o r kf i l es y s t e mi su s e df o rr o o tf i l es y s t e mi n s t e a do f r a m d i s k 2 av i r t u a ll c di sd e s i g n e da n di m p l e m e n t e d a st h ed e v e l o p m e n tb o a r d d o e sn o th a v es c r e e n b u tm yd e s i g nr e f e r st oq t e m b e d d e dg r a p h i c a l d e v e l o p m e n t i no r d e rt ov i e wt h eq t e m b e d d e dg r a p h i c s av i r t u a ll c dp r o g r a m i s d e v e l o p e d t o d i s p l a y t h ep r o g r a mo fo n b o a r dd e v e l o p m e n tt o o l k i t q t e m b e d d e d0 np cs c r e e n t h ev i r t u a ll c di su s i n gq v f of o rr e f e r e n c ea n d i m p l e m e n t e db a s e do nn e t w o r ks o c k e tp r o g r a m m i n g 3 q t e m b e d d e di sc o n f i g u r e da n dc o m p i l e df o ra r m a r c h i t e c t u r e t h es q l m o d u l ei nq t e m b e d d a di sa n a l 姗 m y s q ld a t a b a s es e l w e rp r o g r a mi sb u i l tf o r p cb a s e do nt h es o u r c ec o d e s t u d yh o wt og e n e r a t et h em y s q lc l i e n ts h a r e d l i b r a r yf i l er u n n i n go na r mt h r o u g ht h es o u r c ec o d ea p p l i e df o rp c 4 t h ed a t a b a s es e r v e ra n dd a t at a b l e so ft h eo r d e r i n gs y s t e ma r ed e s i g n e d u t i l i z i n gt h em y s q l t h ec l i e n tp r o g r a mo ft h es y s t e mi si m p l e m e n t e du s i n g q t e m b e d d d d e s c r i b eh o wt ou s et h i so r d e r i n gs y s t e m 5 s u mu pt h ea d v a n t a g e sa n dd i s a d v a n t a g e so ft h i sd e s i g n g i v es o m e 西南交通大学硕士研究生学位论文第1 ii 页 i m p r o v e m e n ts o l u t i o nf o rt h ed i s a d v a n t a g e s k e y w o r d s e m b e d d e ds y s t e m l i n u x q t e m b e d d c d rm y s q l v i r t u a ll c d o r d e r i n gs y s t e m 西南交通大学硕士研究生学位论文第1 页 1 1 引言 第1 章绪论 在当今世界 以计算机技术 芯片技术和软件技术为核心的数字化技术 取得了迅速发展 不仅广泛渗透到社会 经济 军事 交通和通信等相关行 业 而且深入到家电 娱乐 艺术 社会文化等领域 现代控制技术 多媒 体技术与i n t e r n e t 的应用与普及 促使消费电子 计算机 通信 3 c 一体 化趋势步伐加快 嵌入式技术一度成为一个研究热点 嵌入式系统是以应用为中心 软硬件可裁剪 适应应用系统对功能 可 靠性 成本 体积 功耗等综合性严格要求的专用计算机系统 嵌入式系统 主要由嵌入式处理器 相关支撑硬件 嵌入式操作系统及应用软件等组成 它是集软硬件于一体的可独立工作的 器件 目前 嵌入式揉作系统的发展经历了三个阶段 第一阶段其功能简单 以专用计算机或单片机为核心的可编程控制器的形式出现 第二阶段以嵌入 式c p u 和嵌入式操作系统的形式出现 现在已经发展到了芯片技术和i n t c r n e t 技术紧密结合的第三阶段 近来 各类嵌入式操作系统迅速发展 大部分的 嵌入式操作系统都把网络功能当作可选的内核模块 仅需在编译内核的时候 把相关的选项选上就可以实现网络功能 同时 新的处理器层出不穷 不仅 功能改进许多 成本和功耗也降低了不少 这些意味着嵌入式操作系统将进入一个快速发展时期 在不久的将来 嵌入式系统的应用将越来越多样化 为越来越多领域的用户提供最佳的选择 方案 当前是餐饮业由传统操作方式向信息化管理模式转换的时期 对信息 化产品的需求量很大 根据其对产品要求小型化 低功耗 专用性等特点 可以断言嵌入式技术将在餐馆信息化的过程中发挥重要作用 1 2 电子点菜系统概述 手持式点菜系统代表着当今餐饮业解决方案中最尖端的领先科技 它集 西南交通大学硕士研究生学位论文第2 页 无线网络通信技术与手持移动电脑终端技术于一身 此高端技术应用在餐饮 行业中 即使在美国也是2 0 0 1 年才在洛杉矶的一家高档餐厅中诞生 国内于 2 0 0 2 年3 月份方有一例高档的餐馆在上海露面 开中国餐饮管理真正无线数 字化之先河 在餐饮业轰动一时 自此 手持式点菜系统市场上豪杰并起 全面促进了餐饮行业信息化管理的普及和发展 目前 国内已经有不少公司开发出电子点菜系统 例如上海工理电子有 限公司的点菜通 餐饮通等 北京辰森计算机系统有限公司的手持点菜宝等 有些大型的餐饮企业已经采用了这两个公司的产品 例如 花雨大酒店 上 海美林阁 渝香人家 东方大酒楼等采用了上海工理电子有限公司的点菜通 或餐饮通 向阳渔港集团 中国全聚德集团 四川文杏大酒楼则采用了北京 辰森计算机系统有限公司的手持点菜系统 但是由于成本等原因使用电子点 菜系统的餐馆还比较少 市场需求很大 随着技术的进步及餐饮业的激烈竞 争 电子点菜系统将会越来越普遍 并越做越好 市场上出现的点菜系统都是作为餐馆信息化管理系统的一部分出现的 它们除了实现基本的点菜功能外 为了便于客户及管理者的使用 还附加了 许多其他功能 例如 查询当前餐馆的资源使用情况 记录营业历史 当前 工作状态等 要实现功能完善的点菜系统 往往需要集中全公司的人力物力 个人很难完成一个功能完善的点菜系统 由于人力物力财力等资源的限制 本文设计并实现了一个功能简单的点 菜系统 基于该系统可以容易过渡到实用的点菜系统 在系统的实现过程中 涉及到许多技术 其中主要有嵌入式技术 数据库技术 用户图形界面编程 技术等 点菜系统一般都涉及很多数据 两且还要对数据进行各种处理 因而绝 大部分电子点菜系统都用数据库管理系统来管理数据 数据库管理系统一般 依赖于某种操作系统 因此 也要选择一个合适的操作系统 另外 为了方 便用户的使用 还要设计一个人性化的图形界面 电予点菜系统中 管理数 据的地方与使用数据的地方往往不在同一个站点上 需要用到计算机网络将 二者连接起来 在本文设计的系统中使用了m y s q l 来管理数据 操作系统选用了l i n u x 用户图形界面引入了q t e m b e d d e d 在硬件上 选择了低功耗 高性能的a r m 处理器 电子点菜系统采用的系统模型如图卜l 所示 从图中可以看到 整个系 统由客户端 计算机网络和服务器组成 客户端采用嵌入式技术实现 是本 西南交通大学硕士研究生学位论文第3 页 系统开发的重点和难点 它的服务对象主要是顾客 顾客可以用它点菜 图1 1 电子点菜系统模型 查询和修改已点菜项 服务器充当数据管理员的角色 系统中的所有数据都 是保存在其上的 它通过数据库管理系统轻松完成数据管理的任务 服务器 主要面向餐馆营业员 营业员可以通过服务器向系统添加餐馆的新菜 修改 菜价 查询历史记录等 客户端与服务器通过网络连接起来 餐馆引进电子点菜系统 具有重大的意义 首先 提高运营效率与降低 运营成本 使用电子点菜系统可以加快点菜速度 减少人力资源的投入 避 免跑 冒 漏 其次 提升餐馆品牌与形象 电子点菜系统是一个高科技产 品 它代替传统的纸笔式点菜方式给人一种高贵的感觉 最后 营造一个安 静 舒服的就餐环境 传统的点菜方式在某些环节中出现大声喧哇的场面 电子点菜系统则可以避免这类情况的出现 如今开源的嵌入式l i n u x 操作系统己经发展得非常成熟 其性能并不亚 于很多商业操作系统 而且 它支持的上层软件也非常多 数据库方面的有 m y s q l s q l i t e 等 用户图形系统有q t e m b e d d e d m i n i g u l 和m i c r o w i n d o w s 等 因此 构造一个基于嵌入式l i n u x 的点菜系统在技术上来说已经不是很 困难的事 1 3 论文的主要工作 本文是在华恒提供的h h a r m 2 4 1 0 s t u d y r 1 开发板及其软件系统的基础 西南交通大学硕士研究生学位论文第4 页 上完成的 本文的主要工作包括 第一 对开发板上原有系统进行改造 原开发板的操作系统是l i n u x 2 4 其性能 功耗等均比不上l i n u x 2 6 进行l i n u x 2 6 的移植可以提高系统性 能 本文移植的版本是2 6 1 7 移植过程中所做的工作有 b o o t l o a d e r 的修 改 网卡驱动程序移植 键盘驱动程序的实现 n f s 根文件系统的制作等 第二 设计实现虚拟l c d 由于原开发板并没有配置l c d 而本设计又 涉及q t e m b e d d e d 的图形开发 因此利用q v f b 设计并实现一个虚拟l c d 使得在p c 机上可以观察开发板中的q t e m b e d d e d 的运行效果 第三 构建点菜系统所用到的支撑软件 q t e m b e d d e d 是系统用到的图形 软件 本文研究了其配置 编程以及与s q l 的结合 并编译出在a r m 平台 运行的代码 本系统采用m y s q l 数据库管理系统 本文从m y s q l 的源代码 出发 构建了m y s q l 服务器端x 8 6 版的程序 创建了基于a r m 平台的 m y s q l 客户端库文件 由于m y s q l 没有关于支持a r m 平台的描述 很难 通过配置脚本来生成自动编译过程所需的文件 本文参考了基于x 8 6 平台的 编译过程用命令行逐个编译了a r m 平台的m y s q l 客户端的目标文件 第四 实现了点菜系统的服务器与客户端程序 点菜系统采用c s 的网 络通信模式 在服务器端的任务是建立m y s q l 数据库及设计数据表 客户 端程序由q t e m b e d d e d 结合s q l 实现 主要是考虑提供给用户什么样的接1 2 1 以便实现对数据的查询 插入 删除等功能 第五 总结了论文的成果 指出本设计中的一些不足之处并提出了若干 解决方案 图1 2 描述了点菜系统的分层组成以及本文在每一层所做的工作 图中 每一个黑实线框代表一个层次 实线框由一条虚线分成两部分 上部分代表 这个层次的名称 下半部分描述了该层所需要做的工作 西南交通大学硕士研究生学位论文第5 页 a r m 开发板 图1 2 系统分层及各层的工作 西南交通大学硕士研究生学位论文第8 页 第2 章系统平台分析 h h a r m 2 4 1 0 一s t u d y r 1 的硬件由核心板和底板组成 核心板上集成了三星 s 3 c 2 4 1 0 处理器 3 2 ms d r a m 和8 mf l a s h 底板提供了一个四线r s 2 3 2 串口 一个u s b h o s t 接口 l o 吖l o o m 自适应以太网接口 t f t l c d 接口 触摸羼接 口 系统具有体积小 耗电低 处理能力强等特点 能够装载和运行嵌入式 l i n u x 操作系统 2 1s 3 c 2 4 1 0 简述 3 c 2 4 1 0 处理器是s a m s u n g 公司基于a r m 公司的a r m 9 2 0 t 处理器核 采用 0 1 8 u m 制造工艺实现的3 2 位微控制器 该处理器拥有 独立的1 6 k 8 指令 c a c h e 和1 6 k b 数据c a c h e 姗u 支持t f t 的l c d 控制器 n a n d 闪存控制器 3 路u a r t 4 路d 凇 4 路带p w m 的t i m e r i o 口 r t c 8 路1 0 位a d c t o u c hs c r e e n 接口 i i c b u s 接口 i i s b u s 接口 2 个u s b 主机 1 个u s b 设备 s d 主规和m m c 接口 2 路s p i 3 c 2 4 1 0 处理器最高可运行在2 0 3 m h z 3 c 2 4 1 0 属于a r m 类处理器 采用该类处理器进行开发具有以下优势 处理速度快a r m 处理器属于精简指令结构 且其内部有多级流水线 时钟频率高 如 3 c 2 4 1 0 就有5 级流水线 主频达2 0 3 m h z 超低功耗a r m 处理器的功耗在同档次的嵌入式处理器中是比较低 的 根本不用考虑散热闯题 是手持式设备的理想选择 成本低a r m 处理器的价格不高 且处理器里一般都集成了许多其他外 围设备的控制器 为用户节省了元器件与设计成本 应用广泛目前 各个嵌入式应用领域都出现了a r m 的踪影 从路由 器到手机 从工控机到m p 4 无不显示a r m 的超强吸引力 具有丰富的软件资源目前几乎所有的嵌入式操作系统在a r m 处理 器上都有成熟的应用 其中 lc o s i i 和l i n u x 是两种应用广泛的免费操 作系统 s 3 c 2 4 1 0 的编程模型及指令集除了扩展 些设备控制器外与a r m 9 2 0 t 都 是相同的 a r m 处理器共有7 种运行模式 各个模式描述如表2 1 所示 西南交通大学硕士研究生学位论文第7 页 表2 1a 刚处理器的7 中运舒模式 处理器模式描述 用户模式 u s r 正常程序的执行模式 快速中断模式 f i q 用于高速数据传输和通道处理 外部中断模式 i r q 用于通常的中断处理 特权模式 s v c 供操作系统使用的一种保护模式 数据访问终止模式用于虚拟存储及存储保护 a b t 未定义指令终止模式用于支持通过软件访问硬件的协处 u n d 理器 系统模式 s y s 用于运行特权级的操作系统任务 除了用户模式之外的其他6 种处理器模式称为特权模式 在特权模式下 程序可以访问所有系统资源 也可以任意地进行处理器模式切换 在特权模 式中 除了系统模式外的其他5 种模式又叫做异常模式 应用程序大多运行 在用户模式下 这时不能直接进行处理器模式的切换 但是可以产生异常 在异常处理过程中进行处理器模式的切换 这种体系结构可以使操作系统控 制整个系统的资源 当应用程序发生异常中断时 处理器进入相应的异常模式 每一种异常 模式都有一组寄存器供相应的异常处理程序使用 这样就可以保证在进入异 常模式时用户模式下的寄存器不被破坏 a r m 处理器共有3 7 个寄存器 这些都是3 2 位寄存器 其中包括 3 1 个通用寄存器 包括程序计数器 p c 在内 6 个状态寄存器 目前 状态寄存器只使用了其中1 2 位 a r m 处理器共有7 种不同的处理器模式 每种模式有 组相应的寄存器 组 任意时刻 即任意的处理器模式下 可见的寄存器包括1 5 个通用寄存器 c r o r 1 4 一个或两个状态寄存器及程序计数器 p c 在所有的寄存器中 有些是各模式共用的同一个物理寄存器 有一些寄存器是各模式自己拥有的 独立的物理寄存器 表2 2 列出了各个处理器模式下可见的寄存器情况 表2 2 中的寄存器可分为2 大类 通用寄存器与状态寄存器 通用寄存 器又可分为3 类 西南交通大学硕士研究生学位论文第8 页 表2 2 各处理器模式下的寄存器 u s r s y s s v c a b t u n d t r q f i q r or or o r or o r or o r 1 r i r i r lr 1r 1 r i r 2r 2r 2r 2r 2r 2r 2 r 3r 3r 3 r 3r 3 r 3r 3 r 4r 4r 4 r 4 r 4r 4r 4 r 5r 5r 5 r 5 r 5r 5r 5 r 6 r 6 r 6 r 6r 6r 6 r 6 r 7 r 7r 7r 7r 7r 7 r 7 r 8r 8r 8r 8r 8r 8 r 8 一f i q r 9r 9r 9r 9r 9r 9 r 9 一f i q r 1 0 r 1 0 r i o r 1 0r i or 1 0 r i o f i q r 1 1 r l lr l lr 1 1r l lr 1 l r 1 1 一f i q r 1 2r 1 2r 1 2r 1 2r 1 2r 1 2 r 1 n f i q r 1 3r 1 3r 1 3s v cr 1 3 a b tr 1 3u n d r 1 3 一i r qr 1 3 一f i q r 1 4r 1 4r 1 4s v cr 1 4a b tr 1 4u n d r 1 4 一i r qr 1 4 一f i q p c p cp cp cp cp cp c c p s r c p s r c p s r c p s r c p s r c p s rc p s r s p s rs v cs p s ra b ts p s ru n ds p s ri r q s p s r f i q 未备份寄存器 包括r o r 7 每一个未备份寄存器在所有的处理器模式下 指的都是同一个物理寄存器 备份寄存器 包括r 8 r 1 4 其中r 8 r 1 2 除了快速中断模式 f i q 有独立 的寄存器外 其他处理器模式均共用同一组物理寄存器 r 1 3 和r 1 4 在用 户模式与系统模式中用同一组物理寄存器 而在各个异常模式下有各自 独立的物理寄存器 程序计数器r 1 5 又被记作p c 状态寄存器包括c p s r 当前程序状态寄存器 与s p s r 备份程序状态寄存器 a r m 这样的寄存器设计方式使得程序在切换模式的时候不用保存及恢复 现场 显得快捷 方便 为了可以降低存储成本 a r m 处理器设计了t h u m b 指令集 与之对应的是 西南交通大学硕士研究生学位论文第9 页 跗指令集 这两种指令集分别对应了 蹦处理器的两种状态 t h u m b 状态和 a 麟状态 a 髓指令集中的指令占3 2 位 其执行效率很高 而t h u m b 指令集 中指令长度为1 5 位 是a 删指令集的子集 使用t h u m b 指令可以减小程序长 度 节省存储空间 2 2 外围设备 在本文所述系统韵开发过程中 需要接触到的外设主要是网络接口 串 口和键盘 h h a r m 2 4 1 0 s t u d y r l 通过外接一块d m 9 0 0 0 以太网m a c 芯片扩展了 一个1 0 m 1 0 0 m 自适应的以太网接口 占用板上资源n g c s l e i n t 0 d m 9 0 0 0 是d a v i c o m 公司生产的快速以太同控制器 合成了m a c p h y m m u 该芯片具有标准1 0 m 1 0 0 m 自适应功能 1 6 k b 大容量f i f o 4 路多功能 g p i o 掉皂处理 全双工等特点 物理层支持以太网协议 由于数据有时是 以突发的形式收到的 因此 d m 9 0 0 0 还集成了接收缓冲区 以便在收到数 据的时候能把数据放到这个缓冲区中 然后由数据链路层直接从该缓冲区取 走数据 链路层通常包括操作系统中的设备驱动程序和计算机中对应的网络 接口卡 它们一起处理与电缆的物理接口细节数据 它的缓冲区可以用来暂 时存储要发送或接收的帧 s 3 c 2 4 1 0 的u a r t 提供了3 路独立的异步串行i o 端口 每一路均可基 于中断或者d m a 模式进行操作 u a r t 在系统时钟的驱动下其比特率可以 达到2 3 0 4 kb p s 每一路u a r t 包括两个1 6 字节的f i f o 一个用于接收另 一个用于发送 h h a r m 2 4 t o s t u d y r l 仅实现了一路串口 串口在系统的开 发过程中作用非常重要 由于没有调试器以及调试软件 调试以及控制系统 行为的任务就由串口来完成 在系统移植及驱动编写阶段 通过向串口打印 调试信息 开发人员可以了解系统的运行状态 根据这些信息提出解决问题 的方案 在应用程序开发的时候 串口不仅是调试手段 还是控制系统行为 的手段 此时 串口充当着 显示器 与 键盘 的角色 宿主机通过串口 向开发板键入命令 而开发板通过串口向宿主机发送命令的运行结果 h h a r m 2 4 1 0 一s t u d y r 1 利用g p i o 口 提侠了4 个按键 每一个按键占 用一路外部中断 当有键按下时产生中断信号 中断服务程序判断键值 在 该系统的成品中 几乎所有的操作都是通过这四个按键完成的 很明显 4 西南交通大学硕士研究生学位论文第1 0 页 个按键肯定不能满足系统的操作需求 因此 需要对键值进行扩展 本文中 由2 次按键确定一个键值 这样 4 个按键就有1 6 种组合 有1 6 个键值 可以满足系统的需求 关于键盘更详细的介绍将在下一章介绍 2 3开发环境 绝大多数的l i n u x 软件开发都是以n a t i v e 方式进行的 即本机开发 调 试 本机运行的方式 由于嵌入式系统一般资源都比较紧张 不能在本机 e p 开发板 运行开发工具 因此 嵌入式系统的开发采用一种叫做交叉编译调试 的方式 为了进行交叉编译与调试 需要在宿主机 运行编译与调试工具的机 器 上构建一些工具与搭建合适的环境 比如安装交叉编译工具链 建立t f t p 服务器 构建网络文件系统n f s 等 2 3 1 交叉编译工具链 交叉编译工具链的目的是为了在一个平台体系结构下 t l c t r l a l t d e l i s b i n s w a p o f f a d e v n u l l2 1 麸第一行可以看到 系统初始化会执行r c s 脚本文件 可以把一些配置或者 系统服务的命令编辑到这个文件中 让系统启动时自动执行之 西南交通大学硕士研究生学位论文第2 1 页 3 2 重要驱动的设计与实现 本文涉及到两个驱动程序 网络芯片驱动程序以及小键盘驱动程序 网 络驱动程序基于华恒的2 4 版稍加改动而来 键盘驱动程序根据q t e m b c d c d d 的要求重新编写 3 2 1 网络驱动程序的修改 鉴于l i n u x 2 6 的网络驱动程序与2 4 的只是稍有不同 在移植的时候宜 以2 6 中已有的驱动程序作为样板进行 本文采用的是源代码树中的 d r i v c r s n e t n i 5 0 1 0 c 文件作为蓝本进行版本之间的移植 这两个版本的程序在 大致结构上基本相同 例如设备初始化 发送 接收等 这给移植工作带来 了便利 不同的只是 些细节问题 比如物理地址 p a 到虚拟地址 嘲的映射 网络芯片初始化时某些寄存器的状态 设备结构空间的分配 由多个网络设 备组成链表的生成等 在本例的网络驱动中 涉及到虚实地址映射的寄存嚣有b w s c o n b u s w i d t h w a i ts t a t u sc o n t r 0 1 通用端口f g p f c o n 外部中断控制寄存器 0 e x t i n t 0 和中断屏蔽寄存器 i n t m s k 它们的物理地址依次是 0 x 4 8 0 0 0 0 0 0 0 x 5 6 0 0 0 0 5 0 o 5 6 0 0 0 0 8 8 和0 x 4 a 0 0 0 0 0 8 l i n u x 2 4 中由物理 地址到虚拟地址的映射规则为 v a p a l o x a 0 0 0 0 0 0 0 即虚拟地址等于物理地 址按位或上0 x a 0 0 0 0 0 0 0 上述几个寄存器在l i n u x 2 4 中的虚拟地址分别是 0 x c s 0 0 0 0 0 0 0 x f 6 0 0 0 0 5 0 0 x f 6 0 0 0 0 8 8 及0 x c a 0 0 0 0 0 8 2 6 版的映射方法没 有制定一致的运算公式 它根据各个模块的物理基地址映射成不同的虚拟基 地址 例如 物理地址0 x 4 8 0 0 0 0 0 0 映射到了0 x f 0 1 0 0 0 0 0 0 x 5 6 0 0 0 0 0 0 映射 到o x f o c 0 0 0 0 0 0 x 4 a 0 0 0 0 0 0 映射到0 x f 0 0 0 0 0 0 0 因此上述寄存器在2 6 中的 虚拟地址分别是o x f o f 0 0 0 0 0 0 x f o e 0 0 0 5 0 o x f o e 0 0 0 8 8 和o x f 0 0 0 0 0 0 0 在驱 动源代码上 用换算好的2 6 的虚拟地址替代原来用到寄存器的地方即可 在网络驱动移植过程中 曾经遇到过一绘网络指定皿地址就会死机的现 象 后来通过多次实验发现 造成这种现象的原因是网络芯片启动的时候其 对应的中断模式为快速中断 f i q 方式 正确的中断方式应该是外部中断方式 i r q 因此需要对中断模式寄存器 i n t n i o d 进行设置 中断模式寄存器物理 地址是0 x 4 a 0 0 0 0 0 4 共有3 2 位 每位控制一个中断源的中断模式 o 为i r q 西南交通大学硕士研究生学位论文第2 2 页 方式 l 为f i q 方式 网络芯片对应的中断是e i n t o 即第零位 因此设置 i n t m o d 的语句是 v o l a t i l eu n s i g n e dl o n g o x f o o o o 0 0 4 0 x 髓f f f f 放在d m 9 0 0 0 x p r o b e 函数中 除了与具体网络芯片实现有关的代码需要改动外 两个版本问的网络中 间层实现也有所不同 比如 l i n u x 2 4 中 抽象网络设备链表是静态定义的 链表长度一定 每种类型的网络设备都规定了数目 例如以太网是8 个 f d d i 也是8 个 该链表定义的时候每个节点除了名字域 链表域和初始化函数域 外其余都是0 这些为o 的域待具体设备驱动初始化的时候才会填充 l i n u x 2 6 则是由网络设备驱动调用中间层的函数r e g i s t e rn e t d e v i c e 往设备链 表添加节点 有多少设备则链表有多少节点 不像2 4 那么死板 浪费 3 2 2 键盘驱动程序的设计与实现 华恒开发板带有4 个小按键 每个按键占用一路中断 这与一般的矩阵 键盘有所不同 由于只有4 个键 每键占一路中断也是可行的 但是 4 个 键对于实际应用来说显得太少了 所以需要想办法扩展 一般标准的应用程 序对键盘的访问是按照某一通用的方法进行的 比如打开某个固定的文件 设置标准的键盘模式等 q t e m b e d d e d 就是按这种方法进行的 因此键盘驱 动还要符合这些要求 q t e m b e d d e d 访闯l i n u x 操作系统的键盘是通过访问设备节点 d e v v c 0 实现的 该设备节点主设备号为4 次设备号为0 属于字符型设备 在创建 根文件系统时需要创建这个文件节点 命令为 m k n o d0c40 该文件属于t t y 类设备 内核已经对它进行了注册 并且还包含了操作接口 如o p e n r e a d i o c t l 之类的操作 开发人员通过数据结构s t r u c ti n p u td c v 及 相关操作函数把硬件设备与t t y 文件关联在一起 使用i n p u t a l l o c a t ed e v i c e 函数获得一个输入设备的指针后 需要对其一 些主要成员初始化 首先是设备i d 它有4 个成员 分别是b u s t y p e v e n d o r p r o d u c t 和v e r s i o n 在本例中它们分别被设置为 b u s1 2 c o x 0 0 0 1 o x 0 0 0 1 和o x o l 0 0 接着是e v b i t 它表示设备发生的事件类型 设置为e vk e y 和 e v r e p 意思是键盘事件和可重复的 最后是与键码有关的几个域 包括 西南交通大学硕士研究生学位论文第 页 k e y c o d c k e y c o d e s i z e k e y c o d e m a x 和k e y b i t 填写了i n p u td e v 结构后 通 过i n p u tr e g i s t e r d e v i c e 函数向内核的输入模块注册设备 上述操作都是在设 备驱动的i n i t 函数完成的 键盘有按键时是通过中断服务程序传递键值的 在驱动中需要编写和注 册中断服务程序 4 个按键各占一路中断 中断号分别是i i l qe 矾t 2 m q 珉q 它们共用一个中断服务程序 内核 e i n t 3i r qe i n t 4 e i n t 5 使用r e q u e s ti r q 函数注册特定中断号的中断服务程序 当有键被按下时中断 服务程序被调用 程序的i t q 参数用于辨别是哪个键产生了中断 键值的扩展是在中断服务程序中实现的 扩展的原理是由2 次按键决定 一个键值 4 个键就有4 4 共1 6 个键值 表3 1 描述了4 个键两两组合得 到的扩展键值表 表3 1 扩展键值表 k lk 2k 3 k lk e yok e ylk e y2k e y3 k 2k e y4k e y5k e y6k e y7 k 3k e y8k e y9k e yu p i 旺y d o w n k 4k e ye s c k e y s p a c ek e yt a bk e y d e l e t e 表中第一列表示第一次按下的键 第一行表示第二次按下的键 行列相交的 单元格表示两次按键得到的键值 例如第一次按k 3 第二次按k 1 将得到数 字8 的键值 在程序上 键值按照上表韵j 顷序存储在一个数组中 两次按键 的序号保存在两个变量中 通过这两个变量计算出键值在数组中的索引 获 得键值后 使用i n p u t r e p o r tk e y 函数把它送到竹模块 般按键在使用过程中都会有抖动的现象 即一次按键可能会产生多个 脉冲电平 引起多次中断 程序中必须处理这中情况 本文采用延时法来防 止抖动现象的发生 具体做法是 定义一个定时器s t r u c tt i m e rl i s t 和一个标 志是否超时的变量w h e t h e r 在定时器的超时函数中把w h e t h e r 设置为l 表 示已经超时 在中断服务函数中一开始就要检测w h e t h e r 值 如果不是1 那 么表示本次中断是无效的 认为这是抖动引起的 不做任何工作直接返回 如果是l 马上把它置为0 并更新定时器的下次超时时间 接下来才做正常 的中断处理工作 判断按键 传递键值 这个方法经实践证明能有效她防止 西南交通大学硕士研究生学位论文第2 4 页 抖动 而且如果定时器时间间隔设置得合适也不影响响应速度 本文把定时 间隔设为1 秒 驱动程序中还需要考摩驱动卸载的时候需要做的一些工作 一般由 m o d u l ee x i t 注册卸载时调用的函数 这个键盘驱动的卸载函数需要完成的工 作有 注销内核中的键盘输入设备 从定时器链表中删除本驱动程序定义的 定时器 释放4 个按键对应的中断号的服务程序 完成了驱动代码上的设计后 还要修改d r i v e r s i n p u t k e y b o a r d 目录下的 k e o n f i g 和m a k e f i l e 文件才能在配置内核的时候看到自己添加的驱动 才能 在编译内核的时候把键盘驱动编译 链接到内核映像中去 修改方法如下 在k c o n f i g 文件中的合适位置添加如下内容 c o n f i gk e y b o a r d s 3 c 2 4 1 0 t r i s t a t e s 3 c 2 4 1 0k e y b o a r d d e p e n d so i la r c h 3 c 2 4 1 0 h e l p s a yyh e r ei fy o ua r er u n n i n gl i n u xo n 哪b c h 3 c 2 4 1 0a n dh a v eak e y b o a r d a t t a c h e d t oc o m p i l et h i sd r i v e ra sam o d u l e c h o o s e1 1h e r e t h e m o d u l e 1 1 1h ec a l l e ds 3 c k b d 这样内核配置菜单里就会出现s 3 c 2 4 1 0k e y b o a r d 选项 在m a k e f i l e 中最后一 行加入 o b j s c o n f i g k e y b o a r ds 3 c 2 4 1 0 s 3 c k b d o 修改后配置内核时选上s 3 c 2 4 1 0k e y b o a r d 就会把s 3 c k b d c 编译进内核中 3 3 l c d 驱动及虚拟l o d 的设计与实现 本系统所用的图形系统q t e m b e d d e d 访问图形设备是通过设备文件 d e w f b 进行的 这是l c d 的设备文件 该文件的操作是在l c d 驱动程序中 实现的 l c d 驱动的主要工作是 首先是初始化l c d 控制器 分配显示缓 冲区 第二 编写r o 结构体中的成员函数 最后实现文件操作结构体 ops f i l e 中的主要函数 operations 华恒开发套件中c p u 虽然带有l c d 控制器 但是并没有l c d 显示屏 西南交通大学硕士研究生学位论文第2 5 页 要开发q t e m b e d d e d 图形程序还得另想他法 在p c 机上 q t e m b e d d e d 有 t r o l l t e c h 公司自己开发的虚拟帧缓存q v f b q t v i r t u a l f r a m e b u f f e r 用于显示 与调试q t e m b e d d e d 程序 本文借用了q v f b 以几个小程序作为辅助 实 现了在无l c d 显示屏的开发板上运行q t e m b e d d e d 程序 在p c 机上观察其 运行图像的效果 q t e m b e d d e d 有多个配置选项 其中有一个选项决定其底层图形引擎的工 作方式 这个选项就是 q v f b 加上该选项则q t e m b e d d e d 把图形数据写到由 q v f b 开辟的共享内存里 由q w b 来显示 如果不加 那么q t e m b e d d e d 就把数据写到f r a m e b u f f e r 里 由l c d 来显示 在使用q v f b 显示 q t e m b e d d e d 图形时 需要加上 q v f b 选项 q t e m b e d d e d 被配置成q v f b 方式 后 对底层设备驱动的访问都交给了q v f b 程序 首先 帧缓存由q v f b 申请

温馨提示

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

评论

0/150

提交评论