(微电子学与固体电子学专业论文)用于智能宠物的控制软件设计与实现.pdf_第1页
(微电子学与固体电子学专业论文)用于智能宠物的控制软件设计与实现.pdf_第2页
(微电子学与固体电子学专业论文)用于智能宠物的控制软件设计与实现.pdf_第3页
(微电子学与固体电子学专业论文)用于智能宠物的控制软件设计与实现.pdf_第4页
(微电子学与固体电子学专业论文)用于智能宠物的控制软件设计与实现.pdf_第5页
已阅读5页,还剩51页未读 继续免费阅读

(微电子学与固体电子学专业论文)用于智能宠物的控制软件设计与实现.pdf.pdf 免费下载

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

文档简介

摘要 摘要 智能宠物是机器人技术的一个分支,智能宠物能够模拟真实宠物的习惯、声 音和动作。当今的智能宠物设计基于嵌入式软硬件技术,所以智能宠物设计技术 的每一个进步都代表着嵌入式软硬件技术新的发展。智能宠物的设计水平伴随着 嵌入式技术,尤其是嵌入式软件技术,产生了长足的进步。嵌入式软件中新的框 架和结构的产生,都使得智能宠物设计技术迈向新的里程碑。智能宠物的市场前 景广阔,在消费类电子市场中有着很强的竞争力。 嵌入式系统现在被广泛应用到各个领域,基于嵌入式系统技术的产品在市场 上表现出强劲的发展势头和竞争能力。嵌入式软件系统是目前系统集成领域的研 究和应用的热点。嵌入式软件技术的长足发展帮助嵌入式系统融入到工程控制、 消费类电子等各个领域,并在很大程度上简化了人们的工作,节省了用户宝贵的 时间和资源。因此,设计一款嵌入式的智能宠物的软件就有着理论和实际的意义。 本论文所设计的用于控制智能宠物的软件基于嵌入式的软件技术,能够模拟 真实宠物对于眼前物体变化所产生的反应。当模拟宠物视觉系统的摄像头前的物 体发生移动时,模拟宠物头部运动的步进马达会带动摄像头进行相应移动,产生 “宠物”跟踪物体的效果。本论文实现的是软件控制部分,即智能宠物的软件核 心。 本论文完成的主要工作: 一、研究了嵌入式系统的构成、嵌入式软件的编写、嵌入式操作系统的移植、 嵌入式操作系统驱动程序的编写和嵌入式应用程序的编写。 二、 设计了用于控制智能宠物的软件的步进马达驱动,后台应用程序,识别 算法和智能宠物软件的文件系统。 三、设计了智能宠物的软件的低电压自动充电功能的内核程序。 基于以上完成的工作,本论文取得的研究成果如下: 1 设计了智能宠物软件的步进马达驱动( 使用c 语言) 。 2 设计了用于识别是否满足马达运转条件的应用程序。 3 设计了一套简单的图像识别算法。 4 设计了智能宠物的软件的低电压自动充电功能的内核程序。 5 设计了智能宠物的固件下载程序。 本论文由四部分组成:第一章是课题背景;第二章是智能宠物软件的系统介 绍。第三章和第四章是作者设计部分,第三章阐述了用于控制智能宠物软件的设 计过程:最后一章是智能宠物软件的仿真测试,并给出了相应结果。 关键词嵌入式:l i n u x ;驱动程序 北京工业大学工学硕士学位论文 a b s 订a c t i n t e l l i g e n tp e ti sab r a n c ho fm b o tt e c h n 0 1 0 9 y l a c c l yi m p o v e di n t e i l i g e n tp e t s i m u i a t e st h eh a b ba n dm o v e m 朋t so ft h er c a lp e t t h ed e v e l o p m e n to fe m b e d d e d s y s t e mt e c h n o i o g ya n dt 1 1 ea p p e 8 r a n c eo fn e we m b e d d e ds o f 咐a r ea r c h i t e c t u r cg i v e b i n l lt ot h eh n p r o v e m e n to fi n t e l l i g c mp c t a sa l le l e c t r o n i cp r o “c ti nt i l em a r k e t , i n t e l l i g e n tp e th a si t su n i q u em 8 r k e tf o r e c 髂t a si sh l o w nt oa l i ,e m b e d d e ds v s t e mh a sa l r e a d yb e e n 吐l et e n d e n c vo fs o c d e s i g n ,a n da p p i i e dt ov a r i o u sa p p i i c a t i o n s p i d d u c t sb a s e do ne m b e d d e ds y s t e ma r e o fg r e a ta b i l i t yo fc o m p e t i t i o ni nt h ec o n s 啪e rm a r k e ta n de n g i n e e r i n gm 盯k e t e m b e d d e ds o r w a r et e c h n o l o g yh e i p se m b e d d e ds y s t e mm a k eg r e a tp r o g r e s s t h e m o r cb r i l l i a n tp r o g r e s st h ee m b e d d e ds o f t w a r et e c h n o l o g ym a k e s ,t h em o r er e s o u r c e s a n dt i m ei tw i i is a v e t h e r e f 研e ,i ti so fc u r r e n tt e c h n o l o g i c a ls i g n i 6 c a n c ea 1 1 d p a t e n t i 8 l 叩p l i c a t i o nv a l u et 0s t u d y 如dd e s j 四t l l ec o n 订o l l l n gs o f t w a r ec o r eo f i n t e l l i g e n tr o b o tp e t t h i st e x td e s i g n sas o f h a r ec o r eo fa ni n t e l i i g e n tp e t ,w h i c hs i m u l a 上e sas e r i a io f g e s t u r e sw h i c hp r e s e n t sa n “a i m i n g ”t h i ss o f t w 盯ec o r ec o m r o l st h ep e t sh a r d w a r e t of o l l o wt h em o v e m e n t so ft 1 1 eo b j e c ti nf 吣n to fm ep 吼se y e s t h eh a r d w a r e n i n c l u d e sam e m a r yb u f 诧rc o n t a i n i n gm ep i x e ld a 扭t h ec 锄e r ac a p t u r e d ,das t e p m o t o rt ot u mt h ec a m e r ai no r d e rt oa i m 如l i ya tt h eo b i e c t t h ew h o l es y s t e mi sa n e m b e d d e ds y s t e mo nw h i c hal i n u xo sr u n n i n g n i sl i n u xo sc o n s i s t so fas t e p m o t o rd e v i c ed r i v e ra n da p p l i c a t i o n s ,w h i c hc a na c c e s st h em o t o ri n 廿1 ek e m e l l e v e l t h er e s u l to f t h ed e s i g np r o v e st ob es u c c e s s f u l a l lo ft h e d e s i g nt a 唱e t sh a v eb e e na c h i e v e d as t e pm o t o rd e v j c ed r i v e ri s c o m p l e t ea n dc a nb ei n v o k e db yas u c c e s s f u i i yd e s i g n e da p p i i c a t o nw h i c hj u d g e st h e v 盯i 砒i o no fv i s u a lm e m o r y m e a n w h i l e b a t t e i yd e t e c t i n gs o r w a r ea i i dn l ef i 丌n w a r e d o w n l o a d i n gp r o c e s sa r ea l lw o r k i n gw e i i - t h i st e 】( cc o n s i s t so f4p a n s c h 印t e rli n t m d u c e st h eb a c k g r o u n do ft i l i sd e s i g l l c h 印t c r2m a k c se v e r yo n ec l c 盯t h ea r c h i t e c t u r eo fm es o 矗w a r ec o r eo ft h i sp e t c h a p t e r3t e l l st l l ed e t a no f 廿l i sd e s i g n c h 印忙r4i s 廿l et e s tr e s u l to f 廿l i sd e s i g n k e yw o r d se m b e d d e ds y s t e m ,l i n u x ,出i c ed r i v e r n 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他 人已经发表或撰写过的研究成果,也不包含为获得北京工业大学或其它教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均 已在论文中作了明确的说明并表示了谢意。 签名:堑篮日期:丝笸 关于论文使用授权的说明 本人完全了解北京工业大学有关保留、使用学位论文的规定,即:学校有权 保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部 分内容,可以采用影印、缩印或其他复制手段保存论文。 ( 保密的论文在解密后应遵守此规定) 繇纽翩群肚吼一 第l 章绪论 第1 章绪论 1 1 课题背景及课题意义 智能宠物是机器人技术的一种,它可以模仿真实宠物的动作和习惯。智能宠 物的设计基于嵌入式的软硬件技术。由于智能宠物软件设计的独特性,所以智能 宠物有着广大的市场前景,因此研究和设计用于智能宠物的控制软件具有重要的 理论和应用意义。 12 国内外相关领域的研究进展 1 2 1 智能宠物的发展 智能宠物是近几年由于嵌入式技术和机器人技术的成熟而长生的新兴产品。 早期的智能宠物只能模仿真实宠物的叫声和进行简单的移动。随着嵌入式硬件工 艺水平和运行速度的提升,并伴随着嵌入式软件的不断发展,现今的智能宠物不 仅能够模拟真实宠物的所有动作和习惯,还能够通过图像、语音识别技术和主人 建立默契关系。 1 - 2 2 嵌入式系统的研究进展 1 2 2 1 嵌入式系统 嵌入式系统一般指非p c 系统,有计算机功能但又不称之为计算机的设备或 器材。它是咀应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成 本、体积、功耗等综合性严格要求的专用计算机系统。简单地说,嵌入式系统集 系统的应用软件与硬件于一体,类似于p c 中b 1 0 s 的工作方式,具有软件代码 小、高度自动化、响应速度快等特点,特别适合于要求实时和多任务的体系。嵌 入式系统主要由嵌入式处理器、相关支撵硬件、嵌入式操作系统及应用软件系统 等组成,它是可独立工作的“器件”。 嵌入式系统几乎包括了生活中的所有电器设备,如掌上p d a 、移动计算设 各、电视机顶盒、手机上网、数字电视、多媒体、汽车、微波炉、数字相机、家 庭自动化系统、电梯、空调、安全系统、自动售货机、蜂窝式电话、消费电子设 各、工业自动化仪表与医疗仪器等。 嵌入式系统的硬件部分,包括处理器,微处理器、存储器及外设器件和i 0 端 口、图形控制器等。嵌入式系统有别于一般的计算机处理系统,它不具备像硬盘 那样大容量的存储介质,而大多使用e p r o m 、e e p r o m 或闪存( f 1 a s hm e m o r y ) 作为存储介质。软件部分包括操作系统软件( 要求实时和多任务操作) 和应用程序 编程。应用程序控制着系统的运作和行为:而操作系统控制着应用程序编程与硬 件的交互作用。 件的交互作用。 北京工业大学工学硕士学位论文 1 2 2 _ 2 嵌入式操作系统和嵌入式l in u x 嵌入式操作系统是指能够运行在嵌入式芯片上的操作系统,这些操作系统往 往能够被编写得很小,以满足嵌入式系统存储空间不是很大的要求。当今的嵌入 式操作系统以微软的w i n d o w sc e 和l i n u x 发展最快最广泛。嵌入式操作系统类 似于标准p c 机的操作系统一样,能够进行任务的调度、驱动程序的集成和外围 设备的访问。 随着微处理器的产生,价格低廉、结构小巧的c p u 和外设连接提供了稳定 可靠的硬件架构,那么限制嵌入式系统发展的瓶颈就突出表现在了软件方面。因 为l i n u x 的开放性,许多人认为l i n u x 非常适合多数i n t e m c t 设备。他们认为l i n u x 可以支持不同的设备,支持不同的配置。l i n u x 对厂商不偏不倚而且成本极低, 能够很快成为用于各种设备的操作系统。如今,业界己经达成共识:即嵌入式 l i n u x 是大势所趋,其巨大的市场潜力与酝酿的无限商机必然会吸引众多的厂商 进入这一领域。嵌入式l i n u x 操作系统以价格低廉、功能强大又易于移植而正在 被广泛采用,成为新兴的力量,所以,众多商家纷纷转向了嵌入式l i n u x 。 l m u x 的特点: 1 可应用于多种硬件平台。l i n u x 已经被移植到多种硬件平台,这对受开销、 时间限制的研究与开发项目是很有吸引力的。原型可以在标准平台上开发然后移 植到具体的硬件上,加快了软件与硬件的开发过程。 2 l i n u x 可以随意地配置不需要任何的许可证或商家的合作关系。 3 l i n u x 是免费的,源代码可以得到。这是最吸引人的。毫无疑问,这会节省大 量的开发费用。 4 l i n u x 本身内置网络支持。 5 l i n u x 的高度模块化使添加部件非常容易。 6 l i n u x 在台式机上的成功,使大家看到了l i n u x 在嵌入式系统中的辉煌前景。 1 2 2 3 嵌入式处理器一a 刚 用于控制智能宠物的软硬件是一部嵌入式系统,其实现基于嵌入式s o c 中 央处理芯片一三星公司的a r m 芯片s 3 c 2 4 1 0 ,通过在其上建立嵌入式软件环境 来设计。 a r m 是英国a r m 公司拥有的知识产权核,a r m 公司通过向各个芯片制造 商出售删核盈利。这样双向的推进了a r m 公司和芯片制造公司的技术实力。 a r m 芯片是一种片上系统,其核心是一款r j s c 处理器,外围集成了能够应用 在很多领域的外围设备。现在市面上流行的灿t m 功能很强大。 a r m 将其技术授权给世界上许多著名的半导体、软件和o e m 厂商,每个 厂商得到的都是一套独一无二的a r m 相关技术及服务。利用这种合伙关系, a r m 很快成为许多全球性r j s c 标准的缔造者。 目前,总共有3 0 家半导体公司与a r m 签订了硬件技术使用许可协议,其 中包括i n t e i 、i b m 、l g 半导体、n e c 、s 0 n y 、菲利浦和国民半导体这样的大 公司。 第】章绪论 图1 1a r m 芯片的应用 f i g u r e 卜1a p p l i c a t i o nf i e l d so fa 瑚c h i p s 1 2 2 4 嵌入式系统发展趋势 嵌入式系统是当今世界最流行的系统小型化、集成化方式,正在被应用到各 个科研、商用领域。嵌入式系统能够根据环境和要求的不同而扩展或者缩小自己 的功能,而不需要被重新设计,所阻是未来商用、科研系统的发展趋势。 l i n u x 为嵌入操作系统提供了个极有吸引力的选择,它是个和u n i x 相似、 以核心为基础的、完全内存保护、多任务多进程的操作系统。支持广泛的计算机 硬件,包括x 8 6 ,a l p h a ,s p a r c ,m i p s ,p p c ,舭w ,n e c ,m o t o r o l a 等现有的大 部分芯片。程式源码全部公开,任何人可以修改井在g n u 通用公共许可证( 回删 g 衄e r a l p 曲l i cl i c e n s e ) 下发行,这样,开发人员可以对操作系统进行定制,再也不 必担心像m s n d o w s 操作系统中”后门”的威胁。同时由于有g p l 的控制,大家 开发的东西大都相互兼容,不会走向分裂之路。l i n l 】) ( 用户遇到问题时可以通过 i n 砖m e t 向网上成千上万的l i n u x 开发者请教,这使最困难的问题也有办法解决。 l i i l u x 带有u n i x 用户熟悉的完善的开发工具,几乎所有的u n i x 系统的应用软 件都已移植到了l i n u x 上。l i n u x 还提供了强大的网络功能,有多种可选择窗口 管理器( xw i n d o w s ) 。其强大的语言编译器g c c 、g + + 等也可以很容易得到。不 但成熟完善、而且使用方便。所以嵌入式l i d l 】x 是嵌入式操作系统的发展趋势。 1 3 课题研究内容 本论文采用s a m s u l l g 公司的a r m 芯片s 3 c 2 4 1 0 ,基于嵌入式软件设计实现 了用于控制智能宠物的软件,并搭建了用于运行和测试智能宠物的控制软件的硬 件平台系统。本论文所设计的用于智能宠物的控制软件,能够模拟真实宠物对于 眼前物体变化所产生的反应。当模拟宠物视觉系统的摄像头前的物体发生移动 时,模拟宠物头部运动的步进马达会带动摄像头进行相应移动,产生“宠物”跟 踪物体的效果。本论文实现的是软件控制部分,即智能宠物的软件核心。 北京工业大学工学硕士学位硷文 本论文的主要研究内容为: 研究了嵌入式系统的构成、嵌入式软件的编写、嵌入式操作系统的移植、嵌 入式搡作系统驱动程序的编写和嵌入式应用程序的编写; 分析了用于控制智能宠物的软件的组成和硬件平台组成,并做出硬件平台规 划:规划了硬件平台的组成、规划了c p u 的功能的使用和管腿的分配。 在以上理论研究的基础上,设汁了用于控制智能宠物的步进马达的l i n u x 设 备驱动程序,该驱动能够被编译进入内核,并通过向c p u 的输出端口输出控制 代码来控制步进电机的转动方向和转动步数; 设计了用于控制智能宠物的软件的后台应用程序,这个应用程序长期驻留内 存,可以判断智能宠物视觉内存的变动,如果满足条件便调用步进马达的设备驱 动程序使步进电机进行相应的方向的转动;如果不满足转动条件便使c p u 进入 体眠状态。 设计了一套简单的智能宠物图像识别算法,该算法能够将当前智能宠物视觉 内存的图像和前一时刻的图像进行存储;此存储的图像信息可以作为应用程序判 断的条件。 移植了智能宠物软件的文件系统:设计了s 3 c 2 4 1 0 芯片的n a n df l a s h 驱动 并移植了y a 亓s 文件系统:制作了c m m f s 根目录作为存储用于控制智能宠物软件 的存储器。 设计了低电压判断功能,使智能宠物能够自动充电; 设计了e t h e r n c t 下载程序,实现智能宠物的自升级: 移植到s 3 c 2 4 1 0 开发平台上,并通过软件仿真做出验证。 1 4 论文内容 本论文主要由五部分组成: 第一章:绪论,对本论文研究背景和研究内容的概述; 第二章:研究了嵌入式操作系统驱动程序的工作原理,嵌入式应用程序的工 作原理,嵌入式文件系统的组成:智能宠物软件的图像识别; 第三章:本部分由以下部分构成, 控制智能宠物的软件中步进电机的l i n u x 设备驱动程序的设计: 控制智能宠物的软件后台应用程序的设计; 低电压自动保护的设计; e t h e r n e t 下载程序,实现智能宠物的自升级; 控制智能宠物的软件中用于s 3 c 2 4 i o 的n a n df i a s h 驱动的设计; 控制智能宠物的软件的操作系统一l i n u x 内核的集成,用于存储相应软件的 文件系统的建立。 第四章:测试部分,这部分验证了设计的正确性; 最后是结论部分,在总结本论文完成情况的基础上,指出在这个方向进行研 究工作的展望与设想。 ,。,墼:耋耋型塑墼耋丝塑些! 耋釜。, ,。,。, 第2 章控制智能宠物的软件系统 这章主要介绍对用于智能宠物的控制软件的设计有帮助的资料和智能宠物 软件的实现原理,包括:软件的实现原理、l i n “设各驱动程序的工作原理、l m u x 应用程序的工作原理和编写、嵌入式文件系统和图象识别,以及低电压判断和充 电功能。 2 1 控制智能宠物的软件的实现原理 2 1 ,1 控制智能宠物的软件的原理 设计一款嵌入式软件产品,操作系统的应用程序和驱动程序是设计的核心。 用于控制智能宠物的软件的实现表现在两个层次: a 在实际人们看到的,智能宠物表现为对自然界中的人或者物的反应,人或者 物对智能宠物的刺激使得智能宠物相应的产生反应或者做出某种动作。 b 在嵌入式系统内部,也就是本次设计需要实现的内容,外界物体在智能宠物 视觉系统中移动或者形状变化表现在软件系统中的变化是内存中一段空间数据 的变化,这段内存空间称作“视觉内存”。当“视觉内存”变化发生时,嵌入式 系统马上去分析这个变化,再调度相应的应用程序,最终回归到对驱动程序也就 是外围设备的反应上,最终使得外围设备做出反应。下图中的子进程即是检测这 段内存变化的应用程序,当检铡条件变化时读写步进马达的驱动程序来转动步进 马达。见图2 ,1 时间轴 c = = = = = = , 圉2 1 智能宠物软件的实现原理 f g u 化2 1m e c 【、a n i s mo f i h cs o 加a r ec 0 1 o f i n t e i 【i g e n tp e t 北京工业大学工学硕士学位论文 2 1 2 智能宠物的硬件原理和步进马达 智能宠物的感官部件是一部摄像设备,通过连续的摄像获得参照物的图像。 这个图像被读取到“视觉内存”中。智能宠物的转动装置是一部步迸马达,它可 以带动摄像头一起转动,从而达到将摄像头的图像最大化或者置于中间的目的。 步进马达介绍 步进马达是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱 动器接收到一个脉冲信号,它就驱动步进马达按设定的方向转动一个固定的危度 ( 即步进角) 。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目 的;同时可以通过控制脉冲频率来控制马达转动的速度和加速度,从而达到调速 的目的。 步进马达: ( 1 ) 步进马达必须加上驱动电路才能转动,驱动电路的信号输入端必须输入脉 冲信号。若无脉冲输入时,转子保持一定的位置,维持静止状态:反之,若加入 适当的脉冲信号时转子则会以一定的角度( 称为步角) 转动。所以连续脉冲时, 则转子的角度与脉冲频率成正比。 ( 2 ) 步进马达的的步进角一般为1 8 度,即一周3 6 0 度需要2 0 0 步才能完成。也 就是说每来一个脉冲就转动了1 2 0 0 圈。而本次介绍的步进角为7 5 度,一周需 要4 8 步就可以完成。 ( 3 ) ,步进马达的励磁方式有:l 相励磁,2 相励磁,1 2 相励磁。其中l 相励 磁最为简单,转矩最小;2 相可有较大的转矩;1 2 相属于半步进的方式。即每一 步的旋转角度为前两相和的一半。 智能宠物传动装置介绍 智能宠物硬件的传动装置是一部双极性驱动步进马达,通过同时往a 、a 、 b 、b 口写高电平或者低电平实现正向转动或者反向转动。写往四个口的不同电 平决定了每步的方向和步长。 图2 2 是双极性驱动步进马达的内部绕线图,见图2 2 图2 2 双极性驱动步进马达的内部绕线圈 f i g u r e2 - 2m e c h a i l i s mo f s 唧m o t o r 图2 - 3 是2 相励磁正向步进步数与各输入i o 值的关系,当四个输入管脚的 值根据下表进行依次变化时,步进电机发生连续转动。见图2 3 第2 章控制智能宠物的软件系统 2 桐励磁 s 却 abj 叠国 110 ) 0】0 3 0 0 l 4 i00l 一 二 i 0 0 6 o 1o; 7ooll 8i00i 图2 32 相励磁正向步进与各输入端口值的关系 f i g i 】r e2 3t h er e l a t i o nb e t w e e ni n p u tp i n sa n d 廿1 es t a 佻o fs t e pm o t o r 图2 _ 4 是步迸马达驱动电路电路图 p 1 p 1 1 p 工2 p 1 3 j 进屯栩:j 粥劫蕊巧争 图2 4 步进马达驱动电路电路图 f i g u r e2 _ 4c i r c u i td i a g r a mo fs t e pm o t o rd r i v e r 表2 1 是本次设计中励磁步进与输入端口值的关系,步进电机的端口由1 至 4 依次变化使步进电机发生正向或者反向的转动。步进电机的正向和反向转动是 互逆过程,见表2 1 北京工业大学工学硕士学位论文 表2 一l 此次设计中励磁步迸与各口i o 值的关系 2 相励磁正向 2 相励磁反向 s t e p ab ab s t e p aba b 111000 3 h1 l10o0 3 h 2o1l00 6 i l21 o o l0 9 h 3o011 ( ) c h 3oo1lo c h 4 _ l o010 9 l4o 11o0 6 h 51lo00 3 h5l1oo0 3 h 601100 6 h6 100】0 9 h 70 0110 e h7oo110 c h 2 。2 嵌入式l j n u x 设备驱动程序 2 2 1 嵌入式lln u x 驱动程序的作用 在嵌入式l i 肌x 下,驱动程序用c 语言编写,并且在编译整个操作系统时被 编译进入l i n u x 内核。它自身能够调用l i n u x 提供的内核函数,并且能够访问实 际的物理地址。 系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统 内核和机器硬件之间的接口,设备驱动程序为应用程序屏蔽了硬件的细节,这样 在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一 样对驱动文件进行操作,从而对硬件设备进行操作。用户通过读或者写这些文件 来从设备读取数据或者写入数据从而达到控制设备的目的。 设备驱动程序是内核的一部分,它完成以下的功能: 对设备初始化和释放。 把数据从内核传送到硬件和从硬件读取数据。 读取应用程序传送给设备文件的数据和回送应用程序请求的数据。 检测和处理设备出现的错误。 ,控制设备 2 2 2a 刚中嵌入式lln u 驱动程序的运行模式 删芯片有7 种不同的模式,在运行嵌入式“n u x 操作系统的a r m 芯片 中,最常被用到的是系统模式( s y s ) 和用户模式( u s e r ) ,区分这两个模式的是 c p u 状态寄存器p s r 的个控制位。表2 2 代表了三星s 3 c 2 4 1 0 b 芯片中状态 寄存器p s r 中的模式状态字m 4 :o 位状态对运行模式的影响。见表2 - 2 第2 章控制智能宠物的软件系统 表2 2 三星s 3 c 2 4 i o b 芯片中状态寄存器p s r 中的模式状态字 t 曲1 e2 2m o d er e g i s t e rc p s ro fs a m s u n gs 3 c 2 410 m 4 :o 模式 1 0 0 0 0 u s e r 用户模式 1 1 1 1 1s v s 系统模式 两种模式表现出来的不同点是用户的权限差异:操作系统内核运行在系统模 式下,用户程序只能运行在用户模式下。在运行操作系统的嵌入式系统中,出于 安全和宏观考虑,用户并不能够访问真正的物理地址,从而不能对系统的设备进 行操作。只有系统模式才可以使驱动程序访问物理端口,所以用户只有通过调用 l 劬x 提供的函数才能够访问实际地址或者是外围设备。图2 5 代表了这种关系, 图2 5a r m 中u s e r 模式和s y s 模式的权限区别 f i g u r e2 - 5t h e 砌1 0 r i qd i f f e r e mb 酿v e e nl l s e rm o d e 柚ds y s t e mm o d ei na r mc h i p 内核是唯一可以完全控制硬件的部分,内核驱动程序是应用程序与硬件之间 进行会话的桥梁。内核之上是c 库,负责把p o s a p i 转换为内核可以识别的 形式,然后调用内核,从应用程序向内核传递参数。应用程序依靠驱动内核来完 成特定的任务。 嵌入式l i n u x 操作系统通过设备的驱动程序连接客户的应用程序和外围设 备,设备被看作是单独的文件。客户通过读或者写这些文件来从设备读取数据或 者写入数据从而达到控制设备的目的。 2 2 3 嵌入式l jn u x 驱动程序的结构 我们基于a r m 芯片详细介绍字符型驱动程序的结构。 2 2 3 1 驱动程序的编译 与桌面式l i n u x 操作系统相同,嵌入式l i n u x 不仅能通过i n s m o d 指令动态加 载设备驱动程序,而且驱动程序也能随系统启动而启动,所以可以在编译整个 l i n u x 时将驱动程序编译进入内核。这需要设计人员做到以下两点: ( 1 ) 设备需要占用的i o 口要提前规划,并且不能改动。 由于嵌入式系统往往不能在定型以后随便改动设计,所以i o 口的分配也 要形成固定模式,这就要求i o 口的规划要提前并且尽量不重复使用i o 口。 ( 2 ) 要在编译过程中定态分配设备号。 系统只根据设备号识别不同设备或者同一设备的不同功能,所以设备的 主、从设备号要在编译时写入编译规则。 2 2 32 嵌人式l in u 驱动程序的结构 l i 玎“驱动程序有两个非常重要的结构,通过这两个结构l i n u x 就能够找到并 控制用户所需的驱动程序。下面是这两个结构和驱动程序的其他关键结构。 ( 1 ) 标识驱动程序文件函数的f i l eo p e t a t i o n g 结构 由于l i n u x 将外围设备的访问抽象成为对文件的访问,所以设备的驱动程序 符合l i n u x 规定的函数指针结构。这种函数指针结构会告知系统,访问、打开、 关闭、读、写操作发生时会发生什么。 内核使用丘l eo p e r 舐o n s 结构访问驱动程序的函数。矗l eo p e r a c l o n s 结构是一个 定义在砘n u x f s h 中的函数指针数组。每个文件都与它自己的函数集楣关联( 通 过包括指向f n eo p e r a t i o n s 结构的一个名为f 叩的指针宇段) 。这些操作主要负责 系统调用的实现,并因此被命名为o p 8 n 、 口d 等。如果采用面向对象编程的术语 来表达对象声明的、作用于其本身的动作,那么我们可以认为文件是一个“对象”, 操作它的函数是“方法”。 这个蜘eo d e r 嘶o n s 结构就是整个字符型驱动程序的框架。根据l i i l “版本不 同,n i eo d e 嘣i o n s 结构略有不同。 表2 3 表示了结构的原型 表2 3 结构傅西1 8 _ 0 p 针a t i o n s 的原型 结构体 _ 1u 。p c “1 s - r 的雨数蟓犁 s 缸u c tf i l t o p c r a d o n s i n t ( + 3 e e k ) ( s 咖瞳h o d e ,s b t l c t f i l e + ,o 口t ,m 1 ) ; i m ( ”a d ) ( s 廿u c t i i i o d e + ,s 衄i c t 土i i e + ,c h a r ,i 哟;指向设备读取函数 i m ( + w 血e ) ( s l m 吐i n o d e + ,g 咖c t 丘k + ,o 行j ,i 1 ) ;指向设备写入函数 i m ( 4 r e a d d i r ) ( g t m c ti n o d e ,s 廿c t 丘l e ,出u c td i r e m + ,i n t ) ; i n t ( 毫啻e j e c d( s t m c t i n o d e 。 ,s t r u c t m e + , i n t ,s e l e c l t a b l e + ) ; i m ( 4 i o c n ) ( g 帅c ti n o d e + ,s 恤l c t 丑k + ,蚰s 岫d 指向设备控制函数 i n t ,u r l 血g n c di o n g i n t ( + m m a p ) ( s 1 l c ti n o d e + ,s 觚l c t 矗1 e + ,b t r u c t a r e as t r d c t + ) ; i n t ( + o p e n ) ( 蚰c ti n o d e + ,s t m c tf i l e + ) ;指向设备打开、占用函数 i m ( 撑l c 髂e ) 0 在删缸l o d e + ,s 衄眦盘k8 ) ;指向设备释放函数 ( 2 ) 标识内存中打开文件的n k 结构 丘l e 结构代表一个打开的文件( 它并不仅仅限定于设备驱动程序,系统中每 个打开的件在内核空间都有一个对应的f l l e 结构) 。下面是它的结构原型: s 加“c 一f e , 坍d d pf 1 0 9 j ”瑚增n g df 州 ,n o 出 j p o s , f ,n 掣 第2 章控制智能宠物的软件系统 s t r h c t 碍e 巾e r 4 t i o n s v d 埘 s t r u c td e n f r 、7 :乙印i 切r l v 口招出 口 警j e n t 唧: , 每一个在内存中打开的文件都有这样一个结构,驱动程序也不例外。l i n u x 就是通过每个驱动程序文件的这个结构来识别和操作文件。每个代表驱动程序的 文件唯一有这样一个结构,同时l i n u ) ( 有完全权限操作每一个这样的文件。可以 看出,f i l e 卵e r a t i o n s 结构是f i l e 结构的一部分。 这样。撬有了以上蔼个唯一代表在内存中打开的驱动程净文鲑的结构,照产 就可以通过l i n u x 提供的操作来访问在用户模式下访问不了的外围设备和资源 了。下图是用户访问外围设备的流程。见图2 6 , 矗 弘 群 酉 图2 6 用户访问外围设备的流理 f i g l 工r e2 6t h ep m c e d u r eo f m ea c c e s st ot h ea m b i e n td e v i c e 行d mu s e r ( 3 ) 主从设备号码 主设备号标识设备对应的驱动程序;次设备号只是由那些主设备号已经确定 的驱动程序使用,内核的其他部分不会用到它,而只是把它传递给驱动程序。一 个驱动程序控制多个设备是常有的事情( 如上面的例子所示) ,而次设备号为驱 动程序提供了一种区分不同设备的方法。 北京工业大学工学硕士学位论文 h 1 l i n u x 中的资源及访问 对于l i n u x 操作系统来说,外围设各的端口或者内存中的空间都是资源,这 些资源需要“n u x 来分配和访问。如果一段资源在被占用它的一个程序( 或者进 程) 释放之前,其他程序( 或者进程) 暂时无法访问这段资源。这无疑是很安全 的,因为不会出现由于竞争而出现的错误。因此,在驱动程序开始出现在内存中 并告知l 证u x 它将访问一些资源前,这些驱动程序需要去验证这段资源可用与 否。 l i n u x 在启动后会“观察”每一个资源的使用状况。如果一段资源被占用,那 么这段资源便被标识为使用。新启动的驱动程序只需要调用l i n u x 的 c 8 出删。月d 函数来查看段资源是否被占用,如果没有被占用就需要使用 m 荜暂韶f 强d n 移函数来马上占用它。 在驱动程序完成使命后,还需要释放被它占用的资源,否则其他需要使用这 些资源的进程或者驱动程序将会阻塞在这里,甚至造成系统不工作。使用 旭昆删,镏f o 移释放资源。 ( 5 ) r e a d 和w r i t e 由于大多数的驱动程序是用来从设备中读取数据或者向设备中写入数据,因 此陀谢和w ,妇可以被写入所有的字符型设备驱动程序。大多数情况下m 口d 和 w 抛是相反的两个过程,我们以旭日d 为例,撑耐需要以下几个要素才能工作, 见图2 7 ; 指定设备文件,也就是设备文件的f i l e 结构体地址,下图中是* 脚b 这个指针, 它指向代表所需设备文件的6 l e 结构首地址。 得到用户空间中用来存储数据的首地址,在下图中是+ b u 时旨针。 所需数据的长度,下图中是c o u n t ,它的太小决定了拷贝多少个连续的c h a r 型数据。 指向一o p e r a t i o i l s 结构体的指针。下图中是却。由于飓础执行后设备文 件位置会发生变化,所以这个指针是必要的。 ( 6 ) 由于l j n u x 内核和用户程序运行在不同的a r m 模式下,而且还存在个“数 据页”的闯题,所以不能使用简单的c o p y 函数丽需要些系统函数。例如, c o 只y 幻螂e ,d 函数将会将数据从内核空间放入用户空间。 第2 章控制智能宠物的软件系统 e e i z e _ td e v _ r e a d l ! ! 璺! ! 垫! ! :! ! 堡,l ! 坠! :些刍1 1 1 1 1 :! 竺竺5 - :坦婪一! 塑堡) 一一一。,一一一一一一一毒+ j s t r o t i l e , 一一一一 苣j缓冲区缓冲匪 f 芦m t i 门e 动程序内)( g 肘雠序 t j l a q e tm o a e t 卫o b 不可受豫1 io p y t o h 8 e r 曩) 图2 7r e a d 的参数 f i g u r e2 7p a r m e i e r so f r b a d 胁甜锄 或者 1 i b c 内】 可正按 有了以上要素,当用户需从设备读取数据的时候,用户程序中的坤耐操作 将会被“封装”为内核驱动程序中的您积操作从而完成操作。 我们举一个例子,假如用户希望从外围设备( 这里假设该设备叫形翻加中读取 一段数据,那么用户将会调用l i n u x 提供的读文件函数陀d d f ,来读取代表形 d 的 文件( 这里假设该文件叫做阮a 的,其目的是希望从阢4 设备读取f e n 这么长的 数据并存在以6 “,开头的内存中。其命令为 r e 口d 删 矿,6 旷,p 圳 下面是这个命令之后操作系统将会做的事情: l i n u x 得到这个命令后,会首先得到耽醐a r 厂的f i l e 结构体的地址,然后得到 这个f i l e 结构体的f i l eo p e m t i o n s ( 这里假设其名字叫做m ,肠m 加w ) 地址。 从而就得到了用来指向r e 谢、w r 抛等操作函数指针。由于这里需要的是读取, 那么l i n u x 将会得到w k n 斤垆一 r 8 耐这个指向读取操作的函数指针。同时 i 抽u x 会传递用户数据缓冲区的起始地址和数据长度,在上图中就是场谚和 c 伽耐参数。执行,8 耐操作的参数齐备了,l i n u x 开始“组装”r e 利操作。 d e v e 积( 矾a m ,b 埘,c o 张t w l 口n o p ) 这就是在内核空间l i n u x “组合”好的,口d d 操作。 “n u x 调用c 啊l 幻一淞p r 函数将需要的数据放到用户空间中。 这样,一个完整的设备读取命令便完成了。图2 8 是这个过程的图形表示 斟2 - 8 读取、v l a n 设备过程的图形表示即 k e n l 。i 将用户的r e a d 程序转挟为对设备操作的r e a d 程序 f i g u r e2 8r e a dp r o c e d i i r e :a c c e s st ow l a n d “i c e 2 3 嵌入式l l n u x 应用程序 2 3 ,l 嵌入式l in u x 应用程序 l i n 应用程序是运行在l i n u x 操作系统上的能够实现一定功能的程序。嵌 入式l i n u x 系统虽然是精简的l i m l x ,但能够在桌面l i l l l l ) c 中运行的应用程序经 过交叉编译后仍旧能够运行在嵌入式c p u 上。 嵌入式l j 丑“应用程序的编写符合标准“n u x 编写的规则,并且由于有专门 为嵌入式设计的库的支持,程序可以被编译的相当小。 编写嵌入式l 咖x 的应用程序使用c ,c + + 语言,如果目标系统是a r m 芯片 的话,经过交叉编译可以生成可以运行在a r m 上的应用程序。 2 3 2 交叉编译环境 交叉编译是嵌入式开发过程中的一项重要技术,它的主要特征是某机器中执 行的程序代码不是在本机编译生成,而是由另一台机器编译生成,一般把前者称 为目标机,后者称为主机。采用交叉编译的主要原因在于,多数嵌入式目标系统 不

温馨提示

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

评论

0/150

提交评论