ecos, redboot学习1

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

mypath是ecos的安装目录 mypath/ecos/package/ecos.db记录了现有的包(package)和目标板(target)描述.

一个target包含若干的package,target的描述会出现在configtool的templete的选项里。Target里同时指定了包含的package。照猫画虎的添加上自己的package和target后就可以在configtool的templete里看到。

    Ecos的软件分了若干的模块,移植工作主要在他的hal层进行(包含在package/hal路径下),所谓hal(硬件抽象层)就是把和硬件相关的软件凑到一起,因为其他大部分代码使用C和C++,和硬件都是无关的,所以主要研究这一部分代码就可以进行移植,实际工作更加简单,因为ecos的HAL还分了几层,Common HAL, Architecture HAL,Variant HAL,Platform HAL,这几个层次同样可以在软件结构上找到对应关系,以三星的snds平台为例,首先在hal路径下可以看到common目录,/hal/arm/arch/目录,以及/hal/arm/snds/目录。这和上面的几层基本是对应的,当然这里这里面可以认为Variant HAL,Platform HAL合并了, 值得注意的是以上每个目录下的cdl目录下的cdl文件,打开configtool,在build->templete中选择samsung snds平台和redboot包后,可以看到出现相应的选项,其中有一个eCOSHal选项,该选项展开以后有ARMarchitecture,再展开以后还有SamsungSNDS evaluation board 选项,展开后同样有诸多选项,分别打开以上目录中的cdl文件,和这些选项对照,发现每一层的选项和每一层的CDL文件中的描述一一对应(虽然不知道CDL文件的语法,但对应关系还是很清晰)。可以说每一层之间相同的软件模块都有很大的借鉴,(一般可以直接COPY,然后根据不同之处作相应的改动即可)。对于现代的CPU,因为是ARM体系的,所以位置和arm下其他cpu模块是并列的,同时可以大量借鉴。    

     另一个问题是configtool中的选项如何在代码中实现,其实研究一下可以发现大部分选项对应一个宏定义,而选项的值将被用作代替这个宏,当然选项中还有对一些文件的选择,将在编译链接的时候用到。

    通过配置文件配置完毕后,会被要求保存ecc文件,同时会在该目录下生成一个build目录和install目录,build目录存放最终需要编译的代码,这时再看hal目录,发现每一层只剩下和自己平台相关的文件了。

需要修改和研究的文件:

   Variant HAL
Some variant HALs may add extra files for variant specific serial drivers, or for handling interrupts/exceptions if it makes sense.

     build目录下存放的是编译的目标文件,不是源文件。 redboot和自己的bootloader可以并行,实际上hal_platform_setup.h中实现了平台的基本初始化,是通过PLATFORM_SETUP1这个宏实现的。

如果没有硬件板子,可以先简单做一个软件仿真,应用ADW调试工具,在option选项中选择configure----ARMulate-----configure,在其中设置必要的微处理器内核,和一些其他选项,[适应你的cpu] 就可以仿真了。

Redboot,虽然现代可能已经移植好了,但是我们的目的是学习嘛,所以我就把我针对s344b0x01移植时的相关代码和步骤说一下,让大家批评指正。

首先:改动ecos.db增加我的packages和target
package CYGPKG_HAL_ARM_HLAS {
alias { "Dongsin HLAS" hal_arm_hlas arm_hlas_hal}
directory hal/arm/hlas
script hal_arm_hlas.cdl
hardware description " The HLAS HAL package provides the support needed to un eCos on a Dongsin HLAS eval board" }
target hlas {
alias { "Dongsin HLAS" HLAS hlas hlas100}
packages { CYGPKG_HAL_ARM CYGPKG_HAL_ARM_HLAS }
enable { CYGHWR_HAL_ARM_LITTLEENDIAN}
description " The hlas target provides the packages needed to run eCos on a Dongsin HLAS eval board." }
然后,修改我的packages CYGPKG_HAL_ARM_HLAS.CDL 大部分可以参考模板

三、 定义I/O moacos 在做这部分工作时一定要有耐性,定义要按照模板进行 这块做的好会给以后的编程带来方便。

四、 编写基本的串口驱动了,

一直推荐研究这个bootloader是因为ecos的可移植性方面的工作和提供的工具是其他开发源码bootloader无法相比的,希望能总结出新平台的移植细节,从而是大家在其他平台上也可以迅速移植并使用。虽然源代码有了,有些东西还是应该分析清楚,以配合硬件组连调。

 

 

 

 

Note that these files may be mostly empty if the CPU variant can be controlled by the generic architecture macros. The definitions present are only conditionally defined - if the equivalent platform headers provide the definitions, those override the variant definitions.

File Description
include/var_arch.h Saved register frame format, various thread, register and stack related macros.
include/var_cache.h Cache related macros.
include/var_intr.h Interrupt related macros.
include/var_regs.h Extra register definitions for the CPU variant. include/variant.inc Various assembly macros used during system initialization.
src/var_intr.c Interrupt functions if necessary.
src/var_misc.c hal_variant_init function and any necessary extra functions.
src/variant.S Interrupt handler table definition.
src/<arch>_<variant>.ld Linker macros.

