(电路与系统专业论文)基于RTL8019AS网卡芯片的嵌入式TCPIP协议栈研究[电路与系统专业优秀论文].pdf_第1页
(电路与系统专业论文)基于RTL8019AS网卡芯片的嵌入式TCPIP协议栈研究[电路与系统专业优秀论文].pdf_第2页
(电路与系统专业论文)基于RTL8019AS网卡芯片的嵌入式TCPIP协议栈研究[电路与系统专业优秀论文].pdf_第3页
(电路与系统专业论文)基于RTL8019AS网卡芯片的嵌入式TCPIP协议栈研究[电路与系统专业优秀论文].pdf_第4页
(电路与系统专业论文)基于RTL8019AS网卡芯片的嵌入式TCPIP协议栈研究[电路与系统专业优秀论文].pdf_第5页
已阅读5页,还剩62页未读 继续免费阅读

(电路与系统专业论文)基于RTL8019AS网卡芯片的嵌入式TCPIP协议栈研究[电路与系统专业优秀论文].pdf.pdf 免费下载

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

文档简介

硕士学位论文 m a s t e r st h e s i s 中文摘要 目前使用最广泛的以太网以及t c m p 协议己经成为最常用的网络标准之一 本论文研究的是如何实现嵌入式系统与以太网的结合 在基于r t l 8 0 1 9 a s 以太网 芯片的嵌入式网络终端中实现t c p i p 协议簇 这将有助于实现嵌入式系统的网络 连接 本文以周立功单片机公司的e a s y a r m 2 2 0 0 开发板为整个系统的硬件平台 该 开发板采用p h i l i p s 的l p c 2 2 1 0 芯片作为中央处理器 以太网网卡芯片采用 r t l 8 0 1 9 a s 嵌入式操作系统采用非商业嵌入式操作系统l a c o s i i 实现嵌入式操 作系统在l p c 2 2 1 0 芯片上的移植 是整个系统构架中的基础部分 在构建嵌入式系 统平台以后 研究了r t l 8 0 1 9 a s 芯片的软件编程 并通过参考关于t c m p 的r f c 文档 l w i p 基于r t c o s i i 所提供的各种系统服务接口来完成t c p i p 协议栈的建 设 协议栈的实现是整个系统构架中最为核心的部分 也是本文所要讲述的中心内 容和技术 这部分是实验平台的网络通信基础 最后为检验t c p i p 协议栈的健壮 性以及稳定性和执行效率 需要在嵌入式系统中实现基本的文字服务器程序 能够 和现有的p c 机上的操作系统完成简单的网络通信功能 在整个嵌入式系统的实现 过程中 软件部分主要采用汇编语言以及c 语言来编写 g c o s i i 的移植主要涉及 到汇编语言 而r t l 8 0 1 9 a s 和t c p i p 协议栈的实现主要由c 语言来完成 在嵌入式网络体系的构建过程中 主要涉及到两个核心技术难题 它们分别是 嵌入式操作系统的移植和t c p i p 协议栈的实现 其中嵌入式操作系统的移植构建 了一个可供应用的系统平台 它提供了各种系统服务 隐藏了对底层硬件设备操作 的复杂性 大大降低了开发难度 而t c p i p 协议栈的实现为系统提供了网络通信 的基础 最后 给出了对系统的客观 全面的评价 并对进一步改进提出了建议 关键词 嵌入式系统 a j t m p c o s i i 以太网 硕士学位论文 m a s t e r st h e s l 8 a b s t r a c t e t h e r n e ta n dt c p 姐pp r o t o c o lt h a ta r eu s e dm o s tw i d e l yn o wh a v eb e c o m et h e m o s tc o l t l l n o nu s e dn e t w o r ks t a n d a r d s t h i sp a p e rr e s e a r c h e sh o wt oc o m b i n ee m b e d d e d s y s t e ma n de t h e r n e t i m p l e m e n tt c p i pp r o t o c o la te m b e d d e dn e t w o r kt e r r a i n a l b a s e do nr t l 8 0 1 9 a sc h i p 1 1 l c s ec a l lh e l pt or e a l i z en e t w o r kc o n n e c t i o nb e t w e e n e m b e d d e ds y s t e m s w ju s ee a s y a r m 2 2 0 0a so u rh a r d w a r ep l a t f o r m w h i c ha d o p t sp h i l i pl p c 2 2 1 0 m i c r o p r o c e s s o ra st h ec e n t r a lp r o c e s s o ra n dw ep l a n te m b e d d e do sg c o s i ii ni t w e c h o o s er t l 8 0 1 9 a sa so u re t h e r n e tc h i p t h e s ea r et h eb a s eo fw h o l ea r c h i t e c t u r e a f t e rt h ec o n s t r u c t i o no fs y s t e m w er e s e a r c ht h es o f t w a r ep r o g r a m m i n go f r t l 8 0 1 9 a s a n di m p l e m e n tt h et c p i pp r o t o c o ls t a c kb yr e f e r e n c i n gr f cd o c u m e n t s l w i pe t e a n d u s i n gu t i l i t yi n t e r f a c e sp r o v i d e db yo p e r a t i o ns y s t e m t h e ya r et h ec o r ep a r to f t h i sp a p e r a tl a s t i no r d e rt ot e s tt h es t a b i l i t ya n dr o b u s to ft h ep r o t o c o ls t a c k w en e e dt ow r i t ea s m a l la p p l i c a t i o no nt h i se m b e d d e ds y s t e ma san e t w o r ks e r v e rt oc o m m u n i c a t ew i t hp c c l i e n t i nt h ei m p l e m e n t a t i o no fw h o l es y s t e m w eu s eca n da s s e m b l yl a n g u a g ea so u r m a i nt o o l s t h ep l a n t i n gc o d eo fp c o s i ii sw r i t t e nb ya s s e m b l yl a n g u a g ew h i l et h e s o f t w a r ef o rr t l 8 0 1 9 a sa n dt c p i ps t a c ka r ew r i t t e nb ycl a n g u a g e i nt h er e s e a r c h w en e e dt os o l v et w od i 伍c u l tt e c h n i q u e s t h e ya r ep l a n t i n go ft h e e m b e d d e do sa n dt h ei m p l e m e n t a t i o no f t c p i pp r o t o c o ls t a c k t h ef i r s to n ei st h eb a s i c p l a t f o r mo ft h ew h o l es y s t e ma n dt h el a t t e ri st h eb a s i so fn e t w o r kc o m m u n i c a t i o n f i n a l l yw eg i v et h eo b j e c t i v ea n dc o m p r e h e n s i v ee v a l u a t i o nt ot h es y s t e ma n dm a k e r e c o m m e n d a t i o nf o rf u r t h e ri m p r o v e s k e yw o r d s e m b e d d e ds y s t e m a r m g c o s i i e t h e r n e t 硕士擘位论文 m a s t e r s t h e s i s 华中师范大学学位论文原创性声明和使用授权说明 原创性声明 本人郑重声明 所呈交的学位论文 是本人在导师指导下 独立进行研究工作 所取得的研究成果 除文中已经标明引用的内容外 本论文不包含任何其他个人或 集体已经发表或撰写过的研究成果 对本文的研究做出贡献的个人和集体 均已在 文中以明确方式标明 本声明的法律结果由本人承担 作者签名徐呜竺 日期 厉巧7 年乡月石日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留 使用学位论文的规定 即 学校有权 保留并向国家有关部门或机构送交论文的复印件和电子版 允许论文被查阅和借 阅 本人授权华中师范大学可以将本学位论文的全部或部分内容编入有关数据库进 行检索 可以采用影印 缩印或扫描等复制手段保存和汇编本学位论文 同时授权 中国科学技术信息研究所将本学位论文收录到 中国学位论文全文数据库 并通 过网络向社会公众提供信息服务 作者签名 徐呜墨 日期 勿汀年 月 日 日 本人已经认真阅读 c a l i s 高校学位论文全文数据库发布章程 同意将本人的 学位论文提交 c a m s 高校学位论文全文数据库 中全文发布 并可按 章程 中的 规定享受相关权益 圃童论塞握奎卮澄匠 旦圭生i 旦 生 旦三生筮查 作者签名 日期 年月 e 1日 硕士学位论文 m a s t e r st h e s i s 1 1 课题背景和意义 1 绪论 嵌入式系统 e m b e d d e ds y s t e m 是以应用为中心 以计算机技术为基础 软硬件 可裁剪 适应于应用系统对功能 可靠性 成本 体积 功耗严格要求的专用计算 机系统i l 随着集成电路 特别是大规模集成电路技术 和计算机技术的发展 嵌入 式系统己成为计算机领域的一个重要组成部分 并成为近年来的研究熟点 嵌入式 系统的最大特点是其所具有的目的性或针对性 即每一种嵌入式系统的开发设计都 有其特殊的应用场合与特定的功能 这也是嵌入式系统与通用p c 最主要的区别 同时 嵌入式技术与实时性有着天然的联系 l j 由于嵌入式系统是为特定目的而设 计的 常常受到空间 成本 存储 带宽等条件的限制 因此 它必须最大限度地 在硬件和软件上做裁剪以提高工作效率 因而最终导致了实时性的增强 信息化 智能化 网络化的发展 使嵌入式系统技术获得了广阔的发展空间 美国著名未来学家葛洛庞帝1 9 9 9 年1 月访华时预言 4 5 年后嵌入式智能 电脑 工 具将是继p c 和因特网之后最伟大的发明 我国著名嵌入式系统专家沈绪榜院士 1 9 9 8 年1 1 月在武汉全国第1 1 次微机学术交流会上发表的 计算机的发展与技术 一文中 对未来十年以嵌入式芯片为基础的计算机工业进行了科学的阐述和展望 1 目前 嵌入式计算机在应用数量上远远超过了各种通用计算机 嵌入式系统带来的 工业年产值已超过了几万亿美元 i n t e m e t 现在己成为社会重要的基础信息设施之一 是信息流通的重要渠道 但 是目前大多数的嵌入式系统还处于单独应用的阶段 在一些工业和汽车应用中 为 了实现多个m c u 之间的信息交流 利用c a n r s 2 3 2 r s 4 8 5 等总线技术将m c u 组网 但这种网络的有效半径有限 并且一般是孤立于i n t e m e t 之外的 如果能将 这些嵌入式系统连接到i n t e m e t 则可以方便 低廉地将信息传送到几乎世界上的任 何一个地方 实现信息和资源的共享 人们可以随时随地监控 优化生产过程 更 加安全 可靠 高效地进行物质生产 这将极大的提高生产效率 近年来i n t e m e t 技术正在逐渐向工业控制和嵌入式子系统设计领域渗透 嵌入式电子系统的设计步 入了崭新的时代 实现i n t e m e t 互联是当前嵌入式电子系统发展的热点领域和重要 方向 国内外已有一些产品陆续出现 实现嵌入式系统基于t c p i p 协议的网际互 联以及对已有的嵌入式系统进行远程现场升级 功能动态升级和系统监控维护 是 硕士擘住论文 m a s t e r st h e s i s 硬件设计的发展方向 也是当前嵌入式系统设计者需要思考的一个问题 1 2 国内外研究现状 国际上 微控制器和微处理器在工业自动化和设备管理中采用t c p f i p 协议接 入网络始于1 9 9 4 年 初期的进展比较缓慢 近几年来 由于微电子技术的迅猛发 展 微控制器和微处理器的性能大大提高 价格却大大降低 与此同时 因特网也 以前所未有的速度向前发展 网络通信的性能 质量和可靠性得到稳步提高 网络 普及程度迅速提高 世界各大公司看到了嵌入式设备连上因特网的巨大商业价值和 市场潜力 纷纷投入力量研究 使得嵌入式i n t e m e t 技术的研究和应用呈现出加速 发展的势头 嵌入式系统要接入i n t e m e t 主要解决的问题是嵌入式系统与i n t e m e t 的接口问 题 即物理硬件连接和软件t c p f i p 协议栈的实现问题 从硬件连接角度来讲 目前嵌入式系统接入i n t e m e t 主要存在的三种技术模型 直接接入技术模型 间接接入技术模型 嵌入式系统 t c p i p 协议芯片技术模型 1 直接接入模型 如图l l 所示 相对来说比较简单 它是通过嵌入式系统自身 添加网络接口硬件 增加相应的软件支持 并采用相应的接口方案来实现 一j 1 广 1 l 嵌入式撇b 理器l 婴 望l i n t e r a c t l 1 一i j 图1 1 嵌入式i n t e r n e t 系统的直接接入模型 2 间接接入模型 如图1 2 所示 一般通过嵌入式网关等接入设备与i n t e m e t 相连 微处理器与嵌入式网关则通过r s 2 3 2 或r s 4 8 5 进行联接 嵌入式网关主要 负责t c p i p 协议的实现 向嵌入式系统提供i n t e m e t 或i n t r a n e t 通信和管理服务 如防火墙 协议转换等 图1 2 嵌入式i n t e n t e t 系统的间接接入模型 基于这种接入技术模型 e m w a r e 公司提出了嵌入式微因特网互联技术 e m b e d e dm i c r oi n t e m e t w o r k i n gt e c h n o l o g y e m i t 给嵌入式系统增加轻量级协 议软硬件 得到了许多软硬件厂商的支持 是当前具有前景的嵌入式i n t e m e t 接入 技术 3 嵌入式系统 t c p i p 协议芯片 t c p i p 协议栈通过硬件固化到网络芯片上 2 通过标准的输入输出接口 可与绝大多数的单片机相连 目前市面上出售的网络芯 片主要有韩国w i z n e t 公司的i 2 e h i pw 3 1 0 0 a 美国s e i k oi n s t r u m e n t s 公司的i e h i p 7 6 0 0 等 上述三种技术模型中 直接接入模型一般用于3 2 6 4 位微处理器 因为这些微 处理器本身集成有网络接口部件 具有丰富的系统资源 相应的软件也提供网络支 持 并具有相应的网络开发工具 间接接入方式主要适用于那些内部没有集成网络 接口部件 本身硬件资源十分有限的微处理器 以8 1 6 位微处理器为代表 t c p i p 协议芯片具有速度快 使用方便的特点 但同时也增加了硬件成本 由于在硬件体 系结构中采用的芯片为a r m 芯片 片上资源比较丰富 具有网络接口 同时考虑 到硬件成本的问题 所以采用直接接入模型 嵌入式设备要实现网络互联 必须要实现嵌入式t c p i p 协议栈 目前比较有 代表性的t c p m 协议栈饵决方案有下面的几种 1 w i n d r i v e r 公司的t c p m 协议栈 该公司的t c p i p 协议栈是v x w o r k s 嵌入式操作系统的一部分 适用于工业 通讯等高端应用 2 l i n u x 系列t c p i p 协议栈 它支持完全的t c p i p 协议 但是要花费大约 1 0 0 k br o m 和数十千字节的r a m 这对于大部分嵌入式系统是无法承受的 只能 用在高档的服务器上 3 l w i p 由瑞典计算机科学研究所开发 主要聚焦于削减代码大小及内存 消耗 为了削减计算和内在消耗 l w l p 裁减了a p i 的数据拷贝功能 这使l w l e 只 需要大约4 0 k b 的r o m 和数万字节的r a m 适合于嵌入式操作系统 本文在研究的过程中主要以l w l p 和t c p i p 的r f c 文档为基础 结合开源嵌 入式操作系统i t c o s i i 对嵌入式t c p i p 的实现进行了研究 嵌入式操作系统p c o s 是美国人j e a nj l a b r o s s e 编写的一个源代码公开的微内 核r t o s 而l a c o s i i 是它的升级版本 r t c o s i i 对于学校研究完全免费 只有在 应用于盈利项目时才需要支付少量的版权费 特别适合一般使用者的学习 研究和 开发 p c o s i i 的绝大部分源码采用a n s ic 编写 代码可读性好 可移植性强 对 处理器及资源要求亦不高 它可以在绝大多数8 位 1 6 位 3 2 位 甚至是6 4 位微 处理器 微控制器 数字信号处理器 d s p 上运行 支持x 8 6 a r m p o w e r p c 等 众多处理器体系结构 并有很多成功的商用实例 用户可以根据自己的寄存器空闭 的大小和实际需要 对该嵌入式操作系统内核进行裁剪 只保留i t c o s i i 中应用程 序需要的那些系统服务 而且i t c o s i i 在2 0 0 0 年得到了美国联邦航空管理局对用 硕士擘住论文 m a s t e r st h e s i s 于商用飞机的 符合r t c a d o 1 7 8 b 标准的认证 从而表明该操作系统具有足够的 稳定性和安全性 基于灶c o s 4 1 的以上优点在对嵌入式t c p i p 协议栈的研究过程中 我们采用 了该操作系统作为软件开发的基础平台 由于该嵌入式操作系统是基于占先式的 总是让处于就绪态的优先级别最高的任务运行 实时性很强 但同时也使得优先级 比较低的用户程序不能得到及时的响应和服务 因此在研究过程中 本文对其调度 算法进行了相应的改进 1 3 课题研究内容和目标 本文通过对大量中外文献的研究和分析 结合当前嵌入系统发展的前沿技术 对嵌入式i n t e m e t 的软硬件进行了系统的学习和研究 主要完成以下几个方面的研 究工作 首先研究了基于a r m 7t d m i s 庐j 核的处理器l p c 2 2 1 0 的硬件体系结构 重点 研究了其集成的网络接口部件以及r t l s 0 1 9 a s 的软件编程 其次研究了嵌入式操作系统g c o s i i 主要研究嵌入式操作系统的移植 包括 肛c o s i i 的配置和基于l p c 2 2 1 0 硬件的参数修改和p c o s i i 多任务编程 通过对 该嵌入式操作系统的学习和使用实践 对其调度算法和查找优先级的算法进行了一 些改进 最后重点研究了t c p i p 协议栈在基于i t c o s i i 软件平台和r t l 8 0 1 9 a s 硬件的 实现问题 在研究过程中认真学习了l w i p 的程序体系 并结合实际使用情况对其 进行了更改 在更改过程中参考了周立功单片机有限公司的z l g i p 代码 对l w i p 的流程进行了 些更改 并对t c p i p 协议栈做了简单的网络测试 如p i n g 命令 u d p 协议 t c p 协议等 4 硕士擘位论文 m a s t e r st h e s i s 2 嵌入式以太网系统硬件构成研究 2 1 嵌入式系统以太网硬件组成结构 在本系统中 采用了p h i l i p s 公司的l p c 2 2 1 0 芯片作为核心处理器 通过扩展 外部s d r a m f l a s h 以太网接口芯片 串口通信芯片及一些基本元器件等完成硬 件系统设计 系统的总体框图如图2 1 所示 2 2 核心处理器l p c 2 2 1 0 图2 1 系统硬件组成框图 l p c 2 2 1 0 是一个支持实时仿真和跟踪的3 2 位a r m 7 t d m i s c p u 的微控制器 并带有1 6 k b 片内静态r a m 无片内f l a s h 存储器 片内1 2 8 位宽度的存储器接口 和独特的加速结构使3 2 位代码能够在最大时钟频率下运行 对代码规模有严格控制 的应用可以使用1 6 位t h u m b 模式 使用该模式可以将代码规模降低超过3 0 而性 能的损失却很小 l p c 2 2 1 0 的结构框图如图2 2 所示 就整体结构而言 l p c 2 2 1 0 可以分为四大 模块 支持仿真的a r m 7 t d m i sc p u 核 与片内存储器接口的a r m 7 局部总线及 相关部件 与中断控制器接口的a h b 高性能总线及相关部件 连接片内外设功能 的v l s i 外设总线及相关部件 l p c 2 2 1 0 将a r m 7 t d m i s 配置为小端 l i t t l ee n d i a n 字节顺序 a h b 外设分配了2 m 字节的地址范围 每个a h b 外设分配了1 6 k 字节 的地址空间 l p c 2 2 1 0 的外设功能 中断控制器除外 都连接到v p b 总线 a h b 到 v p b 的桥将v p b 总线与a h b 总线相连 v p b 外设也分配了2 m 字节的地址空间 硕士学位论文 m a s t e r st h e s i 每个v p b 外设在v p b 地址空间内同样分配了1 6 k 字节地址空问 片内外设与器件 引脚的连接由引脚连接模块控制 软件可以通过控制该模块让引脚与特定的片内外 设连接 2 3 以太网接口 图2 2l p c 2 2 1 0 功能框图 2 3 1 以太网接口芯片r t l 8 0 1 9 a s r t l 8 0 1 9 a s 是r e a l t e k 公司生产的高集成度专用以太网接口芯片 能简单 地实现p l u ga n dp l a y 口f f 插即用 并兼容n e 2 0 0 0 它具有曼彻斯特编码 冲突检测和 重发的功能 支持p n p 自动探测 内嵌1 6 k b 的s r a m 具有全双工的通信接口 可以通过交换机在双绞线上同时发送和接收数据 使传输带宽从1 0 m b i t s 增加到 2 0 m b i t s 是用来进行以太网通信的理想芯片 1 2 1 按数据链路的不同 r t l 8 0 1 9 a s 内部可分为远程d m a 通道和本地d m a 通道 本地d m a 完成控制器与网线的数据交换 本地d m a 操作由控制器本身完成 远 程d m a 操作下 数据能自动移动至主处理器的内存中 它的操作机制是这样的 6 硕士辛位论丈 m a s t e r st h e s i s 主处理器先赋值于远程d m a 的起始地址寄存器r s a r o r s a r l 和字节计数器 r b c r 0 及r b c r l 然后在r t l 8 0 1 9 a s 的d m a i o 地址上读写指定地址上的数据 主处理器收发数据只需对远程d m a 操作 当主处理器要向网上发送数据时 先将 一帧数据通过远程d m a 通道送到r t l 8 0 1 9 a s 中的发送缓存区 然后发出传送命 令 r t l 8 0 1 9 a s 接收到数据后 通过m a c 比较 c r c 校验 由f i f o 存到接收缓 冲区 收满一帧后 以中断或寄存器标志的方式通知主处理器 r t l 8 0 1 9 a s 的工作 原理框图如图2 3 所示 图2 3r t l 0 1 7 a s 工作原理图 在图2 3 中 接收逻辑在接收时钟的控制下 将串行数据拼成字节送到f i f o 和c r c c r c 逻辑在接收时对输入的数据进行c r c 校验 将结果与帧尾的c r c 比较 如不同 该帧数据将被拒收 地址识别逻辑对接收帧的目的地址与预先设置 的本地物理地址进行比较 如不同且不满足广播地址的设置要求 该帧数据将被拒 收 发送逻辑将f i f o 送来的字节在发送时钟的控割下按位移出 并送到c r c 在 发送时c r c 对帧数据产生c r c 校验 并附加在数据尾发送 f i f o 逻辑对收发的 数据作1 6 个字节的缓冲 以减少对本地d m a 请求的频率 r t l 8 0 1 9 a s 内置的1 6 k b 的s r a m 可划分为接收缓冲和发送缓冲两个部分 缓冲以页为单位 每页2 5 6 个字节 1 6 k b 的s r a m 的页范围规定在0 x 4 0 0 x 8 0 由p s t a r t 和p s 丁o p 寄存器来设定接收缓冲页的范围 由r s a r 0 1 和r b c r 0 i 寄存器来设定发送缓冲页的范围 c u r r 指向接收到的帧的起始页 b o u n d a r y 指 向还未读的帧的起始页 当c u r r 到达了接收缓冲页的底部 即与p s t o p 相等时 c u r r 又会自动指向到p s t a r t 处 与d m a 有关的寄存器如图2 5 所示 硕士擘位论文 m a s t e r st h e s i s 远程 m 慵 t p s r 发送开始页寄存器 t b c i 卜发送字节计数器 f s t a r t 开始页寄存器 p s t o p 结京页寄存器 c 碾r 当前页寄存器 硼r y 一边界寄存器 c l o a o 卜当前的本地d m a 寄 存器 5 馏 i 雪嚣莲藿揣 嚣尹 图2 4 与d m a 有关的寄存器 r t l 8 0 1 9 a s 与l p c 2 2 1 0 一般通过外部总线进行连接 l p c 2 2 1 0 的总线是开放 的 通过电路设计为1 6 位总线方式 即数据总线d 0 d 1 5 与芯片的s d 0 s d l 5 连接 由于r t l 8 0 1 9 a s 工作电源为5 v 而l p c 2 2 1 0 的i o 电压为3 3 v 所以在 总线上串接4 7 0 1 2 的保护电阻 r t l 8 0 1 9 a s 芯片工作在跳线模式 其基地址为0 x 3 0 0 所以电路上s a 6 s a 7 s a l 0 s a l 9 均接地 s a 9 接电源 s a 8 与地址总线的a 2 2 相连 s a 5 与l p c 2 2 1 0 的外部存储器b a n k 3 片选c s 3 相连 当s a 8 为1 s a 5 为 0 时 选中r t l 8 0 1 9 a s 芯片 即其操作地址为o x 8 3 4 0 0 0 0 0 o x 8 3 4 0 0 0 1 f 具体连 接电路见附录 在r t l 8 0 1 9 a s 和r j 4 5 之问设计有隔离滤波器 以保证实际应用中电路工作的 稳定性和可靠性 减少外界因素对硬件电路系统和网络通信的干扰 2 3 2i 汀l 8 0 1 9 a s 的软件编程 1 r t l 8 0 1 9 a s 的软件操作 r t l 8 0 1 9 a s 的软件操作 主要有查询和中断两种方式 在查询方式下 主程序通过c u r r 当i i 仃的接收结束页地址 和b o u n d a r y 指向用 户已经读走的页地址 两个寄存器的值来判断是否收到一帧数据 当b o u n d a r y 与 c u r r 不等时 说明接收缓冲区接收到了新的帧 主程序读取数据后 用读取帧的 第二个字节 下一帧的页地址 更新b o u n d a r y 主程序循环跟踪c u r r 和b o u n d a r y 以达到接收数据的目的 主程序在发送一帧数据时 先要查t s r 寄存器判断上一帧 是否发送完毕 1 3 l 但是用查询方式 c p u 要不断对是否收到新帧进行判断 实 时性不好 同时也浪费了c p u 的宝贵时间 相对于查询方式 在实时多任务环境下 采用中断方式来处理r t l 8 0 1 9 a s 的 收发更为可取 在一般情况下c p u 不需要判断是否收到新帧 可以为其它的应用 程序服务 只在收发中断来临时处理收发事件 因而可以最大限度的利用c p u 为 了充分利用i t c o s i i 的实时性 提高系统的响应速度 对r t l 8 0 1 9 的操作我们使 硕士擘位论文 m a s t e r st h e s i s 用中断方式来完成 当主程序响应r t l 8 0 1 9 a s 的中断时 在i s r 中断服务子程序 的入口 根据读取的中断状态寄存器 i s r 的值来确定程序的走向 如果收到一 新帧 则清除接收中断标志 并读取该帧的数据 等待接收缓冲区空 如果未收到 新的帧 则判断帧是否发送完毕 若一帧已发送完则清除发送中断标志并读取状态 寄存器 并进一步判断发送队列是否还有未发送的数据帧 如果有则继续发送 如 果全部数据发送完 则从中断子程序返回 在研究过程中 我们采用的r t l 8 0 1 9 a s 中断收发的详细流程图如下图2 5 所示 图2 5 i s r 流程图 2 以太网驱动程序的编写 以太网驱动程序的编写大体上分为三个部分 初始化 接收和发送 初始化主 要是设置所需要的寄存器状态 建立网络接口收发的条件等 初始化结束后 9 硕士擘位论文 m a s t e r st h e s i s i 盯l 8 0 1 9 a s 处于接收状态 只要网络上有可以接收的数据包 r t l s 0 1 9 a s 就自动 将数据存入接收缓冲区 并在接收完毕后向c p u 发出中断请求 l 在发送状态下 r 1 r l 8 0 1 9 a s 可以向网络发送数据包 发送数据包可以采用查询方式或是中断方式 r t l 8 0 1 9 a s 的初始化 芯片初始化的主要任务是完成对以下几个寄存器的初始化 d c r 配置寄存器 远端d m a 位数 p s t a r t 接收缓冲区的起始页的地址 p s t o p 接收缓冲区的结 束页的地址 t p s r 发送缓冲区的起始地址 b n r y 指向最后一个已经读取的页 读指针 c u r r 当前的接收结束页地址 写指针 r t l 8 0 1 9 a s 的具体初始化过 程如下 向命令寄存器c r 0 0 h 写入2 1 h 选择寄存器页面0 并进行软件复位 设置数据结构寄存器d c r 0 e h 为0 x c b h 选择8 位d m a 操作方式 设置方式状态寄存器t c r 0 d h 为0 x e 2 h 选择l o o pb a c km o d e 设置接收状态寄存器r c r 0 c h 为0 x e o h 选择m o n i t o rm o d e 不接收包 划分缓冲区为接收缓冲区和发送缓冲区 并建立接收缓冲环 缓冲区地址 范围是0 x 4 0 0 0 h 一0 x 7 f f f h 将r t l 8 0 1 9 a s 内部r a m 地址0 x 4 0 0 0 h 0 x 4 b f f h 设 置为发送缓冲区 0 x 4 c 0 0 0 h 0 x 7 f f f h 设置为接收缓冲区 所以将p s t a r t 0 1h 设置为0 x 4 c h p s t o p 0 2 h 设置为0 x 8 0 h b n r y 0 3 h 设置为0 x 4 c h 设置c r 选择页面1 设置c u r r 为p s t a r t i 即4 d h 清除多址寄存器 即m a r 0 8 h m a r 0 f h 为0 0 h 启动网卡 将网卡地址写入m a r 寄存器 重新选择页面0 清除中断状态寄存器i s r 0 7 h 为0 x f t h 设置中断屏蔽寄存器i m r o f h 为o x o o h 即屏蔽掉所有的中断 设置发送配置寄存器t c r o d h 为o x e o h 设置c r 为2 2 h 芯片进入工作状态 在芯片进入停止状态后 初始化过程对内部的寄存器进行设置 包括m a c 地 址的写入和内部s r a m 的分频 最后 使芯片进入运行状态结束初始化工作 在初 化过程中 设置发送缓冲区为0 x 4 0 0 x 4 b 共1 2 页 可存储2 个最大以太网数据包 设置接收缓冲区为0 x 4 c 0 x 7 f 为接收缓冲区 共5 2 页 在实际的应用中初始化操作 还包括对l p c 2 2 1 0 a r m 芯片i o 口属性设置 以及对r t l 8 0 1 9 a s 网络芯片的复位 操作 这些需要在芯片停止状态前进行操作 l o 硕士擘住论文 m a s t e r st h e s i s 数据的发送 数据的发送过程包含三个步骤 封装数据包 通过远程d m a 将数据包送入 r t l 8 0 1 9 a s 的数据发送缓冲区 通过r t l 8 0 1 9 a s 的本地d m a 将数据送入f i f o 进行发送 在初始化r t l 8 0 1 9 a s 网络芯片的时候是把内部的1 6 k bs r a m 分为两个部分 3 k b 空 日j 用于发送数据 1 3 k b 空间用于接收数据 而3 k b 的发送缓冲区可以保存 2 个完整的以太网帧 可以看作2 个发送缓冲区 这样可以轮流对这两个发送缓冲 区进行操作 l 发送数据时 先计算出需要发送的数据的总长度 然后将待发送的 数据通过远程d m a 写入芯片r a m 给出发送缓冲区的首地址和数据包的长度 设 置好芯片的发送起始地址 启动发送命令 c r 0 x 3 e 即可实现r t l 8 0 1 9 a s 的数据 发送 r t l 8 0 1 9 a s 会自动按以太网协议完成发送并将结果写入状态寄存器 如果发 送的数据少于6 0 字节 则发送6 0 字节 如果发送失败则重发 重发次数为6 次 6 次以后程序退出 由于r t l 8 0 1 9 a s 无法将整个数据包通过d m a 通道一次存入 f i f o 所以在构成一个新的数据包之前必须等待前一数据包发送完成 我们将发送 缓冲区分为2 个缓冲区 一个可以用于数据包发送 另一个可用于构造数据包 交 替使用 这样可以提高发送的效率 发送流程图如图2 6 所示 图2 6 发送流程图 数据的接收 r t l 8 0 1 9 a s 接收数据有中断模式和查询模式两种模式 采用中断模式时 需要 在初始化程序中配置中断 当有一个正确的数据包到达时 r t l 8 0 1 9 a s 会产生一个 中断信号 在中断处理程序中进行接收数据处理 采用查询方式时 由主程序定时 硕士学位论文 m a s t e r st h e s i s 对接收缓冲区进行查询 当检测到有新的数据时 通过远程d m a 方式将数据从 r t l 8 0 1 9 a s 的r a m 空间读出进行处理 j 在接收数据时 接收缓冲区构成一个循环f i f o 队列 p s t a r t p s t o p 两个 寄存器限定了循环队列的开始和结束页 c u r r 为写入指针 指向此时要写的页 受芯片控制 b n r y 为读出指针 指向用户已经读走的页 由主机程序控制 因此 可以通过c u r r 指针和b n r y 指针的距离确定是否收到新的数据包 当c u r r 和 b n r y l 不等时 说明收到了新的数据包 收到的数据包在正确的数据包前还有4 个字节的附加信息 尾部还有4 个字节的c r c 校验码 数据包前4 个字节 第一 个字节表示接收包的状态 第二个字节表示下一个数据包的存放页地址 根据该值 来更新b n r y 寄存器 接下来的两个字节表示数据的大小 处理数据包时 必须先 读出这4 个字节 通过第一个字节判断数据包接收是否正确 如果是正确接收的数 据包 则根据后两个字节的值修改d m a 计数器的值 然后读出整个数据包 并更 新b n r y 寄存器 准备下一个数据包的接收 数据接收的流程图如图2 7 所示 图2 7 数据接收的流程 r t l 8 0 1 9 a s 的工作流程非常简单 驱动程序只要将发送的数据包按指定的格式 写入芯片并启动发送命令 r t l 8 0 1 9 a s 会自动地把数据包转换为物理帧格式在物理 信道上传输 在接收的时候 r t l 8 0 1 9 a s 会将收到的物理信号还原成数据 按指定 的格式放在芯片的r a m 中以便主机程序取用 硕士擘住论文 m a s t e r st h e s i s 2 4 软件开发环境的选择及其配置 我们选用的i d e 集成开发环境是k e i l 公司的m d k 3 0 5 k e i l 开发环境是一 个非常好用的a r m 开发环境 由在该环境下编译生成的代码结构紧凑 代码量小 质量高 稳定性好 对程序优化很有帮助 k e i lu v i s i o n 调试器可以帮助用户准确地 调试a r m 器件的片内外围功能 1 2 c c a n u a r t s p i 中断 i o 口 a d 转换 器 d a 转换器和p w m 模块等功能 在k e i l 环境下 进行a r m 程序的设计不需要自己来编写启动代码 这部分 工作是由i d e 环境自动生成的模板代码 在新建项目后选中目标板所使用的微处理 器芯片 会自动产生与该芯片相对应的启动代码汇编文件 非常方便进行开发工作 但是在对生成的目标文件进行链接的时候需要指定链接定位文件 连接定位文件的 主要目的是告诉编译器代码段 数据段 堆栈段 堆的起始地址和空间大小 不同 的硬件结构有不同的配置方式 针对e a s y a r m 2 2 0 0 开发平台 具体配置如下 r o m l o a d o x s 0 0 0 0 0 0 0 fr o me x e c0 x 8 0 0 0 0 0 0 0 执行起始地址 即代码段起始地址 s t a r t u p o v e c t o r s f i r s t r o i r a mo x 4 0 0 0 0 0 0 0 s t a r t u p o m y s t a c k s s t a c k so x 4 0 0 0 4 0 0 0u n i n i t s t a r t u p o s t a c k s e r a mo x 8 0 0 4 0 0 0 0 r w z i h e a p ou n i n n s t a r t u p o h e a p 内部r a m 起始地址 堆栈起始地址 不对其进行初始化 数据段地址 堆分配 不进行初始化 硕士擘位论文 m a s t e r st h e s i s 在项目调试阶段 调试工作一般都是在内部r a m 或是外部r a m 中进行的 由于l p c 2 2 1 0 微处理器内部没有f l a s h 其内部r a m 空间大小为1 6 k b 所以选择 在外部r a m 中对其调试 同时要提供相应的初始化文件 该文件的目的是完成外 设的配置 对外部r a m 调试 设置p c 指针指向的指令执行地址以及装载编译好的 可执行文件 扩展名为 a f 在项目设计过程中所用的设计初始化i i l i 文件具体内容 如下所示 f u n cv o i ds e t u p v o i d 一w d w o r d 0 x e 0 0 2 c 0 1 4 0 x 0 1 9 1 4 9 1 4 配置p i n s e l 2 外部存储器0 设置 w d w o r d 0 x f f e 0 0 0 0 00 x i 0 0 0 f f e f w d w o r d 0 x f f e 0 0 0 0 4 0 x 1 0 0 0 f i e f 外部存储器l 设置 p c 0 x 8 0 0 0 0 0 0 0 指令取指位置为o x 8 0 0 0 0 0 0 0 s e t u p 下载设置 l o a dr o n g z h a i t c p a x fi n c r e m e n t a l 装载生成的a r i v l 执行文件 g m a i n 跳转到c 语言m a i n 函数运行 关于初始化文件的更详细信息 可以参考i d e 集成开发环境中附带的英文文 档 1 4 硕士学位论文 m a s t e r st h e s i s 3 i c o s i i 嵌入式操作系统在l p c 2 2 1 0 上的移植 3 1p c o s i i 内核及改进 3 1 1i c o s i i 内核及体系结构分析 通过分析恤c o s i i 实时嵌入式操作系统内核及其应用过程 我们发现其包含以 下几个基本功能模块 1 9 初始化管理 完成实时内核的初始化工作 并启动实时调度 任务管理 完成应用任务的管理 是操作系统内核的核心部分 任务管理具 有创建任务 删除任务 挂起任务 解除挂起任务 设置任务优先级等功能 时间管理 为应用系统的实时响应提供支持 保证整个系统的实时性 正确 性 以提高整个嵌入式系统的实时工作能力 中断管理 完成响应中断的一些必要处理 支持中断嵌套时任务堆栈和中断 专用堆栈的切换 任务间的通信 同步 互斥管理 该模块提供应用任务之间通信 同步和互 斥机制 对任务之间的协调工作起着重要的作用 内存管理 提供申请可变大小数据块和固定大小数据块的管理 图3 1 内核结构 从应用角度来讲 c o s i i 可以大致分为核心部分 任务处理 时间处理 任 务同步与通信 c p u 移植等5 部分 核心部分 o sc o r e c 是操作系统的处理核心 包括操作系统的初始化 操 作系统运行 中断进出的前导 时钟节拍 任务调度 事件处理等部分 能够维持 系统基本工作的程序都在此部分 1 5 硕士擘位论文 m a s t e r st h e s i s 任务处理部分 o st a s k c 任务处理部分与任务的操作密切相关 对任务进 行操作 包括任务的建立 删除 任务的挂起以及任务的恢

温馨提示

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

最新文档

评论

0/150

提交评论