(电路与系统专业论文)嵌入式微处理器众志805软件开发环境的研究与实现.pdf_第1页
(电路与系统专业论文)嵌入式微处理器众志805软件开发环境的研究与实现.pdf_第2页
(电路与系统专业论文)嵌入式微处理器众志805软件开发环境的研究与实现.pdf_第3页
(电路与系统专业论文)嵌入式微处理器众志805软件开发环境的研究与实现.pdf_第4页
(电路与系统专业论文)嵌入式微处理器众志805软件开发环境的研究与实现.pdf_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

摘要 众,占8 0 5 嵌入式微处理器芯片是一歙完全自主正向设计。面向手持信息终端的s o c ( s y s t e mo n c h i p ) 。课题的主要目的是研究软件调试技术并实现众志8 0 5 系统芯片的软什 开发环境。文章首先对常见的软件调试技术比如插桩方法,i c e ( i nc i r c u i t se m u l a t o r ) 方法和t r a c e 方法做了系统的研究,在分析了这些方法的优缺点的基础上并结合8 0 5 芯片 的特点和实际情况选择了插桩调试方法作为软件开发环境方案在硬件设计的同时进行软 件调试环境的设计在硬件的f p g a 验证阶段进行联合调试,实现了软硬件设计同步。论文 详细分析帛l 实现了基丁插桩方案的软件开发环境的实现方法该环境实现了以下功能:友 好i d e ( 集成开发环境) ,界面友好方便使用具有项目管理功能,自动管理项目文件。支 持交义开发,能从h o s t 机加载程序到目标系统。能对程序调试,对r a m 设取消程序断点, 单步运行臼由远行,查看系统状态( 查看寄存器内容、查看n m o r y 内容) ? 终改寄存器内 容修改m e m o r y 内容等等该软件调试环境已被用于在f p o a 验证系统上开发嵌入式实 时操作系统和原型样机应用程序,并且被应用于众志8 0 5a s i c 芯片的样机开发。 关键词 软件调试技术嵌入式徽处理器m o n i t o r 程序 a b s t r a c t u n h y8 0 5i sae m b e d d e dp r o c e s s o r , d e s i g n e df o rt h eh a n di n f o r m a t i o nt e r m i n a l 1 1 i l i a i n p u r p o s eo ft h i sp a p e ri st or e s e a r c ht h ee m b e d d e ds o f t w a r ed e b u gt e c h n o l o g ya n dt od e v e l o pt h e i d e ( i n t e g r a t e dd e v e l o pe n v i r o n m e n t ) f o ru n l t y8 0 5s o c f i s t ,t h ee m b e d d e ds o f t w a r e d e b u gt e c h n o l o g y , s o f ti n t e r r u p t ,i c e ( i nc i r c u i t se m u l a t o r ) a n dt r a c et e c h n o l o g y , a l er e s e a r c h e d d e e p l y c o m p a r ei sm a d eb e t w e e nt h et h r e ek i n d so ft e c h n o l o g y , a n dw ec h o s et h es o f ti n t e r r u p t t e c h n o l o g yf o rd e v e l o p i n gt h ei d e k b c dt h ec h a r a c t e ro ff o ru n y8 0 5 t h ei d ef o ru n 兀y 8 0 5i sd e v e l o p e di nt h ec o u r s eo f f p g av e r i f i c a t i o n s e c o n dt h es o f ti n t e n n i p td e b u gt e c h n o l o g y i sa n a l y z e di 1 1d e t a i l mi d eo fs o f ti n t e r r u p td e b u gt e c h n o l o g yi sc o m p o s e db yt w op a 晦 h o s tp r o g r a ma n dm o n i t o rp r o g r a m n mi d er e a l i z e dt h ef o l l o w i n gf u n c t i o n s :f r i e n d l y c u s t o mi n t e r f a c e ,m a n a g e m e n to fp r o j e c tf i l e s ,c r o s sd e b u ga b i l i t y , s e t c l e a rb r e a kp o i n ti nt h e r a m a r e a ,s t e p g o ,c h e c ka n dm o d i f yt h ev a l u eo f t h ep r o c e s s o r sr e g i s t a sa n ds y s t e mm e m o r y t h e i d eh a sb e e nu s e dt od e v e l o pt h eg t o s ( r e a lt i m eo p e r a t 啦s y s t e m ) a n da p p l i c a t i o no i lt h e f p g av e r i f i c a t i o ns y z t e r n u n y8 0 5h a sb e e nf a b r i c a t e dw i t h0 2 5b i na n dt a p e di l lf r o m f a c t o r y t s m c n 婿l d e , t h e r t o s a n d t h ea p p l i c a t i o n h a v e m o n t h e a s i cc h i ps u c c e s s f u l l y ! k e y w o r d s s o f t w a r ed e b u gt e c h n o l o g ye m b e d d e dp r o c e s s o rm o n i t o rp r o g r a m 东南大学学位论文独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得 的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包 含其他人已经发表或撰写过的研究成果,也不包含为获得东南大学或其它教育 机构的学位或证书而使用过的材料与我一同工作的同志对本研究所做的任何 贡献均已在论文中作了明确的说明并表示了谢意。 迹歹;矽p 东南大学学位论文使用授权声明 东南大学、中国科学技术信息研究所、国家图书馆有权保留本人所送交学 位论文的复印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。 本人电子文档的内容和纸质论文的内容相一致除在保密期内的保密论文外, 允许论文被查阅和借阅,可以公布( 包括刊登) 论文的全部或部分内容。论文 的公布( 包括刊登) 授权东南大学研究生院办理。 期: 第一章耋 论 1 1 课题选题背景 第一章绪论 集成电路是信息产业的心脏。我国集成电路年需求量已达2 8 0 - - 3 6 0 亿块的水平市场 规模达剑1 4 0 0 亿元( 2 0 0 3 年) j 。然而,目前我国集成电路产品有超过8 2 是从国外进 口的;国内需要的集成电路品种超过l 万种,但是能自主开发的仅占5 ,特别是那些事 芙国家安全、附加值较高的高端产品的芯片。国内目前都无法设计生产,集成电路设计业 的产值在整个集成电路行业中的比重不到1 。正是由于我国集成电路产业的严重滞后, 制约了国内信息产业的发展1 国家在十而期间增加了对集成电路产业的投入。本课题就是在国家8 6 3 项目( 国家8 6 3 项目“空间信息席圳移动用户终端原型机的研究开发和产业化”,课题编号2 0 0 1 从1 3 6 0 3 2 ) 资助f 开展的。课题主要目标是研发一块完全自主知识产权的面向手持信息终端单处理器 的s o c ,所有电路自主正向设计处理器核( c p u c 0 r e ) 、工具链( 编译器、汇编器、连接 器) 和指令集模拟器由北京大学微处理器研究中心开发,外围模块电路、软件开发环境、嵌 入式操作系统、麻h j 程序和原形样机由东南大学国家专用集成电路系统工程研究中心开发。 s o c 研发时间缩短、片上晶体管的数目和嵌入式软件的日趋复杂( 占5 0 一9 0 的功能) 这是s o c 设计所面临的最大挑战在s o c 的开发过程中软件所占的开发时间已经超过 硬仆的开发时间。软件调试环境是进行软件开发的平台软件调试环境的好坏寅接影响到 s o c 的开发时问在嵌入式微处理器众志8 0 5 的开发过程中。软件开发环境的建设占据了 很大的一部分开发时间。笔者负责的就是软件开发环境和嵌入式操作系统的研发。众志8 0 5 系统芯片是完全l e 向设计的,包括c p uc o r e 和外围电路是自主设计的;同时由于c p u c o r e 的i :具链都是自主开发的。这些都没用通过充分的验证,其中存在一些b u g 这给 软什的调试开发带米了不少问题尤其是给软件调试环境的开发开来了很多难题,如系统 不能真确执行机器指令内存不能正确读写等等,这些问题的发现只有通过逻辑分析系统 去采样跟踪分析波形,发现解决这些问题花了很多时间 众志8 0 5 是一款面向手持信息终端单处理器的s o c 结构如下图1 1 东南人学硕i 。学位论文 ! ll 磋ll| | | |l * i i i ii ,i i !iii l l z 7 丁1 1 : l 、 土上上 l l : 上上土上上上 e r 广 “ 川i i iiiiiiiiilii i ii i i i - _ h 嘲” 嘲吲雕l 嘲嘲 j l 宦 r _ 图1 1 众志8 0 5 8 0 c 系统结构 所采川c p uc o r e 是北京大学微处理器研究中心开发的u n r r yc o r e 一个3 2 伉 h a r v a r d 结构的r i s c 处理器,它采j j5 级流水线结构,并采_ f 便r i :机制解决数据相关问题。 可配置g p l o 口,可以分别把各个i 0 口配制成专_ i ;| 或通 j ,输入或输出。通用时钟芯片 6 p t ( g e n e r a lp u r p o s et i m e r l 模块主要h j 丁产生可编科时钟中断信号。1 2 c 1 2 c 是两线烈向的总线传输,在两设备之间它提供了一个有效的数据交换。功率管理器p m ( p o w e rm a n a g e r ) 功率管理器模块土要为微处理器的务个模块提供时钟信号,同时实 现二种i 作状态:一般状态( n o r m a l ) ,低功耗状态( d o z e ) ,睡眠状态( s l e e p ) 。 r t c 模块实时时钟。s p i m 模块j 】丁与诸如e e p r o m d a 转换器等外部设备交换数据, 利h j 串行链路在c p uc o r e 和外部设备之间交换数据。u a r t ,串行通信模块。p w m 模 块主要实现两种l :作模式:闸放模式( p l a y b a c k ) 、音调模式( t o n e ) 。i r c 中断控制器( i n t e r r u p t c o n t r o l l e r ) 这个模块是除了c p uc o r e 一位最为重要的模块,他负责管理再个模块年i 汐r 部中断。具有7 级优先权控制,控制2 0 个电平敏感的中断源,每一个中断都可以屏蔽或允 第一章绪论 许中断服务袢序通过读操作获得中断号可配置片选模块( c s ) ,该电路主要是提供与 外嗣存储器进行数据传输的桥梁液晶控制器l c d c ,控制l c d 显示键盘信号控制器 ( k b c ) t 与键盘连接,对键盘输入信息做相应转换,输入键的信号给c p u 由键盘扫描 输入行线r o w 0 :3 及键盘扫描输出列线c o l 0 :3 对4 x 4 键键盘进行扫描,当有键按f 时, 根据铍按键的r o w 值与c o l 值,就可以确定是哪一个键按下从而实现键煮的输入。众 忐8 0 5 是一块基丁臼主开发的c p u c o r e 的面向手持终端的系统芯片要为该系统芯片开 发操作系统和麻h j 稃序就必须有一个开发环境。众志8 0 5 设计的系统时钟是6 6 m h z 。应 h 】+ p d a ( p e r s o n a l d i g i t a l a p p l i c a t i o n ) 、h p c ( h a n d p e r s o n a l c o m p u t e r ) 或s m a r t p h o n e 等等。 这些麻h j 领域决定了众忐8 0 5 系统芯片必须提供给第三方开发者一个行之有效软件开发环 境。 1 2 所作工作及意义 课题士要目的是为众志8 0 5 系统芯片开发一个软件调试系统,期间笔者对当前嵌入式 s o c 开发流榉、软什调试方法做了大量的研究分析,最终成功实现了众志8 0 5 芯片的软t l : 调试环境该调试环境已成功用于开发嵌入式实时操作体统和应用程序。众志8 0 5 芯片对 软件调试环境的要求: 友好i d e ( 集成开发环境) ,界面友好方便使用 具有项目管理功能、自动管理项目文件 支持交义开发,能从h o s t 机加载程序到目标系统 能对穰序调试,对r a m 谢取消程序断点,单步运行( s t e p ) ,自由运行( 印) , 卉看系统状态( 查看寄存器内容、查看m e m o r y 内容) ,修改寄存器内容,修改 m e m o r y 内容,等等 贝有一定的处理器出错分析能力分析处理器出错原因。 上述功能都已实现( 到目前为止仅仅支持汇编级调试,暂时不支持c 语言源级调试) 项目中软件调试环境开发与硬件开发同步进行。在芯片t a p e o = 前软件调试环境已经在 f p g a 验证系统上正确运行并且也用于o s 的开发众志8 0 5 芯片已经在台积电( t s m c ) 采h j0 2 5 微米i :艺流水成功井通过测试:同时o s 和其他戍用程序也_ i j 该软件开发环境在 f p g a 验证系统上开发出来现在,用该软件开发环境所开发的o s 和应用程序已在众忠 8 0 5 芯片上运行起来! 本文的意义:系统研究嵌入式软件调试方法插桩方法i c e 方法和t r a c e 方法, 探索插桩调试方法,建立了基于插桩调试方法的一套软件调试环境 1 3 本文结构 本文有人章纲成。第一章绪论对课题的选题背景和目的意义做了简单概述。第二章 对嵌入式系统软什调试方法进行系统研究,主要研究了插桩调试方法、i c e 调试方法和软 竹跟踪( t r a c e ) 方法。第二章分析了众志8 0 5 系统芯片的特点并对不同的调试方法做 了详细比较最后为众志8 0 5 芯片软件调试环境选择技术路线。第四章详细分析调试环境 h o s t 拌序的基本原理平| i 流程。第无章详细分析调试环境m o n i t o r 程序的基本原理平流 拌,行以嵌入式操作系统和原型系统的开发作为实例,介绍了整个环境的使_ h j 情况。第人 章对软什调试技术课题做总结和展望。 东南人学坝i 学位论文 第二章嵌入式软件调试方法研究 嵌入式微处理器开发环境是一种_ l j 丁- 嵌入式系统开发、调试、维修、分析的专川i 。具。 对这种系统的基本要求是:把设计师编辑、汇编或编译、连接、定佛好的目标代码加载剑 目标系统的存档器,使h j 户能控制目标系统中科序的远行,并可跟踪程序执行的流科或在 断点处检查雨l 修改c p u 寄存器、存储器的内容,跟踪系统操作( 尤其是总线上的操作) 的 状态,采集和分析跟踪数据。嵌入式微处理器开发系统是计算机技术、仿真技术和逻辑分 析技术综合应的产物。它可提供软件开发、实时仿真调试、逻辑分析及性能分析等综合 性录i 交互性的开发功能。它在产品开发周期、生产周期、以至产品的生存期内都能提供有 效的支持和服务。由丁嵌入式微处理器开发系统解决了其它仪器所解决不了的困难问题, 因而受剑了设计师们的一致赞誉。今天嵌入式微处理器开发系统己在嵌入式系统开发中 得剑j “泛麻h j 成为必不可少的调试j i :具。 当前嵌入式系统软什开发调试方法主要可以分为两类,一种是传统的基丁程序数据断 点、s t e p 和1 1 1 1 1 的软f l :调试方法;另一种是软伺跟踪方法,这种方法适用丁实时系统的调 试,是靠记录系统运行轨迹的一种软件开发调试方法。第一种方法是常用的软件调试方法, 是一种侵入( i n t r u s i v e ) 式的调试方法,影响系统正常的运行,在调试实时系统时这种方 法就显得无能为力。第二种软件开发调试方法也称作跟踪( t r a c e ) 方法,是一种非侵入( n o n i n t r u s i v e ) 的调试方法。他不影响系统的正常运彳亍适用于调试实旌系统。为了方便 一f 文就把第二种方法成为软件跟踪技术。 当前州得较多的嵌入式软件调试技术有插桩调试方法和i c e 调试方法。插桩方法调试 方法这种方法主要是利用例外( e x c e p t i o n ) 来设计开发系统( 用软件来调试软件) ,用 例外指令来替代断点处的指令实现程序的调试,嵌入式微处理器内部不需要太多的硬件支 持。运行丁h o s t 的软件:提供用户调试程序的界面、与仿真板进行通信的接口函数等: 仿真扳上用汇编语言编写的监控程序,存放在仿真板上的一个具有固定地址的只读存储器 中。其特点是:方便廉价的方式,不需要特别的硬件支持:缺点是效率不高,只能对r a m 程序调试。另一种是,在芯片上设计i c e 模块的在线仿真器调试方法。这种方法是在芯片 内设计一个嵌入式l c e 模块。i c e 模块作为嵌入式微处理器和开发系统之间的桥粱,在线 仿真器中的嵌入式微处理器即是目标系统中真实的处理器。i c e 模块主要是通过比较地址, 数据总线,判断处理器访问的代码或数据是否是指令断点或数据断点。如果是断点。则i c e 模块发出调试请求给处理器,处理器进入调试状态然后把系统状态发给调试主机;如果 不是断点,则处理器继续正常运行。和插桩调试方法相比这种方法的方法效率比较高,可 对r o m 拌序调试,但需要特殊的硬件支持。 这章首先简单介纠s o c 设计流稃,然后分别详细研究插桩方法调试方法、i c e 调试 方法和t r a c e 方法。 2 1 现阶段$ o c 设计流程 s o c 以采h j 深弧微米技术和i p 复川为特点,设计流程不同于传统的芯片设计流稃。传 统的芯片设计方法,首先根据市场需求对芯片进行功能定义( s p e c ) ,然后进行软硬r i :功能 划分,软硬f ,i :i 5 计分头进行。如幽2 1 所示。剑硬什原形设计结束( 剑芯片结柬或者住f p g a 验证阶段) 再进行软硬什集成调试。其中建模过拌可j jc 语言完成,确定软硬什划分后再 4 第二章嵌入式软件调试方法研究 分别进行软硬f ,l :设计硬件设计是根据c 语言模型人 :把c 语言转换为_ h jh d l 语言r t l 级描述然后作r t l 级仿真、综合,时序分析布局布线等等,硬件设计过程。1 i 据了设计的 人部分时间。软硬件集成被放到硬件原形设计结柬后再进行这样的流程最人的问题在丁 软硬1 ,| :集成放剑最后,如果集成时发现b u g ,前面所作的软硬件划分、硬仆设计、软件设 计都必须推倒重来- 一切从头开始。在软硬件划分、硬件设计都软件设计己投入了大量的 时间和资金t 一切义必须再重新开始,现在s o c 的规模已到数百万门,这种做法在s o c 设计中是无法接受的。这种传统的设计方法已经不适片 于s o c 设计,其缺点如f : 软硬忭设计过早分离从图2 1 中我们看出在系统定义确定软硬件功能后软硬件 设计就分离进行,剑晟后设计结束才开始软硬件集成。但是初始的软硬件划分不 可能不存在b u g ,这些问题一直剑最后才暴露出来,问题暴露越晚解决问题的代 价越人,解决这些问题要从新做系统划分和软硬件设计,在s o c 设计中无法接受 这种设计流程。 软硬r i :设计用不同的语言软件一般都是用c ,c 什编程,而硬件用h d l 描述。硬 什描述一般都用h d l 语言( 如v e r i l o g ,v h d l ) r t l 级描述,然后做仿真、 时序分析、综合、布局布线。仿真在芯片设计中占7 0 以上的时间,所以仿真是 s o c 设计的瓶颈。r t l 级仿真、后仿真不仅费时而且验证的功能十分有限基本 上都是靠人亡去分析波形。 s o c 需要新的设计流程,笔者对当前s o c 设计的流程做了一定的研究,一种基于讲 复用的软硬件协同设计流程已开始用于工程,软硬件协同设计的e d a 工具也不断推出, 如:s y n o p s y s 公司基于s y s t e m c 的系统设计与验证开发环境一- - c o c e n t r i cs y s t e ms t u d i o ( c c s s ) 等等。基于m 复用的软硬件协同设计的基本流程如图2 2 首先根据市场的需求 j j 软硬仆协同建模语育( 如s y s t c m c ,下面以s y s t e m c 为例) 进行系统建模,软硬件均用 同种语育s y s t e m c 在相同平台上建模、软硬件协同仿真、不断细化最后得到可执行的 ( e x e c u t a b l e ) 系统模玳其特点在于: 更高的抽象级描述。同时能描述硬件的同步,延迟、时钟信号等等,同时也是软 件开发的语言 软硬件均用同种语言描述,s y m m c 是在嗍础上扩展了硬件类和仿真核形成 的,所以j l js y s t e m c 的硬件描述可用标准a 斗编译器来编译; 软硬忭在相同平台上协同仿真,加快仿真速度。因为软硬件用相同语言在相同平 台上描述。所以这方便了软硬件协同仿真。 s o c 设计给传统的集成电路设计技术提出了挑战。s o c 设计技术是一种以i p 核重用为 基础,以软硬件协同设计为主要设计方法的芯片设计技术。s o c 是软硬件异质的组合系统, 性能的体现不在仅仅局限在硬件电路的性能上,而是依赖于软硬件协同工作所体现出来的 性能。 5 东南人学硕i 学位论文 嘲2 i 传统设计方法 可执行( e x e c u t a b l e ) 暮缱模塑 i 辞台仿真布局布缱t a p e0 :。 田土2 软硬件梆局设计方珐 综上所述,传统的设计方法己经不能满足s o c 设计的需要,s e c 的设计技术正在变革。 从以前的软硬件分离设计到以l p 复用为基础的软硬件协同设计。设计师们正在对一些新的 设计方法进行评估,以期加快设计周期缓解闪新产品上市时间日趋加快带来的前所未有 的重压。其中缩短s o ci 殳计周期的方法之一是硬件,软件的协同设计。一些厂家已宣布采 i j 硬1 ,i :软f l - 协同设计技术己使其设计时间减少一半生产效率大为提高”直剑剑上世纪 9 0 年代中期软硬仆系统集成方面的问题成为设计过程中的巨大瓶颈。软件工作部分明显 造成性能的人打折扣,为解决这些问题我们需要新的设计方法和流程 下面以s y s t e m c 为例说明软硬件协同设计的流程见图2 3 5 1 首先根据市场需求定义产品的功能( s p e c 过程) 。 然后有s y s t e m c 对算法和结构进行建模定义数据结构和函数。把这些数据和方 法封装剑类里;在这种建模阶段硬4 1 : 1 1 软件之间没有区分。 映射与划分确定哪部分功能映射到软件模块哪部分功能映射硬件模块,由t 这 个抽象层次的验证仿真比r t l 级验让仿真快数白- 倍【4 】,所以在这个层次的仿真验 证评竹速度是相当快。 定义接口 包括软什一软件接口硬什一埂什接口,软仆一硬什接口。 堙1 1 。描述的细化 上面对硬什的描述还停留在传输级,需要对其进一步细化剑 r t l 级( s y s t e m c 支持r t l 级描述) ,以便综合i :具可以直接综合。 6 早囱 第二章嵌入式软件调试方法研究 圈2 3 软硬件协同设计的流程 这一节简单介绍了当前s o c 设计的流程下面将分析当前软件调试技术 2 2 插桩调试技术 插桩调试方法主要由两部分组成如图2 4 插桩调试法结构图一部分是h d s t 端,主要 提供友好h j 户界面,处理用户命令,和目标系统通信:另一部分是目标系统( t a r g e t b o a r d ) ,目标系统上被调试的程序放在r a m 中监控程序( m o n i t o r ) 放在r o m 中 监控程序提供软件调试功能,保存系统状态。读写r a m 。修改处理器状态( 处理器寄存 器) 等基本功能。 t a r g e tb o a r d 幽2 4 插桩调试法结构幽 7 东南人学硕l :学位论文 基本原理是目标系统上电复位后由m o n i t o r 监控程序接管系统并和调试土机建立通 信链路,等待调试主机的命令请求。调试士机通过通信链路把铍调试程序加载剑目标系统 的r a m 。目标系统控制权怎样由m o n i t o r 交给被调试程序? 是通过m o n i t o r 修改目 标系统处理器的p c ( 科序计数器) 来实现的一当控制权需要由m o n i t o r 交给被调试程序时, h o s t 断榉序向m o n i t o r 发送修改p c 命令,并给出p c 将被修改为多少。m o n i o r 收 剑h o s t 发过来的修改p c 命令后,就按照h o s t 的要求修改p c 。这样控制权就由 m o n i t o r 交给被凋试撑序。r a m 中挫序断点是怎样实现的? 川一条例外指令替代断点处 原来的机器指令当处理器取这条指令时实际取剑的是例外指令,这样处理器就进入例外, 由r o m 中的m o n i t o r 料序接管系统m o n i t o r 程序把系统的一些状态芨给h o s t 这样就完成了简单的断点功能。榉序需要运行时再把例外指令恢复成原来的指令,恢复处 理器的p c 和现场,让处理器恢复原来的运行。怎样查看系统的存储器内容? h o s t 程序 向m o n i t o r 程序发读存储器命令m o n i t o r 按照命令的要求读取给定地址范同的存储 器的内容,然后拜把这些内容发给h o s t ,h o s t 再调用显示函数把这些内容显示出来。 怎样修改目标系统处理器的寄存器值? 在进入m o n i t o r 程序后m o n i t o r 程序把处理 器的各个寄存器值保存在l 卉i 定地址的r a m 中,所以处理器的每个寄存器在r a m 中都有 一个3 2 b i t 的存储空间和它相对应。要修改处理器的寄存器时,首先修改寄存器所对应的 r a m 内容然后再把r a m 的内容l o a d 到哥存器里。h o s t 和m o n i t o r 间的硬件链 路可川串口,也可以h 并口,还可以用网口,只是相应的驱动不同。同时为了保证通信的 可靠性,它们间也需要有保证通信可靠的协议。从上面的原理可以看出这种插桩调试方法 只能对r a m 程序调试,同时需要占用目标系统的r o m 空间和一部分r a m 空间,也需要 j i 刚目标系统的一个通信端1 :3 这种调试方法的优点在于,他不需要特别的硬件支持。设 计成本比较低。这就是这种方法的基本原理,详细细节在众志8 0 5 系统芯片调试环境设计 中还会介纠。 2 2 i c e 调试技术 另一种嵌入式软件调试方法是在芯片上设计i c e 硬件模块的在线仿真器调试方法,这 种调试系统一股结构如1 鳘i2 5 。 剀2 5 i c e 调试方法 调试士机也需要运行一个调试程序,其主要功能也是提供友好人机界面,处理h 】户命 令向日标系统发命令。目标系统上的i c e 电路主要功能是在断点处向处理器内核发调试 请求,让处理器进入调试状态。i c e 电路是通过判断处理器的地自! ,数据总线米确定是否该 向处理器发凋试请求。如:川户在一条指令处设了样序断点,处理器之取条指令时发出指 令地址,i c e 把该地址和断点指令处地址作比较,如果相等就在这条指令上加上标识,当 第- 二章嵌入c 软件调试方法研究 处理器运行这条指令时就会进入调试状态。进入调试状态后处理器的状态( 寄存器值) 可有两种方法获得: 通过边界扫描电路获得处理器状态这种方法是在处理器进入调试状态后,由扫 描电路插入s t o r e 指令,此时寄存器值出现在数据总线上,扫描电路把这些值 采样后串行移出并送给调试主机 通过监控徉序的方法处理器进入调试状态同时运行监控程序。监控程序把处理器 状态保存到r a m 中然后发给调试主机。 这两种方法各有利弊,边界扫描方法需要增加扫描电路但是不占抖j 系统的r o m 币fr a m 。 而监控程序的方法,除了i c e 电路外不需要其他附加电路,但是需要占用系统的r o m ( 存 放监控程序) 和r a m ( 存放系统状态) 。 i c e 调试方法川的比较普遍,a r m 公司的a r m 7 、a r m 9 系列处理器核和m o t o r o l a 公司的e z ,v z ,s z 系列等等都在处理器里集成了i c e 电路。在这个模块中进行断点地址 的比较从而除了可以完成插桩方法完成的所有调试功能外,还可以支持硬件断点、数据 断点、硬件方式的单步执行指令等其中占据大步部分嵌入式市场的方法是把i c e 模块 和j t a g 模块一起使_ 【 j ,i c e 模块主要负责判断断点 t a g 模块主要用来扫描处理器内部 状态。a r m 系列处理器在嵌入式系统领域占据统治地位唧其中a r m 7 是一款应_ l j 最厂。 的处理器。 下面基于a r m 7 1 d m i 介绍这种调试方法a r m 7 t d m i 是一款3 2 位r i s c 处理器采 用3 级流水线、v o nn e u m a r m 架构、t h u m b 结构扩展、内核带有d e b u g 功能扩展、内核 有增强刑乘法器可以产生“位乘法结果、内核具有e m b e d d e d l c e 逻辑扩展,结构如图 2 6 ,包括了二条基本的扫描链0 、l 和2 ,分别用于测试、仿真和对嵌入式i c e 模块的编 程幽中扫描链0 的扫描单元允许访问嵌入式微处理器核心的所有输入输出管脚,主要用 于设备间测试( e x t e s t ) 和核心内部测试( i n t e s t ) 扫描链0 的排列次序为数据总线 的0 位到3 l 位,控制信号,接下来是地址总线的3 l 位到0 位 扫描链l 的扫描单元共3 3 个为扫描链0 的一个子集,包括了数据总线的3 l 位到0 位接f 来是d b g b r e a k 信号b r e a k i r f 信号在进入仿真状态之初移出扫描链时告诉 仿真主机核心是冈为指令断点进入仿真状态还是因为数据断点进入仿真状态。d b g b 砌认k 信号在仿真过程中移入扫描链时告诉核心是否同步系统时钟执行指令( 由于在仿真状态一f 由丁- 存储器系统的要求要想得到系统状态必须以系统时钟执行指令) ,低表示核心以调试速 度执行。高表示以止常速度执行。访问数据总线的3 2 个扫描单元可以在仿真状态卜把核心 和存储器系统分离,核心访问的数据都是通过扫描单元送来核心要输出的数据也是通过 扫描单元移出送给仿真主机这样在仿真状态下可以把指令插入到核心的指令流中,从而 执行一些仿真指令。扫描链2 用于访问嵌入式i c e 模块的各个寄存器,可以读写各寄存器。 9 东南人学硕i 。学位论文 盯a g 披i i 图2 6a r m 7 t d m i 结构图 a 【3 10 1 d o u - q 3 10 l d i n 3 10 1 d 1 3 10 1 i c e 模块晶土要的功能就是产生b r e a k p t 和d b g r q i 信号送给核心。当发生指令断 点或数据断点则b r e a k p t 信号有效,当有调试请求时则d b g r q 信号有效这两个信号 的产生是通过比较数据总线、地址总线、控制总线上的值和对应的断点寄存器的值产生的。 b r e a k p t 信号的产生原理如图2 7 。i c e 模块共有两组断点寄存器,每组断点寄存器都包 括一个3 2 位的数据寄存器和对应的屏蔽寄存器、一个3 2 位的地址寄存器和对应的屏蔽寄 存器、一个9 位的控制寄存器和对应的8 位屏蔽寄存器。数据寄存器的值用于和数据总线 上的3 2 位数据比较,数据屏蔽寄存器可以决定比较3 2 位数据中的哪几位地址寄存器的 值_ l j 丁和i 地址总线上的3 2 位地址比较,地址屏蔽寄存器可以决定比较3 2 位地址中的哪几 何。控制寄存器的值h i 于和核心输出的一些控制信号做比较,控制屏蔽寄存器决定比较哪 几个控制信号。 硬仆指令断点可以在r o m 区内设置,因为硬件指令断点是比较地址总线。各断点寄 存器配置如f ,地址寄存器设置为硬件断点指令的地址,屏蔽地址寄存器设置为不屏蔽所 有地址;不比较数据总线,屏敞数据寄存器的值设置为屏蔽所有数据位。数据断点的产生 是通过配置地址寄存器为断点数据的地址:不比较数据总线,屏蔽数据寄存器的值设置为 屏蔽所有数据侥; 核心在指令断点、数据断点和有调试请求的情况下( 即嵌入式i c e 模块的输出信号 b r e a k p t 或d b g r q 有效) 使d b g a c k 信号有效,进入仿真状态。当核心检测剑 b r e a k p t 信号有效后如果是由丁指令断点使得b r e a k p t 信号有效则把这条断点指 令作曩环记,“1 断点指令到达了指令流水线的执行阶段后,核心进入仿真状态,断点指令 之前的的指令都执行完毕断点指令虽然进入了执行阶段但并不改变存储器的状态,所以 从仿真状态返同时府把断点指令的标记清除然后从断点指令处开始重新执行程序。如果是 由r 数据断点使得b r e a k p t 信号有效。则引起数据断点的指令执行完毕后进入仿真状态, 所以从仿真状态退出时麻返同剑引起数据断点的指令的下条指令处开始执行。如果有外 部调试请求而d b g r q 信号有效。核心执行完当前指令后进入仿真状态。核心进入仿真状 态后d b g a c k 信号为高。进入仿真状态j 亓,核心时钟会切换为由j t a g 接n 的t c k 产生 o 第二章嵌入式软件调试方法研究 的时钟d c l k 。 s c a nc h a i nr e g i s t e r t d it d o 图2 7b r e a k i r r 信号的产生原理 b 髓 k p t 核心进入仿真状态后,可以通过扫描链l 的b r e a k p t 位告诉仿真主机核心是由于指 令断点还是由于数据断点进入仿真状态的在仿真状态下。t a p 控制器的指令寄存器中装 入i n t e s t 指令。选择扫描链l 作为当前扫描链,接下来仿真主机可以通过把核心寄存器 传输命令( s t m 等) 装入扫描链1 ,进而插入到核心的指令流中把核心寄存器的值扫描 出来核心是以仿真速度( 以i ) c l k 作为执行指令的时钟) 执行s t m 指令的,这个d c l k 是非常慢的,因为要通过j t a g 接口的t c k 时钟把3 2 位的指令经过3 2 个t c k 时钟移入 扫描链,然后产生一个d c l k 时钟,然后又要通过t c k 时钟把扫描链l 的核心寄存器的 值一位一位的移出米。上面讲的是在仿真状态下观测核心状态。若想观测核心以外的系统 状态( 如读存储器的内容等) 因为有些存储器( 如s d r a m 等) 只能在系统时钟m c l k 下一i :作,所以核心就不能以仿真速度执行指令访问存储器了,而要以系统速度执行指令, 解决这个问题的方法是让核心在执行存储器访问命令时重新同步回系统时钟m c l k 我们 把存储器访问命令之前的那条命令装入扫描链l 的同时使d b g b r e a k 位为高,执行完成 后把存储器访问命令装入扫描链1 同时使d b g b r e a k 位为低,把这条指令放到数据总线 上以后,在t a p 控制器中选择b y p a s s 指令,这会使得核心重新同步回系统时钟m c l k , 以m c u ( 时钟执行这条存储器访问命令执行完命令后又切换同d c l k 时钟此时在t a p 控制器中选择i n t e s t 指令则义重新同剑仿真状态在仿真状态下以系统速度执行指令 时d b g a c k 信号为低。从仿真状态退出包括恢复核心的内部状态、执行一条跳转剑进入 仿真状态之前未执行的指令、然后同步同系统时钟m c l k 。把最后一条跳转指令之前的那 条指令姨入扫描链1 时使d b g b r e a k 位为高,执行完毕后把跳转指令装入扫描链i 同时 使d b g b r e a kf ) = 为低,把这条指令放剑数据总线上以后,在t a p 控制器中选抒r e s t a r t 指令当状态机进入运行一测试,空闲模式时,扫描链运行于系统模式,核心重新同步同系 统时钟m c l k 进行正常的指令执行。 上面以a r m 7 t d m i 的调试方法简单阐述在芯片上设计i c e 模块的在线仿真器调试原 东南火学硕,| :学位论文 理。a r m 采川的这种调试方法是把片上i c e 和j t a g 边界扫描技术联合使j i c e 电路主 要产生调试请求j t a g 电路土要川丁扫描处理器内部状态并和调试士机通信。i c e 电路不 一定蛋和1j t a g 一起联合使n j ,有些调试方案只h i c e 电路。而设计专1 j 帮l 调试主机通信 的叱路,如可以通过串口、网口和调试士机通信,中间不需要协议转换模块。 上面简述了现在埘的比较多了软r l :调试方法,插桩方法和片上i c e 方法。,上面研究 的是侵入试调试方法,r 面研究h j 丁实时的系统1 f 侵入调试跟踪( t r a c e ) 方法。 2 3 软件跟踪( t r a c e ) 技术 前面介绍的是一种侵入式的调试方法,影响处理器的正常运行。这种调试方法用丁调 试实时系统时就显得无能为力了。工程上急需一种用于调试实时系统的调试方法,一种非 侵入式的软什跟踪调试方法应运而生。这种方法是靠收集系统运行时关键的信息,而不影 响系统止常远行然后在根据所收集到的信息分析系统的实际运行情况。调试结构如图2 8 软件跟踪调试结构幽调试主机通过网口或者并口经过协议转换器和目标系统相连,在目 标系统上有相应的e t m ( e m b e d d e d t r a c e m o d u l e e t m 负责控制采样、保存采样数据、 过滤数据羊与调试土机通信,e t m 的大概结构如图2 9 。e t m 模块由两部分组成,一部分 是t r a c et r i g ( 3 e rc o n t r o l l e r 和t ra c ef i f o t r a c et r i g g e r c o n t r o l l e r 根据川户的配置控制采样触发,t r a c er f o 保存采样的信息,并把采 刭的信息发给调试主机。 凹2 8 软 ,l :跟踪调试结构| 璺i 2 第二二章嵌入式软件调试方法研究 蚓2 9e t m 结构图 软什跟踪技术一般川于实时系统的调试,和侵入式调试方法相比有以下的特点是,非 侵入式( n o n - i n t r u s i v e ) 系统保持原来的全速运行只有采样条件满足时才开始进行采样 保存,不影响系统运行。软件跟踪技术的关键地方和难点在于: 现代处理器复杂体系结构增加了t r a c e 的难度p o ! 现代高性能处理器一般都引 入流水线和c a s h 结构,这极大提高了处理器的性能但是给跟踪造成了很大的困 雄。因为流水线技术的引入导致处理器取的指令不是每一条都会被执行,而 t r a c e 模块一般都是挂接在总线上t r a c e 模块采到的指令不是每条都会被执 行这就要求t r a c e 模块分析采样到的指令哪些会被执行哪些不会被执行 c a s h 结构的引入更是加大了t r a c e 的难度。因为处理器有了c a s h 处理器 就能从c a s h 中取指令和数据这些动作都能在其内部完成t r a c e 更本无法 跟踪到处理器运行的轨迹 处理器在运行过程中所访问的代码和数据量相当大一般嵌入式系统的时钟频率 在几十兆赫兹到几百兆赫兹之间,我们假设3 2 位指令系统的m i p s 时1 0 0 兆( 每 秒中运行i o o x1 0 6 条机器指令) 如果要跟踪处理器的指令流轨迹,则要求的带 宽是3 2 0 0 x1 0 6b i t s s ,这样的数据带宽现在是无法接受的所以t r a c e 模块 必须压缩这些数据,而且又不能丢失有用信息。这又增加的t r a c e 的技术难度 触发和控制采样很明显要不停地跟踪系统的所有状态是不可能的跟踪控制电 路要能根据用户的设置去触发采样和过滤掉不相关的信息。 上面简单介纠了t r a c e 的基本特征,现在a r m 9 处理器为例

温馨提示

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

评论

0/150

提交评论