ecos, redboot学习1

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

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.

手把手教你搭建《黑色沙漠》单机版:从下载到联机的完整指南(含GM工具使用) 本文提供《黑色沙漠》单机版从下载安装到GM工具使用及局域网联机的完整教程。详细解析不同版本选择、系统配置要求、常见问题解决,并分享GM工具高级命令和局域网联机设置技巧,帮助玩家轻松搭建个性化游戏环境。 阅读详情

相关推荐

unity pc运行包导入glb

本文介绍了在Unity中实现GLB/GLTF模型动态导入的方法。主要使用glTFast插件进行模型导入,配合StandaloneFileBrowser实现文件选择功能。文章提供了详细的插件安装方式(包括国内镜像源),并给出了核心导入脚本代码。脚本实现了模型加载、父对象设置、材质修复等功能,解决了常见的材质显示异常问题。该方法支持编辑器和PC平台,兼容不同版本的glTFastAPI,通过简易UI操作即可完成模型导入,适合需要运行时加载3D模型的Unity项目开发。

懒懒的蓝的博客 541

eCos学习之Redboot篇

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

嵌入式Linux开发@Python学习 3236

从DBC到ARXML:用RTA-CAR7实现车载通信协议栈自动化生成全流程

本文详细介绍了如何利用ETAS RTA-CAR7工具链,特别是ISOLAR-A和RTA-BSW ConfGen,实现从车载通信DBC文件到AUTOSAR ARXML系统描述文件,再到基础软件(BSW)协议栈代码的自动化生成全流程。该流程通过深度配置、信号路由、PDU复用及规则定制,大幅提升开发效率与一致性,是应对现代汽车电子复杂网络开发的关键实践。

brandy的博客 220

ecos(redboot)移植剖析

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

aaaaatiger--寻路 1275

Arduino程序设计(十)8×8 共阴极LED点阵显示(MAX7219)

本文主要介绍8×8 LED点阵显示实验,分别是:1、介绍MAX7219点阵模块;2、点阵显示部分图形;3、点阵显示数字 0~9 及 26 个英文字母。1、通过上述两个点阵实验,了解了8*8点阵显示的基本原理;2、通过SPI通信控制点阵显示,学会了Arduino用SPI通信方式控制外设。

Alice的博客 1万+

深入解析fio Benchmark测试:从源码到实践

本文深入解析fio Benchmark测试工具,从入门指南到源码架构分析,详细介绍了其核心模块、关键数据结构和I/O处理机制。通过实战案例展示如何优化存储性能测试,包括内存对齐、多线程调优等技巧,帮助开发者充分利用fio进行精准的存储性能评估。

weixin_42563415的博客 206

ecos.db

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

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

从PHY芯片看工业网络精准时钟:IEEE 1588v2(PTP)协议实现与选型指南

本文深入解析了工业网络中IEEE 1588v2(PTP)协议的实现与PHY芯片选型要点。通过对比KG7101、RTL8211F等芯片的关键参数,揭示硬件时间戳对纳秒级时钟同步的决定性作用,并提供PTP网络设计中的拓扑布局与配置优化技巧,助力工业自动化场景实现精准时间同步。

weixin_42628688的博客 500

eCos学习笔记

作者tag:ecos s3c44b0x 优快云 推荐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--寻路 4332

Cadence原理图设计10个高效技巧:从封装绑定到BOM表导出全流程

本文为硬件工程师提供了一套Cadence OrCAD Capture CIS原理图设计的高效实战指南。文章深度解析了从封装库的精准管理与CIS数据库绑定、封装批量处理技巧,到设计缓存清理、跨页信号追踪,再到关键的DRC检查、网表导出以及智能BOM报表生成的全流程核心技巧,旨在帮助工程师提升设计效率与可靠性,规避常见错误。

weixin_29178069的博客 201

SAP 成本分摊逻辑与案例(含具体数据)

摘要: SAP成本分摊通过**分配(Allocation)与分摊(Assessment)**两种方式,将间接成本中心费用按预设规则(如人数、工时、比例等)结转至直接成本对象。分配保留原始成本要素(如电费、工资),适用于需明细追踪的场景;分摊则打包为次级成本要素(如管理费用),简化核算。实操案例涵盖行政费用分配(按人数)、水电车间分摊(按工时)、机修作业分摊(作业成本法)及内部订单结算,系统通过KSV1/KSU1配置循环规则,KSV5/KSU5执行结转。关键点在于选择匹配业务的分摊基础,合理配置次级成本要素,

金牌架构师 550

eCos编译配置说明

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

3222

【YOLOv12改进trick】高效多尺度卷积注意力EMCAD_Block模块引入YOLOv12,实现涨点和效率提升,含创新点Python代码

EMCAD引入YOLOv12模块,实现高效多尺度注意力模块引入到YOLOv12中的快速涨点及效率提升

向上生长的程序媛的博客 851

【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

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Ubuntu 10.04下安装eCos及RedBoot(Host端)

纠结一上午,终于搞定eCos和RedBoot。本来只准备下载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的专栏 1336

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

eCos 3.0中redboot的编译

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

easonxiang的专栏 3151

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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的专栏 2043

Redboot 学习笔记

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

老熊的博客 3028

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

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

嵌入式虚拟系统实验室 4943

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的山寨 1864

Redboot 代码分析

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

tianruxishui的专栏 2600

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

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

zoomdy's blog 2068

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的专栏 891

redboot启动过程

 <!--收藏-->  

linuxjackaroo的专栏 2338

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值