DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 123|回复: 0
打印 上一主题 下一主题

基于eCos在基于ARM7硬件平台上的应用

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 18:47:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

                      摘要:简单介绍eCos的体系结构,详细论述eCos的可配置机制的实现原理,重点介绍eCos在以AT91M55800为核心的ARM7硬件平台上的移植步骤,结合本系统简要介绍内核的配置方法。最后给出了基于eCos应用软件的编写方法。
  eCos(Embedded Configurable Operating System)最初是由Cygnus SolutioNS公司为面向嵌入式领域而开发的源码公开、具有很强的可移植性和可配置性的,适合于深度嵌入式开发的实时操作系统。现在eCos主要由eCosCentric公司和eCos开源社区共同开发维护。eCos的特性,特别是它的可配置性,能有效缩短嵌入式产品的开发周期并降低成本。
  1? eCos的体系结构及可配置性
  1.1? eCos体系结构
  eCos采用模块化设计,将不同功能的软件分成不同的组件,使其分别位于系统的不同层次。这种层次结构实现了eCos的可配置性、可移植性、兼容性和可扩展性。图1是eCos系统的层次结构框图。硬件抽象层(HAL)使其上层次结构不必关心具体的硬件结构,因此只需对HAL进行修改就可以使整个eCos的应用移植到新的硬件平台上。






  图2? 可配置机制
  (1)? 组件定义语言CDL
  CDL是eCos组件框架中的一个关键部分,eCos所有模块的程序包中都包含一个CDL脚本对该包进行描述并提供配置选项。以本系统中的串口驱动程序包为例,在该包对应的CDL中定义了一个名为CYGPKG_IO_SERIAL_ARM_AT91的cdl_package。在这个cdl_package中详细列出了该包的一些属性,如该包必须在工程已经包含了硬件抽象层包CYGPKG_HAL_ARM_AT91和上层串口I/O包CYGPKG_IO_SERIAL的情况下才会被使能。另外,串口的一些常用特性,如波特率、设备名、缓冲区大小等配置选项也是必不可少的。在一些复杂的CDL中还会包含对该包中的源程序进行编译时的一些编译选项。在进行配置的时候,该包还会产生一个包含了各个可配置参数数值的头文件。当其他包使用由CYGPKG_IO_SERIAL_ARM_AT91包提供的可配置参数时,这个新产生的头文件就会被相关的源文件通过#include语法包含。
  (2)? 组件仓库ecos.db
  ecos.db是一个包含了所有可用程序包和配置模版的文本文件。在该文件中,需要注册所有的CDL包。在注册时以package关键字提供相应包的名称、CDL脚本文件的文件路径以及对该包的一个简单描述。在ecos.db中还会以target关键字生成配置模版,从而提供目标平台的一些基本组成结构,使目标平台包括所需要的已经注册了的CDL配置包。
  (3) 图形配置工具configtool
  configtool是利用MFC编写的Windows程序,是eCos可配置性的执行者,也可以理解成是CDL脚本的解释器。一方面它读取ecos.db文件中的目标平台和已注册的配置包信息,根据配置包的路径找到相应的CDL脚本,然后根据脚本中给出的属性向程序员提供图形化的配置信息;另一方面,它还可以接受用户的输入,包括单选按钮、复选框、下拉列表、文本输入等。当用户保存一个配置时,configtool会根据CDL语言的提示生成相应的头文件,也会将指定的头文件从配置包中复制到配置文件所在的工作目录。无论是生成的头文件还是拷贝的头文件,都会在编译时被源程序所引用。对于内核源程序,configtool又可以理解成编译器。当用户的配置选项被保存并且对工程进行编译时,configtool会在后台调用真正的编译器GCC,根据配置包CDL中的编译选项控制GCC对所有需要的内核源文件进行编译并生成库文件和对应的链接脚本。当然configtool只是对eCos内核进行编译,用户的应用程序只需在编译时和由configtool编译生成的库文件进行链接就可以得到最终的可执行映像文件。
  2? 系统硬件框架
  本系统是一个以ARM7为核心构成的测控系统,通过对传感器的脉冲信号进行处理而得到待测物料的流量,并通过控制给料器的给料速度达到流量控制的目的。对于一个有实用价值的测控系统,必须具有人机交互、闭环控制、数据通信和存储等功能。本课题所研制的流量测控系统的硬件框图如图3所示。






  图4? 应用软件结构
  3.3? 基于eCos操作系统的应用软件的编写
  eCos是一个单进程多线程的操作系统,多个线程在宏观上可以认为是并发运行的,而且各线程之间耦合低,便于软件的编写和维护。针对这一特点,本系统的软件结构如图4所示。
  本系统主要有两种程序运行方式,分别称为方式A和方式B。方式A中,硬件中断产生后,相应的ISR(Interrupt Service Routine)程序运行,由于ISR中是禁止中断的,所以在ISR中只进行最简单的操作,ISR退出后内核调用相应的DSR(Deferred Service Routine)。DSR中中断是使能的,所以可以进行一些稍复杂的处理,如简单的数据运算、内核调用(发送信号量和邮箱等)。在得到相应的信号量或消息邮箱后,相应的线程进入就绪态被内核调度运行。本系统中对键盘的处理就是基于这种方式——按键产生硬件中断、ISR执行,接着在DSR中进行相应的运算得到具体的键值后以消息邮箱的方式通知并唤醒键盘处理线程,键盘处理线程在完成任务后进入休眠直到再次有按键发生而被唤醒。方式B中,各线程只是周期性地被内核调度运行,如测量数据显示线程,在显示一次数据后调用延时函数进入休眠,直到延时完毕后再次进入就绪态被内核调用。
  根据测控系统的实际情况,具体的线程编写如下: 方式A为流量计算线程、温度测量线程、键盘处理线程、USB通信处理线程。方式B为测量数据显示和曲线绘制线程、流量控制线程、初始标定线程。
  4? 结论
  经过实践,本系统运行稳定,实时性能良好。由于eCos的强大可配置性使得系统的软硬件可维护性强,在进行硬件改动或应用要求改动后可方便地进行升级。
            
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-6-10 01:07 , 耗时 0.091508 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表