基于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内核中断响应快,代码量小,稳定性好,为嵌入式实时操作系统的应用提供了参考。


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

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

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

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

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

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

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

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