基于eCos在基于ARM7硬件平台上的应用_第1页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、基于ecos在基于arm7硬件平台上的应用ecos(embedded configurable operating system)最初是由cygnus solutions公司为面对领域而开发的源码藏匿、具有很强的可移植性和可配置性的,适合于深度嵌入式开发的实时操作系统。现在ecos主要由ecoscentric公司和ecos开源社区共同开发维护。ecos的特性,特殊是它的可配置性,能有效缩短嵌入式产品的开发周期并降低成本。1 ecos的体系结构及可配置性1.1 ecos体系结构ecos采纳模块化设计,将不同功能的软件分成不同的组件,使其分离位于系统的不同层次。这种层次结构实现了ecos的可配置性

2、、可移植性、兼容性和可扩展性。图1是ecos系统的层次结构框图。硬件抽象层(hal)使其上层次结构不必关怀详细的硬件结构,因此只需对hal举行修改就可以使囫囵ecos的应用移植到新的硬件平台上。图1 ecos的层次结构框图内核是ecos的一个核心组件,也是系统的一个可选组件,一些较为复杂的应用需要内核的支持。内核提供了多个可供挑选的调度算法,可以很好地支持多任务处理。ecos内核提供了一组丰盛的同步源语,彻低能满足各种嵌入式应用的需求。内核还负责对中断和例外举行处理,它的中断滞后处理机制保证了系统的实时性。此外,内核还具有内存分配机制和定时机制,并提供多线程gdb调试支持。内核为上层软件和应用

3、软件提供了丰盛的api接口函数。redboot是一个无内核的系统引导程序,是ecos的一个特别应用。redboot可以加载ecos应用程序,并提供debug支持,是开发ecos系统时十分实用的工具。设备驱动程序负责对硬件设备举行控制和管理,并完成设备数据的读/写操作。设备驱动程序自身也采纳层次结构,上层驱动程序(相当于一个虚设备)可以调用下层驱动程序(物理设备)。驱动程序为上层软件提供标准的api函数,应用程序可以用法这些api函数对设备举行拜访。ecos包含的网络支持包支持完整的tcp/ip网络协议栈。ecos还提供了标准库(ansi c库和数学库)、兼容层(posix兼容和uitron兼容

4、)、文件系统等。作为一种开放软件,ecos还可以很便利地容纳第三方软件。1.2 可配置性原理ecos的一个主要特性就是其可配置特性。可配置性终于是靠代码中的条件编译来完成的,条件编译是编程语言的特点,并不是ecos的原创。当一个软件工程中的条件编译项的数目和复杂性达到一定程度时,其中有一些条件编译项就会由于存在规律上的依靠关系而使条件编译产生矛盾。而如何发觉并有效解决这种矛盾才是ecos可配置性的特点,2所示,其可配置特性的实现主要由组件定义语言cdl(component definition language)、组件仓库ecos.db、图形配置工具configtool三者共同完成。图2 可配

5、置机制(1) 组件定义语言cdlcdl是ecos组件框架中的一个关键部分,ecos全部模块的程序包中都包含一个cdl脚本对该包举行描述并提供配置选项。以本系统中的串口驱动程序包为例,在该包对应的cdl中定义了一个名为cygpkg_io_serial_at91的cdl_package。在这个cdl_package中具体列出了该包的一些属性,如该包必需在工程已经包含了硬件抽象层包cygpkg_hal_arm_at91和上层串口i/o包cygpkg_io_serial的状况下才会被使能。另外,串口的一些常用特性,如波特率、设备名、缓冲区大小等配置选项也是必不行少的。在一些复杂的cdl中还会包含对该包

6、中的源程序举行编译时的一些编译选项。在举行配置的时候,该包还会产生一个包含了各个可配置参数数值的头文件。当其他包用法由cygpkg_io_serial_arm_at91包提供的可配置参数时,这个新产生的头文件就会被相关的源文件通过include语法包含。(2) 组件仓库ecos.dbecos.db是一个包含了全部可用程序包和配置模版的文本文件。在该文件中,需要注册全部的cdl包。在注册时以package关键字提供相应包的名称、cdl脚本文件的文件路径以及对该包的一个容易描述。在ecos.db中还会以target关键字生成配置模版,从而提供目标平台的一些基本组成结构,使目标平台包括所需要的已经注

7、册了的cdl配置包。(3) 图形配置工具configtoolconfigtool是利用mfc编写的windows程序,是ecos可配置性的执行者,也可以理解成是cdl脚本的说明器。一方面它读取ecos.db文件中的目标平台和已注册的配置包信息,按照配置包的路径找到相应的cdl脚本,然后按照脚本中给出的属性向程序员提供图形化的配置信息;另一方面,它还可以接受用户的输入,包括单选按钮、复选框、下拉列表、文本输入等。当用户保存一个配置时,configtool会按照cdl语言的提醒生成相应的头文件,也会将指定的头文件从配置包中复制到配置文件所在的工作名目。无论是生成的头文件还是拷贝的头文件,都会在编译

