当前位置:首页 > 代码 > 正文

ecos源代码(ecos源代码下载)

admin 发布:2022-12-19 19:02 106


本篇文章给大家谈谈ecos源代码,以及ecos源代码下载对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

嵌入式C语言重点知识点

嵌入式C语言重点知识点

嵌入式LINUX

嵌入式Linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。Linux做嵌入式的优势,首先,Linux是开放源代码;其次,Linux的内核小、效率高,可以定制,其系统内核最小只有约134KB;第三,Linux是免费的OS,Linux还有着嵌入式操作系统所需要的很多特色,突出的就是Linux适应于多种CPU和多种硬件平台而且性能稳定,裁剪性很好,开发和使用都很容易。同时,Linux内核的结构在网络方面是非常完整的,Linux对网络中最常用的TCP/IP协议有最完备的支持。提供了包括十兆、百兆、千兆的以太网络,以及无线网络,Token Ring(令牌环网)、光纤甚至卫星的支持。

移植步骤:

1.Bootloader的移植;

2.嵌入式Linux操作系统内核的移植;

3.嵌入式Linux操作系统根文件系统的创建;

4.电路板上外设Linux驱动程序的编写。

WinCE

WinCE是微软公司嵌入式、移动计算平台的基础,它是一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统,它是精简的Windows 95,Win CE的图形用户界面相当出色。WinCE是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。它的模块化设计允许它对于从掌上电脑到专用的工业控制器的用户电子设备进行定制。操作系统的基本内核需要至少200K的ROM。

一般来说,一个WinCE系统包括四层结构:应用程序、WinCE内核映像、板级支持包(BSP)、硬件平台。而基本软件平台则主要由WinCE系统内核映像(OS Image)和板卡支持包(BSP)两部分组成。因为WinCE系统是一个软硬件紧密结合的系统,因此即使CPU处理器相同,但是如果开发板上的外围硬件不相同,这个时候还是需要修改BSP来完成一个新的BSP。因此换句话说,就是WinCE的移植过程主要是改写BSP的过程。

Android

Android 是一个包括操作系统,中间件以及一些重要应用程序的专门针对移动设备的层次结构的软件集。Android 作为一个完全开源的.操作系统,是由操作系统Linux、中间件以及核心应用程序组成的软件栈。通过 android SDK 提供的 API 以及相应的开发工具, 程序员可以很方便的开发android平台上的应用程序。其整个系统由应用程序,应用程序框架,应用程序库,Android运行库,Linux内核(Linux Kernel)五个部分组成。Android操作系统内置了一部分应用程序, 包括电子邮件客户端、SMS程序、日历、地图、浏览器、通讯录以及其他的程序,值得一提的是这些所有的程序都是用java编写的。

移植的主要的工作是驱动,硬件抽象层的移植。为了更好地理解和调试系统,也应该适当地了解上层对硬件抽象层的调用情况。

TinyOS

TinyOS是一个开源的嵌入式操作系统,它是由加州大学的伯利克分校开发出来的,主要应用于无线传感器网络方面。程序采用的是模块化设计,所以它的程序核心往往都很小,一般来说核心代码和数据大概在400 Bytes左右,能够突破传感器存储资源少的限制。TinyOS提供一系列可重用的组件,一个应用程序可以通过连接配置文件(A Wiring Specification)将各种组件连接起来,以完成它所需要的功能。

嵌入式实时操作系统(RTOS)

在工业控制、 军事设备、航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。故对嵌入式实时操作系统的理解应该建立在对嵌入式系统的理解之上加入对响应时间的要求。

FreeRTOS

FreeRTOS是一个迷你操作系统内核的小型嵌入式系统。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能等,可基本满足较小系统的需要。FreeRTOS任务可选择是否共享堆栈,并且没有任务数限制,多个任务可以分配相同的优先权。相同优先级任务的轮转调度,同时可设成可剥夺内核或不可剥夺内核。

FreeRTOS 的移植主要需要改写如下三个文件。

1.portmacro.h

2.port.c

3. port.asm

μTenux

μTenux基于ARM微控制器平台,对uT最适用于ARM Cortex M0-M4系列的微控制器,代码开源、免费,是一个功能强大的抢占式实时多任务操作系统。μTenux除具有实时嵌入式操作系统的一般特性:可移植性,可固化,可裁剪等特性以外,它还具有如下优点:

