0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

构建eCos嵌入式系统的步骤教程

电子工程师 作者:工程师陈翠 2018-07-22 06:11 次阅读

eCos 是一个优秀的嵌入式实时操作系统。 eCos 的体系结构是一种分层结构,硬件抽象层将操作系统与硬件隔离开,这为把 eCos 移植到不同的硬件平台提供了便捷的方法,抽象层就像软件与硬件之间的桥梁。主要的移植思想是,按照 eCos 的模块化设计,完成硬件抽象层。

引言

目前,嵌入式操作系统的种类较多,其中比较流行的有 VxWorks 、 Windows CE 、 Psos 、 Palm OS 、嵌入式 Linux 等。这些嵌入式操作系统在开放性、实用性以及性能等方面各有千秋,但大多数为商用产品。除了商用产品外,还有一些免费的嵌入式操作系统, uClinux 是其中比较流行的,而eCos则是另一个选择。嵌入式可配置操作系统eCos(Embedded Configureable Operating System )的特点是可配置性、可裁减性、可移植性和实时性。它的一个主要技术特色就是功能强大的配置系统,可以在源码级实现对系统的配置和裁减。与 Linux 的配置和裁减相比,eCos的配置方法更清晰、更方便;且系统层次也比 Linux 清晰明了,移植和增加驱动模块更加容易。正是由于这些特性,eCos引起了越来越多的关注,同时也吸引越来越多的厂家使用 eCos 开发其新一代嵌入式产品。

eCos 现在由 Red Hat 维护,可支持的处理器包括: ARM 、 StrongARM 、 XScale 、 SuperH 、 Intel X86 、 PowerPC 、 MIPS 、 AM3X 、 Motorola 68/Coldfire 、 SPARC 、 Hitachi H8/300H 和 NEC V850 等。源代码及开发工具可在 Red Hat 的网站上免费下载,网页地址是 http:/sources.redhat.com/ecos 。

1 、 eCos 的层次结构

eCos 采用模块化设计,由不同的功能组件构成, eCos 系统的层次结构如图 1 所示。

这种层次结构的最底层是硬件抽象层( Hardware Abstraction Layer ),简称为 HAL ,它负责对目标系统硬件平台进行操作和控制,包括对中断和例外的处理,为上层软件提供硬件操作接口。只需提供新硬件的抽象层,就可以将整个 eCos 系统包括基于 eCos 的应用移植到新的硬件平台上。

2 、构建 eCos 系统

构建 eCos 系统首先要搭建自己的硬件抽象层,然后创建驱动程序,之后就可以编制应用程序了。

3 、硬件抽象层的移植

硬件抽象层分为三个不同的子模块:体系结构抽象层( Architecture HAL )、变体抽象层( Variant HAL )和平台抽象层( Platform HAL )。

体系结构抽象层。 eCos 所支持的不同处理器系列具有不同的体系结构,如 ARM 系列、 PowerPC 系列、 MIPS 系列等。体系结构抽象层对 CPU 的基本结构进行抽象和定义,此外它还包括中断的交付处理、上下文切换、 CPU 启动以及该类处理器结构的指令系统等。

变体抽象层指的是处理器在该处理器系列中所具有的特殊性,这些特殊性包括 Cache 、 MMU 、 FPU 等。 eCos 的变体抽象层就是对这些特殊性进行抽象和封装。

平台抽象层是对当前系统的硬件平台进行抽象,包括平台的启动、芯片选择和配置、定时设备、 I/O 寄存器访问以及中断寄存器等。

硬件抽象层的这三个子模块之间没有明显的界线。对于不同的目标平台,这种区分具有一定的模糊性。例如, MMU 和 Cache 可能在某个平台上属于体系结构抽象层,而在另一个平台上则可能属于变体抽象层的范围;再比如,内存和中断控制器可能是一种片内设备而属于变体抽象层,也可能是片外设备而属于平台抽象层。

eCos 的移植通过这三个子模块来完成,即平台抽象层的移植、变体抽象层的移植和体系结构抽象层的移植。对一个新的体系结构来说,其系统结构抽象层的建立相对来说比较困难。 eCos 支持大部分当前广泛使用的嵌入式 CPU ,已具有了支持各种体系结构的硬件抽象层。因此, eCos 的移植很少需要进行体系结构抽象层的编写。

4 、平台抽象层的移植

一般来说,进行 eCos 开发时,移植的主要工作在于平台抽象层,这是由于 eCos 已实现了绝大多数流行嵌入式 CPU 的体系结构抽象层和变体抽象层。平台抽象层主要完成的工作包括:内存的布局、平台早期初始化、中断控制器以及简单串口驱动程序等。

