(计算机应用技术专业论文)医用嵌入式智能设备的研究与应用.pdf_第1页
(计算机应用技术专业论文)医用嵌入式智能设备的研究与应用.pdf_第2页
(计算机应用技术专业论文)医用嵌入式智能设备的研究与应用.pdf_第3页
(计算机应用技术专业论文)医用嵌入式智能设备的研究与应用.pdf_第4页
(计算机应用技术专业论文)医用嵌入式智能设备的研究与应用.pdf_第5页
已阅读5页,还剩82页未读 继续免费阅读

(计算机应用技术专业论文)医用嵌入式智能设备的研究与应用.pdf.pdf 免费下载

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

文档简介

摘要 随着计算机技术与网络技术的发展和普及,以单片机为核心的 小型嵌入式设备,已经在工业自动化、办公自动化和楼宇自动化等领 域得到了日益广泛的应用。为了实现远程数据采集、远程监控等功能, 网络化己成为新一代嵌入式系统发展的一个重要趋势。医院作为社会 的重要部门,更应是如此。研究嵌入式系统与i n t e r n e t 的接入方法, 具有重要的现实意义和经济价值。 本文介绍了目前医院临床吸氧计时的现状,设计开发出基于医 用中心供氧系统的自动吸氧计时器,着眼于嵌入式t c p i p 技术在以 太网中的应用,并给出了各模块的设计方案。吸氧计时器选用8 位单 片机s t c l 2 c 2 0 5 2 ,其中吸氧计时信号采集采用红外光电捕捉方式; 网络模块采用s t c 8 9 c 5 1 6 单片机芯片,以太网控制芯片选用r e a l t e k 公司1 0 m b p s 的r t l 8 0 1 9 a s 。硬件方面主要涉及单片机、红外收发器 件、以及以太网网络接口的设计;软件方面主要是吸氧计时器模块的 设计,网卡控制器驱动程序,uc 0 s i i 操作系统的移植和t c p i p 协议设计。 考虑到嵌入式系统的资源,本文在详尽的介绍了t c p i p 协议及 其报文格式后,对有些t c p i p 协议的功能进行了裁减,使之适应单 片机上网的需要。文中给出了系统的工作流程以及t c p i p 各个子模 块实现的流程图。详细介绍了在pc 0 s i i 操作系统基础上实现了网 络接口设备驱动、链路层协议、a r p 协议、i c m p 协议、i p 协议、u d p 协议,在此基础上实现吸氧计时器计时状态,累计计时数据等采用 t c p i p 实时远程数据传输。说明基于8 位单片机控制的小型嵌入式 设备联网是可行的,为将来实现远程数据采集、远程诊断、远程软件 升级等提供了依据,做到真正远程医疗。并为将来更多医疗自动化设 备网络化的开发提供一个好的平台。 关键词:吸氧计时器、uc o s i i 、嵌入式t c p i p a b s t r a c t a 1 0 n gw i t hd e v e l o p m e n ta n dp o p u l a r i z a t i o n o fc o m p u t e r t e c h n 0 1 0 9 ya n dn e t w o r kt e c h n 0 1 0 9 y , p o c k e te m b e d d e de q u i p m e n t w i t hs i n 9 1 e c h i pc o m p u t e rh a sa l r e a d ya p p l i e de x t e n s i v e l yi n i n d u s t r i a la u t o m a t i o n , o f f i c i a la u t o m a t i o na n db u i1 d i n g a u t o m a ti o ne t c t or e a liz et h e 1 0 n g d is t a n c e d a t a c 0 11e c t e d ,c o n t r 0 1a n ds oo n ,t h en e t w o r kh a sb e c o m eat r e n do f t h ed e v e l o p m e n to fn e wg e n e r a ti o ne 加b e d d e ds y s t e m a st h e i m p o r t a n td e p a r t m e n t ,h o s p i t a ls h o u l db et o o i th a si m p o r t a n t r e a l i s t i cs i g n i f i c a n c ea n de c o n o m i cv a l u et or e s e a r c ht h e c o n n e c t i o no fe m b e d d e ds y s t e ma n di n t e r n e t t h i s p a p e r d e s c r i b e st h ec u r r e n th o s p i t a l o x y g e n i n h a l a t i o nt i m eo ft h es t a t u sq u o ,d e v e l o p e sad e s i g nb a s e d o nt h em e d i c a lc e n t e r so x y g e ns u p p l ys y s t e ma u t o m a t i c a ll y o x y g e nt i m e r ,f o c u s o ne m b e d d e dt c p i pt e c h n o l o g yi nt h e a p p li c a t i o n o fe t h e r n e t o x y g e n t i m e rs e l e c t s8 一b i t m i c r o c o n t r o l l e r ss t c l 2 c 2 0 5 2 ,o fw h i c ho x y g e nt i m es i g n a l a c q u i s i t i o nu s e si n f r a r e dp h o t o e l e c t r i cc a p t u r e ; n e t w o r k m o d u l eu s e st h es t c 8 9 c 5 1 6m i c r o c o n t r o l1 e rc h i p s : r e a l t e k e t h e r n e tc h i pc h o o s et h el om b p sr t l 8 0 1 9 a s h a r d w a r em a i n l y i n v 0 1 v e si ns c m ,i n f r a r e dt r a n s c e i v e rd e v i c e s ,a n de t h e r n e t n e t w o r ki n t e r f a c ed e s i g n ,s o f t w a r e i sm a i n l yo x y g e nt i m e r m o d u l e ,r t l 8 0 1 9 a s sd r i v e r ,t h et r a n s p l a n to ft h e uc o s i i o p e r a t i n gs y s t e ma n dt c p i pp r o t o c o ld e s i g n t a k i n g t h er e s o u r c e so ft h ee m b e d d e ds y s t e m si n t o + a c c o u n t ,a f t e rt h ep a p e ri n t r o d u c e st h e t c p i pp r o t o c o la n d m e s s a g ef o r m a t , s o m et c p i pp r o t o c 0 1f u n c ti o n sa r er e d u c e ds o a st oa d a p tt ot h en e e d so fs c mi n t e r n e t i nt h i sp a p e r ,t h e i i s v s t e m sw o r k f l o wa n dt c p i pv a r i o u sm o d u l e si nf l o wc h a r t s a r eo f f e r e d 0 nt h eb a s i so ft h euc o s iio p e r a ti n gs y s t e mi t r e a l i z e san e t w o r ki n t e r f a c ed e v i c ed r i v e r s , t h e1 i n k1 a y e r p r o t o c o l ,a r p , i c m p ,i p , u d p u s i n gt c p i pr e a l t i m er e m o t e o x y g e nt i m e rt i m e s t a t u sa n d t h ea c c u m u l a t e d t i m ed a t a t r a n s m i s s i o n t h en o t eb a s e do n8 一b i tm i c r o c o n t r 0 1 1 e r st h e c o n t r 0 1o fs m a l1e m b e d d e dd e v i c en e t w o r k i n gi sf e a s i b l e ,a n d f o r t h ef u t u r ep r o v i d eab a s i st or e a li z et h er e m o t e d a t a c 0 1 1 e c t i o n , r e m o t ed i a g n o s i s , r e m o t es o f t w a r eu p g r a d e s , a c h i v i n gt r u l yt e l e m e d i c i n e i nt h ef u t u r ep r o v i d eag o o d p l a t f o r mf o rd e v e l o p i n gm o r em e d i c a la u t o m a t i o ne q u i p m e n to f t h en e t w o r k k e yw o r d s : o x y g e nt i m e r ; uc o s i i ; e m b e d d e dt c p i p i i i 湖南师范大学学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下, 独立进行研究工作所取得的成果。除文中已经注明引用的内容外, 本论文不含任何其他个人或集体已经发表或撰写过的作品成果。对 本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标 明。本人完全意识到本声明的法律结果由本人承担。 学位论文作者签名:多,烬7训沪年l 月,。日 湖南师范大学学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定, 研究生在校攻读学位期间论文工作的知识产权单位属湖南师范大 学。同意学校保留并向国家有关部门或机构送交论文的复印件和电 子版,允许论文被查阅和借阅。本人授权湖南师范大学可以将本学 位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、 缩印或扫描等复制手段保存和汇编本学位论文。 本学位论文属于 1 保密口,在年解密后适用本授权书。 2 、不保密口。 ( 请在以上相应方框内打“、”) 作者签名:垄妈f 导师签名:扬彳l 日期:州4 年,矿月fl 日 日期:夕占年,二月f - 日 医用嵌入式智能设备的研究与应用 1 1 医用智能设备概况 1 绪论 随着计算机技术的发展和广泛应用,计算机硬件、软件的开发、 应用和维护成为社会各行业工作的重要组成部分。当然,医院作为 社会的重要部门,医院办公的智能化、信息化、网络化也已实现。 由于智能化医院功能复杂,科技含量高,它的设计涉及到建筑学、 护理学、卫生学、生物学工程学等科学领域,智能医院通常包含若 干弱电系统、信息通信、广播设备监控、公共安全管理、综合布线、 办公自动化、系统集成等。本文仅对弱电系统、信息通信设计方案 部分进行阐述和研究。 目前在普通医院中也出现了很多医用智能化设备,从过去的人 工自觉排队挂号,到现在的智能排队挂号系统;从过去的人工看护 输液,到现在的自动输液报警器:从过去单个病房的人工值守,到 现在的病房呼叫系统等弱电系统设备。但是在临床护理工作中,吸 氧计时还是采用传统人工计时方式。 传统人工计时方式,即当病人需要吸氧时,护士按照吸氧操作 常规在吸氧记录本上记录开始和停止吸氧的时间。然而,有的病人 需要长期吸氧,有的则需要间歇吸氧,护士在记录吸氧时间上很难 做到准确无误,病人常因为吸氧收费问题与护士发生纠纷,如:医 嘱为l o 小时持续吸氧,但患者随病情好转在用餐、喝水、入厕等情 况下吸氧时有间断,现临床微机收费系统却根据医嘱自动收取病人 l o 小时的氧气费,无法精确计算以上情况的吸氧间断时间,造成患 者不满,要求退费,给临床护理工作带来许多麻烦。也使吸氧收费 无法达到准确无误,造成了该项收费存在多收、少收、漏收的情况, 从而造成不和谐的医患纠纷。 通过对湖南省旺旺医院等医院的实地调研,切实了解医护人员 在这方面的难处及需要,开始着手吸氧计时器的设计。 硕士学位论文 1 2 嵌入式系统发展趋势 i n t e r n e t 技术的发展,促进了嵌入式网络设备和产品的市场 需求,使这些设备和产品与i n t e r n e t 相连成为趋势,i n t e r n e t 技术 将深入到日常生活和工作所用到的电子设备中,目前市场的发展趋 势是将这些局域网需要通过企业内联网或外联网特别是互联网与外 界连接。现今的嵌入式系统一般都要连接到局域网,这样就有数十、 甚至上百个控制器连接在一起。举例说,汽车制造和工业控制领域 中的c a n 有上百个微控制器在相互作用;z i g b e e 无线控制网络也有 若干多数量的微控制器互连在一起。而且,随着嵌入式网络越来越 复杂( 因此需要更大的网络带宽和更远的传输距离) ,嵌入式以太 网也开始涉足于工业控制n 儿2 引、建筑物自动化、医疗和保安产品市 场。 嵌入式系统联网要求的不断增加,导致微控制器必须具备更多 性能:更强的互连性,增加程序和数据内存空间来支持相应的通信 协议,提高性能和处理带宽以进行系统传输数据、执行通信协议和 提供严密的保安能力。在需要通过内联网或互联网监控c a n 或 z i g b e e 网络的应用环境中,嵌入式微控制器必须能支持l o 1 0 0 m 以 太网、c a n 、z i g b e e 网络以及其他网络协议,更必须具有先进的安 全加密算法。由于微控制器芯片品种达数百种,这些微控制器的硬 件结构和指令系统各不相同,因此,不能象p c 机那样通过标准的硬 件接口和接口软件直接接入i n t e r n e t 。如何以很低的成本将各类智 能装置与i n t e r n e t 连接起来,以便人们能够远程获得这些电子设备 的信息并控制它们的运行,己成为今天信息界关注的焦点n 副。 1 3 嵌入式t c p ip 协议特点 t c p i p 通讯协议是当前计算机网络通用性标准协议,具备传输 速度快,国际标准,兼容性好等优点,它支持几乎所有流行的网络 协议。但是传统的t c p i p 协议实现在实时性方面做得不够好,把大 医用嵌入式智能设备的研究与应用 量的精力花在保证数据传送的可靠性以及数据流量的控制上1 ,在实 时性要求比较高的嵌入式领域,传统的t c p i p 协议并不能满足实时 性要求;另外传统t c p i p 协议的实现过于复杂,需占用大量系统资 源,而嵌入式系统对资源,成本非常敏感,应用的系统资源往往都 很有限,这意味着我们需要精简传统的t c p i p 协议。嵌入式t c p i p 协议与传统的t c p i p 协议的区别具体体现在以下几个方面: ( 1 ) 可裁剪性。由于嵌入式应用的要求千差万别,各种嵌入式 应用对系统的要求不尽相同,并且在嵌入式应用中对产品的成本、 价格比较敏感,存储器的容量往往都是比较有限的,因此必须根据 嵌入式网络产品的具体功能,对完整的t c p i p 协议栈功能进行裁剪, 特别是对应用协议提供可裁剪性,以满足用户的需求。 ( 2 ) 可移植性。由嵌入式应用的多样性决定了嵌入式应用平台 也是变化多端的。因此,在我们开发网络协议栈软件的过程中,保 证软件的可移植性是非常重要的。这样,在对嵌入式产品进行软、 硬件升级的过程中除了与硬件直接相关的部分代码需要重新编写以 外,不必再对上层协议进行大的修改。 ( 3 ) 代码精简。嵌入式t c p i p 协议栈是标准t c p i p 协议栈的 子集,只需要实现基本的、必要的功能,使生成的二进制代码尽量 精简,这对嵌入式网络产品降低开发难度、提高系统处理能力、节 省有限的r o m 和r a m 空间是有着重要的意义的。嵌入式t c p i p 协议 栈的这些特点也将成为本课题研究工作的目标与要求之一。 嵌入式系统中t c p i p 协议栈的实现从大的方面可以分为硬件实 现和软件实现两种。硬件实现是采用固化了t c p i p 协议的硬件芯片, 通过外部硬件电路处理t c p i p 协议h 3 ,用网络芯片实现t c p i p ,形成 独立于各种微处理器的专用芯片,直接用作网络接口。目前市面上已 有这种结构的芯片出售,如韩国w i z n e t 公司生产的全硬接线式( f u l l h a r d w i r e d ) t c p i p 芯片w 3 l o o a ,美国s e i k o i n s t r u m e n t s 公司生产的 s 7 6 0 0 ,u b i c o m 芯片和n e t s i1 i c o n 芯片等。这类芯片具有速度快,使 用方便的特点。但对于现在很多只实现简单应用的嵌入式设备来说, 采用这种芯片对整个系统的成本来说太昂贵。目前的t c p i p 协议处理 硕士学位论文 还主要是基于软件处理的方式。 而软件实现t c p i p 协议栈又可分为有实时嵌入式操作系统r t o s 支持的实现方式和无r t o s 支持的实现方式两种。操作系统能基于其上 的程序设计提供一个强大、统一的平台,如任务调度、硬件管理、内 存分配等底层操作由操作系统内部完成。基于多任务操作系统编写协 议栈的时候无需过多的考虑,可以很容易的实现多任务管理和并行处 理。虽然嵌入操作系统需要一定的内存资源,对于普通8 位c p u 来说需 外接扩展内存,但是相对成本不大。因此,本课题设计采用软件方式 中的带有嵌入式操作系统支持的实现方式。 1 4 课题研究内容与意义 本课题以s t c l 2 c 2 0 5 2 单片机为核心处理器实现吸氧计时自动化, 为提高医院科学管理形象和诚信度,解决吸氧收费的不科学、不准确 问题,杜绝因吸氧收费引起的医疗纠纷,构建和谐的医患关系提供了 硬件实现。 以s t c 8 9 c 5 1 6 单片机为核心实现网络功能,并在此嵌入式系统中 移植“c o s ii 嵌入式操作系统,实现嵌入式t c p i p 。在嵌入式操作 系统uc o s i i 和网络接口设备驱动的基础上,对t c p i p 协议进行改 写、裁减,使其具有以太网通信所需最基本的功能。实现对病房多个 吸氧计时器工作状态,计时时间等数据的t c p i p 网络传输,为将来实 现远程数据采集、远程诊断、远程软件升级等提供了依据,做到真正 远程医疗。并为将来更多医疗自动化设备网络化的开发提供一个好的 平台。 1 5 本文的结构安排 本文的主要研究内容包括以下几个方面: 第一章介绍了本课题的研究内容,了解国内外吸氧计时方式现 状,嵌入式系统的发展方向,并对研究内容和研究方法进行简单的介 绍。 4 医用嵌入式智能设备的研究与应用 第二章研究uc 0 s i i 的移植条件,利用k e i lc 5 1 集成开发环 境,实现在s t c 8 9 c 5 1 6 上移植了uc o s i i 。 第三章研究了t c p i p 各层协议的工作原理并在uc o s i i 操作 系统的基础上实现t c p i p 协议。 第四章给出了系统的详细软硬件设计,研究了网络控制芯片 r t l 8 0 1 9 a s 各个寄存器功能,r t l 8 0 1 9 a s 数据包的发送、接收和基于8 位单片机实现了r t l 8 0 1 9 a s 驱动程序。详细介绍吸氧计时器的实现, 并把本文设计的t c p i p 协议网络模块应用到基于用医院网络的吸氧 计时器中,实现吸氧计时器数据的网络传输。 硕士学位论文 2 1 移植平台介绍 2 嵌入式操作系统的移植 本设计以s t c 8 9 c 51 6 单片机为核心实现网络功能,并在此嵌入 式系统中移植嵌入式操作系统,在嵌入式操作系统和网络接口设备 驱动的基础上,对t c p i p 协议进行改写、裁减,使其具有以太网通 信所需最基本的功能。为实现对病房多个智能设备的工作状态、计 时时间等数据的t c p i p 网络传输( 如图2 一l 所示) ,需在网络监控 模块嵌入操作系统完成多任务。系统详细硬件设计见本文第四章。 图2 1 系统基本结构框图 2 2 选择uc 0 s i l 嵌入式操作系统的理由 传统的单片机系统在程序设计上一般采用的是前后台方式。应用 程序是一个无限的循环,一个大循环,循环中调用相应的函数完成相 应的操作,这部分可以看成后台行为。中断服务程序处理异常事件, 这部分可以看成前台行为。后台也可以叫做任务级,前台也叫中断级。 事件相关性很强的关键操作一定是靠中断服务来保证的。中断服务虽 然能即时优先响应,但是它们和主循环的通讯,也是通过置主循环 中相应的标志位来完成的。所以这种系统在处理信息的及时性上,比 实际可以做到的要差。 6 医用嵌入式智能设备的研究与应用 对于简单的应用,这种前后台方式是可以满足需求的,但是随着 应用的复杂化,系统可能要同时监测控制多个外部设备( 如本设计 中一个网络模块要监控一个病房当中的多个设备) ,要求较高的实时 性。有多个任务要处理毒如果在系统软件设计上仍然采用上述的传统 方式,就会出现两个比较突出的问题。一是中断响应,一般为了保证 某一项重要任务的实时性。就必须在i s r 中进行较为复杂的处理,这 样一来就要考虑代码重入、系统硬件堆栈溢出等问题。二是任务多, 要考虑的各种可能性也多,各种资源调度不当就会造成共享数据的不 一致,降低系统的可靠性,同时程序量也加大。解决这些问题的最好 方法就是使用嵌入式实时操作系统r t o s 。使用r t o s 可以有效的对多个 任务进行调度陋1 ,对各任务赋予不同的优先级可以保证紧急任务得到 及肘响应。r t o s 也体现了一种新的应用程序设计思想和开放的框架, 降低了程序的复杂度和开发周期。现在市场已经出现了不少的嵌入式 实时操作系统如v x w o r k s ,p s o s ,n u c l e u sp l u s ,v r t x s a ,u c l i n u x 等 等。但这些操作系统大多对系统硬件配置有较高的要求,如要有运行 速度快的3 2 位处理器、处理器内部要有内存管理单元( m e ) 、较大容量 的r o m 和r a m 空间等;同时操作系统自身和相应配套的开发调试工具价 格较高,而且许多r t o s 厂商要求用户在批量生产时要按产品数量交纳 版税,所以对干中小型系统特别是采用8 位微处理器的系统来说这些 操作系统都是不适合的凹1 。 本课题采用的是由j e a nj l a b r o s s e 编写的开放式实时操作系统 “c 0 s i i 。主要是基于以下的考虑n 训: ( 1 ) 它的源代码是公开的,并且仍在不断的升级,增加新功能。 源代码的开放可以使得用户根据实际要求对源代码进行取舍,去掉不 必要的变量和不使用的函数,提高系统性能。另外,由于对系统内核 有源代码级的了解,用户可以添加自己的模块,与原有系统内核兼容, 使得系统具有可扩展性。 ( 2 ) 绝大部分pc o s i i 的源码是用移植性很强的a n s ic 写的。 和微处理器硬件相关的那部分是用汇编语言写的。汇编语言写的部分 已经压到最低限度,使得nc 0 s i i 便于移植到其他微处理器上。如 7 硕士学f 节论文 同uc o s 一样,uc o s i i 可以移植到许许多多微处理器上n 。条件 是,只要该微处理器有堆栈指针,由c p u 内部寄存器入栈、出栈指令。 另外,使用的c 编译器必须支持内嵌汇编( i n l i n ea s s e m b l y ) 或者该 c 语言可扩展、可连接汇编模块,使得关中断、开中断能在c 语言程序 中实现。pc o s i i 可以在绝大多数8 位、1 6 位、3 2 位以至6 4 位微处 理器、微控制器、数字信号处理器( d s p ) 上运行。 ( 3 ) 可裁剪( s c a l a b l e ) 。可以只使用uc o s i i 中应用程序需 要的那些系统服务。也就是说某产品可以只使用很少几个uc 0 s i i 调用,而另一个产品则使用了几乎所有uc o s i i 的功能。这样可以 减少产品中的uc o s ii 所需的存储空间( r a m 和r o m ) ,这种可裁剪 性是靠条件编译实现的。只要在用户的应用程序中( 用# d e f i n e c o n s t a n t s 语句) 定义哪些uc o s i i 中的功能是应用程序需要的就 可以了。程序和数据两部分的存储用量已被最大努力的压低了。 ( 4 ) 系统内核实用性强、可靠性高。从最老版本的uc o s ,以及 后来的uc 0 s ,到最新版本的uc 0 s i i ,该实时内核已经走过了l o 多年的历程。世界上各个领域使用了该实时内核,如医疗器械、网络 设备、自动提款机、工业机器人等等。这些应用的实践是该内核实用 性、无误性的最好证明。 ( 5 ) 支持多任务抢占式。uc 0 s i i 可以管理6 4 个任务,目前这 一版本保留8 个给系统,应用程序最多可以有5 6 个任务。赋予每个任 务的优先级必须是不同的,uc 0 s i i 总是运行就绪条件下优先级最 高的任务。 ( 6 ) 中断管理。中断可以使正在执行的任务暂时挂起。如果优先 级更高的任务被该中断唤醒,则高优先级的任务在中断嵌套全部退出 后立即执行,中断嵌套层数可达2 5 5 层。 ( 7 ) 可确定性。全部uc o s i i 的函数调用与服务的执行时间具 有其可确定性。也就是说,全部的函数调用与服务的执行时间是可知 的。进而言之,uc o s i i 系统服务的执行时间不依赖于应用程序任 务的多少。 医用嵌入式智能设备的研究与应用 2 3uc 0 s i l 在s t c 8 9 c 5 1 6 处理器上的移植 2 3 1uc 0 s i i 的移植条件 移植uc 0 s i i 的主要工作就是处理器和编译器相关代码n 引。 以下是uc o s i i 的移植需要满足的要求: ( 1 ) 处理器的c 编译器可以产生可重入代码: ( 2 ) 可以使用c 调用进入和退出c r i t i c a lc o d e ( 临界区代码) ; ( 3 ) 处理器必须支持硬件中断,并且需要一个定时中断源; ( 4 ) 处理器需要能够容纳一定数据的硬件堆栈; ( 5 ) 处理器需要有能够在c p u 寄存器与内存和堆栈交换数据的 指令。 根据以上移植要求,本课题选用宏晶科技公司的s t c 8 9 c 5 1 6 处理 器芯片,其具有一个5 l 系列单片机的内核还具有6 4 k 并行可编程的非 易失性f l a s h 程序存储器,并可实现对器件串行在系统编程( i s p ) 和在 应用中编程( i a p ) 。在系统编程( i s p :i n s y s t e mp r o g r 锄mi n g ) :当 m c u 安装在用户板上时允许用户下载新的代码。在应用中编程( i a p : i n a p p l i c a t i o np r o g r 锄m i n g ) :m c u 可以在系统中获取新代码并对 自己重新编程。这种方法允许通过调制解调器连接进行远程编程。片 内r o m 中固化的默认的加载程序( b o o tl o a d e r ) 允许i s p 通过u a r t 将程 序代码装入f 1 a s h 存储器,而f 1 a s h 代码中则不需要加载程序。对于 i a p 。用户程序擦除和重编程f l a s hm e m o r y 的操作是通过使用片内r o m 中的标准程序来完成。该器件的1 个机器周期由6 个时钟周期组成,因 此运行速度是传统8 0 c 5 1 的2 倍。该系列单片机是8 0 c 5 l 微控制器的派 生器件,是采用先进c m o s 工艺制造的8 位微控制器,指令系统与8 0 c 5 l 完全相同。它有4 组8 位i o 口,3 个1 6 位定时计数器,多个中断源4 个中断优先级,嵌套中断结构,1 个增强型u a r t ,片内振荡器及时序 电路。s t c 8 9 c 5 1 6 微处理器使用高速的8 0 c 5 l 作为内核,其资源和i s p 的功能使得它很适合用来做pc o s i i 的移植调试。并不需要购买仿 真器和编程器等额外投资。所以我使用s t c 8 9 c 5 1 6 n 3 1 作为本课题的移 9 硕士学位论文 植平台。 而由于uc o s i i 绝大部分代码是用标准的c 语言编写的,所以c 语言开发工具对于“c o s i i 是必不可少的。在单片机开发应用中, k e i lc 5 l 集成开发环境是我们常用的开发工具,该开发工具有c 编译 器n 引,汇编器和链接定位器等工具构成。链接器用来将不同模块( 编 译过或汇编过的文件) 链接成目标文件,定位器则允许将代码和数据 放置在目标处理器的指定内存中。k e i lc 5 l 还可以生成h e x 格式的编 程文件用于编程e p r o m 或是f l a s h ,同时可以实现完整软件仿真支持。 由于uc o s i i 是一个可抢占式的多任务内核,所以要求c 编译器可以 产生可重入型代码。但是正常情况下k e i lc 5 1 编译器中的函数不能重 入。原因是由于8 0 5 l 系列微控制器的硬件堆栈很小,硬件堆栈指针s p 最多只能在内部2 5 6 字节的r a m 内移动,不能够指向6 4 k 的外部r a m 空 间。所以编译器使用固定的r a m 地址来存储函数的参数和局部变量, 而不是使用堆栈来存储。为了在k e i lc 5 1 中实现可重入函数,可以使 用“r e e n t r a n t 关键字声明该函数是可重入的。编译器可根据编译 模式为可重入函数在内部r a m 或外部r a m 空间开辟一个模拟堆栈来存 储可重入函数的参数和局部变量。可重入函数的返回地址仍然保存在 硬件堆栈中。c x 5 l 编译手册不推荐使用模拟堆栈,原因是受8 0 5 l 寻址 方式的限制,模拟堆栈访问的效率很低。但是这是在k e i lc 5 1 中实现 可重入函数的唯一方法。可重入函数模拟堆栈拥有独立于硬件堆栈指 针的模拟堆栈指针。模拟堆栈及其指针在启动代码文件 “s t a r t u p a 5 l ”中定义和初始化。通过设置编译控制选项,它完全 可以满足编译uc o s i i 源代码的要求。 2 3 2uc 0 s i l 的系统结构及相关部分代码移植 uc 0 s i i 的软件系统结构框图如图2 2 所示: 医用嵌入式智能设备的研究与应用 u c o s i i 与处理器无关代码 o sc o r e co sf l a g c o sm b o x co sm e m 。c o sq co ss e m c o st a s k co st i m e c u c o s 2 cu c o s 2 h iu c o s - i i 移植( 与处理器相关代码)i l o sc p u ho sc p ua a s mo sc p uc c i 至三固 困 图2 2u c 0 s i i 的系统结构框图 由图2 2 可以看出,由于uc o s i i 自生的绝大部分代码是使用 a n s ic 编写的,而且代码的层次结构十分干净,其中大部分代码都与 处理器无关( u c o s _ i i h 和u c o s - i i c ) ,其中u c o s _ i i c 文件包含以 下文件:o sc o r e c ,o st a s k c ,0 st i m e c ,o ss e m c ,0 sm b o x c , o s - m u t e x c 和o s f l a g c 也就是说原则上这些文件可以直接添加不 用修改。但是由于k e 订c 5 l 编译器的特殊性,这些代码仍需多处改动, 因为k e 订c 5 1 缺省情况下编译的代码不可重入而多任务系统要求并 发操作导致重入,所以要在每个c 函数及其声明后标注r e e n t r a n t 关 键字,另外“p d a t a 和“d a t a 在u c o s 中用做一些函数的形参, 但它同时又是k e i lc 5 1 的关键字,会导致编译错误。我通过把 “p d a t a ”改成“p p d a t a ,“d a t a ”改成“d d a t a 解决了此问题。 另夕| 、, o s t c b c u r 、0 s t c b h i g h r d y 、o s r u n n i n g 、0 s p r i o c u r 、 o s p r i o h i g h r d y 这几个变量在汇编程序中用到了,为了使用寄存器r o 或rl 访问而不用d p t r ,应该用k e i lc 51 扩展关键字i d a t a 将它们定义 在内部r a m 中。与平台相关的移植代码仅仅存在于0 s - c p u _ a a s m 、 o s - c p u _ c c 以及o s - c p u h 这三个文件当中。下面分别解释各个文件在 s t c 8 9 c 51 6 上的移植。 1 0 sc p u h 的移植 o sc p u h 包括了用# d e f i n e 语句定义的、与处理器相关的常数、 宏及类型。因为不同的处理器有不同的字长,所以uc o s i i 的移植 硕士学位论文 包括一系列的数据类型定义,以确保其可移植性。uc o s ii 代码不 使用语言中的s h o r t ,i n t ,及l o n g 等数据类型,因为它们是与编译器 相关的,是不可移植的。参考c x 5 l 编译手册,可以完成0 s - c p u h 里所 有数据类型的定义。 与所有的实时内核一样,uc o s i i 需要先关中断,再处置临界 段代码,并且在处置完毕后重新开中断。这样可以保护临界段代码免 受多任务或中断服务子程序的破坏。为了隐藏不同编译器提供的不同 的关中断和开中断的实现方法,增强可移植性,uc 0 s i i 在0 s - c p u h 中定义了两个宏来实现开中断和关中断:o s e n t e r c r i t i c a l ( ) 和 o s e x i t _ c r i t i c a l ( ) 。根据s t c 8 9 c 5 1 6 的结构和k e i lc 5 l 提供的方法, 我们通过置位或清零中断允许位来实现。因为s t c 8 9 c 5 1 6 没有软中断 指令所以用程序调用代替,在用汇编语言编写的0 s c t x s w ( ) 中,模拟 系统产生中断时的堆栈操作,以保证系统任务的正确切换。代码如下: t y p e d e fu n s i g n e dc h a rb 0 0 l e a n ;注意:不要使用b i t 定义, 因为b i t 类型为c 5 l 特有,不能用在结构体里。 t y p e d e fu n si g n e dc h a ri n t 8 ; t y p e d e fs i g n e dc h a ri n t 8 s ; t y p e d e fu n s i g n e ds h o r ti n t l 6 u ; t y p e d e fsi g n e ds h o r ti n t l 6 s ; t y p e d e fu n s i g n e di n ti n t 3 2 u ; t y p e d e fs i g n e di n ti n t 3 2 s ; t y p e d e fu n s i g n e dc h a ro s s t k ;堆栈的宽度为8 位 # d e f i n eo s e n t e r c r i t i c a l ( ) e a = ”o ;进入临界区 # d e f i n e0 s e x i t c r i t i c a l ( ) e a = ”l ”;退出临界区 # d e f i n eo s s t k r o w t ho ; 堆栈从下往上增长( 1 向下o 向上) # d e f i n eo s t a s k w ( )o s c t x s w ( ) ; 2 o sc p uc c 的移植 uc o s i i 的移植要求用户在0 s - c p u - c c 中编写1 0 个简单的c 函 数。但唯一必要的是o s t a s k s t k i n i t ( ) ,其他九个必须声明,但不一 医用嵌入式智能设备的研究与应用 定要任何程序代码。 o s t a s k s t k i n i t ( ) 是在系统创建任务时用来初始化任务堆栈的, 使堆栈看起来就象中断刚发生一样,所有寄存器都保存在堆栈中。由 于s t c 8 9 c 5 1 6 硬件堆栈很小,最多只能有在内部r a m 空间的2 5 6 字节。 因此很难将所有任务的堆栈都用硬件堆栈来实现。为了解决这个问 题,我们为每个任务在外部r a m 空间都分配一段连续的存储区,用来 模拟每个任务的堆栈。 莫拟栈 b 矗 地址 可重入函麴 模拟栈 i ( c p _ 卜 士 0 b o 咐 ? xc p 低 ? xc p 高 b s 蛾 矗 有效长度 专 有效长度低地址 任务模拟栈 系统硬件堆栈 图2 - 3s t c 8 9 c 5 1 6 移植岖、o s i i 的堆栈结构 在pc o s i i 进行任务切换时,首先将s t c 8 9 c 5 1 6 硬件堆栈中的内 容复制到要失去c p u 拥有权的任务的外部模拟堆栈区,然后将要得到 c p u 拥有权的任务的外部模拟堆栈中的有效数据复制到s t c 8 9 c 5 1 6 的 硬件堆栈中。这样就实现了任务保护和切换。任务模拟堆栈和硬件的 堆栈结构如图2 3 所示。t c b 结构体中o s t c b s t k p t r 总是指向用户堆 栈最低地址,该地址空间内存放用户堆栈长度,其上空间存放系统堆 栈映像,即:任务模拟堆栈空间大小= 系统硬件堆栈空间大小+ l 。s p 总 是先加l 再存数据,因此s p 初始时指向系统堆栈起始地址( o s s t a c k ) 减1 处( o s s t k s t a r t ) 。很明显系统硬件堆栈存储空间大小 = s p o s s t k s t a r t 。编写o s t a s k s t k i n i t ( ) 主要完成用户堆栈初始化, 从下向上依次保存用户堆栈长度,p c l ,p c h ,p s w ,a c c ,b ,d p l ,d p h , 硕士学位论文 r 0 ,r l ,r 2 ,r 3 ,r 4 ,r 5 ,r 6 ,r 7 。不保存s p ,任务切换时根据用户 堆栈长度计算得出。紧接着的两字节保存可重入函数仿真堆栈的指针 x _ c p 的高8 位和低8 位,初始化为任务模拟栈的最高地址的高8 位和低8 位。o s t a s k s t k i n i t ( ) 总是返回任务模拟栈的最低地址。 函数o s t a s k s t k i n i t ( ) 程序清单如下: v o i d 木o s t a s k s t k i n i t ( v o i d ( 木t a s k ) ( v o i d 水p d ) ,v o i d 木p p d a t a ,v o i d 木p t o s , i n t l 6 uo p t )r e e n t r a n t 生 0 s s t k 术s t k ; p p d a t a = p p d a t a ; o p t = o p t :o p t 没被用到,保留此语句防止告警产 s t k = ( o s s t k 木) p t o s ;用户堆栈最低有效地址 木s t k + + = 1 5 ;用户堆栈长度 木s t k + + = ( i n t1 6 u ) t a s k & o x f f ;任务地址低8 位 木s t k + + = ( i n t l 6 u ) t a s k 8 :任务地址高8 位 水s t k + + = o x o o :p s w :i c s t k + + = 0 x 0 a ;a c c 木s t k + + = 0 x o b :b 木s t k + + = 0 x o o :d p l 木s t k + + = o x 0 0 ;d p h :l c s t k + + = 0 x 0 0 :r 0 木s t k + + = o x o l :r

温馨提示

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

评论

0/150

提交评论