目录target/config/(bspname 斜体) 目录下的文件
这个子目录包含了BSP中系统或硬件依赖的文件。
README
README 文件包含了BSP发布的记录, 它记录了每一次的发布版本和修订及文档工作。
Makefile 和 depend.bspname
Makefile 文件控制从命令行来build image, 从VxWorks 5.2 开始, 标准的make 工具是GNU make, 目前的make 技术继续使用GNU make 中的许多高级特性, BSP 的make 系统包括了一些位于target/h/make 子目录下的make 子文件。 如果一个依赖文件不存在, make 将自动产生一个depend.bspname, make 将使用这个文件来跟踪所有模块的依赖情况。 depend.bspname文件没有随BSP一起交付, 它是一个自动产生的文件。 想要了解更多关于个性化makefile 的信息, 请参考附录E Makefile 细节。
在Makefile 中, 你必须定义如下的宏:
CPU 目标CPU架构 (例如MC68040)
TOOL 宿主工具链, 如gnu.
TARGET_DIR 目标目录(BSP)名
VENDOR 目标制造商的名字
BOARD 目标名
ROM_TEXT_ADRS 以16进制格式指定bootROM的入口地址, 对于大
多 数的板子来说, 它被设置成 ROM 地址区的起始地址。然而,如果
你的硬件配置使用ROM的起始区作为复位向量,那么你必须做相应的偏
移。
ROM_WARM_ADRS boot ROM 代码的热启动入口地址
ROM_SIZE 16进制格式的ROM 区的大小。
RAM_LOW_ADRS 加载VxWorks的地址。
RAM_HIGH_ADRS 拷贝boot ROM image 到RAM时的目
标地址。
config.h
config.h 文件包括了所有的特定CPU板的包含文件和定义。
config.h 文件内容的标准组织如下:
(1)BSP 版本和修订 ID 号码。
(2)configAll.h (#included)
(3) 内存cache 和MMU 配置。
(4)共享内存网络定义。
(5)片上内存的地址和大小。
(6)ROM 地址和大小。
(7)NVRAM 参数。
(8)缺省启动行(bootline)参数。
(9)时间戳驱动支持。
(10)外部总线地址映射。
(11)网络设备和中断向量。
(12)bspname.h 文件 (#included)。
注意: 一个config.h 文件应当包含configAll.h 和 bspname.h
下面详细介绍各个部分。
(1) BSP发布号码:
一个BSP的发布号码包括它的版本号和修订号。 版本号大家都知道, 修订号是一个增量号吗,它指示了在某个BSP版本中的特定的发布。
1.0 版本的各种BSP 是为直到并包括VxWorks 5.2 的所有的标准VxWorks发布而编写的。 1.1 版本的各种BSP 是为Tornado 1.0 和Tornado 1.0.1 而写的, 1.2 版本的BSP 是为Tornado 2.0 而设计的。1.1 和1.2 版本BSP的主要接口区别在于对网络栈和不同的封装的支持。在每一个新的版本序列下,修订号码从0 开始, 并且在每次该BSP被发布用于生产时增加1。
为了指定一个BSP的版本号, 你可以定义一个BSP_VERSION 为字符串 "1.1" 或"1.2" 等等;另外,你也可以定义宏BSP_VER_1_1 或 BSP_VER_1_2, 只要合适都行。 为了设定修订号码,你可以将一个诸如"/0"的字符串定义成BSP_REV。 修订号码包括斜杠符号。 完整的BSP发布号码是这两个字符串宏BSP_VER 和BSP_REV的级联, 例如 “1.2/0"。
因此, 可以如下设定一个BSP的发布号码为“1.2/0“:
#define BSP_VER_1_1
#define BSP_VER_1_2
#define BSP_VERSION "1.2"
#define BSP_REV "/0" /* Increment for each new release */
(2) configAll.h。
将configAll.h (位于target/config/all 目录下)包含进你的config.h文件中, 可以
让你得到一个BSP的合理的缺省配置。 config.h 是BSP中最主要的用户可编辑
的配置文件。在这个文件中, 你可以使用更加适合你的项目的 BSP的特定配
置来覆盖它的缺省配置。 你也应当把config.h文件展示给你的BSP的后续用
户, 以便他们能够覆盖configAll.h 文件或者配置任何可选的特性。
当build 一个项目的image时,使用项目选定的部件和参数将覆盖任何在
configAll.h 和config.h 或者yourbspname.h 中分配的值。任何项目工具所认识的
宏将被分配项目特定值,覆盖了任何其它的赋值。
警告: 除非已经定义了BSP_VERSION 和BSP_REV, 否则一个config.h 文件不应
该包含configAll.h 。 如果 BSP_VERSION和BSP_REV未被定义过, configAll.h
将分配缺省值。
这里的用户指那些将使用你的BSP来开发他们的应用程序的开发者们。 另
外, 如果一个值不是可选的但 又经常需要且必须被修改, 那么你可以把它
放到yourbspname.h中, 而不是config.h.
如果你在config.h文件中包含了特定BSP的配置信息, 那么尽量使这些信息看
起来对用户友好。 最理想 的是用户在看到一个选项的名字时就能够立刻理解
该选项的作用。 另外, 不要指望用户通过进行运算来设置一个配置项。 例
如, 不管是否有一个有明确意义名字的常量被定义过, 你还是应该让你的
代码或编译器来算出寄存器的值。