8、时被源程序所引用。对于内核源程序,configtool又可以理解成编译器。当用户的配置选项被保存并且对工程举行编译时,configtool会在后台调用真正的编译器gcc,按照配置包cdl中的编译选项控制gcc对全部需要的内核源文件举行编译并生成库文件和对应的链接脚本。固然configtool只是对ecos内核举行编译,用户的应用程序只需在编译时和由configtool编译生成的库文件举行链接就可以得到终于的可执行映像文件。2 系统硬件框架本系统是一个以arm7为核心构成的测控系统,通过对的脉冲信号举行处理而得到待测物料的流量,并通过控制给料器的给料速度达到流量控制的目的。对于一个有有用价值的测

9、控系统,必需具有人机交互、闭环控制、数据通信和存储等功能。本课题所研制的流量测控系统的硬件框图3所示。图3 流量测控系统硬件框图图3中,处理器为arm7内核的工业级芯片at91m55800,其强大的功能保证了系统的实时性和稳定性的要求。2 mb的flash sst39vf160用来保存程序代码、测量所需的一些参数以及测量结果的容易统计信息。在工业生产中,常常需要对一次测量中的数据举行历史再现,以便对一些事故或故障举行排查。本系统通过采纳1 mb的大容量ram来实现这一功能:除了用来作为程序运行时的内存外,ram还用来实时保存每一时刻的测量数据。的通信口用来和现场计算机举行通信,以实现一些越发完

10、美的处理,如数据打印、结果分析、实时数据的硬盘保存等。辨别率为320×240的用来作为系统的显示终端协作4×5的键盘来完成系统的人机交互操作。对变频器的控制和对温度信号的采集通过485总线完成。6路脉冲信号是本系统测量功能的核心,通过对这6路脉冲举行处理可以得到流量相关的全部信息。4"20 ma信号用来控制给料系统,以实现闭环控制。因为在工业环境中用法,对于一些长线衔接必需实行隔离措施。本系统对测量脉冲、485通信信号和4"20 ma电流信号都实行了光电隔离措施。3 ecos在系统上的移植与应用软件编写3.1 ecos内核的移植因为ecos内核采纳了可配

11、置的模块化设计思想,因此只要修改硬件抽象层hal的代码和cdl脚本并且在ecos.db中注册就可以应用于新的目标系统。hal又可以细分为3个层次: 体系结构抽象层。ecos是可以应用于多种体系结构平台上的操作系统,如arm、powerpc等,在ecos发布时已经将这些体系结构层的移植包一同发布了出来。本系统的体系结构抽象层是arm7体系结构抽象层。 变体抽象层。对于同一种体系结构的处理器,各生产厂家会有不同的系列和型号(如的at91系列、philips的lpc系列等),虽然它们都采纳arm7体系结构,但是不同的寄存器配置模式和中断处理办法也会影响到ecos的移植。本系统所用法的处理器at91m

12、55800用法较为普遍,在ecos开源社区已经有移植好的at91m55800变体抽象层的代码和cdl脚本,只需作系统启动后对i/o口的赋值状况等少许的改动即可完成对变体抽象层的移植。 平台抽象层。平台抽象层是对目标系统的囫囵硬件平台举行抽象,包括平台的启动、芯片配置、定时、i/o寄存器及中断寄存等等。系统需要举行的移植工作主要是平台抽象层的移植,而平台抽象层中最重要的是flash驱动包和内存布局文件的移植。主要的步骤为: 安装at91m55800变体抽象层包。从ecos开源社区下载好的变体抽象层包在一个名为eb55的文件夹中,在这个文件夹中还有cdl、include、src等子文件夹分离包含了

13、cdl脚本、头文件,源文件。因为ecos的软件包有严格的层次结构,所以在安装软件包时应遵循这一结构以便于维护。at91m55800属于arm7的一个变体,同at91系列的其他cpu处于同一层次,所以变体抽象层软件包文件夹eb55的详细路径应为/hal/arm/at91/eb55。接下来还应在ecos.db中注册变体抽象层包,以package关键字注册名为cygpkg_hal_arm_at91_eb55的包,这个名字必需和包中cdl文件hal_arm_at91_eb55.cdl中的所定义的包名彻低全都。在包名后面的花括号中记下hal_arm_at91_eb55.cdl文件的路径及文件名,以及对该

14、包的容易文字解释。 编写flash的底层驱动软件包,以便能够操作目标系统的flash存储器。因为本系统在前期调试和代码固化时利用了redboot,而redboot通过flash驱动程序操作目标flash,所以必需先移植好flash驱动程序才干举行更进一步的开发工作。首先需要编写底层驱动程序源文件。不同的flash的块空间大小以及写操作普通是不一样的。本系统所用的flash sst39vf160是2 mb的16位nor flash,共有512(0x200)个块空间,其块大小为4k(0x1000),写操作的指令码符合jedec标准。这些特点与atmel公司at49系列flash比较类似,因此fla