(1)微内核。无MMU, ROM/RAM占用量小,所占ROM最大60KB,最小10KB;RAM最大12KB,最小2KB;

(2)开源免费;

(3)支持所有32位ARM7/9和Cortex M系列的微控制器;

(4)可配置多达到256个任务以及140个任务优先级;

(5)有良好的商业支持, T-Engine论坛进行总的维护。

移植主要包括:芯片系统时钟移植,外设移植和通用输出/输入端口的移植以及看门狗模块移植。由于考虑到内核代码的重要性以及其在整个移植中的重要意义,且为了整个系统有更好的实时性,可选用汇编语言编写操作系统的启动代码。

VxWorks

VxWorks系统提供多处理器间和任务间高效的信号灯、消息队列、管道、网络透明的套接字。实时系统的另一关键特性是硬件中断处理。为了获得最快速可靠的中断响应,VxWorks系统的中断服务程序ISR有自己的上下文。VxWorks实时操作系统由400多个相对独立的、短小精炼的目标模块组成,用户可根据需要选择适当模块来裁剪和配置系统,这有效地保证了系统的安全性和可靠性。系统的链接器可按应用的需要自动链接一些目标模块。这样,通过目标模块之间的按需组合,可得到许多满足功能需求的应用。

移植过程可以参考网络上一些BSP代码,BSP的英文全称为board support package,即板级支持包,它的作用是针对特殊的硬件平台,为VxWorks内核提供操作的接口。

μClinux

嵌入式Linux作为一个开放源代码的操作系统,以价格低廉、功能强大又易移植的特性正在被广泛应用,μClinux是专门针对没有MMU的处理器而设计的嵌入式Linux,非常适合中低端嵌入式系统的需求。 在GNU通用公共许可证的授权下,μClinux操作系统的用户可以使用几乎所有Linux的API函数,不会因为没有内存管理单元MMU而受到影响;而且,μClinux在标准的Linux基础上进行了适当的裁剪和优化,形成了一个高度优化的、代码紧凑的嵌入式Linux,体积小了,但是仍然保留了Linux的大多数的优点,比如稳定性好、强大的网络功能、良好的可移植性、完备的文件系统支持功能、以及标准丰富的应用程序接口API等,可以支持类似ARM7TDMI等类型多的小巧玲珑的中央处理器。

eCos

eCos中文翻译为嵌入式可配置操作系统或嵌入式可配置实时操作系统。适合于深度嵌入式应用,主要应用对象包括消费电子、电信、车载设备、手持设备以及其他一些低成本和便携式应用。eCos是一种开发源代码软件,无任何版权费用。 eCos最大的特点是模块化,内核可配置。如果说嵌入式Linux太庞大了,那么eCos可能就能够满足要求。它是一个针对16位、32位和64位处理器的可移植开放源代码的嵌入式RTOS。和嵌入式Linux不同,它是由专门设计嵌入式系统的工作组设计的。eCos具有相当丰富的特性和一个配置工具,后者能够让你选取你所需要的特性。

eCos的软件分了若干的模块,移植工作主要在他的hal层进行,所谓hal(硬件抽象层)就是把和硬件相关的软件凑到一起。

μC/OS-II

μC/OS-II是一个完整的、可移植、可固化、可裁剪的占先式实时多任务内核。μC/OS-II绝大部分的代码是用ANSI的C语言编写的,包含一小部分汇编代码,使之可供不同架构的微处理器使用。其结构小巧简洁且支持抢占式的多任务调度与管理。此实时操作系统管理任务数多达64个,且提供内部程序存储器管理、系统运行时间管理、多任务实时调度与管理等功能。由于它的作者占用和保留了8个任务,所以留给用户应用程序最多可有56个任务。赋予各个任务的优先级必须是不相同的。这意味着μC/OS-II不支持时间片轮转调度法。μC/OS-II为每个任务设置独立的堆栈空间,可以快速实现任务切换。

将μC/OS-II操作系统移植到目标处理器上,需要从硬件和软件两方面来考虑。硬件方面,目标处理器需满足以下条件:

①处理器的C编译器能产生可重入代码;

②用C语言可以开/关中断;

③处理器支持中断,并且能够产生定时中断(通常在10~1000 Hz之间);

④处理器能够支持容纳一定量数据的硬件堆栈;

⑤处理器有将堆栈指针和其他寄存器读出和存储到堆栈或内存中的指令。

