基于LPC2294嵌入式处理平台实现eCos操作系统的应用

发布时间:2023-04-03  

1 引言

嵌入式实时操作系统的使用,可以增强系统性能,确保系统稳定性和可靠性,便于维护开发应用程序.因此越来越广泛 的使用于各种嵌人式系统中。eCos(Embedded Cofigurable Operating System)是一种开源的、免版税的、实时的嵌入式操作系统,适合于深度嵌入式应用,主要应用于消费电子、通信产品、汽车电子等领域。与其它嵌入式实时操作系统不同,eCos具有独特的可配置能力和配置机制。同时eCos具有良好的开放性、兼容性、稳定性、可扩展性和可移植性,而且支持ARM、MIPs、M68K、PowerPC等众多微处理器。因此ecos日益受到嵌入式设计人员的关注,正在越来越多应用于嵌入式产品中。


2 eCos体系结构介绍

ecos使用多任务抢占机制,具有中断延迟小,支持同优先级调度,支持嵌入式系统所需的所有同步原语,拥有灵活的调度策略和中断处理机制。而且ecos提供了完备的嵌入式开发功能,包括设备驱动程序、内存管理、例外处理、标准库函数、GNU编译工具集等。


eCos采用模块化的设计,将不同功能的软件分为不同的组件,这些组件具有可重用性,分别位于系统的不同层次,这种分层结构使eCos具有良好的可配置性、可移植性、可兼容性和可扩展性。eCos的层次结构如图1所示。


在eCos体系中最底层的是硬件抽象层HAL(Hardware Abstraction Layer),它负责对目标系统硬件平台进行操作和控制,包括硬件初始化,中断和异常的处理。HAL屏蔽了底层硬件的 不同,为上层提供了统一的接口。在进行eCos的移植中,关键要对HAL进行修改,即可将整个eCos系统移植到新的硬件平台上。HAL根据所描述的硬件对象的不同可以分为体系结构抽象层(Architecture HAL)、变体抽象层(Variant HAL)、平台抽象层(Platform HAL)。

基于LPC2294嵌入式处理平台实现eCos操作系统的应用

图1 eCos的层次结构

RedBoot是eCos提供的一个Boot Loader程序,RedBoot可以引导eCos系统,加载eCos应用程序,提供Debug支持,对目标系统环境参数进行管理等。


设备驱动程序负责对硬件设备进行控制管理,并完成设备数据的读写操作。驱动程序为上层软件提供API函数,应用层使用API函数对设备进行访问.完成对设备的操作。


内核是eCos中的核心,它负责完成任务调度、同步原语、处理中断和例外、进行内存管理、负责定时机制,保证系统的实时性等功能。


OS抽象层中实现了TCP/IP网络协议、文件系统、标准库函数调用等,为嵌入式应用层软件和应用程序提供API接口函数。


eCos的分层结构,使整个软件结构清晰、有良好的可维护性和可移植性。


3 LPC2294硬件平台

LPC2294是NXP公司的嵌入式微处理器芯片.属于ARM7TDMI-S系列。LPC2294有丰富片内资源,而且功耗低.性价比高,可以应用在通信网关、工业控制、医疗设备等多种嵌入式领域中。如图2是硬件平台的结构框图:

图2硬件平台框图

硬件平台以LPC2294处理器为核心,外嗣器件包括8MB NOR nash(SST39VF6401B)、512kB SRAM(IS61LV51216)、标准20针JTAG接口、RTL8019网卡芯片、RS232串口等组成。本文以此硬件平台为基础.介绍eCos的移植工作,为以ARM内核为处理器的eCos移植开发提供一个范例。


4 eCos在LPC2294上的移植

由于eCos支持大部分嵌入式CPU,可移植性强,故eCos的移植丁作主要是HAL的移植。其中平台抽象层的移植是HAL移植的重点,包括内存布局、平台初始化、中断控制器、串口驱动程序等修改。在移植过程中,如果要将eCos移植到还不支持CPU体系结构,简便高效的方法是利用eCos已经支持的相同体系结构CPU的硬件平台作为模版,建立CDL文件。在ecos.db中进行登记,以与新的目标平台相适应,进而进行移植工作。最新版本的eCos已经支持LPC2294处理器,故ecos在LPC2294上的移植的主要工作是对平台抽象层的相关文件进行修改.采用图形化配置工具进行配置编译和生成镜像文件,完成调试和 移植工作。


4.1建立交叉编译环境和配置工具