Platform HAL
Extras files may be added for platform specific serial drivers. Extra files for handling interrupts and exceptions will be present if it makes sense.

File Description

include/hal_diag.h Defines functions used for HAL diagnostics output. This would normally be the ROM calling interface wrappers, but may also be the low-level IO functions themselves, saving a little overhead.
include/platform.inc Platform initialization code. This includes memory controller, vectors, and monitor initialization. Depending on the architecture, other things may need defining here as well: interrupt decoding, status register initialization value, etc.
include/plf_cache.h Platform specific cache handling.
include/plf_intr.h Platform specific interrupt handling.
include/plf_io.h PCI IO definitions and macros. May also be used to override generic HAL IO macros if the platform endianness differs from that of the CPU.
include/plf_stub.h Defines stub initializer and board reset details. src/hal_diag.c May contain the low-level device drivers. But these may also reside in plf_stub.c
src/platform.S Memory controller setup macro, and if necessary interrupt springboard code.
src/plf_misc.c Platform initialization code.
src/plf_mk_defs.c Used to export definitions from C header files to assembler header files.
src/plf_stub.c Platform specific stub initialization and possibly the low-level device driver.

eCos初探之redboot重启命令:reset 由此函数可知,reset的实现有两种方式: (1)调用平台提供的HAL_PLATFORM_RESET()函数 (2)直接goto到程序入口地址HAL_PLATFORM_RESET_ENTRY处: 阅读详情

相关推荐

eCos学习Redboot

首先声明,以下所用开发环境皆在ubuntu下,window用户请注意其中的差别。 1 开发环境的建立:  ubuntu下开发环境的建立是相当容易的事情。  首先下载安装所需的脚本,在ecos的官方网店上有。   wget --passive-ftp ftp://ecos.sourceware.org/pub/ecos/ecos-install.tcl 使用手册上建议安装在/opt目录下,对于ubu

嵌入式Linux开发@Python学习 3232

eCos学习笔记

作者tag:ecos s3c44b0x CSDN 推荐tag:c# arm redboot hal function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);vo

aaaaatiger--寻路 4328

ecos(redboot)移植剖析

不同平台之间的移植(CPU相同,硬件平台不同) mypath是ecos的安装目录 mypath/ecos/package/ecos.db记录了现有的包(package)和目标板(target)描述.一个target包含若干的package,target的描述会出现在configtool的templete的选项里。Target里同时指定了包含的package。照猫画虎的添加上自己的package

aaaaatiger--寻路 1273

ecos.db

ecos.db是关于ECOS系统的一个数据库文件(在ecos/packages/目录下,通过source insight的项目文件浏览器看不到 ),它包含了硬件包管理工具和一些在组件配置库中的包,只有在ecos.db中登记了的包,才能被ECOS的库编译工具(configtool)选中和使用使用UltraEdit打开,可以看到ecos.db包含两种主要的数据类型:        package

九层之台,起于累土;千里之行,始于足下。 1363

eCos编译配置说明

 前两实验讲了如何build一个redboot,从VMWARE启动。这次,要解释一些相关配置的过程。eCos最重要特点就算是可配置(Configurable )了。所以,现在我们就看看它是怎么配置的。一、基本概念1 package在eCos里,每一组源码的集合成为package,一个package,由一些源代码文件构成,实现一个独立的功能。 还有比package更小的单位

3220

ecos学习1】wmware运行redboot[方法一]--脚本实现配置

背景: 远程服务器Ubuntu生成软盘镜像,通过Mac下wmware运行. 1- 环境及版本: uname -a 2.6.38-8-generic #42-Ubuntu SMP Mon Apr 11 03:31:50 UTC 2011 i686 i686 i386 GNU/Linux VMware Fusion 5.0.3 (1040386)// for ma...

weixin_30399797的博客 185

Ubuntu 10.04下安装eCosRedBoot(Host端)

纠结一上午,终于搞定eCosRedBoot。本来只准备下载RedBoot的源码学习一下的,谁知到找不到RedBoot的单独源码,只有下载eCos的完整源码,现在似乎RedBoot仅是eCos的一部分。下载可以用两种方式:1. 直接下载源码,可以使用cvs,具体命令如下(Windows下装了CVS Client后也可以用这些命令下载)mkdir ~/cvs cd ~/cvs cvs -z3 -d :pserver:anoncvs@ecos.sourceware.org:/cvs/ecos co -P e

Matrix_Designer的专栏 1330

eCos 3.0中redboot的编译

最近项目需要用到eCos,由于硬件板还没有准备好,所以准备先把移植到虚拟机上跑起来。   eCos的官方文档很详细,地址如下:http://ecos.sourceware.org/docs-latest/,按照上面的步骤一步一步的来,中间也出了不少问题,把记录下来,方便以后查阅。   搭建环境基本上没有什么问题,我的环境是这样的:   系统:Ubuntu9.10 ECOS:3.0