构建一个新的平台系统,最简单的方法是利用eCos源码提供的具有相同体系结构和 CPU 型号的参考平台硬件抽象层,将其作为模板,复制并修改所有与新平台相关的文件。若 eCos 没有这样的平台,则可用另一种体系结构或 CPU 型号的类似硬件抽象层作为模板。比如, eCos 提供了以三星公司 ARM CPU S 3C 4510b 为核心的平台 SNDS4110 ,当需要移植 eCos 到 ARM CPU S 3C 44B0 上时,这将是一个很好的起点。

移植工作最好是从RedBoot开始,实现的第一个目标是使RedBoot运行在新平台上。 RedBoot 是eCos自带的启动代码,它比 eCos 要简单,没有使用中断和线程机制,但包含了大部分最基本的功能。

建立目标平台的RedBoot通常按以下步骤进行(以构建 S3C44b0 的新平台为例)。

① 复制 eCos 源码中选定的参考平台,根据需要对目录及文件更名。更名的主要内容有:新平台的目录名、组件定义文件( CDL )、内存布局文件( MLT )、平台初始化的源文件和头文件。

② 调整组件定义文件( CDL )选项。包括选项的名字、实时时钟 / 计数器、 CYGHWR_MEMORY_LAYOUT 变量、串口参数以及其他的一些选项。

③ 在顶层ecos.db文件中加入所需要的包,并增加对目标平台的描述。在最初,该目标平台的入口可以只包含硬件抽象层包,其他硬件支持包以后再加入。经过修改后,就可在 eCos 配置程序中选择新的平台进行配置。

④ 修改include/pkgconf 中的内存布局( MLT )文件。按照新的硬件平台内存布局修改 MLT 文件。 MLT 文件对应每种启动类型有三个不同后缀的文件: .h 文件以及 .ldi 文件和 mlt 文件。手工修改时只需修改 .h 文件和 .ldi 文件,并保证两个文件同步修改。修改的主要内容有 ROM 的起始地址、 ROM 的大小、 RAM 的起始地址和 RAM 的大小。

⑤ 修改平台的 io 宏定义。在 include/plt_io.h 文件中完成对平台的各种 IO 宏定义,包括各种 CPU 的系统配置寄存器、内存配置寄存器、串口配置寄存器、 LCD 配置寄存器、以太网配置寄存器等的 I/O 地址。

⑥ 修改平台的Cache代码。在 include/hal_cache.h 文件中修改有关 Cache 的宏定义。在开发初期,最好先将 Cache 关闭,等移植稳定后再打开。

⑦ 实现简单的串口驱动程序。串口的初始化、接收和发送在 src/hal_diag.c 文件完成。主要的函数如下:

cyg_hal_plf_serial_init_channel() ,完成对某个串口的具体初始化工作;

cyg_hal_plf_serial_putc() ,从串口发送一个字符;

cyg_hal_plf_serial_getc() ,从串口接收一个字符;

cyg_hal_plf_serial_getc_nonblock() ,以无阻塞的方式接收一个字符,即缓冲区中无数据时立即返回;

cyg_hal_plf_serial_isr() ,串口中断服务程序;

cyg_hal_plf_serial_init() ,调用 cyg_hal_plf_serial_init_channel() 函数初始化各串口,并向内核注册串口中断服务程序、串口的读写例程和配置例程。

⑧ 修改或增加平台初始化程序。平台初始化在 3 个文件文件中完成: src/s 3c 44b0_misc.c 、 include/hal_platform_setup.h 和 include/hal_platform_ints.h 。

hal_platform_ints.h 完成系统的中断宏定义。在不同的平台中设备数量和类型不同,中断的译码方式也不一致,需要根据具体情况作出调整。

hal_platform_setup.h 主要完成系统硬件的初步配置,这里一般要在看门狗和中断关闭后,配置系统时钟频率、 ROM 和 RAM 的初始化参数。

s3c44b0_misc.c 文件完成目标板的进一步初始化、中断处理、延时例程和操作系统时钟设置。

经过以上修改,底层的平台抽象层就基本完成了,这时可用 eCos 的配置工具生成 RedBoot 进行测试。

RedBoot测试成功后,说明平台已经能正确完成初始化操作,且串口驱动也能正常工作,接着要完成中断和 Cache 等测试工作。可利用一些多线程的小程序测试,检测时钟配置是否正确,同时也检测了中断能否正常工作。

5 、驱动程序设计

平台抽象层完成后,接着要完成系统的设备驱动程序。 eCos 设备驱动程序的中断模块分为三个层次:中断服务程序 ISR 、中断滞后服务程序 DSR 和中断线程。 ISR 在响应中断时立即调用, DSR 由 ISR 发出调用请求后调用,而中断线程为驱动程序的客户程序。