软件方面,主要是一些与处理器相关的代码移植,其分布在OS_CPU.H、OS_CPU_C.C和OS_CPU_A.ASM这3个不同的文件中。

u_int8_t大家帮帮忙啊!!在线等待!

在标准C语言中好像没这个数据类型,应该是用户自己定义的吧,或者你那个编译器的的头文件里定义的

嵌入式开发,ARM9,Linux,eCos,开发板

(1) 如你所说的,不同行业的主流芯片确实不同。手机业者MTK,展讯,TI;智慧型手机 Samsung,MTK,nVidia,Qulacomm;平板 Samsung,Apple A4,nVidia,Qulacomm,TI;拉哩拉匝的一堆。所以要看您所想做的行业。根据您的描述,Qualcomm, Marvell 以及 ATMEL (当然,其实 ATMEL ARM 不强,ATMEL AVR 比较强) 等公司都适合您的需求。

(2) 以开发板来说,既然你已在那个行业,直接看看你们用的开发板,会是比较好的。Bootloader 每家都有,大同小异;Linux/eCos 多半都是开放源代码;只有一些周边的驱动,你得自己来写。

(3) 以你来说,条理分明,论述清楚,还有现成的环境,但是要掌握整体的东西,还需要一段时间。建议你先从 ARM 的整体架构研究,进而看 boot loader 如果初始化ARM,同时看看操作系统;这些会了之後,对你以後会有很大的帮助。

ECOS环境设置问题:invalid package database

我也遇到了tcl84.dll缺失了问题,但是没有像你这么做。可能是你解决tcl84.dll的方法不对,所以才有后面的错误。

照上面说的,去ftp下载ecos-tools-bin-120425.cygwin.tar.bz2,然后利用cygwin解压,不要在WIN7环境用RAR之类的解压软件,覆盖原来的/tools/bin/下面的四个文件,再以管理员身份运行configtool就可以了。

不过我想你最好要恢复之前的环境,也就是删掉你网上下载的tcl84.dll和用原来的ecos.db。

如何构建eCos嵌入式系统

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所示。

图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 S3C4510B为核心的平台SNDS4110ˇ当需要移植ECos到ARM CPU S3C44B0上时ˇ这将是一个很好的起点。

移植工作最好是从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文件完成。主要的函数如下ˇ

点击看原图

⑧修改或增加平台初始化程序。平台初始化在3个文件文件中完成ˇsrc/ S3C44B0 _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执行完成后立即运行。ECos设备驱动程序一般可分为三个部分ˇ如图2所示。

图2

ECos的所用设备驱动程序都使用设备表入口来描述。使用宏DEVTAB_ENTRY()可生成设备表入口。其格式为ˇ

点击看原图

设备入口中的句柄Handlers包含了一组设备驱动程序接口函数ˇ是设备函数表DEVIO_TAB的指针ˇDEVIO_TAB包含了一组函数的指针。设备I/O函数表通过DEVIO_TAB宏来定义ˇ格式如下ˇ

在ECos的初始化引导过程中ˇ对系统中的所有设备调用其ˇ应的Init()函数ˇ即DEVTAB_ENTRY宏注册的初始化函数ˇˇ所有对设备的I/O操作通过Handlers完成。

ecos可以编译到linux上吗

举例,头文件名 abc.h 函数名为 abc_test(); 第三方库头文件目录为/abc/include/ 链接库目录为/abc/lib/

1、头文件和源文件:这是最好的情况,引用头文件和相关函数即可。

如:#include "abc.h"

abc_test();//直接调用即可

编译时,Makefile中加入编译选项 -I/abc/include 为了能将库的头文件引进来。

而且你的程序运行时,不再需要这个第三方库。

2、静态链接库:引用头文件和相关函数,设提供的静态库名为 libabc.lib

编译时,Makefile中加入 编译选项

1)-I/abc/include #编译时加,为了能将库的头文件引进来;

2)-L/abc/lib -labc #链接时加的

而且你的程序运行时,不再需要这个第三方库。

3、动态链接库,设动态链接库为libabc.so

调用动态链接库文件,需要dlopen等函数

编译时,Makefile中加入 编译选项

1)-I/abc/include #编译时加,为了能将库的头文件引进来;

2)-L/abc/lib -labc #链接时加的

注意:你的程序运行时,需要这个第三方库的libabc.so文件。

关于ecos源代码和ecos源代码下载的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/19189.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载