eCos的源码可以在eCos维护公司eCosCentric的网站中下载.地址是http://www.ecoscentric.com。由于eCos采用GNU工具集进行编译.因此本文的主机使用RedHat9.0操作系统,并安装gcc-3.2.1、binutils-2.13.1、newlib-1.11.0、insight-5.3、wxGTK-2.4.0工具,同时安装交叉编译器arm-elf-tools工具,建立起eCos针对ARM平台的交叉编译环境。


另外还要根据主机环境,生成eCos的配置丁具步骤如下:

将eCos解压到/opt目录中,并在/opt目录中建立src、wxbuild、infra-build、ecos-tools、configtool-build目录。首先要配置wxWidget静态链接支持,编译并安装wxGTK,执行如下命令:cd /opt/wx build;/opt/src/wxGTK-2.4.0/configure disable-shared disable sockets prefix=/opt/wxGTK-2.4.0;make;make install

配置,编译和安装eCos的主机基础环境,执行如下命令:

cd /opt/infra -build; /opt/ecos/host/configure prefix=/opt/ecos-tools; make; make install

编译安装ecos配置工具,执行如下命令:

cd /opt/configtool -build; make f /opt/ecos/host/tools/configtool/standalone/wxwin/makefile. gnu install WXDIR=/opt/wxGTK2.4.0 ECOSSRCDIR=/opt/ecos/host INSTALLDIR=/opt/ecos- tools

这样,就完成了eCos的配置工具安装,它位于/opt/ecos-tools/bin目录中,包括了图形配置工具configtools和命令行配置工具ecosconfig。


4.2 配置基本硬件平台

与LPC2294相关的文件在ecospackageshalarmlpc2xx 目录中,在/opt/ecos-tools/bin中运行图形化配置工具configtools,在huild选项的Templates选择和LPC2294相近的模板.就可以进行具体的平台级配置。本文选择phyCORE-LPC2294/92 development board HAL模板作为基本配置平台,根据实际目标系统平台修改ecos中的选项,主要修改包括:

a) 修改ARM vector at 0x14选项的值,LPC2XXX系列处理器将ox14处的值作为有效用户代码判断条件,应该满足向量表所以数据32位累加和为0的要求;

b) 修改CPU xtal frequency选项的值,这是CPU晶振值,默认为10MHz,根据实际情况修改为11059200;

c) 修改CPU PLL multiplier选项的值,内部PLL倍频值默认为6,修改为4;

d) 修改eCos kernel选项的值,根据需要删减内核中不需要的选项;

e) 修改I/O sub-system选项的值,根据实际I/0设备的情况,配置I/0选项;

f) 修改其它配置选项,以适应目标系统平台。

这样就通过图形化配置工具,配置完成了eCos的大部分选项。然而,图形化配置工具并不能完成所有的eCos配置功能.因此还需要对内存分布文件、Flash驱动文件进行修改。


4.3 修改内存布局

内存布局文件在ecos/packages/hal/arm/lpc2xxx/phycore229x/current/include/pkgconf目录中,里面包含了RAM、ROM两种不同启动方式的配置文件,而每种启动方式又对应三种文件格式,分别为:

ldi文件,链接脚本文件,定义了LPC2294的内存域起始地址和长度和段地址,为程序链接时使用。

h文件,使用c宏定义描述LPC2294存储器起始地址和大小.指定程序运行时堆起始地址和大小。

mlt文件,配置工具保存文件,只能由配置工具生成和改变,不能手动修改。

以LPC2294为例,在ROM启动时需要修改mlt_arm_lpc2xxx_phycore229x_rom.h文件中的定义,以片外ROM的分配和堆地址分配为例,其代码如下:

#define CYGMEM_REGlON—flash(0x80000000)

#define CYGMEM_REGl0N_flash_SIZE(CYGHWR_HAL_ARM_PHYCORE229X_FLASH_SIZE)

#define CYGMEM_REGlON_flash_ATTR (CYCMEM_REGION_ATTR_R)

#define CYGMEM_SECCTION_heap1 (CYG_LABEL_NAME(_heap1))

#define CYGMEM_SECTION_heap1_SIZE(0x81000000+CYGHWR_HAL_ARM_PHYCORE229X_SRAM_SIZE - (size_t) CYG_LABEL_NAME (_heap 1))

这样,定义了片外ROM的起始地址为0x80000000,大小为宏定义中flash的尺寸;定义了程序的堆起始地址为0x81000000,大小也在宏定义中规定。


4.4添加Flash驱动