硬件中断在最短的时间内交付给ISR处理。硬件抽象层对硬件中断源进行译码并调用对应的中断 ISR 。 ISR可以对硬件进行简单的操作,应使ISR的处理时间尽量短。当ISR返回时,它可将自己的中断滞后服务程序DSR放入操作系统的任务调度中, DSR可以在不妨碍调度器正常工作时安全运行。大多数情况下, DSR 将在ISR执行完成后立即运行。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式系统
    +关注

    关注

    40

    文章

    3397

    浏览量

    128185
  • eCos
    +关注

    关注

    1

    文章

    19

    浏览量

    15155
收藏 人收藏

    评论

    相关推荐

    嵌入式系统构建 清华试用教材

    嵌入式系统构建嵌入式系统的定义嵌入式系统是指用于执
    发表于 11-13 11:28

    【下载】《构建嵌入式LINUX系统(第二版)》

    `内容简介虽然Linux嵌入式系统几乎无所不在,从手机到汽车的ABS系统以及净 水厂都可以发现它的踪迹,但是令人惊讶的是,建立、安装和测试Linux内 核以及相关工具的信息来源却少得可怜。《
    发表于 04-10 18:00

    嵌入式学习步骤

    嵌入式系统无疑是当前国内最热门的技术之一,但是该如何来学好嵌入式系统?好的学习方法是前提,但正确的学习步骤依然不可缺少,分享一下比较主流的
    发表于 12-02 11:24

    介绍十四种嵌入式操作系统的特点

    14 种主流的嵌入式实时操作系统 RTOS,分别为μClinux、μC/OS-II、eCos、FreeRTOS、mbed OS、RTX、Vxworks、QNX、NuttX,而国产的嵌入式
    发表于 10-27 09:15

    什么是嵌入式操作系统? 

    常见的嵌入式系统:Linux、uClinux、WinCE、PalmOS、Symbian、eCos、uCOS-II、VxWorks、pSOS、Nucleus、ThreadX 、Rtems 、QNX
    发表于 10-28 07:35

    嵌入式LINUX开发步骤有哪些

    第一学习阶段,主要打好基础,学好C编程,Linux系统编程。1、C语言编程基础2、嵌入式开发基础:Linux概述安装,shell命令,vim编辑器,GCC,GDB,Makefile,交叉开发环境构建
    发表于 11-05 09:22

    嵌入式系统的概念定义

    嵌入式系统的概念定义一 定义二嵌入式系统的分类嵌入式微处理器嵌入式微控制器即单片机
    发表于 12-17 08:33

    嵌入式系统安装docker的步骤

    系列文章目录docker 门外初体验–嵌入式系统安装docker(九)文章目录系列文章目录前言一、设计思路二、操作要点三、验证四、总结前言嵌入式开发精髓在于软硬件的结合,如果嵌入式开发
    发表于 12-22 06:27

    主流的嵌入式操作系统有哪些?

    满足实时控制要求的嵌入式操作系统(RTOS)操作系统,以下介绍14种主流的RTOS,分别为μClinux、μC/OS-II、eCos、FreeRTOS、mbed OS、RTX、Vxwo
    发表于 12-27 07:27

    嵌入式实时操作系统μC/OS-II与eCos的比较

    叙述嵌入式系统嵌入式操作系统的概念,简述嵌入式实时系统的发展阶段。重点介绍μC/OSII和
    发表于 04-15 09:36 12次下载

    嵌入式实时操作系统μC OS-II与eCos的比较

    叙述嵌入式系统嵌入式操作系统的概念,简述嵌入式实时系统的发展阶段。重点介绍μC/OSII和
    发表于 05-16 14:38 20次下载

    嵌入式系统构建教程

    嵌入式系统构建教程 前 言.................................................................................................
    发表于 03-31 15:16 32次下载

    嵌入式操作系统uClinux和eCos的比较

    uClinux和eCos操作系统是两种性能优良、源码公开且被广泛应用的免费嵌入式操作系统。本文通过对uclinux和eCos的对比,分析和总
    发表于 04-18 08:36 1570次阅读
    <b class='flag-5'>嵌入式</b>操作<b class='flag-5'>系统</b>uClinux和<b class='flag-5'>eCos</b>的比较

    eCos嵌入式操作系统构建

    eCos具有非常优秀的可移植性;使用多任务抢占机制,具有最小的中断延迟;支持嵌入式系统所需的所有同步原语,提供包括设备驱动程序、内存管理、例外处理、标准
    发表于 05-05 11:46 1126次阅读

    嵌入式操作系统uClinux和eCos的比较

    ),即嵌入式可配置操作系统,是RedHat的产品,但eCos并不是Linux或Linux的派生。eCos弥补了Linux在嵌入式应用领域的不
    发表于 12-01 17:12 325次阅读
     <b class='flag-5'>嵌入式</b>操作<b class='flag-5'>系统</b>uClinux和<b class='flag-5'>eCos</b>的比较