基于Eclipse插件的scatter文件编辑器设计与开发

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于Eclipse插件的scatter文件编辑器设计与开发

摘要:介绍了一种scatter插件编辑器,编辑器采用Eclipse插件多页编辑器技术实现。在分析scatter文件结构和特点基础上,编辑器利用图形表示文件的内容和结构,这是编辑器主要的特点和优势,编辑器还增加了文件内容语法着色和报错机制等功能。因此,该编辑器相对其它编辑器更加适合scatter文件的编辑。

关键词:eclipse插件;scatter文件;多页编辑器;映像文件;scatter文件解析器

0 引言

scatter文件是一个具有简单语法规则的文本文件,可以用来描述ARM连接器生成映像文件时所需的信息。如果用文本文件来编辑scatter文件,是没有充分考虑和利用scatter文件的特殊语法规则和文件结构特点的,而且用普通编辑器编辑scatter 文件操作很不方便,容易遇到问题和错误。如果要设计适合scatter文件的编辑器,就要充分考虑以上因素。从上面对scatter 文件的描述和分析看出,相对于将scatter文件放在一般文本编辑器中或其它类型编辑器中编辑,如果将scatter文件放在类似集成开发环境中的编辑器里面编辑,也就是将scatter文件的内容进行语法关键字着色、关键字自动补全和插件编辑器语法报错等处

理,辅助以图像的方式表示scatter文件的内容和结构,就可以非常准确和清晰地查看和编辑scatter文件。

此项目正是基于以上因素的考虑,利用Eclipse插件等技术,研究并开发了一个适合scatter文件的Eclipse插件多页编辑器。编辑器在文件编辑的体验上有了很大增强,文件信息的表示方法更加多样化,编辑辅助工具更丰富。此项目作为ARM嵌入式集成开发环境RVDS的一部分,已经提交正式的版本,证明此编辑器能准确方便地编辑scatter文件,很适合作为scatter文件的编辑器使用。

1 编辑器的设计原理

1.1 编辑器文本页面设计

由以上示例可以得到,scatter文件主要包含加载时域、运行时域和输入段三个部分,具体又包含以下重要信息:1,加载时域的加载地址、最大空间和属性;2,从每个加载时域中分割出的运行时域;3,运行时域的起始地址、最大空间和属性;4,运行时域存储访问特性;5运行时域中的输入段。

scatter文件是具有简单语法的文本文件,为了编辑scatter 文件时方便处理,可以在设计插件编辑器时将关键字高亮显示,对有语法错误的scatter语句进行报错处理等。scatter文件编辑器设计实现了以上相关功能。

本小节以scatter文件编辑器实现关键字高亮(Syntax

coloring)为例说明编辑器文本页面的实现方法。要实现关键字高亮,必须有一个语法(词法)扫描器用来分解输入中的单词,并且根据模式判断出单词的类型,是关键字、字符串还是数字,对应这些关键字、字符串等,需要定义各种Token类型来表示语法颜色和字体类型。插件编辑器的类中维护一个SourceViewer类的引用,这个类属于JFace,它又封装了StyledText实例。除此之外,还必须为SourceViewer设置一个Configuration来支持对SourceViewer提供各种增强的功能,由它支持对SourceViewer 进行语法着色。

对于上面的的分析,扫描器在Eclipse中由org.eclipse.jface.text.rules.RuleBasedScanner类实现,该类可设置多个模式或规则,对于输入按序执行这些模式,当某个模式能够成功判断一个输入,就返回一个定义好的Token。上面提到SourceViewer通过SourceViewerConfiguration类可以控制其各种增强配置,如代码着色,自动提示等。在编辑器中要支持语法着色,可以写一个类继承SourceViewerConfiguration类并且重写getPresentationReconciler方法实现。

1.2 编辑器图形页面设计

为更准确清晰表示scatter文件所要描述的镜像文件所需信息。以下通过分析ELF格式的映象文件来设计图形页面。

映象和域(region)的关系是1:N;域和输出段(output

section)的关系是1:N;输出段和输入段(input section)的关系是1:N;输入段中包含目标文件中的代码和数据。以上这些关系都在图形页面表示出来。

在存储系统中,ARM映像文件各组成部分的地址有两种:①装载区域,程序在装载之后运行之前占的存储区域可被分成多个装载区域,装载区域是一个连续的字节块;②运行区域,程序运行时占的存储区域可被分成多个装载区域,装载区域也是一个连续的字节块。程序下载(烧入)的时候,会被一起下载到ROM 上;在程序开始执行时,Read-Write 段会从ROM被复制到RAM。scatter插件编辑器在图形页面以图1描述的结构表示映象文件的加载和运行。

为将各个加载块和执行块在内存中的情况在图形页面表示出来,首先在图形页面将各个块用SWT图形库的Label控件画出来,然后通过比较各个块的偏移地址大小,确定各个块在图形上的相对位置,再然后,通过地址运算比较各个块的容量大小,动态设定各个块在图形上的大小,之所以是动态的,是因为图形页面在窗口大小改变时,里面各个块的大小是自适应的。各个块的信息是通过在Label上设置文本来表示的,Label可以响应鼠标事件,当鼠标放在加载块或是执行块上时,对应的执行块和加载块会高亮显示。图形页面的另一个设计特点是页面的滚动条总是定位到中间,原因是图形都设定了最小和最大值,这个设计保证了图形页面在窗口很小时,打开编辑器可以直接看见页面中间

的关键信息。

2 编辑器的组成

scatter插件编辑器包含两个编辑器页面,即图形页面和文本页面,还包含bcd文件解析器和scatter文件解析器,另外,还包含Outline和Preferences两个视图。scatter插件编辑器可以将外部ARM嵌入式bcd文件通过Eclipse向导导入,导入的过程中解析bcd文件,通过解析bcd文件得到生成scatter文件需要的数据,最后在编辑器中打开由以上数据生成的scatter文件。编辑器也可以直接打开已存在的scatter文件,即.scat文件。scatter 文件解析器主要是在文件被修改后,自动对scatter文件进行解析。Outline视图用来显示scatter文件的大纲,还可以在Outline 视图中对scatter文件进行操作。Preferences视图主要用来配置编辑器的两个页面中相关元素的属性。

3 编辑器的软件实现

3.1 bcd文件解析器

此编辑器不仅可以直接打开scatter文件进行编辑,还能从bcd文件中提取scatter文件所需要的数据,然后由这些数据生成对应的scatter文件。为了提取bcd文件中scatter文件所需的数据,首先要利用Eclipse的导入向导导入bcd文件,在bcd文件导入的过程中,将bcd文件利用bcd文件解析器进行解析,将得到的

相关文档
最新文档