嵌入式实时操作系统ECOS在S3C2510上的移植实现

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
摘 要: 本文介绍了实时操作系统ECOS的特点及基本结构,并具体研究了ECOS在三星公司以ARM940T为内核的 S3C2510嵌入式芯片上的移植方法。文章着重讨论了移植过程中的重点与难点部分:ECOS的硬件抽象层(HAL)移植。该移植方案已经过实际测试,系统稳定可靠,可运行多任务式应用程序。
    关键词:实时操作系统;ECOS;硬件抽象层;移植;ARM
    引言
    ECOS(Embedded Configurable Operating SYSTEM,嵌入式可配置操作系统)是一种针对16位、32位和64位处理器的可移植嵌入式实时操作系统。由于其源代码是公开的,因而有越来越多的设计人员开始关注ECOS操作系统。ECOS最大的特点是模块化,内核可配置。最小版本的ECOS只有几百字节,非常适合小型嵌入式系统的开发。相对于嵌入式Linux来说,ECOS有配置灵活和节省资源的优势。它的另一个优点是使用多任务抢占机制,具有最小的中断延迟,支持嵌入式系统所需的所有同步原语,并拥有灵活的调度策略和中断处理机制,因而具有良好的实时性。与?Clinux和?COS等操作系统相比,ECOS更适合于处理实时信号的设备,如移动通信、WLAN等通信设备的开发。
     S3C2510是一款低功耗、高效能、面向以太网系统的微处理器。它的系统时钟可达133MHz,并包含了16/32位宽的ARM940T核、4KB的I-CACHE和4KB的D-CACHE。 S3C2510带有两个独立的10/100Mbps的以太网控制器,这两个接口能够以硬件完成IEEE802.3的MAC层处理,因此更适合用作SOHO路由器、internet网关,甚至宽带无线接入设备的开发。ECOS操作系统也非常适合这些网络设备的开发,本文将介绍 S3C2510的移植方案,给各种以ARM为内核处理器的ECOS底层移植开发提供一个系统的范例。
    
    
    图 1 ECOS操作系统结构图
    ECOS底层移植的基础知识
    ECOS系统的主要组成部分如图1所示。操作系统的主要功能 及特点是由其内核所决定的,底层移植一般不会涉及到系统内核的内容。由图1可见,硬件抽象层是嵌入式操作系统和硬件直接接触的基本层,其将系统内核和具体的硬件平台彻底隔离开, 实现了系统内核与硬件的无关性,这就是操作系统具有良好可移植性的体现。因此,对于开发人员来说,移植操作系统真正的意义和工作在于移植操作系统的硬件抽象层。
    硬件抽象层HAL对处理器结构和系统硬件平台进行抽象,当要在一个新的目标平台上运行ECOS时,只需要对底层的硬件抽象层进行修改,便可迅速地将整个ECOS系统移植到新的平台上。硬件抽象层主要包括三大模块——体系结构抽象层(Architecture HAL)、变体抽象层(Variant HAL)和平台抽象层(Platform HAL)。体系结构抽象层主要是指ECOS所支持的具有不同体系结构的处理器系列,如ARM系列、PowerPC系列、MIPS系列等等。变体抽象层指的是处理器系列中某款处理器在Cache、MMU和FPU等方面所具有的特殊性。如 S3C2510属于ARM系列中的ARM940T,在变体抽象层中就会具体地针对ARM940T的Cache等方面作出定义。平台抽象层则是对当前系统硬件平台的抽象,包括了平台的启动、芯片选择与配置、定时设备、I/O寄存器访问以及中断寄存器等等。平台抽象层代码的编写是ECOS移植工作的重点。
    HAL移植的主要步骤
    建立适当的文件目录
    ECOS本身有一个完整的文件目录,只有把新建的底层文件放在适当的文件目录下面,才能确保配置和编译工作的成功,也有助于利用ECOS本身已有的源代码,如结构体系层和变体层中的许多成熟可用的代码。由于本系统中 S3C2510处理器的内核是ARM940T,因而可以把 S3C2510的目录建立在ECOS库路径packages/hal/arm/arm9/下。
    建立 S3C2510的cdl文件
    cdl文件使用cdl脚本语言描述该硬件设备(包或平台)的特性和常用指标。cdl文件实现系统在源码级的功能和指标配置,犹如一个项目管理高层对其仓库中组件特性的登记,只有登记后的包、组件和选项才能被操作系统配置工具识别和配置。
    以下是 S3C2510的cdl文件中的几段重要描述。
    * cdl_package CYGPKG_ HAL_ARM_ ARM9_ S3C2510
    这是 S3C2510在ecos.db中所登记的包的名字,它下面包含了该板的一些基本设置和组件,如母体体系结构(parent)、包含的头文件、编译的C文件等。
    * cdl_component CYG_HAL _STARTUP
    系统启动方式,有3种选择:ram启动、rom启动、romram启动。
    * cdl_component CYGNUM_ HAL_CPUCLOCK
    平台的系统时钟设置,以便于ECOS其他组件以此时钟为标准。该平台系统时钟的默认值设为133MHz。
    * cdl_option CYGNUM_HAL_ RTC_PERIOD
    ECOS内核的运行时钟单位。ECOS内核以一个tick为时钟单位,而一个tick的长度就等于该选项的设定值。
    在ecos.db中登记
     S3C2510的硬件包
    ecos.db是关于ECOS系统的一个数据库文件(在packages目录下),它包含了硬件包管理工具和一些在组件配置库中的包。与cdl文件相比,ecos.db登记了仓库中的物品,而cdl文件则登记每种物品的特性。只有在ecos.db中登记了的包,才能被ECOS的库编译工具(configtool)选中和使用。如果要在配置工具的模板选项中(template)增加可供选择的硬件目标板,那么,需要先在ecos.db中登记其包描述,再增加其目标板描述。一般的辅助硬件(如网卡、串口等)只需要第一步的登记。因此,在ecos.db中登记 S3C2510平台硬件包的基本步骤就是登记硬件平台的包描述(package CYGPKG_HAL_ARM_ ARM9_ S3C2510)和目标描述(target S3C2510)。需要注意的是,target S3C2510中所包含的3个硬件描述包CYGPKG_HAL_ARM、CYGPKG_HAL_ARM_ARM9和CYGPKG_HAL_ARM_ARM9_ S3C2510是不能缺少的,因为它们是标板的核心——主体系结构包、子体系结构包和主芯片包。另外,还可以可选地添加其他辅助硬件包(如网卡、串口等)。
    编写平台抽象层的有关代码
    硬件平台层所需编写的代码文件的一般功能如下所示。
    * include /plf_cache.h —— 平台专用cache处理 (可选)。在本系统中不需要编写,可直接调用ARM9变体层的hal_cache.h。
    * include / hal_platform_ints.h —— 平台专用中断处理,定义平台中断向量号。
    * include / plf_io.h —— I/O 定义和系统寄存器的宏定义。
    * include ?/ hal_platform_setup.h —— 平台启动代码。本文件主要用ARM汇编指令编写,实现平台上电后程序的启动和执行。
    * src/s3c2510_misc.c —— HAL的底层标准函数,包括时钟平台初始化、时钟延时函数、中断使能、中断屏蔽、中断响应等。
    * src/ hal_diag.c —— 硬件抽象层诊断输出函数,包含ECOS系统中printf打印的硬件设备驱动程序。
    * misc/ redboot_primary_ ram.ecm —— 基于RAM启动方式的redboot最小配置文件。
    * misc/redboot_primary_ rom.ecm —— 基于ROM启动方式的redboot最小配置文件。
    硬件启动过程
    编写硬件启动的初始化过程是HAL移植的一个难点。当硬件重新上电后,系统的程序指针会自动指向地址0(通常地址0存放着bootloader代码段)。在ECOS操作系统中,程序首先会运行vectors.S文件(该文件存在于hal/arm/arch/src/目录下),它定义了reset_vector、start等各种启动标号。接着调用 S3C2510平台层的hal_platform_ setup.h文件中的宏platform_setup1和arm9变体层arm9_misc.c文件中的函数 hal_hardware_init。
    hal_platform_setup.h定义了宏platform_setup1以供vectors.S调用。该宏定义了目标板上SDRAM和FLASH的初始化启动,其中包括了它们的取数方式和内存大小。然后根据不同的启动方式执行程序。对于RAM启动方式,无需进行程序段与数据段的搬移,系统已认为SDRAM的起始地址即为程序的起始地址;对于ROM启动方式,需要搬移数据段,而程序段无需搬移;对于ROMRAM启动方式,程序段与数据段都需要进行搬移,然后再把程序起始地址映射为SDRAM的起始地址。
    在程序搬移完成后,系统会进行其他硬件的初始化过程,包括系统时钟、系统CACHE、监控串口等基本硬件设备。
    内存布局文件编写
    平台的内存布局文件在include/pkgconf目录下。通常,每个平台包括了RAM、ROM和ROMRAM 3种不同启动方式的内存布局文件集。每种启动方式的内存布局文件集都由3个类型的描述文件组成:.h文件包含内存域的C宏定义;.ldi文件定义内存域和内存段位置的链接脚本文件;.mlt文件包括由MLT工具产生的对内存布局的描述。当需要手动修改内存布局时,只有.h和.ldi文件可以被修改,.mlt文件只能由MLT工具生成。
    下面以 S3C2510的ram启动方式内存布局为例,主要说明mlt_arm_s3c2510_ram.h和mlt_arm_s3c2510_ram.ldi的程序结构。
    由于 S3C2510的开发板有两个16MB的SDRAM,因而要定义两个内存域ram1和ram2。系统设置寄存器在初始化时已经把内存段重新映射,因而两个SDRAM的基地址就是0x0和0x40000000,两个内存域的大小是16MB,分配方式都是可读写的内存段。
    在mlt_arm_s3c2510_ram.ldi中分为两大部分。首先是 MEMORY部分,它定义了在RAM启动方式下所需要的内存域,以及该内存域的起始地址和长度。 MEMORY部分的内容必须与mlt_arm_s3c2510_ ram.h中定义的宏一致。其次是SECTIONS部分,它定义了RAM启动方式下所规定的内存段,这些内存段的定义与系统内存管理功能有关。在SECTION_XXX后带有相应的参数,这些参数包括了内存段所属的内存域、起始地址(或者是对齐方式)、虚拟内存地址(VMA)和加载内存地址(LMA)。
    以SECTION_fixed_vectors (ram1, 0x200, LMA_EQ_VMA)为例,它表示fixed_vectors段属于ram1内存域,起始地址为0x200,加载内存地址等于虚拟内存地址。LMA_EQ_VMA同时也可以解释为该内存段不需要在程序运行后重新分配加载。
    调试结果
     S3C2510目标板上带有1块4MB的FLASH和2块16MB的SDRAM。
    利用ECOS的自带编译工具configtool对新建的 S3C2510目标板进行编译,生成ECOS的库文件。然后把库目录下的 INSTALL目录内容复制到应用工程目录下,使ECOS库包含到应用工程中。然后把该工程的.elf文件利用EMBEST公司开发的IDE仿真器直接下载到目标板的SDRAM中。此时的ECOS操作系统应为RAM启动方式。
    通过IDE对程序的调试与测试结果表明,本文提出的 S3C2510移植方案使ECOS操作系统在目标板中运行正常稳定。该操作系统支持多个工作线程的应用程序。 S3C2510的串口、网口均能与pc机正常传输数据。
    结语
    ECOS是一款非常年轻的嵌入式操作系统,1997年才正式推广使用。现阶段有关ECOS开发的参考资料和专门从事人员仍然很少,造成了ECOS产品研发周期和开发成本的增加。因此,本文提出的ECOS操作系统的驱动底层代码编写方法对于使用ECOS开发产品具有相当重要的指导意义。
 
