版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://redboot.blogbus.com/logs/19874250.html
前两篇实验讲了如何build一个redboot,从VMWARE启动。
这次,要解释一些相关配置的过程。
eCos最重要特点就算是可配置(Configurable )了。所以,现在我们就看看它是怎么配置的。
一、基本概念
1 package
在eCos里,每一组源码的集合成为package,一个package,由一些源代码文件构成,实现一个独立的功能。
比如,一个option:
cdl_option CYGSEM_REDBOOT_DEFAULT_NO_BOOTP {
};
生成在.h文件,就是
#define CYGSEM_REDBOOT_DEFAULT_NO_BOOTP 1
然后代码里面
#ifdef CYGSEM_REDBOOT_DEFAULT_NO_BOOTP
……
#endif
2 ecos.db
ecos.db位于ecos-2.0/package目录下, 它包含两种元素:
一种是package,如:
package CYGPKG_DEVS_ETH_AMD_LANCEPCI {
}
它指示了某一个package所在的路径,和配置文件cdl的名称。在ecos.db里索引了所有的package信息。
另一种是target,如:
target pc_vmWare {
}
它指示某种目标机,因硬件配置选需要的package。
3 cdl 文件
CDL是the component definition language的缩写,每一个package都有相应的cdl文件,在其中有相关的功能选项,缺省配置等等。
4 template
template是指为某种目的build而建立的相应模板配置,比如选取一些包,配置一些选项等等。在目录 ecos-2.0/package/templates 下面有一些模板的目录。
5 ecc 文件
二、脚本解释
前面简单介绍了一些基本概念,下面解释一下编译脚本的意义
export PRJ_PATH=/home/andrew/share/project/redboot
export ECOS_REPOSITORY=$PRJ_PATH/ecos/packages/
export PATH=$PATH:$PRJ_PATH/gnutools/i386-elf/bin/:$PRJ_PATH/ecos-2.0/tools/bin
rm build -rf
mkdir build
cd build
ecosconfig new pc_vmWare redboot
ecosconfig import ${PRJ_PATH}/ecos/packages/hal/i386/pc/current/misc/redboot_FLOPPY.ecm
ecosconfig import ${PRJ_PATH}/nobootp.cfg
ecosconfig tree
make
前面几个export,是配置一些基本路径,包括eCos代码所在路径(ECOS_REPOSITORY),
编译工具所在路径,和配置工具(ecosconfig)所在路径。
ecosconfig new pc_vmWare redboot
这句话是通过ecosconfig建立一个新的配置文件ecos.ecc,其中两个重要的参数为target,和template。
pc_vmWare 是target的取值,指我们的目标机是一个vmWare虚拟的pc,可以在ecos.db中找到 target pc_vmWare 在其中指明了该target的硬件配置,比如串行口,网卡,根据相关硬件,可以找到相应的驱动包。
redboot 是template的取值,指我们要build一个redboot的启动文件。可以在ecos-2.0/package/templates/redboot/v2_0.ect 文件里,看到模板的内容。
这条命令后会在build目录下产生一个当前的配置文件,ecos.ecc,在其中可以看到当前的相关的配置。
之后两条 import 命令,是通过相关文件修改,ecos.ecc的配置。比如,nobootp.cfg内容:
cdl_option CYGSEM_REDBOOT_DEFAULT_NO_BOOTP {
};
就是将原有的CYGSEM_REDBOOT_DEFAULT_NO_BOOTP值从0改为1,也就是取消BOOTP。
ecosconfig tree
就是根据ecos.ecc, 生成相关文件,makefile,以及文件目录等等。
最后通过make就生产了redboot.bin的文件
这次就介绍到这里,在下次会分析一下相关源码,bye