本文的硬件平台Flash型号为SST39VF6401B,在eCos中并不支持此型号的Flash,所以要为eCos添加Flash的驱动程序。SST39VF6401B是8MB的16位NOR型Flash,块空间数为128,每个块大小为64KB。选择eCos已支持的与此Flahh相近的型号AT49系列进行修改.将flash_dev_info_t中的block_size和block_count值分别改为0x10000和0x80。并且编写与Flash底层驱动对应的CDL文件,使配置工具能够正确配置编译F1ash驱动程序,参照AT49驱动包的CDL,将cdl_package定义改为CYGPKG_DEVS_Flash_SST_39VF6401B。在命令体中给出配置参数。最后,在ecos.db中注册Flash的底层驱动软件包,这样再次使用图形化配置工具,就可以在eCos配置选项选择SST39VF6401B型Flash。


4.5修改初始化程序

在eCos启动时要运行初始化程序,以完成LPC2294的运行模式设定、时钟频率设定、串口波特率设定等操作,初始化程序在hal/arm/lpc2xxx/phycore229x_misc.c文件中,phycore229x_misc.c调用hal_platform_ints.h的宏定义完成系统中断定义,之后调用hal_platform_setup.h中的宏定义完成中断初始化,配置系统时钟,和内部存储器初始化等操作。修改phycore229x_misc.c中的有关函数,完成针对本系统平台的初始化。


4.6运行结果

在完成上述驱动的编写和文件的修改之后,重新使用configtools工具进行配置,使用build选项完成eCos操作系统的编译,产生内核库文件和链接脚本以及头文件,将生成的文件与应用程序一起编译、链接,生成最终的可执行映像文件。将可执行影像文件下载到Flash中运行,经测试eCos支持多个线程的应用程序操作,且其串口、网口均能与PC机进行正常通信,说明eCos在LPC2294上的移植是成功的。


5 总结

嵌入式可配置操作系统eCos与其他嵌入式实时操作系统相比,有着更好的可配置性和可移植性,这使其在嵌入式系统的应用日益广泛。本文将eCos成功的应用在了以LPC2294为核心的硬件平台上,并编写了相应的Flash驱动程序和应用程序,对于eCos在ARM7FDMI系统中的应用提供一些借鉴和指导。


本文的创新点:实现了eCos在LPC2294上的移植和应用。在实际应用中eCos内核中断响应快,代码量小,稳定性好,为嵌入式实时操作系统的应用提供了参考。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    服务、输入处理、程序执行、输出 处理 五个阶段,这五个阶段扫描一次所需的时间称为扫描周期。 扫描周期与 CPU 运行速度、 PLC 硬件配置和用户程序长短有关。 6、 PLC 采用什么方式执行用户程序......
    描过程包含内部处理、通信服务、输入处理、程序执行、输出 处理 五个阶段,这五个阶段扫描一次所需的时间称为扫描周期。 扫描周期与 CPU 运行速度、 PLC 硬件配置和用户程序长短有关。 6、 PLC 采用什么方式执行用户程序......
    描过程包含内部处理、通信服务、输入处理、程序执行、输出 处理 五个阶段,这五个阶段扫描一次所需的时间称为扫描周期。 扫描周期与 CPU 运行速度、 PLC 硬件配置和用户程序长短有关。 6、 PLC 采用什么方式执行用户程序......
    个阶段扫描一次所需的时间称为扫描周期。 扫描周期与CPU运行速度、PLC硬件配置和用户程序长短有关。     6、PLC采用什么方式执行用户程序?用户程序执行过程包括哪些阶段? PLC采用循环扫描的方式执行用户程序,用户程序......
    长短有关。 6、PLC采用什么方式执行用户程序?用户程序执行过程包括哪些阶段? PLC采用循环扫描的方式执行用户程序,用户程序的执行过程包括输入采样阶段、程序执行阶段和输出刷新阶段。 7......
    长短有关。 6、PLC采用什么方式执行用户程序?用户程序......
    用什么方式执行用户程序?用户程序执行过程包括哪些阶段?  PLC 采用循环扫描的方式执行用户程序,用户程序的执行过程包括输入采样阶段、程序执行阶段和输出刷新阶段。 7、 PLC 控制系统与继电器控制......
    冲击耐受电压→短路短延时动作时间 49.西门子PLC运动控制轴定义(线性轴/旋转轴/模拟轴) 50.电动机电路空开、接触器、热继电器的选型方法......
    rst控制,一个输出点在程序里多处出现。 用什么套路,各自优缺点是什么? 网友A 我倾向第二种,第一种手自动切换有点麻烦增加程序步数,如碰到单控电磁阀,自动将气缸置位了。 这时切换到手动,手动控制该气缸时还得去吧自动......
    CRT3-6轴抛光运动控制系统工件加工编辑方法及步骤;科瑞特DMC600系列是一款多功能的运动控制系统,主要应用于焊接、抛光、机械手等设备。实现多轴联动,多种插补,如:直线、圆弧、抛物线、螺旋......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>