eCos实时操作系统参考文档与开发指南 eCos(Embedded Configurable Operating System)是一种开源、可配置的嵌入式实时操作系统,专为资源受限且对实时性要求严苛的设备设计。其核心特性在于高度模块化架构与“按需配置”机制,允许开发者通过组件库(CDL)精细裁剪系统功能,仅保留必要代码,显著降低内存占用与运行开销。 阅读详情

相关推荐

腾达N300 v2 5.07.53固件

腾达N300 v2最新固件5.07053

嵌入式可配置实时操作系统eCos

eCos是为嵌入式应用设计的无版税开放源代码的实时操作系统eCos的高度可配置性,允许对操作系统进行定制,以精确地匹配应用需求,提供最佳运行时性能和最少硬件资源占用。一个欣欣向荣的网络社区已经围绕eCos成长起来,可以确保持续的技术创新和广泛的平台支持。——eCos官网对eCos的介绍 mingdu.zheng <at> gmail <dot> comhttp://...

zoomdy's blog 1万+

嵌入式 驱动开发基础2》之 字符驱动

本课程介绍了字符驱动相关的知识,为后续课程打基础

嵌入式实时操作系统ECOS在S3C2510上的移植实现(转)

作者:华南理工大学电子与信息学院 赵楚莹 尹俊勋  来源:电子设计应用  发布时间:2006-4-25 下午 10:51:39 摘    要: 本文介绍了实时操作系统ECOS的特点及基本结构,并具体研究了ECOS在三星公司以ARM940T为内核的S3C2510嵌入式芯片上的移植方法。文章 着重讨论了移植过程中的重点与难点部分:ECOS的硬件抽象层(HAL)移植。该移植方案已经过实际测试,系统稳...