easonxiang的专栏 3142

arm-eabi-gdb 与 redboot 配合调试 ecos application

<br />redboot跑起来了,下了个hello world的ecos程序也跑起来了,我写了一个简单的ecos程序,用redboot和arm-eabi-gdb来调试它,按照下面的步骤,开始都ok.<br /> <br />arm-eabi-gdb test.elf -b 19200 -nw<br />target remote /dev/ttyS0<br />load<br />break 20<br />c<br /> <br />程序顺利运行到所设的断点处<br /> <br />然后gdb命令查看

newkelt的专栏 2042

Redboot 学习笔记

简介 RedBoot 是 “Red Hat Embedded Debug and Bootstrap” 的缩写,包含很多工具例如下载,还有一个简单的Flash 文件系统用以存放启动代码。 以下是RedBoot 的一些突出优点: 􀁺 支持启动脚本 􀁺 可用简单的命令行界面配置与管理,可通过以太网(Telnet)或串口(超级终端) 访问。 􀁺 集成GDB stubs 用来通过串口或以太网与宿主机上的排错软件通信。(限局域网) 􀁺 属性配置 - 很多数据是可配置的,例如系统时间、日期(如果可用),默认启动 F

老熊的博客 2992

windows下如何通过gdb连接redboot调试eCos

eCos是gnu的产物,无论采用eclipse开发环境或者其他商业的开发环境如果要单步调试eCos的代码, 都需要通过gdb,这些ide无非是把gdb做了一次包装或者是提供了图形化的gdb命令执行方式。 既然gdb盛行于linux,如果在Windows下想应用gdb必须有linux的仿真环境。或者是Cygwin或者是MingW。 (本文原创转载请注明出处http://blog.csdn.ne

嵌入式虚拟系统实验室 4941

ecos 浅析eCos系统Redboot单元启动流程

 http://blog.chinaunix.net/u1/38994/article_56618.html http://sources-redhat.mirrors.airband.net/ecos/releases/ecos-3.0/ http://blog.chinaunix.net/u1/38994/showart_1856869.html浅析eCos

devehe的山寨 1863

Redboot 代码分析

    注: 1. 分析RedBoot的代码结构;为以后移植、修改RedBoot做准备;            2. 尝试分析Redboot 启动初始化流程,增强对系统启动和相应初始化过程的了解; 根据下一《如何构建eCos嵌入式系统 》分析整理基于mx3*的启动过程;            3. 尝试深入了解Redboot 数据传输以及RedBoot 命令部分代码的实现,留待以后能否增

tianruxishui的专栏 2597

制作RedBoot启动光盘以及下载调试eCos应用

eCos是开源免版税的抢占式实时操作系统。其最大亮点是可配置,与其配套的图形化配置工具提供组件管理、选项配置、自动化单元测试等。eCos官网http://ecos.sourceware.org,eCos技术网http://www.52ecos.net,eCos技术网QQ群144940146。 http://blog.csdn.net/zoomdy/article/details/17099953...

zoomdy's blog 2065

ecos, redboot学习2

If the amount of data transferred is an exact multiple of 64 bytes then this requires a terminating packet of 0 bytes of data (plus header and checksum). The SA11x0 USB hardware does not allow a 0-byte packet to be transmitted, so the device driver is forc

linuxjackaroo的专栏 887

redboot启动过程

 <!--收藏-->  

linuxjackaroo的专栏 2336

ecos 学习资料

转载地址:http://blog.chinaunix.net/uid-26215986-id-3341183.html 一.英文资料 1.ecos home page:http://ecos.sourceware.org/ 2.ecos user guid:http://ecos.sourceware.org/docs-latest/user-guide/ecos-...

zjy900507的博客 618

基于VMware的eCos环境编译redboot(脚本配置redboot)

基于VMware的ecos,redboot及hello world(1)安装请参照[【ecos学习2】wmware运行redboot[方法二]--图形实现配置 ] (2)修改内存布局文件:~/i386/ecos-3.0$ find . -name "mlt_i386_pc_floppy.ldi"./packages/hal/i386/pc/v3_0/include/pkgconf/ml...

weixin_30906701的博客 167

Redboot安装历程

一 目标 公司购买了EV40开发板:CPU AT91M40800, 内存2M+2M(扩展), FLASH 2M+4M(扩展), RTl8019AS芯片, FLASH是AM29LV160TE(2M) 公司自己开发自用的板子WX10: CPU AT91M40800, 内存4M, FLASH 8M, RTl8019AS芯片, FLASH是AM29LV641(8M)及其他应用功能芯片. 我 主要的工作是开

linuxjackaroo的专栏 1183
上一篇: 私用IP地址(Private IP Addresses)
下一篇: 嵌入式实时操作系统ECOS在S3C2510上的移植实现
老腊肉泡酒
博客等级 码龄19年 22粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值