15、sh驱动程序可以从ecos发布时自带的at49系列flash的驱动程序修改得到。最重要的地方是修改描述flash特性的结构体flash_dev_info_t变量中成员block_size和block_count的值,使其分离为0x1000和0x200。接下来需要编写与flash底层驱动对应cdl脚本,使配置工具configtool能够正确配置编译flash驱动程序。这个cdl文件彻低可以参照at49驱动包中的cdl文件编写。以cdl_package关键字定义名为cygpkg_devs_flash_sst_39vf160的包,在指令体中给出详细的配置参数。因为底层驱动包必需结合上层驱动才干工作,

16、所以在指令体中用active_if cygpkg_io_flash指令告知configtool,必需在上层驱动包cygpkg_io_flash已经被包含的状况下底层驱动包才会使能。最后,需要在ecos.db中注册底层驱动软件包。详细做法和变体抽象层包的注册办法相同。 修改内存布局文件,使configtool能够正确定位程序在系统存储器中的位置。ecos提供3种不同的运行方式,即rom方式、ram方式、romram方式。每种模式都有两个相应的布局文件,如ram方式的mlt_arm_at91_eb55_ram.ldi和mlt_arm_at91_eb55_ram.h。*.ldi和频繁的arm开发环境

17、ads中scattered链接方式下的*.scf文件的作用类似,即用来对不同段分离指定不同的链接地址。在*.ldi中需要修改memory和secti*两部分。对于代码在ram中运行的内核及应用程序,需要按照系统ram的实际状况修改内存布局文件中相关参数的值。本系统具有1 mb的ram,但有一半用来存放测量数据,按照系统实际的硬件状况,其起始地址为0x02000000,大小为0x80000,所以这个内存块定义为ram: rigin=0x02000000, length=0x80000。处理器内部集成了8 kb sram,其起始地址为0,大小为0x2000,所以这个内存块定义为sram: rigi

18、n=0x00000000,length=0x2000。这样系统的memory部分就由名为ram和sram的两个内存块构成。系统比较重要的两处secti*部分的修改为section_fixed_vectors (sram, 0x20, lma_eq_vma) 和section_rom_vectors (ram, 0x02008000, lma_eq_vma),第一处表示fixed_vectors段分配在从0x20开头的sram中,且lma_eq_vma指定其加载地址等于虚拟地址。因为redboot运行时需要占用从0x02000000开头的一定空间的ram,所以其次处使程序代码从0x0200800

19、0开头的ram中运行。*.ldi文件修改完毕后需要相应地修改*.h文件中的宏,如define cygmem_region_ram (0x02000000)。 在组件仓库ecos.db中为以关键字target添加名为flow55的新目标平台。在这个目标平台中还必需用关键字packages包括arm7体系结构层包和at91m55800变体抽象层包,同时为了实现调试还必需包括串口驱动包和flash驱动包及其上层驱动包。除了这些被包含的软件包外,按照不同的挑选configtool还会为目标平台包添加一些默认的包,如内核包、数学库包等。另外,还应加入一些对该平台的容易描述。3.2 内核的配置移植完成以后

20、,一个最基本的目标平台就产生了。在configtool中可以看到templates菜单的硬件平台列表中新增了flow55目标平台模版,以default方式打开这个模版。各个软件包的cdl脚本中都给出了默认的配置值,有些值需要按照详细的应用要求重新配置。本系统一些重要的配置状况如下: 因为系统线程数量较少(小于10),所以挑选效率更高的位图调度器bitmap scheduler,并将线程数numbers of priority levels限定为16,以提高任务切换的速度。当点击位图调度器的单选按钮时,configtool会检测到一个配置矛盾。因为时光片轮转是默认使能的,而时光片轮转仅仅对应于多

21、级队列调度器,所以浮现配置矛盾。configtool会给出一个推举的解决矛盾的办法,即禁止时光片轮转,根据这个推举的解决办法可以平安地解决这个矛盾。这个地方可以充分体现出ecos强大的可配置性。 因为协作redboot一起用法,所以内核配置为ram启动方式。这样,系统上电后程序将由redboot复制到ram中运行,以提高速度。 系统的晶振频率为16 mhz,经pll倍频后为32 mhz,所以需将clock speed配置为32000000;rtc是系统的时钟节拍发生器,本系统的时钟节拍时光选为20 ms,所以也需要对rtc相关项举行配置。详细参数为real?time clock numerator配置为2000000000,real?time clock denominator配置为100,real?time clock period配置为20000。其余的配置选项用法默认的配置值即可。完成配置工作后,对内核举行编译可以产生内核库文件和链接脚本以及相关头文件。这些生成的文件再同应用程序一起编

温馨提示

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

评论

0/150

提交评论