paofan 233

实时操作系统ECOS在S3C2510上的移植实现

<br />摘     要: 本文介绍了实时操作系统 ECOS 的特点及基本结构,并具体研究了 ECOS 在三星公司以 ARM940T 为内核的 S3C2510 嵌入式芯片上的移植方法。文章着重讨论了移植过程中的重点与难点部分: ECOS 的硬件抽象层 (HAL) 移植。该移植方案已经过实际测试,系统稳定可靠,可运行多任务式应用程序。 <br /> 关键词:实时操作系统ECOS ;硬件抽象层;移植; ARM<br />引言 <br /> ECOS(Embedded Configurab

564

eCos嘀嗒定时器

mingdu.zheng <at> gmail <dot> comhttp://blog.csdn.net/zoomdy/article/details/8869843 1.概述 嘀嗒定时器(Tick)是操作系统的核心部件之一,操作系统使用嘀嗒定时器实现时间片轮、延时、超时判断等特性。 本文介绍eCos系统中的嘀嗒定时器的使用和实现,以及需要考虑的一些问题。 ...

zoomdy's blog 4804

eCos启动过程详解,基于Cortex-M架构

eCos是开源免版税的抢占式实时操作系统。其最大亮点是可配置,与其配套的图形化配置工具提供组件管理、选项配置、自动化单元测试等。eCos核心组件包括硬件抽象层(HAL)、设备驱动(IO)、实时内核(两种调度算法可选)、线程安全的C库、POSIX兼容层、文件系统(FAT、JFFS2、ROMFS)、协议栈(lwIP、OpenBSD、FreeBSD)、图形系统(Nano-X)等,同时支持第三方扩展组件。...

zoomdy's blog 4874

ecos代码分析(2)

228         bl      hal_mmu_init 此前内存初始化好了,sp也设置好了,可以运行C程序     170 void     171 hal_mmu_init(void)     172 {     173     unsigned long ttb_base = SMDK2410_SDRAM_PHYS_BASE + 0x4000;

mrwangwang的专栏 758

eCOS嵌入式操作系统详细介绍与特点

eCOS由Redhat推出的小型即时操作系统(Real-Time operating system),最低编译核心可小至10K的级别,适合用于作bootloader增强,微小型系统。 此系统和嵌入式Linux系统的差异是他将操作系统做成静态连结(static library)的方式,让应用程式透过连结(linker)产生出具有操作系统的特性的应用程式。 eCOS的全称为embedded Confi

Java鸟 6436

Zigbee模块选型深度分析:Flash、RAM和芯片平台如何影响物联网设备生命周期

在物联网项目中,Zigbee模块选型往往不是简单比较通信距离和发射功率。很多工程师在项目初期,会重点关注无线性能,例如模块是否支持Zigbee 3.0、是否支持Mesh组网、接收灵敏度是否满足要求。原因在于,一个实际运行中的Zigbee设备,并不仅仅负责无线数据收发,它还需要运行协议栈、处理业务逻辑、保存设备参数,并可能承担OTA远程升级、网络管理等功能。因此,**Zigbee模块怎么选?Flash需要多大?RAM资源是否足够?**这些问题实际上决定了产品未来几年是否具备持续升级和维护能力。

2601_96439306的博客 195

位运算总结

学习总结

UIU114的博客 614

S009A-基于STM32单片机出租车计价器【Proteus仿真+Keil程序+原理图】

设计以STM32单片机、A3144霍尔传感器、OLED显示屏、L9110电机驱动、直流减速电机、磁钢、按键及LED灯搭建硬件系统。A3144采集电机转动脉冲,计算车速与行驶里程,OLED展示计价状态、里程、速度与费用。按键配置起步价、公里价、低速等待价,参数由FLASH掉电保存,按计费公式完成费用核算,单片机输出PWM控制电机转速。

51单片机实物制作DIY设计 242

基于抗辐射MCU的卫星分布式控制系统CANFD总线架构研究

摘要:随着低轨卫星功能复杂度的持续提升,星上各分系统之间的数据交互量呈指数级增长,传统CAN总线在带宽与实时性方面的局限日益凸显。CANFD(Controller Area Network with Flexible Data-rate)作为CAN协议的升级版,将单帧数据负载从8字节扩展至64字节,并将数据段最高传输速率提升至4 Mbps,已成为新一代卫星内部总线的重要候选方案。本文以国科安芯AS32S601ZIT2型商业航天级微控制器为核心,基于该器件在重离子加速器、质子加速器及总剂量辐照下的实测抗辐射数

ANSILIC的博客 1975

104/101协议-104协议开源库

<think>我们只需要根据内容生成≤150字的摘要。内容是关于lib60870开源库的介绍,包括概述、特性、核心组件、应用场景等。摘要要简洁,抓住重点。</think>lib60870是用于IEC60870-5-101/104协议的开源C库,支持串行与TCP/IP通信,跨平台且可嵌入,提供TLS加密,适用于电力SCADA、数据采集和远程控制。其核心含CS101、CS104模块,轻量高效,但文档简略。代码示例、学习资源及库获取方式详见原文。

梦想启航 503

基于stm32的智能荷兰豆生长舱监控系统

基于stm32的智能荷兰豆生长舱监控系统 硬件: 一、信息采集: 采集光照强度、二氧化碳浓度、温湿度、土壤氮磷钾、土壤湿度、土壤PH,土壤电导率 二、功能: 1.将采集到的数据通过显示屏进行显示,并且可用上位机同步显示; 2.手动模式:可按键(上位机)控制水泵,风扇通风系统、补光系统的打开和关闭。能够通过按键设置温度或者湿度的报警范围, 同时当蜂鸣器报警后能够通过按键(上位机)消音,通过按键(上位机)修改的状态会在上位机(显示屏)中同步显示修改; 3.自动模式下 (1)当温度超过温度上限时会产生声光报警并驱

计算机专业定做 152

开源 lwIP:单片机上的轻量 TCP/IP 协议栈

我们要的是 Linux 那套完整网络世界,还是一份能塞进 MCU 的、可裁剪的 TCP/IP?lwIP 把路走窄了,也走实了:窄在不做通用 OS 网络子系统;实在无数量产固件里默默转发每一包。它不靠刷星证明自己,靠的是——你打开厂商工程时,头文件里已经写着lwip。厂商/官方 echo 例程 → 读懂lwipopts.h→ ping 通 → 一条 TCP/UDP → 再叠 MQTT/HTTP。别第一天就对吞吐和 TLS 一起开战——先让协议栈在板上「活着」。

buhuidage的博客 126
上一篇: ecos, redboot学习1
下一篇: ecos,redboot,usb学习03.14
老腊肉泡酒
博客等级 码龄19年 22粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值