(计算机科学与技术专业论文)arm全系统模拟器中模拟串口和网卡的设计和实现.pdf_第1页
(计算机科学与技术专业论文)arm全系统模拟器中模拟串口和网卡的设计和实现.pdf_第2页
(计算机科学与技术专业论文)arm全系统模拟器中模拟串口和网卡的设计和实现.pdf_第3页
(计算机科学与技术专业论文)arm全系统模拟器中模拟串口和网卡的设计和实现.pdf_第4页
(计算机科学与技术专业论文)arm全系统模拟器中模拟串口和网卡的设计和实现.pdf_第5页
已阅读5页,还剩48页未读 继续免费阅读

(计算机科学与技术专业论文)arm全系统模拟器中模拟串口和网卡的设计和实现.pdf.pdf 免费下载

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

文档简介

北京邮电大学硕士研究生毕业论文摘要 a r m 全系统模拟器中模拟串口和网卡的设计和实现 摘要 随着计算机和通信技术的不断发展,嵌入式系统的应用日益广泛, 但传统的开发方法限制了软件开发人员,因为软件的调试,需要在真实 的目标系统上完成。为了解决这个软件开发的瓶颈,全系统模拟器应运 而生,它模拟具体的目标系统,让用户在不接触真实硬件和使用仿真器 的情况下进行开发,提高了开发效率,降低了开发成本。 本论文中重点探讨了删全系统模拟器串口和网卡模拟器的设计 和实现,这是全系统模拟器的必要组成部分,并提出了一个可装载外设 模块的接口和设计实现。 本文首先对全系统模拟器的构成和实现方法进行了简要的介绍,接 着提出了模拟串口和网卡的功能需求以及设计思想。论文继续分别详细 介绍了模拟串口和网卡的设计和实现,重点介绍了在模拟串口时如何利 用伪终端技术来方便日后的测试和交互。 论文提出了外设模块化加载的设计和实现,这对于系统的可配置、 伸缩性,以及方便第三方开发具有重要意义。 最后论文介绍了在嵌入式开发中必然涉及到的交叉工具链的生成过 程及遇到的一些问题的解决之道 关键词:串口网卡全系统模拟器伪终端工具链 北京邮电大学硕士研究生毕业论文 摘要 t h ed e s i g na n di m 眦m e n i a n 0 no f f i ,i ,s y s t e ms i m u i 。p 江 o r ( u a r ta n d 脚e r n e t ( ) 气r d ) w i t ht h ed e v e l o p m e n to fc o m p u t e ra n dt e l e c o m m u n i c a t i o nt e c h n o l o g y , e m b e d d e d s y s t e ma p p l i c a t i o ni sb e c o m i n gm o r ea n dm o r ep o p u l a r w h i l et h e t r a d i t i o n a ld e v e l o p m e n tm e t h o dc o n f i n et h es o f t w a r ed e v e l o p e rd u et ot h e d e p e n d e n c yo nt h er e a lt a r g e ts y s t e mi nd e b u g g i n ga p p l i c a t i o n i no r d e rt o o v e r c o m et h eb o t t l e - n e c ko ft h es o f t w a r ed e v e l o p m e n t ,i tb r i n g so u tt h ef u l l s y s t e ms i m u l a t o r t h es i m u l a t o rs i m u l a t e st h er e a lt a r g e ts y s t e ms ot h a tt h e d e v e l o p e r sc a nb e g i ns o f t w a r ed e s i g na n dc o d ed e b u g g i n gw i t h o u tt h er e a l h a r d w a r ea n di n b o a r de m u l a t o r t h eu s eo fs i m u l a t o rc a ni m p r o v et h e e f f i c i e n c ya n dl o w e rt h ec o s to ft h ed e v e l o p m e n ta c t i v i t y t h i sp a p e rf o c u s e so nt h ed e s i g na n di m p l e m e n t a t i o no fs i m u l a t i v e u a r ta n de t h e m e tc a r d ,w h i c ha r et h ee s s e n t i a lp a r to ft h ef u l ls y s t e m s i m u l a t o r t h i sp a p e ra l s op u t sf o r w a r das c h e m eo fl o a d a b l ep e r i p h e r a l e q u i p m e n ti n t e r f a c e f i r s tt h eb r i e fm t r o d u c f i o nt os t r u c t u r ea n di m p l e m e n t a t i o no ft h ef u l l s y s t e ms i m u l a t o ri sg i v e n ,a n dt h e nt h ed i s c o u r s ep r e s e n t st h ef u n c t i o n a ln e e d a n dd e s i g ni d e ao fs i m u l a t i v eu a r ta n de t h e r n e tc a r d f r o mt h eb a s i s ,w e d e s i g na n di m p l e m e n tt h es i m u l a t i v eu a r ta n de t h e m e tc a r d w eu t i l i z et h e p s e u d ot e r m i n a lt e c h n o l o g yt of a c i l i t a t ef u t u r et e s ta n di n t e r a c t i o n ,w h i c hw i l l b ed i s c u s s e di nd e t a l l t h et h e s i sp r e s e n t st h ed e s i g na n di m p l e m e n t a t i o no fl o a d a b l ep e r i p h e r a l e q u i p m e n ti n t e r f a c e ,w h i c hi ss i g n i f i c a n tf o rc o n s t r u c t i o no f t h ec o n f i g n r a b l e , f l e x i b l es y s t e ma n df a c i l i 哆o ft h et h i r dp a r t yd e v e l o p m e n t f i n a l l yw em a k e ad i s c u s s i o na b o u tt h ep r o c e d u r ei n v o l v e di ng e n e r a t i o n o fc r o s sc o m p i l et o o lc h a i n ,w ep o i n to u tt h ep r o b l e mw em a ye n c o u n t e ra n d h o w t os o i v e i t m 北京邮电大学硕士研究生毕业论文 摘要 k e yw o r d s : u a r t ,e t h e m e tc a r d ,f u l ls y s t e ms i m u l a t o r , p s e u d ot e r m i n a l ,t o o lc h a i n i v 北京邮电大学硕七研究生毕业论文 附录 缩略语中英文对照 b a r b a s ea d d r e s sr e g i s t e r 基地址寄存器 b s r , b a n ks e l e c tr e g i s t e r 页选择寄存器 c r c o n f i g u r a t i o nr e g i s t e r配置寄存器 d l hd i v i s o rl a t c hh i g h 约数锁存高位寄存器 d l ld i v i s o rl a t c hl o w 约数锁存低位寄存器 d rd a t ag e g i s t e r 数据寄存器 f c rf i f oc o n t r o lr e g i s t e r f i f o 控制寄存器 f o bf l a s ho p e nb o o t 启动固件仿真 f p rf i f op o r tr e g i s t c r f i f o 端口寄存器 m i n t e r r u p ta c k n o w l e d g er e g i s t e r中断确认寄存器 i e r i n t e r r u p te n a b l er e g i s t e r中断使能寄存器 r i n t e r r u p ti d e n t i f i c a t i o nr e g i s t e r中断标识寄存器 i m r i n t e r r u p tm a s kr e g i s t e r中断屏蔽寄存器 l s r i n t e r r u p ts t a t u sr e g i s t e r中断状态寄存器 l c rl i n kc o n t r o lr e g i s t e r 链路控制寄存器 l s rl i n ks t a t u sr e g i s t e r 链路状态寄存器 m c rm o d e mc o n t r o lr e g i s t c rm o d e m 控制寄存器 m c r ( 第4 章) m m uc o m m a n dr e g i s t e rm m u 命令寄存器 m i r m e m o r yi n f o r m a t i o nr e g i s t e r内存信息寄存器 m m m m e m o r ym a p p i n gm o d e l内存映射模型 m s rm o d e ms t a t u sr e :g i s t e rm o d e m 状态寄存器 m u t 0m u l t iu n i tt r a c eo p t i m i z e r 多单元探索优化器 p n rp a c k e tn u m b e rr e g i s t e r 包号寄存器 p r mp s e u d ot e r m i n a lm a t e r 伪终端主设备 p t sp s e u d ot e l t i i i n a ls l a v e 伪终端从设备 r b rr e c e i v eb u f f e rr e ,g i s t e r 接收缓冲寄存器 r c rr e c e i v ec o n t r o lr e g i s t e r 接收控制寄存器 r rr e v i s i o nr e g i s t e r 修订寄存器 t c r t r a n s m i tc o n t r o lr e g i s t e r 传输控制寄存器 t h r t r a n s m i th o l d i n gr e g i s t e r 发送缓冲寄存器 u a r t u n i v e r s a l a s y n c h r o n o u s通用异步收发器 北京邮电大学硕l z 研究生毕业论文 附录 北京邮电大学硕士研究生毕业论文声明 独创性( 或创新性) 声明 本人声明所呈交的论文是本人在导师指导下进行的研究工作及取得的研究成果。 尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不包含其他人 已经发表或撰写过的研究成果,也不包含为获得北京邮电大学或其他教育机构的学位 或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中 作了明确的说明并表示了谢意。 申请学位论 本人签名: 处,本人承担一切相关责任。 日期:囊埠上仁一 关于论文使用授权的说明 学位论文作者完全了解北京邮电大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属北京邮电大学。学校有权保留并向国 家有关部门或机构送交论文的复印件和磁盘,允许学位论文被查阅和借阅;学校可以 公布学位论文的全部或部分内容,可以允许采用影印、缩印或其它复制手段保存、汇 编学位论文。( 保密的学位论文在解密后遵守此规定) 保密论文注释:本学位论文属于保密在年解密后适用本授权书。非保密论文注 释:本学位论文不属于保密范围,适用本授权书。 本人签名: 导师签名: 日期: 日期: 北京邮电大学硕士研究生毕业论文 第一章绪论 1 1项目背景与意义 第一章绪论 随着信息技术的不断发展,嵌入式系统在信息通信,航空航天,军事国防,工程 设计,娱乐和人们的日常生活等众多领域展现了其生机和活力。嵌入式软件作为嵌入 式工业的基础,通常需要在真实的硬件环境中进行开发和测试,但作为软件开发人员 来说,他们对于底层硬件的依赖相对较小,如果能够在不利用硬件和仿真工具的情况 下,开发和测试应用软件,将极大的提高软件开发效率,降低开发成本,这也正是使 用模拟器的原因所在。 一般而言,使用模拟器的意义主要有: 跟踪程序汇编指令的执行: 。评价目标c p u 的微体系结构; 。评价程序指令的性能: 。及早进行软件开发,节约时间和成本: 本项目的目标是开发一个全系统嵌入式模拟器( 目前基于l i n u x 平台,主要模拟 的c p u 是a r m 系列芯片) ,它就主要在基于后两个目的,面向3 g 市场,帮助终端和应 用开发者提供模拟具体硬件环境,尽早开发和测试应用软件。 l i 1模拟器软件概述 模拟器软件本质上通过对硬件的模拟,以纯软件的形式来模拟程序在目标平台上 的运行,按实现的方法可分为功能模拟和结构模拟;按照模拟硬件的内容,可分为 c p u 模拟,外设,完整硬件开发板模拟和p d a 等模拟;按用户角度看有进程模拟和 系统模拟。 目前在嵌入式领域存在不少模拟器产品,国外的有斯坦福大学的s i m o s 模拟器, 它模拟的是m i p s 系列c t u 和相关外设,可以在其上运行s g i 公司的i r i x 操作系统 和软件;b o c h s 是模拟x 8 6 系列c p u 的开源项目,可以在其上运行l i n u x 操作系统; 还有商业模拟软件v i n w a r c ,v i r t u a l p c 等可以模拟a 3 2 体系架构兼容主机;国内也有 开源项目如s k y e y e 等,可以模拟多种嵌入式开发板,可支持多种a r m 系列指令集。 1 1 2 全系统模拟器原理和功能 全系统模拟器提供一个完整的系统环境,其中可能存在基于一个或多个属于不同 体系结构的硬件系统的客户应用,通过使用系统模拟器,一个单一宿主机硬件平台可 北京邮电大学硕士研究生毕业论文 第一章绪论 以提供多个目标系统操作环境。全系统模拟器相对于一般模拟器的最大区别是它运行 的操作系统和应用程序可以和宿主机的操作系统和应用程序拥有不同的指令集架构, 这样的话,模拟管理器的位置就位于宿主机的操作系统之上作为其客户应用。为了实 现全系统模拟器,必须模拟所有的硬件环境,把模拟的客户系统指令集架构操作转化 为宿主机操作系统调用。 图i - i 展示了个全系统模拟器应用,它使得在n 3 2 架构的l i n u x 操作系统支 持基于a r m 架构的l i n u x 应用程序。 图卜1全系统模拟嚣示意图 1 1 3 项目的意义 本项目开发的全系统模拟器是在通用l i n u x 平台下开发的基于a r m 系列芯片的 纯软件模拟环境。它通过用户配置来模拟用户需要的硬件开发板,使得运行在其上的 操作系统意识不到没有真实的硬件,而开发人员可以在其上运行嵌入式二进制文件。 本项目面向的应用是: ( 1 ) 嵌入式系统软件( 包括系统软件和应用软件) 的开发人员: ( 2 ) 系统初启动; ( 3 ) 系统性能测试与提升。 2 北京邮电大学硕士研究生毕业论文 第一章绪论 本项目是采用c + + 语言开发,采用面向对象的结构设计,外设均以模块形式加载, 实现了c p u 和主要外设的模拟,可以按照用户的需要灵活配置模拟环境,而作为全系 统模拟器而言,它真实模拟完整系统的运行环境,无疑具有广阔的市场前景和生存空 间。 下面简要介绍下项目的概况: 1 2项目的构成和实现 作为一个全系统模拟器,我们要模拟的不仅仅是一个具体的处理器芯片或是某个 简单的外部设备,而是完整的硬件开发环境,它包括四部分: 。c p u 模拟器,m u t o ( m u l t iu n i t t r a c eo p t i m i z e r ) : 。配置工具,包括人机界面; 。输入输出模块,包括串口,网卡,硬盘,u s b 设备; 。 固件仿真模块,主要模拟p r o m ,包含系统加载和诊断模块; 它们之间的关系如下图所示: ;一_ i ;i i i r 一一1 图1 - 2模拟器结构示意图 3 北京邮电大学硕士研究生毕业论文 第一章绪论 配置工具负责将用户输入的配置信息收集起来,并存放在配置文件脚本中。当模 拟系统启动时,首先开始执行的是固件模拟器。固件模拟器分析配置脚本,将分析后 得到的配置数据结构传递给即将启动的操作系统。 操作系统在固件模拟建立的运行环境中运行,就象在真实环境中执行一样,它并 不知道自己是在一个模拟的软环境当中执行。c p u ,内存,甚至虚拟存储,缓存还有 外设,都象真正的设备那样对操作系统的执行做出反应。作到这一点的要求是:c p u 模拟器( m u t o ) 能够忠实于c p u 规范地解释每一条机器码,保证执行的顺序与在 真实的硬件环境中执行的顺序一致;总线和外设能够对操作做预期的反应;最后, 性能也是虚拟环境能获得有效使用的必要条件,这需要在完全模拟和功能模拟之间作 出折中选择。 现在对于模拟器的主要部分实现作一简单介绍: 1 2 1m u t o - - - c p u 模拟看 为了保证模拟器性能,c p u 模拟器m u t o 并不是一对一实现c p u 的规范。如果 实现了缓存模块和流水线机制,则模拟效果是不能令人满意的。我们的目标是让嵌入 式系统开发用户能够使用我们的系统尽早看到高层软件在虚拟系统上产生的结果,并 进行有效的结果分析和排错。而不是对怎么作到这一点的进行深入研究,因此,我们 实现的是功能性模拟,而不是结构模拟。 c p u 模拟器并不做精确的时间模拟,各个指令的执行时间与物理c p u 上相同指 令的执行时间并不保证有精确的比例关系,例如,浮点除法指令的执行时间也许并不 一定耗费象在目标机上那样多的时间周期,假如目标机没有浮点运算单元的话。但基 本上虚拟机上指令执行时间多少反映了宿主机上指令执行时间。 1 2 2配置模块 配置工具实现了配置界面和配置脚本命令,体现了系统灵活配置的能力。配置界 面接收用户提交的配置参数,并写入脚本文件,供固件模块读取。 配置模块的实现主要是用户界面和脚本文件的设计: 脚本文件的格式可以采用x m l ,也可以为了满足用户自己编写配置命令脚本的 需求而自定义专用语言。 用户界面完成对用户输入参数的语法语义分析,保证脚本文件的正确性。考虑到 产品的可移植性,可以采用g t k 或者q t 实现,并使用界面脚本生成和设计工具, 如g l a d e ,减少开发工作量,减少错误,提高可维护性。 4 北京邮电大学硕士研究生毕业论文第一章绪论 1 2 3f o b ( f l a s ho p e nb o o t ) 一固件模块 固件模块的主要功能是在操作系统执行前设置虚拟机运行环境,f o b 从配置脚 本获得当前虚拟机的配置参数并进行分析,检查可能的资源冲突,然后把资源参数保 存在一个数据结构当中,以便传递给即将启动的操作系统。 f o b 实际上模拟的是只读存储器,特殊性在于这个设备在操作系统启动之前就 必须存在,并能够完成真实环境中固件所不能也无须完成的工作一创建虚拟机环境, 包括加载c p u ,内存和外设,在真实环境中,这些物理模块是先天存在的。因此它 所模拟的存储设备就不仅是一个数组,而是一个复杂的程序,能创建出整个虚拟机, 并安排好软件执行环境( 这是传统固件的任务) ,并最后把执行引领到操作系统。 它需要同时做几项任务: 。f l a s h 功能。 。完成系统初始启动的功能。 。读取配置文件,分析并填充到c p u 模拟器容器中。 。探测主机环境中的设备树,以便和用户输入配置匹配。 1 2 4外设模块 外设模块是一个有多种设备构成的集合,该集合包括显示设备,字符设备,网络 设备,存储设备等。 外设模块的实现,是使得操作系统能够正常访问这些模块所代表的外设,这些外 设模块实现的是对相关硬件的模拟。例如,串口驱动程序向波特率计算寄存器设置一 个值,那串口模块必须模拟寄存器的实现,不论具体方式如何实现。 模拟实现方式有很多,一种方式是哑方式,即不存在一个真实的串口,由模拟的 硬件模块来回复驱动程序的操作请求,这种设备称为“桩”设备;另一种方式是把寄 存器的读写请求通过中间层映射到具体的物理设备,具体使用何种方式取决于具体设 备。 实现外设模块和传统的系统编程不同,在系统编程情况下,外设实体已经存在, 需要实现的是驱动程序;而在模拟器情况下,外设模块的驱动程序已经存在,我们要 实现的是设备实体,即模拟硬件。 外设模块需要被实现为可动态加载的独立线程,这样可以节省启动系统消耗和内 存代码空间,也可以实现外设模块的灵活配置,c p u 模拟器和外设模块模拟部分的 接口应当独立于具体设备,从而实现灵活的添加各种新的外设。 5 北京邮电大学硕士研究生毕业论文 第一章绪论 1 3主要研究内容 在嵌入式设备的各种外设中,串口和网卡是其中相对应用比较普遍和比较重要的 设备,在这个项目中,它们也起着重要的作用,本论文主要探讨这两种外设的模拟。 1 4本文的组织与结构 本文的主要内容是关于全系统模拟器中模拟串口和网卡设计和实现。本文按如下 方式组织内容: 第一章对论文的项目背景,模拟器软件的基本情况,全系统模拟器的组成和实现 进行了简单的介绍,并指出了论文的主要内容。 第二章分析了模拟串口和网卡的设计要求,以便读者更好的理解后续的章节。 第三章本章对模拟串口设计和实现进行详细介绍。 第四章本章对模拟网卡设计和实现进行详细介绍。 第五章对外设模块的动态装载及实现进行了详细阐述。 第六章对交叉编译所必须的交叉编译工具链的生成作了详细介绍 6 北京邮电大学硕士研究生毕业论文第二章模拟串口与同卡的设计需求 第二章模拟串口与网卡的设计需求 2 1外设模拟综述 2 1 1 一般操作系统具体外部设备管理 一般主流操作系统对硬件管理的实现,除了c p u ,内存和少量其它实体外,基 本都通过设备相关代码即设备驱动程序管理。设备驱动程序是对设备处理的抽象,它 们一般集成在操作系统内核,这样不同的应用程序可以共享这些代码。应用程序对设 备的访问要通过某种统一的系统调用接口,一般是类似文件操作的调用传递给设备驱 动程序,由设备驱动程序执行相关的设备相关代码。 图2 1 显示了一般操作系统对具体外部设备的管理。 毒 应用层 内核层 硬件层 图2 - 1 操作系统具体硬件设备管理示意图 2 1 2 全系统模拟器模拟外部设备管理 在全系统模拟器中,当应用程序被装载器载入模拟器时,它对具体硬件的访问被 模拟器加载的目标系统的设备驱动转化为对相应寄存器的操作指令后,由模拟器 m u t o 模块转化为对模拟设备模块相关函数的调用。 7 北京邮电大学硕上研究生毕业论文第二章模拟串口与网卡的设计需求 图2 2 显示了全系统模拟器对模拟外部设备的管理。 应用层 器层 图2 - 2 模拟器模拟硬件设备管理示意图 对于模拟器而言,它在设备驱动程序和模拟硬件之间做适配的功能,硬件设备可 以看作是寄存器,中断和自身行为逻辑的集合体,只要虚拟设备正确模拟寄存器,中 断和自身行为逻辑,那么对于设备驱动程序来说,它们和真实硬件就没什么差别。而 检验模拟硬件的标准,就是使得设备驱动程序可以不加修改的在模拟器上运行。 硬件自身行为逻辑的模拟是渗透在寄存器模拟和中断模拟当中的,硬件自身行为 逻辑包含了寄存器之间操作的相互联系以及相关中断的处理,能否处理好硬件自身逻 辑的模拟是能否模拟好外部设备的关键。 后面的章节介绍一下模拟串口和网佧的功能需求。 2 2模拟串口的设计需求 2 2 1概述 在嵌入式系统中,串1 :3 完成c p u 和串口连接设备的串并数据的转换,它的主要 8 北京邮电大学硕士研究生毕业论文第二章模拟串口与网卡的设计需求 应用方式有; 1 ) 下载功能:b o o tl o a d e r 通过串口下载宿主机上的目标机内核映像和根文件系 统等,以及通过串口进行i o 通信:输出打印信息到串口,从串口读取用户 控制字符等。 由于模拟器和宿主机共存于同一个系统,这个功能就没有实现的意义了。 2 ) 调试功能:宿主机通过串口与目标机嵌入式系统相连,接收从嵌入式系统发 来的调试信息并向嵌入式系统发送调试指令。只要实现模拟串口的基本功能 的模拟就可以实现调试功能。 控制台功能:这是此模拟串口的主要功能,下面做详细介绍。 2 2 2 串口控制台 在模拟器上加载的目标机操作系统,不像我们平常使用的宿主机上的操作系统, 有显示器和键盘可以与之交互,我们要想通过s h e h 操作目标机操作系统,在不模拟 l c d 和键盘的情况下,可以采用通过串口作为传递数据的方式,帮助监控系统的运 行状态,例如:内核的打印消息、其它的控制消息以及程序的运行状态和调试信息等 等,也可以操作和控制目标机操作系统。 l i n u x 支持串口作为系统控制台,它通过以下方式实现把控制台重定向到串口: 在系统启动命令中添加( 以下以c o m l 为例子) : a p p e n d = ”r o o t = d e v h d a 2c o n s o l e = t t y s 0 ,9 6 0 0c o n s o l e - - t t y s 0 ” 在e t c i n i t t a b 中添加: s 0 :1 2 3 4 5 :r e s p a w n :s b i n m g e t t y r - s9 6 0 0t t y s o 使得可以通过串口登录到虚拟机目 标系统。 如果希望在作为控制台的串口上看到更多的信息,可以修改目标机系统的日志 l o gl e v e l :群e c h o8 p r o c s y s k e r n e t p 血t k 2 2 3 p x a 2 7 x 芯片串口部分介绍 本项目中,模拟串口的原型设备来自1 n t e l 公司的基于x s c 蚰e :架构p x a 2 7 x 处理 器系列,p x a 2 7 x 是i n t e l 公司2 0 0 4 年4 月发布的性能极为强劲的,最高频率可达 6 2 4 m h z 的嵌入式处理器,可配合嵌入式l i n u x 或w i n c e 操作系统,在高端手机,智 能终端,手持娱乐设备等高端市场有广泛的应用。x s c a l e 核本身是s t r o n g h m 的一 个增强集,它与a r mv s t e 构架兼容,另外p x a 系列目前广泛应用于各类嵌入式系统 中,是市场主流的嵌入式微处理器系列。对其研究,既有一定的典型性,又有一定的 前瞻性。 9 北京邮电大学硕士研究生毕业论文第二章模拟串口与网卡的设计需求 下面我们简单介绍一下p x a 2 7 x 的串口部分。 p x a 2 7 0 中有三个u a r t 接口,分别叫f f u a r t 、b t u a r t 和s t u a r t ,可以 同时进行三个串口通讯。其中f f u a r t 是一个接口最齐全的实现了所有的u a r t 特 性的接口,另外两个接口都是f f u a r t 的精简版。对于模拟外设硬件来说,我们关 心的是能通过操作寄存器反映的功能实现。 p x a 2 7 x 跟项目相关的串口功能特性: “字节传送f i f o “字节接收f i f o 支持独立的接收和传送d m a 请求 - f i f o 支持三种操作方法:轮询,中断和d m a 多级中断控制 在项目中,我们实现了f f u a r t 的基本功能,即实现了1 6 5 5 0 标准的u a r t 接 口,及中断模式的f i f o 操作。 2 3模拟网卡的设计需求 2 3 1概述 模拟网卡有两个目的:一、现在很多应用程序都有网络功能,一块模拟网卡是少 不了的。二、通过f q p 可以把你的应用程序直接下载到虚拟机,而不用通过重新编译 内核方式来增加应用程序,可以省去不少麻烦。模拟器模拟的是网卡是s m s c 的 l a n 9 1 c l l l ,它是一款非p c i 的型的以态网控制器,片上集成了m a c 和p h y 功能,适 用于成本低的紧凑型终端。 模拟网卡的基本功能是通过模拟网卡的模拟,使得模拟器上的应用具有网络功 能,它包括两方面内容: 1 1 模拟网卡和模拟器c p u 相关模块的通信,只要实现网卡基本功能的模拟, 就可以实现。 2 1 模拟网卡和宿主机网卡的通信,下面做详细介绍: 2 3 2模拟罔卡和宿主机网卡的通信 模拟网卡要实现和宿主机网卡的通信要解决的主要问题是:模拟器运行在用户模 式,如何与位于宿主机内核模块的物理网卡的驱动程序通信来捕获和发送数据包。 在l i n u x 下一般有两种处理方式: 北京邮电大学硕士研究生毕业论文第二章模拟串口与网卡的设计需求 1 ) 利用l i n u x 2 4 内核以后自动支持的t u n t a p 内核模块,t u n t a p 虚拟网络设备 为用户空间程序提供了网络数据包的发送和接收能力。在l i n u x 内核中添加 了一个n l 町r a p 虚拟网络设备的驱动程序和一个与之相关联的字符设备 d e v n e t t u n ,字符设备t u n 作为用户空间和内核空间交换数据的接口。 2 ) 用户自己开发数据包捕获模块或利用类似u b p c a p 的包捕获接口,用来处理 物理网卡数据包和模拟器模拟网卡的通信 在项目现阶段,为了简化起见,暂时使用t u n t a p 的方式来实现模拟器模拟网卡 和宿主机网卡的通信 2 4小结 本章对全系统模拟器的外设模块管理方式作了简要论述,并对串口模拟的实际芯 片i n t e l 公司的p x a 2 7 x 进行了简要的介绍,同时说明了在模拟器项目中的模拟串口 和模拟网卡模块的功能需求作了一个综合的论述。后续的章节将具体论述模拟串口和 模拟网卡的设计和实现。 l l 北京邮电大学硕士研究生毕业论文 第三章模拟串口 3 1设计实现 第三章模拟串口 模拟串口模块利用模拟器的动态加载接口进行注册和卸载,作为模拟器的控制 台,利用伪终端技术和宿主机用户终端程序相连接。 为了提高运行效率,减少对系统资源的使用,串口作为一个外设模块以独立线程 方式运行。 下面首先介绍以下模拟串口模块的实现结构: 3 1 1实现结构 图3 - 1 模拟串口实现结构图 模拟串口在全系统模拟器的实现如图3 - 1 所示,模拟串1 3 作为用户控制台和上层 模块的连接部分,主要实现和上层模块,用户的双向通信。 1 ) 和上层模块的通信: 模拟串1 3 提供标准接1 2 1 :读写字节函数( w r i t e _ b y t e ( a d d r , d a t a ) r e a d _ b y t e ( a d d r , d a t a ) ) ,上层模块受中断驱动,当相应的中断事件发生时,上层模块利用标准接1 3 读写字节函数来驱动模拟串口去访问特定的寄存器,从而实现模拟串口和上层模块的 北京邮电大学硕士研究生毕业论文 第三章模拟串口 通信。 2 ) 和用户终端程序的通信: 模拟串口通过伪终端技术连接用户端终端程序,模拟串口的线程函数始终用 p s e l e c t 函数监视伪终端的主端和数据发送标志位,伪终端的从端连接用户端终端程 序,当伪终端的从端收到控制台用户的输入时,自动传到伪终端的主端,线程函数从 p s e l e c t 函数获得输入后放到相应的串口寄存器,同时对中断寄存器相应位进行操作; 当数据发送标志位置位时,模拟串口将数据写到伪终端的主端,用户终端程序自动从 伪终端的从端得到数据,从而实现了模拟串口和用户终端程序的通信。 下面介绍一下模拟串口模块的主要函数接口: 3 1 2 主要函数接口 模拟串口模块作为外设模块类的派生子类实现,它的对象方法和相关函数可以分 为以下几个部分: 幻对象方法 。 和上层模块的通信接口函数 u i n t 8 _ tr e a d _ b y t e ( a d d r _ tp a ) 负责上层模块从模拟串口读取寄存器数据。 v o i d w r i t e _ b y t e ( a d d r _ tp a , u i n t 8tv a l ) 负责上层模块向模拟串口的相应寄存器写数据。 f i f o 管理相关函数 v o i dr e s e l r x _ f i f o o 负责重置接收f i f o 缓冲区。 v o i dr e s e t t xf i f o o 负责重置传输f i f o 缓冲区。 b o o lf i f o _ u s e d 0 负责检查是否使用f i f o 缓冲区。 i n th u mo ff i f o ( i n th e a d , i n tt a i l ,i n ts i z c ) 负责计算f i f o 缓冲区里的字节数。 b o o lr x _ i n t _ t r i g g e r _ a l l o w e d o ; 负责检查f i f o 接收缓冲区的中断触发字节数是否有效。 b o o it x _ i n t _ t r i g g e r _ a l l o w e d o ; 负责检查f i f o 发送缓冲区的中断触发字节数是否有效。 跟中断相关的函数 北京邮电大学硕士研究生毕业论文 第三章模拟串口 v o i d1 x i n t _ t f i g g e r o ; 负责发布接收数据中断。 v o i dt x _ i n t _ t r i g g e t o ; 负责发布传输数据中断。 _ 跟调试追踪相关的函数 v o i ds e r i a l :t r a c e ( i n tf l e v e l ) 负责显示追踪信息 v o i ds e r i a l :d e b u g ( i n td l e v e l ) 负责显示调试信息 v o i ds e r i a l :s h o w 0 负责显示模拟串口寄存器信息。 2 1 相关函数 动态加载和卸载函数 s t a t i cv o i dc r e a t e _ m o d u l e ( s y s _ n o d e _ _ t s n d p ) 负责模拟串口模块的注册和启动模块的线程函数。 和用户终端程序的通信函数 v o i d s e r i a l _ t b r e a d ( v o i d + a r g ) 负责和用户终端程序的通信。 其中和上层模块的通信函数r e a d _ b y t e ( a d d r _ tp a ) 和w r i t e _ b y t e ( a d d r _ tp a , u i n t 8 _ tv a l ) ,以及s e r i a lt h r e a d ( v o i d a r g ) 是模拟串口自身运行逻辑的主要部分,是虚 拟逻辑能否正确运行的关键。 在和用户终端程序通信设计当中,我们利用了伪终端技术,下面具体介绍伪 终端技术。 3 l 3伪终端技术 3 1 3 1 概述 伪终端( p s e u d ot e r m i n a l ) 不是一个真正的终端,它被用来提供终端的语义,通 过伪终端行规程我们能够在终端上设置特殊字符( 退格、行删除、中断等) ,使得应 用程序以为是在真正的终端上运行。 伪终端是成对的逻辑设备,它们与实际物理设备并不直接相关。对一个逻辑设备 的操作反映在该逻辑终端设备对的另一个上面,这种特性和从属终端上的行规程语义 是伪终端的最突出特点。 1 4 北京邮电大学硕士研究生毕业论文 图3 2 是进程使用伪终端的典型策略。 v 第三章模拟串口 图3 - 2 进程使用伪终端的典型策略 使用伪终端的典型方法: 1 通常一个进程打开伪终端主设备然后调用f o r k 。子进程建立了一个新的会话, 打开一个相应的伪终端从设备,将它复制成标准输入,标准输出和标准出错,然后调 用懿c c 。伪终端从设备成为子进程的控制终端。 2 对于伪终端从设备之上的用户进程来说,其标准输入、标准输出和标准出错都 能当作终端设备使用。用户可以使用系统的终端控制函数来对伪终端进行操作,但是 因为在伪终端从设备之下并没有真正的设备,无意义的函数调用( 如改变波特率,发 送中断符、设置奇偶校验等) 将被忽略。 3 任何写到伪终端主设备的输入都会作为在从设备端的输入,反之亦然。事实上 所有从设备端的输入都来自于主设备上的用户进程。这看起来就象一个流管道,但从 设备上的终端行规程使我们拥有普通管道之外的其他处理能力。正是伪终端具有的程 序管道能力,以及从终端上独有的终端行规程语义约束成为我们选择它作为串口控制 北京邮电大学硕士研究生毕业论文 第三章模拟串口 台的实现的原因。 不同的类u i n x 系统实现伪终端的方式是不同的,因而具体函数接口也有差异。 考虑到程序的可移植性,下面有必要介绍伪终端在一些常见的类u n i x 系统上的实现, 重点是在l i n u x 系统上。 s o l a r i s 系统 在s o l a r i s 系统,伪终端使用基于流子系统的方式构造,如图3 3 所示。 l 一一j 图3 - 3s o l a r is 伪终端的实现策略 内核 图中p c k t 和t t m p a t 模块是可选的,它们提供特定语义的伪终端,而l d t e r m 和p t e m 流模块提供伪终端行规程。 误错准 异q。i l 北京邮电大学硕士研究生毕业论文 第三章模拟串口 s o l a r i s 上获得伪终端的方式: p t y m a s t e r = o p e n ( ”d e v p t m x ”o _ r d w r ) ; 孕a n t p t ( p t y m a s t e r ) ; 允许应用程序访问伪终端从端。 u n l o c k p t ( p t y m a s t c r ) ; 清楚伪终端从端的锁标志。 p t r = p t s n a m e ( p t y m a s t e r ) ; 获得伪终端从端的路径名,得到的格式形式是d e v p t s n n n 。 a 1 打开伪终端从端 p t y s l a v e = o p e n ( p t s _ n a m e ,o _ r d w r ) ; 检测是否存在以下的流模块,s o l a r i s 可以让管理员配置打开特定设备时自动载入 相关模块列表。如果没有的话: i o c t l ( f d s ,l j ,u s h ,”p t e m ”) ; 在伪终端从端流中加入伪终端仿真模块。 i o c t l ( f d s ,】j u s h ,“l d t e r m ”) ; 在伪终端从端流中加入终端行规程模块。 i o c t l ( f d s ,l p u s h “t t c o m p a t ”) ; 兼容以前的v 7 ,4 b s d ,a n dx e n i x 的i o c t l 设置。s v r 4 系统中,如果调用者是一个 还没有控制终端的会话,o p e n 就会分配一个从设备作为控制终端。如果我们不希望 函数自动做这件事,可以在调用时指明0n o c i t y 标志。 在基于b s d 平台下获得伪终端的方式: 在b s d 平台下伪终端的命名规则是:主设备的名称是:d e v p t y x y ;从设备的名称 :是d e v t t y x y ,x , y 取值如下,一对伪终端设备的主从设备名称的x , y 相同。 x ;p ,q ,r , s ,t , u , v , w , x ,y , z ,a , b ,c ,d ,e y :o ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,a , b ,c , d ,e ,f 第一个伪终端主设备名称是d c v p t y p o ,第二个伪终端主设备名称是d e v p t y p l ,直 到最后一个是d e v p t y e f 。 第一个伪终端主设备名称是d c v n y p 0 ,第二个伪终端主设备名称是d e v h y p l ,直 到最后一个是d e v t t y e f 。 a ) 打开伪终端主端 1 7 北京邮电大学硕士研究生毕业论文第三章模拟串口 s t r c p y ( p t m _ n a m e 。d e v p t y x y 8 ) f o rr p t r l = p q r s t u v w x y z p q r s t 4 p t m _ n a m e 8 = * p t r l : f o r ( p t r 2 = 0 1 2 3 4 5 6 7 8 9 a b c d e f ” p t m _ n a m e 9 = * p t r 2 : i f ( ( p t y m a s t e r = o p e n ( p t m

温馨提示

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

评论

0/150

提交评论