(信号与信息处理专业论文)基于or1200的软件开发平台设计.pdf_第1页
(信号与信息处理专业论文)基于or1200的软件开发平台设计.pdf_第2页
(信号与信息处理专业论文)基于or1200的软件开发平台设计.pdf_第3页
(信号与信息处理专业论文)基于or1200的软件开发平台设计.pdf_第4页
(信号与信息处理专业论文)基于or1200的软件开发平台设计.pdf_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

山东大学硕士学位论文 中文摘要 o p e n r i s c 是基于g n u 通用公共授权协议的开源精简指令集处理器【l j ,这是 一个由o p e n c o r e s 组织提供的处理器家族。在i p 核价格昂贵、技术保密的情况下, 该系列处理器软核的一大特点就是完全开放源码和免费。 o r l 2 0 0 作为o p e n r i s c 家族中比较新的一员,是一款3 2 位的标量精简指令 集处理器,具有哈佛结构、5 级整数流水线、支持虚拟内存和高速缓存、带有数字 信号处理器的功能,并且拥有完整的开发工具链,因其技术成熟、性能良好、可 移植性强和免费开源的特性,已经逐渐被用于嵌入式s o c 的开发嘲【3 】。 本课题的目的是针对o r l 2 0 0 这一处理器内核,为“u h f 多协议r f i d 读写器 基带信号处理s o c 芯片 建立软件开发平台,主要研究内容有:由编译流程、调 试原理等嵌入式软件开发平台的设计原理提出s o c 系统专用集成软件开发平台的 设计框架;外围设备功能寄存器设计和自定义指令集的设计;o r l 2 0 0 的机器特征 在g n u 特别是g c c 工具上的体现方式;在包含o r l 2 0 0 平台特性的g n u 工具集 的基础上进行集成软件开发平台设计的实现方法。 本课题设计的集成软件开发平台包括用于工程管理的文档管理器、实现源代 码编写和显示处理的代码编辑器、用于源代码编译处理并生成o r l 2 0 0 平台支持文 件的编译器和调试器、用于编译调试仿真信息查看及内存地址查看的信息查看窗 口、能够模拟o r l 2 0 0 机器行为的仿真器、用于目标文件格式转换以被底层平台识 别的目标文件处理等部分,实现了以o r l 2 0 0 处理器所在的s o c 系统为目标机的 交叉开发功能。 关键字:o r l 2 0 0g n ug c c 交叉编译环境软件开发平台 山东大学硕士学位论文 a b s t r a c t o p e n r i s ci sas e r i e so fo p e ns o u r c er i s ep r o c e s s o r sb a s e do ng t lh i ( g e n e r a l p u b l i cl i c e n s e ) s u p p l i e db yo p e n c o r e s w h i l ei pc o r e sa r ee x p e n s i v ea n dp r i v a c y t o d a y , o p e n r i s cp r o v i d e st h eu s e r sw i t hf r e ea n do p e ns o u r c ec o d e s a n dt h i si st h e m o s ta t t r a c t i v ef e a t u r eo ft h eo p e n r i s c o r l2 0 0i st h el a t e rm e m b e ro fo p e n r i s c - f a m i l ya sa3 2 b i ts c a l a rr i s cp r o c e s s o r , w i t l lh a r v a r ds t r u c t u r e ,5 - l e v e lp i p e l i n e ,s u p p o r t i n gm m ua n dc a c h e ,a n dt h eb a s i c f u n c t i o n so fd s ef o ri t sm a t u r et e c h n o l o g y , g o o dp e r f o r m a n c e ,p o r t a b i l i t y , i ti s b e c o m i n gw e l c o m ei nt h ee m b e d d e ds y s t e md e s i g n t h eg o a lo ft h i ss u b j e c ti st od e s i g nap a r t i c u l a ri n t e g r a t e ds o f t w a r ed e v e l o p m e n t e n v i r o n m e n tf o rt h em u l t i - p r o t o c o lu h fr f i dr e a d e rb a s e b a n ds i g n a lp r o c e s s i n g s o cs y s t e m t h er e s e a r c hd e t a i l si n c l u d e :t og i v eo u tt h ed e s i g ns c h e m eo fs o f t w a r e d e v e l o p m e n te n v i r o n m e n tb ys t u d y i n gb a s i cp r i n c i p l e s s u c ha s c o m p i l i n g a n d d e b u g g i n gt h e o r y ;t od e s i g nu s e r - d e f i n e dr e g i s t e r sa n di n s t r u c t i o ns e t sf o rp e r i p h e r a l ;t o s t u d yt h er e a l i z a t i o no ft h eo r l 2 0 0 sm a c h i n ec h a r a c t e rd e s c r i p t i o no ng n ue s p e c i a l l y g c c ;t h em e t h o dt oi m p l e m e n tt h ei n t e g r a t e ds o f t w a r ed e v e l o p m e n tp l a t f o r m 、杭t h g n ut o o l si n c l u d i n go r l 2 0 0 si n f o r m a t i o n t h i sp l a t f o r mh a sr e a l i z e dt h ec r o s s - c o m p i l a t i o nw i t l lo r l2 0 0s o ca st h et a r g e t i t i n c l u d e su n i t sa sb e l o w :d o c u m e n tm a n a g e rw h i c hi su s e dt ob u i l dp r o j e c t sa n dm a n a g e t h ef i l e si np r o j e c t s ,e d i t o rf o rs o u r c e - c o d e s e d i t i n g ,c o m p i l e rt h a tb eu s e dt oc o m p i l e t h es o u r c e sa n do u t p u tf i l e s 诵t l lt a r g e t - s u p p o r t e df o r m ,d e b u g g e rt h a tc a nb eu s e dt o d e b u gt h eo u t p u tf i l e s ,w a t c hw i n d o w st h a ts h o wt h ec o m p i l i n g ,d e b u g g i n ga n d s i m u l a t i n gm e s s a g e s ,s i m u l a t o rw h i c hc a ns i m u l a t eo r l 2 0 0 sm a c h i n eb e h a v i o r , a n d t a r g e tf i l e sp r o c e s s o rw h i c hc a nt r a n s f e rf i l e sb e t w e e nd i f f e r e n tf o r m s 2 k e yw o r d s :o r l 2 0 0 ,c r o s s - c o m p i l a t i o n , g n u ,g - c c ,s o f t w a r ed e v e l o p m e n tp l a t f o r m 山东大学硕士学位论文 1 1 课题来源 第一章绪论 本课题来源于一项由山东大学信息学院射频识别工程中心承担的名为“u h f 多协议r f i d 读写器基带信号处理s o c 芯片设计 的山东省科技攻关项目( 项目 编号2 0 0 9 g g l 0 0 0 1 0 0 7 ) 。该项目的目标是设计一款带有基带信号处理功能的 r f i d 读写器s o c 芯片,涉及到r f i d 技术、s o c 芯片设计和嵌入式应用系统 开发等方面。 r f i d 技术,即无线射频识别技术,是一种新兴的现代通信与识别技术,又被 称为电子标签。读写器是r f i d 技术中很重要的一部分,目前,国内对于r f i d 读 写器的研究历史还不是很长,读写器芯片这样的核心技术的研究更是凤毛麟角。 本项目旨在设计一款具有自主知识产权的r f i d 读写器基带芯片,研究提高读写器 性能的新方法,响应国家信息化建设的号召。 本文所研究的课题是该科技攻关项目中“开发环境平台建设”的一部分,主 要目标是以s o c 系统的微处理器o r l 2 0 0 为核心,建立一个适用于该片上系统的 专用软件开发平台。 多协议r f i d 读写器基带信号处理单元的s o c 设计如图1 1 所示,采用a l t e m 提供的d e 2 1 1 5 作为开发板,其处理器内核采用o p e n e o r e s 组织提供的o p e n r i s c 1 2 0 0 软核,操作系统采用嵌入式l i n u x 操作系统,外围扩展有u a r t1 6 5 5 0i p 核, g p i oi p 核和w i s h b o n ec o n m a x 总线i p 核等。 3 山东大学硕士学位论文 4 一-j 图1 - 1s o c 总体设计框图 图1 - 2d e 2 1 1 5 开发板 山东大学硕士学位论文 1 2o p e n r i s c 系列 1 2 1 刚s c 架构 r i s c ,即精简指令集计算机,是与c i s c ( 复杂指令集计算机) 相对的一个处 理器体系结构。r i s c 的显著特点是指令集中最常用的指令被设计为能在高时钟频 率下单周期执行,使得指令执行简单而高效。r i s c 侧重于提高软件执行的效率而 c i s c 更侧重于硬件执行指令的功能性【5 1 。 除此之外,r i s c 还有以下特点【6 l : 1 ) 简单的指令设计,易于实现流水线; 2 ) r i s c 架构的微处理器,其通用寄存器结构都一致,可以用在任何场合, 大大简化了编译器的设计; 3 ) r i s c 架构的微处理器,大都具有简单的寻址方式,数据处理大部分都在 寄存器中实现,复杂点的指令,则先对存储单元进行存取操作或者算术与或; 4 ) r i s c 架构的微处理器,其硬件数据类型极少,功能依赖于软件,这是因 为软件比起硬件来具有更高的灵活性和智能性。 1 2 2o p e n r i s c 概述 o p e n r i s c 7 】是由o p e n c o r e s 组织提供的精简指令集计算机( r i s c ) 处理器内 核家族。最显著的特点是完全开放源码和免费。另外,o p e n r i s c 的主要特征还有: 1 ) 3 2 6 4 位的s c d s p 架构; 2 ) 简单、低功耗要求; 3 ) 良好的可扩展性; 4 ) 用v e r i l o gh d l 语言实现的基于该系列架构的寄存器传输级( r t l ) 描述; 5 ) 具有简单、统一长度的指令格式和丰富的指令集扩展; 6 ) 在寄存器设置、高速缓存和存储管理单元以及例外处理中,支持快速上下 文切换; 7 ) 具有完整的包括开源的软件开发工具,c p u 仿真模型,操作系统和函数库 等在内的工具链。 山东大学硕士学位论文 1 2 30 r 12 0 0 简介 o r l 2 0 0 是o p e n r i s c 系列处理器软核的一款3 2 位的实现【引,它是一种标量 r i s c ,具有哈佛结构、5 级整数流水线、快速准确的内部中断响应、内存管理单 元( m m u ) 网和高速缓存( c a c h e ) ,带有基本的d s p 功能,支持用户自定义指令, 同时其外部数据和地址总线接口符合w i s h b o n e 标斛1 0 1 。在s o c 系统设计中, o r l 2 0 0 处理器作为w i s h b o n e 总线上的主设备,来实现对多协议读写器基带信号 处理单元的控制。 3 2 位的o r l 2 0 0 ,其寻址空间即为4 g ,提供了寄存器间接寻址方式和p c 相 对寻址两种寻址方式,提供了3 2 组特殊寄存器和3 2 个3 2 位的通用寄存器用于寻址。 1 3 课题研究的内容和意义 本课题旨在针对o r l 2 0 0 处理器核心,设计一个超高频r f i d 读写器基带处理 信号s o c 芯片的专用软件开发环境,为实现这一设计目标,本课题的主要研究内 容包括以下几个方面。 1 ) 根据嵌入式软件开发的基本流程、基本原理和芯片组成,提出本软件开发 平台的设计方案; 2 ) 研究o p e n r i s c1 2 0 0 体系结构和汇编指令集、o p e n r i s c1 2 0 0 寄存器及 o p e n r i s c 机器特征在交叉编译工具集中的移植: 3 ) 基于读写器芯片结构与功能设计自定义指令集、专用的软件环境仿真器; 4 ) 设计实现基于o r l 2 0 0 的u h f 多协议r f i d 读写器基带信号处理s o c 芯片 专用软件开发环境1 1 。 攻关项目读写器芯片的设计采用全新的、具有独立的自主知识产权的设计方 案,在提高读写器性能、降低生产成本的基础上,填补了国内在r f i d 超高频读写 器方面的空白,打破了核心技术被国外完全垄断的局面。 同时,嵌入式系统已经广泛用于各个领域【1 2 1 ,嵌入式处理器已经告别过去的8 位、1 6 位,3 2 位的处理器已经成为主流,并且6 4 位的处理器已经开始走上嵌入 式处理器的舞台。随着多核这一概念的提出,多核的嵌入式处理器也逐渐出现。 在这样的形势下,研究基于o r l 2 0 0 处理器架构的s o c 系统软件开发平台【1 3 】为进 6 山东大学硕士学位论文 行基于多核处理器的开发平台建设打下了良好的基础。 1 4 本文章节安排 本文包括对嵌入式软件编译原理、调试原理的分析、g n u 工具链的研究, o r l 2 0 0 指令集移植以及专用软件开发平台的设计等,分为七章。 第一章概括介绍了本课题的背景来源、o p e n r i s c 体系结构、课题研究的内容 与意义: 第二章详细介绍并分析了常用的交叉编译工具- - - g n u ; 第三章从编译原理等入手分析本项目软件开发平台的设计基础,提出了软件 开发平台的设计方案; 第四章定义了系统外围设备寄存器和读写操作指令,针对本s o c 平台研究并 改进了o r l 2 0 0 的机器特征( 指令集、寄存器等特性) 在g n u 工具链中的实现; 第五章主要介绍了以o r l 2 0 0 为处理器的s o c 系统专用集成软件开发平台的 设计与实现过程; 第六章是对第五章设计的软件开发平台功能的验证方案与验证结果; 第七章总结了课题研究的成果,并提出了下一步的研究目标。 7 山东大学硕士学位论文 2 1g n u 工具链 第二章常用的交叉开发工具 g n u 工具链【1 4 】包括g c c ( g n uc o m p l i e rc o l l e c t i o n ) 、g l i b c ( g n ul i b c ) 、g n u 、 b i n u t i l s 。其中g c c 是一个编译器集合,它的基本操作驱动预处理、编译、汇编和 链接的过程;g l i b e 是l i n u x 最底层的应用程序开发接口,封装了l i n u x 操作系统 所提供的系统服务;g n ub i n u t i l s 用来编译、测试和分析软件。 2 1 1g c c 编译器 g c c 是一个功能强大的编译工具集【1 5 1 ,能编译c ,c + + ,a d a ,o b j e c t c 和j a v a 等多种高级程序设计语言;同时具有良好的机器接口兼容性,可以支持多种平台, 可移植性非常好。在编译器中,有前端和后端的概念,其中前端即是从读入源语 言到生成中间代码这一部分,后端则是由中间代码到目标语言这一部分。在g c c 中,编译系统【1 明的模式为“语言接口优化接口机器接口”。扩充前端的接口为语法 树,扩充后端的接口为机器描述。g c c 使用寄存器转换语言r t l 来描述机器模型。 g c c 的前端使用树【1 7 1 的形式来描述程序。前端分析器分析处理输入的源程序, 将源语言通过直接或者间接的方式转换成g e n r i s c 树,再通过g i m p l e 产生器 产生g i m p l e 树,经过优化器,转换为r t l 表示,这样,经过前端处理、r t l 级 的中间语言产生了。 f 然卜g 絮北 分析器 7 树 一筹戮卜甜穿 1 产生器r 树 图2 - 1g c c 前端树的描述形式 g c c 的后端是目标机器语言的产生。g c c 提供了标准的c p u 指令描述信息。 后端处理依赖于用c p u 平台指令实现标准指令描述的r t l 模板。 8 山东大学硕士学位论文 g c c 的机器描述有三部分,一个是指令模式文件m d ,一个是带有宏定义的c 头文件h ,还有一个用于补充这两个文件机器描述内容的c 文件。m d 中定义了r t l 指令模板对目标机器汇编指令的映射,h 文件定义了目标机器的寄存器、内存编 址等。 2 1 2b in u t 1s 工具 b i n u t i l s 工到1 8 1 是包括汇编器、连接器等在内的一组二进制工具集,它包含的 工具有使用二进制描述子( b f d ) 做底层的应用程序,也有使用o p c o d e s 操作码库 进行反汇编的工具。在b i n u t i l s 2 1 6 及以后的版本中已经实现了对o r 3 2 体系的支 持。b i n u t i l s 各工具的作用如下: a s ,即汇编器,用来编译g c c 输出的汇编文件; l d ,即连接器,用来连接目标文件和归档文件,链接符号引用,对数据进行重 定位,通常为编译程序的最后一步; a d d 2 1 i n e ,由程序地址得到该地址所对应的源代码的文件名和行号; a r ,创建、修改归档文件,以及从归档文件中提取文件; n n ! l ,列出目标文件中的符号及符号对应的地址; g p r o f , 显示程序调用段的各种数据; c + + f l i t ,过滤c + + 和j a v a 符号,防止重载函数冲突; o b j c o p y ,拷贝目标文件的内容,进行文件格式的转换; o b j d u m p ,显示目标文件的相关信息; r a n l i b ,产生归档文件索引,并将其保存在这个归档文件中; r e a d e l f , 显示可执行文件( e l f 格式) 的信息; s i z e ,列出目标文件的段,以及总体大小; s t r i n g s ,显示某个文件的可打印字符串; s t r i p ,删除目标文件中的特殊符号。 在汇编与反汇编时,目标文件中的二进制码与汇编码需要相互转换。二进制 码与汇编指令之间的映射,以及与指令相关的函数与结构经过编译后生成 o p c o d e s 库。 9 山东大学硕士学位论文 2 1 3g d b 调试工具 g d b 调试工具是l i n u x 的命令行调试工具,由用户接口、符号处理和目标系 统处理3 个主要部分组成。用户接口分析用户调试命令的命令行参数,转到具体 的例程执行调试操作;符号处理由对象文件阅读器、调试信息解释器、符号表管 理、源语言分析、类型和数据打印等组成;目标系统处理由执行控制、堆栈帧分 析和物理目标处理几个部分组成,可以认为是位和字节处理。 因为b i n u t i l s 工具中含有与硬件平台相关的信息,g d b 不单独处理硬件平台信 息。 2 1 4 中间语言r t l 寄存器转换语言为g c c 的中间语言形式,用描述指令行为的代数形式逐条描 述了待输出的指令。r t l 是一种对实际的硬件体系结构进行抽象并与硬件平台无 关的语言,它连接g c c 的前端和后端,提供了二者的接口,在内部连接为双向连 接列表,i n s n 即为其中的一条双向连接列表语句。 r t l 2 0 1 的常用语法有常数表达式类型、寄存器或者内存访问类型、算术运算 表达式类型、由i n s n 组成双向链的r t l 指令、机器模式等。 r t l 有两种形式: 1 ) 内部形式,是c 结构的指针链接,由指向结构的指针结构构成。 2 ) 外部正文形式,是l i s p 文本的括号嵌套,正文形式用于机器描述和r t l 调 试输出。 在g c c 中,描述目标机模型的r t l 为外部正文形式。 2 2g n u 工具的用法 2 2 1f i g c 的编译选项 g c c 有1 0 0 多个编译选项2 1 1 ,基本用法为g e e 【参数】【文件名】,其常用的选项 如表2 - 1 所示。 l o 山东大学硕士学位论文 表2 - 1g c c 的编译选项 选项说明 - c 只编译并生成目标文件不链接 d i a c r o 以字符串“1 ”定义m a c r o 宏 d m a c r o = d e f n 以字符串“d e f n ”定义m a c r o 宏 s 只对文件进行编译但不汇编链接 e 只进行预处理,不编译汇编链接 - g生成调试信息,包含在可执行文件中 - i d l r e c t o r y 指定额外的头文件搜索路径d i r e c t o r y l d i r e c t o r y 指定额外的函数库搜索路径d i r e c t o r y 1 l i b r a i t y 连接时搜索指定的函数库l i b r a r y 0 f i l e 生成指定的输出文件 o 优化生成的代码 s t a t i c 禁止使用共享连接,链接静态库 - w 不生成任何警告信息 w 生成所有警告信息,也可用w w a m i n g 来标记指定的警告 - w e n 0 r 把所有的警告转换为错误,以在警告发生时终止编译 一v 显示在编译过程中用到的每一步命令 从编译选项的角度来看使用g c c 来编译程序瞄1 的过程如图2 2 。 g c c 。eg c c - sg c c cg c c - o 预编译 编译 汇编链接 处理头文件和 预编译语句 2 2 2g d b 调试工具的用法 生成生成 汇编代码目标文件 图2 2g c c 的编译流程 生成 可执行程序 在g c c 中有一个选项g c c - g g d b 是在可执行文件中生成只有g d b 才能识别的 调试信息的一条命令。在g d b 中,有一个用法是g d b 可执行文件名,这个可执行 山东大学硕士学位论文 文件就是包含有调试信息的可执行文件,这条命令将对该文件进行调试。 g d b 中命令分为很多类,使用h e l p 可以看到g d b 的命令例种类。 琴g d b ) h e i p l i s to fth s s e so fc o m m a n d s2 ; l h l i a s e s rl i a s e so fo t h e rc o 懒n d s 知r c a k p oi n t s - - f l a k l n gp r o g r a ms t o pa tc e r t a i np oi n t s d a t a - 一e x a m i ni n gd a ta ,l i e s 一$ p e c i f y i n ga n de x a n i n i n gf l i e s i n t e r n a l s - 一一矗i n t e n 矗n c tc o n 枷a n d s b h 霉c u 确一一o b s c u r ef e a t u r e s u n n i n g 一一r u n n i n gt h ep r o g r a m 每t a c k 一一e x a n i n i n 9t h es t a c k b t a t u s 一s t a t u si n q u i r i e s u p p o r t s u p p o v tf a ci l i t i e s 声r a c e p o i n t s - 。t r a c i n g o fp r o g r me x e c u t i o nw i t h o u ts t o p p i n gt h ep r o g r 蚋 h s e r - d e fi n e d - 一u s e r - d e f i n e dc o m m a n d s 图2 - 3g d b 的命令种类 可以看出g d b 命令可以分为a l i a s e s ,b r e a k p o i n t s ,d a t a ,f i l e s ,i n t e m a l s ,o b s o u r c e , r u n n i n g ,s t a c k ,s t a t u s ,s u p p o r t ,t r a c e p o i n t s ,u s e r - d e f i n e d 等几类。每一类包含有 很多命令项,g d b 调试常用的命令如下。 l i s t ,显示程序代码,常用格式如表2 2 。 表2 - 2l i s t 指令的格式与作用 格式作用 l i s t 显示从上次调用l i s t 类命令开始往后的1 0 行程序代码 l i s t 显示从上次调用l i s t 类命令开始往前的l o 行程序代码 l i s t n 显示第n 行前后的总共1 0 行代码 l i s tf u n c 显不凼数f u n e 前后的l o 行代码 f o r w a r d s e a r c h 字符串,r e v e r s e s e a r c h 字符串,分别为从当前行往前、后查询 与给出字符串匹配的程序行,查找到的行号保存在$ 中。 b r e a kl i n e n u m ,b r e a k 命令设置断点,l i n e n u m 为要设置断点的行号。 t b r e a kl i n e n u m ,设置临时断点。 c l e a rl i n e n n u m ,c l e a r 命令清除断点,l i n e n u m 为要清除的断点的行号。 l u l l ,运行可执行程序,开始执行;r u ni n d e x ,i n d e x 作为参数可以传递给正在 山东大学硕士学位论文 调试的程序。 i g n o r e ,忽略断点,使用格式为:i g n o r e 断点号次数。 j u m pl i n e n u m ,程序跳到指定行l i n e n u m 开始执行。 n e x t ,继续执行语句,但是跳过子程序的调用。n e x t 不带参数为执行一条语句, 后面带数字参数1 1 ,则表示执行n 条语句。还有一条n e x t i ,只执行一条语句,会 跟踪到子程序内部,但是不显示子程序的语句,就如同我们常用的i d e 中的单步 执行,执行但是不单步显示子函数内容。 d i s a b l e ,让指定的断点失效,后面可跟多个断点号,可以同时指定多个断点失效。 c o m m a n d s ,在遇到断点后执行特定的指令,不带参数表示遇到最后一个断点 后执行特定命令,带参数n 表示遇到断点号n 之后执行。特殊命令跟在该条语句 之后,以e n d 为结束标志。 s t e p ,继续执行程序,并且跟踪到子程序内部,同时会显示子程序内部的语句。 s t e p i 与n e x t i 类似,不同的是,s t e p i 显示子程序内部的语句。 w h a t i s ,显示某个变量或者表达式的数据类型,该命令后面跟变量名或者表达式。 p t y p e ,显示变量或者表达式的数据类型,包括t y p e d e f 定义的类型。 s e t ,设置程序中变量的值,格式为:s e t 变量= 表达式或者s e t 变量:= 表达式。 p r i n t ,显示变量或者表达式的值。 k i l l ,结束当前程序的调试。 q u i t ,退出当前调试程序。 p w d ,显示当前工作目录。 p y p e ,显示一个数据结构的内容。 u n t i l ,结束当前循环。 m a k e ,重新产生可执行文件。 w a t c h ,设置一个监测点,使用户能监视一个变量的值,功能如同p r i n t ,但是 p r i n t 不能更新显示,观察点所观察到的变量的值能够随着变量的改变而改变。 2 3c y g w i n 简介 c y g w i n 是一个可以在w i n d o w s 平台上模拟u n i x ( l i n u x ) 外观和使用环境的 山东大学硕士学位论文 工具【2 4 1 。c y g w i n 的核心,即c y g w i n l d l lf 2 5 】提供了l i n u xa p i 的大量功能。但是, 能在w i n d o w s 平台上模拟l i n u x 环境并不意味着c y g w i n 提供了一种能在w i n d o w s 上运行本地l i n u x 应用程序的方法。若要求应用程序能够在w i n d o w s 平台上运行, 需要在c y g w i n 中对源代码重新编译生成一种新的应用程序格式。通过c y g w i n 环 境生成的应用程序,也不能在真正的l i n u x 操作系统上运行。 c y g w i n 对l i n u x 上常用的软件开发工具g c c 、g d b 等进行了改进【2 6 1 ,改进 后,这些工具能够生成并且解释w i n 3 2 的应用程序。在本课题中,安装c y g w i n 之 后,用c y g w i n 环境自带的g c c 、g d b 对已经进行过o r 3 2 平台移植的g n u 工具 链( 主要是g c c ) 和g d b 工具进行重新编译阳。 使用c y g w i n 进行交叉编译环境的搭建,有几个命令渊是通常用到的。 c d :这个命令改变当前工作目录,后面参数表示路径,参数缺省表示指向当 前用户的主目录h o m e 文件夹。 t a r :l i n u x 文件压缩解压工具。参数组合x v f 表示解压缩后缀名为t a r g z 的文 件并显示详细的处理信息,参数组合j x v f 解压缩后缀名为t a r b z 2 的文件( 等同于 b u n z i p 2 和b z i p 2 d ) 并显示详细的处理信息。 m k d i r :这条命令在当前工作目录下创建文件夹。 l s :后面参数为某个路径,这条命令列出所选路径下的所有文件列表。 m a k e :这条命令读入m a k e f i l e 文件。m a k e f i l e 文件决定了源文件之间相互关联, 决定了各源文件的编译顺序。在交叉编译环境的创建过程中,用m a k ea l li n s t a l l 这 个命令来将所需的工具编译安装成可执行的应用程序。 l n :结合参数s 表示将后面的所跟随的两个文件进行软链接。 c p :复制文件或目录,将命令指定的非最后一个文件或者目录复制到最后 一个目录中。 2 4 本章小结 本章分析介绍了b i n u t i l s 、g c c 、g d b 等嵌入式l i n u x 开发常用的交叉开发工 具,以及用于模拟l i n u x 环境的c y g w i n 工具。 1 4 山东大学硕士学位论文 第三章开发平台设计原理与读写器芯片功能分析 进行基于o r l 2 0 0 的嵌入式系统软件开发 2 9 1 ,要经历代码编写、代码编译、 调试、以及下载等过程,才能形成可以运行在嵌入式系统上的可执行程序。搭建 一个软件开发平台,也要考虑到代码编辑、文档管理、寄存器与内存查看、代码 编译、调试、连接和程序下载等功能的实现。 3 1 软件开发过程的源代码处理 在进行软件开发过程中,编写源代码之后,需要经过编译过程,将其编译成 能够在目标机器上运行的二进制文件,才能实现功能。从源代码到可执行程序, 需要经过预处理、编译、汇编和链接这四个阶段。从代码形式来看,需要经历源 程序、汇编程序、可重定位机器代码、可执行机器代码等几个阶段,如图3 1 。 源程序 i预处理 源程序 , l编译 目标汇鳊程序 汇编 可重一母器代码 链接装载 可执行机器代码 图3 1 源语言到可执行代码的处理过程 山东大学硕士掌1 立论文 i 3 1 1 预处理 预处理过程是代码翻译的第一步,这一步骤将程序源代码进行初步转换,包 括对头文件的处理,对宏的处理,对语言的扩充等。宏处理处理宏定义和宏引用。 当源语言比较老式、没有现代控制流和数据结构化机制时,预处理过程还能将这 些机制添加到其中【3 0 1 。 3 1 2 编译与汇编 程序的编犁3 u 其实是对源语言进行翻译生成目标语言的过程。 程序的编译过程包括词法分析、语法分析、语义分析与中间代码产生、代码 优化、目标代码产生等阶段。每个阶段产生不同的中间语言作为下一个阶段的输入。 程序的编译流程f 3 2 1 如图3 2 所示: 图3 - 2 编译流程 表格管理和错误处理贯穿整个编译过程的各个阶段。表格管理即记录源程序 中的标识符及标识符相关信息,同时登记编译各阶段的进度、状态。表格管理最 重要的符号表的管理。符号表保存每个标识符的名字及其对应的属性。 1 6 山东大学硕士学位论文 错误处理检测各阶段可能遇到的错误,并以正确的方式进行处理,记录错误 报告。 词法分析器处理源程序中的字符,将组合起来具有一定语言意义的相关的字 符识别出来,分成一组,输出一个个类似于单词的结构,比如将关键字、标识符、 运算符和标点符号等分析出来。在g n u 工具链中,词法分析器的等效规则工具是 f l e x 。 语法分析器将词法分析器的处理结果,进行语法上的分析,分出层次结构, 判断程序代码是否符合当前语言的语法规则,产生出用于生成中间代码的短语, 如语句、程序段等,其输出通常以“语法树的形式体现。语法树的节点为操作 符,操作符的子节点对应该操作符的操作数。 语义分析器分析语法分析器识别出的语法单位,检查代码的语义错误,进行 类型检查,记录类型信息。比如检查数据类型是否符合源语言的说明。 中间代码生成器在编译器的前端处理结束以后产生一个中间表示形式。不同 的编译器使用不同的中间代码生成算法来生成中间代码。中间代码是一种含义明 确、便于处理的记号系统,通常独立于具体的硬件,同时又比较容易被翻译成目 标机器语言。中间代码所使用的语言,通常有三种形式:一种更接近于源语言, 是对语法树的抽象;第二种与语言无关,同时在一定程度上体现源语言的特征, 又能适应不同的体系结构;第三种与体系结构密切相关,最接近目标机器指令。 代码优化器使用优化算法对中间代码进行优化处理,包括与循环有关的优化, 全局寄存器分配和指令调度等。 代码生成器生成目标机器上可执行的代码。包括寄存器分配、代码选择、和 窥孔优化。目标代码形式可以为可以在目标机器上立即执行的绝对指令代码、可 重定位的指令代码或者需要经过汇编才能执行的汇编指令代码。 源代码通过编译器的处理后如果输出形式为基于目标机器指令集的汇编源程 序,还需要经过汇编器【3 3 】的处理。汇编语言使用助记符,用符号代码二进制操作 码,是机器代码的一种容易记忆的形式。汇编过程将汇编指令翻译成二进制的机 器代码,输出目标文件。目标文件一般为可重定位的机器代码。 编译程序还有一种划分的方式,称为编译前端和后端阻1 。编译前端通常包括 词法分析、语法分析、语义分析和中简代码的产生这些与源码密切相关但是与目 1 7 山东大学硕士掌位论文 标机器无关的部分。编译后端包括中间代码的优化以及目标代码的产生。 3 1 3 链接 由于汇编程序生成的目标文件一般是可重定位的机器代码,并不能立即被执 行,这就需要链接器将相关的目标文件连接起来或者将同一目标文件中参数和命 令连接起来,使这些文件形成一个整体,生成可执行的文件。 3 2 调试原理 调试【3 5 】即是利用特定的调试环境对程序进行功能性和正确性的测试。在调试 过程中,发现程序的逻辑性错误和其他问题以便于修改。调试器基于处理器的异 常机制,具有三个基本功能:控制程序的运行、查看程序运行的相关信息、修改 程序执行信息。 控制程序的运行是调试器的最基本功能。它能同过触发中央处理器的异常机 制,使正在运行的程序在指定的程序行( 断点) 处暂停,挂起当前程序流的执行, 开始断点例外处理。 在调试过程中,程序员需要查看程序运行的信息,这包括内存信息、寄存器 信息、堆栈信息等,通过查看这些来判断程序是否能完成预期的功能,是否存在 错误和缺陷。 对程序进行调试,同时也允许调试器修改内存信息、寄存器信息、反汇编信 息、堆栈信息等。 3 3 基于o r l2 0 0 的读写器s o c 结构与功能 如第一章图1 1 所示,“u h f 多协议r f i d 读写器基带信号处理s o c 芯片 包括o r l 2 0 0 的处理器单元、g p i o 通用输入输出接口单元、u a r t 通信接口单元 和读写器协议处理单元组成。 o r l 2 0 0 处理器用来控制各个外设模块以及超高频读写器基带信号处理单元 的读写过程,就是在o r l 2 0 0 的命令控制下,读写器协议处理单元完成了基带信号 的编解码过程,控制指挥整个读写器s o c 系统的有序运行。 u a r t 串口接受处理器所发送的数据,并发送给显示终端显示。 山东大学硕士学位论文 g p i o 为一种通信接口,用作输入输出。 读写器协议处理单元主要作用是对来自c p u 的指令进行编码和对来自标签的 数据进行解码并把写数据传送给c p u ,供处理器使用,最终完成读写器的协议处 理。该单元控制射频系统,实现对高频信号的编解码功能,并实现类似于e p c g l o b a lcig e n 2 或i s ol8 0 0 0 6 b 6 c 的u h fr f i d 标准协议。 协议处理单元的编解码过程为: ( 1 ) 编码过程:计算机主机( h o s t ) 给o r l 2 0 0c p u 指令和信息数据以后, o r l 2 0 0 处理器发送给编码模块和c r c 校验模块启动指令,编码模块接收到启动 指令后会返还给o r l 2 0 0 处理器一个应答信号,随后,o r l 2 0 0 处理器会把数据信 息传入编码模块和c r c 校验模块。当编码数据完成后,将产生的c r c 校验值发 送给编码器,然后通过输出通道发送出去。 ( 2 ) 解码过程:o r l 2 0 0 处理器检测到电子标签发送过来的信息后,会分别发送 给解码模块和c r c 校验模块启动指令,解码模块接收到启动指令后会返还给 o r l 2 0 0 处理器一个应答信号,随之,解码数据信息完成后,会将数据信息及校验 值发送给o r l 2 0 0 处理器,数据信息经过o r l 2 0 0 处理器一定的处理后,会将结果 送往计算机主机( h o s t ) ,l c d 显示器或存储器。 另外,在s o c 中的r a m 模块主要为o r l 2 0 0 处理器提供指令存储和启动位 置。在c p u 启动的过程中,需要从r a m 中读取指令并执行启动代码,完成各个 模块的初始化过程。 3 4 本章小结 本章从软件开发的步骤入手分析了软件开发平台的设计原理,着重分析了编 译原理、调试原理等,这些是设计软件开发平台的理论基础和硬件基础;另外, 本章对超高频多协议r f i d 基带信号处理s o c 芯片的结构和各部分功能进行了概 述。 1 9 山东大学硕士学位论文 第四章读写器芯片机器特征在g n u 中的实现 4 1o r l 2 0 0 指令集 o p e n r i s c 指令集【3 刀具有简单而统一长度的指令格式,包括5 个指令子集, 即o r b i s 3 2 、o r b i s 6 4 、o r f p x 3 2 、o r f p x 6 4 、o r v d x 6 4 。其中o r l 2 0 0 是3 2 位寻址处理器,其指令集基于基本指令集o r b i s 3 2 。 o r l 2 0 0 的指令集的特征是o r l 2 0 0 支持流水线操作的一个体现,而流水线技 术又是r i s c 体系结构中改善运行速度的一个关键,所以o r l 2 0 0 指令集的一个很 大特点就是简化了指令周期,是一个能提高运行速度的指令集,其特征为: 1 ) o r l 2 0 0 指令集中的所有指令长度相同,从而

温馨提示

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

评论

0/150

提交评论