PowerPC VxWorks BSP分析(4.1)——BSP定制

简介:
1 PowerPC BSP 定制
如图1,BSP的主要功能在于配置系统硬件使其工作于正常的状态,以及完成硬件与软件之间的数据交互,为OS及上层应用程序提供一个与硬件无关的软件平台。因此从执行角度来说,其可以分为两大部分:
Ø 目标系统启动时的硬件初始化及操作系统引导例程,它只在系统启动过程中执行一次;
Ø 目标板上控制硬件运行的设备驱动程序,由它来完成硬件与软件之间的衔接。
clip_image002[6]
图1 BSP 在系统中所处的位置
一般说来,BSP的设计与开发可以分为以下几个步骤:
(1)建立开发环境。安装VxWorks集成开发环境(Tornado);选择合适的开发工具。目前几乎每一种处理器都支持JTAG/BDM接口,大多数处理器都有JTAG/BDM调试工具支持,如vision ICE等,采用目标板供应商的DEBUG ROM调试工具也是一种可以考虑的途径。
(2)选择合适的BSP模板。如有可能,所选的模板尽可能与硬件平台相近,当然,实际情况中考虑到费用及充分利用已有的资源,所选的模板可能需要较大的修改才能移植到需要的硬件平台。
(3)修改或添加WIND内核激活前的初始化代码,包括初始化CPU内核、MMU、CACHE禁止/使能等。
(4)内核激活以后,连接系统中断、系统时钟,修改或添加所需要的设备驱动程序等。
(5)测试与验证。BSP的正确性与稳定性对上层软件和整个系统的稳定起着至关重要的作用。因此BSP完成后要经过测试验证。
BSP主要文件目录的组成及作用:
clip_image004[7]
target/config/All 目录
这个目录下的文件是所有BSP文件共享的,不是特别需要不要更改里面的任何文件。
configAll.h:
缺省定义了所有VxWorks的设置,如果不用缺省的设置,可在BSP目录下的config.h文件中用#define或#undef方式来更改设置。
bootInit.c:
在romInit.s后,完成Boot ROM的第二步初始化。程序从romInit.s中的romInit()跳到这个文件中的romStart()来执行必要的解压和ROM image的放置
bootConfig.c: 完成Boot ROM image的初始化和控制
usrConfig.c: VxWorks image的初始化代码
target/config/comps/src 目录
涉及系统核心的components,主要由target/config/All中usrConfig.c中函数调用
target/config/bspname 目录
包含系统或硬件相关的BSP文件
Makefile
一些命令行控制images的生成
README
BSP发布纪录,版本,总的文档
config.h
包括所有涉及CPU主板的设置及定义(includes,definations)
configNet.h
网络驱动的主要设置文件,主要对END驱动设置.
romInit.s
汇编语言文件,是VxWorks Boot ROM和ROM based image的入口,参见系统启动部分
sysALib.s
汇编语言文件,程序员可以把自己的汇编函数放在这个文件里,在上层调用。VxWorks image的入口点_sysInit在这个文件里,是在RAM中执行的第一个函数
sysLib.c
包含一些系统相关的函数例程,提供了一个board-level的接口,VxWorks和应用程序可以以system-indepent的方式生成。这个文件还能包含目录target/config/comps/src的驱动
sysScsi.c
可选文件用于SCSI设备设置和初始化
sysSerial.c
可选文件用于所有的串口设置和初始化
bootrom.hex
ASIC文件包含VxWorks Boot ROM代码
VxWorks
运行在目标机上,完整的,连结后的VxWorks二进制文件
VxWorks.sym
完全的,连结后带有符号表的VxWorks二进制文件
VxWorks.st
完全的,连结后,standalone,带有符号表的VxWorks二进制文件
1.1 启动过程
VxWorks OS有三种映像:
Ø Loadable Images:由Bootrom引导通过网口或串口下载到RAM
Ø ROM-based Images(压缩/没有压缩):即将Image直接烧入ROM,运行时将Image拷入RAM中运行。
Ø ROM-Resident Images:Image的指令部分驻留在ROM中运行,仅将数据段部分拷入RAM。
注意这里说的三种映像都是包含真正操作系统VxWorks的映像,其中后两种可以直接启动并运行起来,但是第一种不行,它必须借助另一个叫做Boot Image的映像(可以在Tornado中的build->build boot rom中生成)才能运行起来,也就是利用Boot Image引导起来然后通过网口或串口下载真正包含VxWorks的Loadable Image,然后才能运行起来。也就是说Boot Image是和Loadable Image 结合使用的。
现在看来一共有四种映像文件,让我们看看它们的组成吧:
Ø Boot Image:包含一段叫做BootStrap Programs的程序+一段ROM BOOT Program程序。
Ø Loadable Images:由操作系统VxWorks和应用组成的映像。
Ø ROM-based Images(压缩/没有压缩):包含一段叫做BootStrap Programs的程序+ Loadable Images(即由操作系统VxWorks和应用组成的映像)
Ø ROM-Resident Images:同上
通过上面我们可以看出,ROM-based Images,ROM-Resident Images,Boot Image三种映像都包含一段叫做BootStrap Programs的程序,它具有启动功能,可以把ROM中的代码段和数据段拷贝到RAM中。
下面我们来看看三种VxWorks OS映像的启动顺序:
Boot Image  +  Loadable Images
Loadable Images是依靠Boot Image加载启动的,首先有Boot Image中的程序BootStrap Programs把Boot Program程序加载到RAM中的RAM_HIGH_ADRS处,然后控制权交给Boot Program,由Boot Program负责一系列简单的硬件初始化(网口,串口等),开始下载Loadable Images(即包含应用的VxWorks操作系统)到RAM_LOW_ADRS,之后控制权交给VxWorks操作系统开始执行。
clip_image005
图2 Loadable Images VxWorks 启动过程



 本文转自 21cnbao 51CTO博客,原文链接:http://blog.51cto.com/21cnbao/134678,如需转载请自行联系原作者



相关文章
STM32CubeIDE移植ARM DSP库
STM32CubeIDE移植ARM DSP库
|
存储 编解码 芯片
ZYNQ裸板:LHB155304-RT篇
1553总线是一种指令/响应式串行总线标准,除了作为美军标在国外广泛应用于军用飞机坦克、船舶、卫星、导弹等领域,在国内已得到了广泛的应用。抗干扰能力强实时性好,且拥有着双冗余备份设计,数据传输极为可靠。就我个人认知来看,常见的实现形式一种是通过专用的接口协议芯片,相对比较简单集成度高;另一种是IP核,非常考验逻辑和软件设计的功底。此次工程选用了前者,LHB15530接口芯片,在不改变原有传输方式的前提下,突破了原有的1Mb/s的传输速率,可达4Mb/s,也能满足绝大部分应用场景。
465 0
ZYNQ裸板:LHB155304-RT篇
2- STM32之ARM Cortex-M体系结构(下)
2- STM32之ARM Cortex-M体系结构
|
存储 缓存 编译器
2- STM32之ARM Cortex-M体系结构(上)
2- STM32之ARM Cortex-M体系结构
|
Linux 数据处理 Android开发
【ARM基础概念:ARMv7架构,ARM(ARM7、ARM9)、Cortex-M4、M7等内核、MCU、MPU、SOC,STM32的一些概念】
【ARM基础概念:ARMv7架构,ARM(ARM7、ARM9)、Cortex-M4、M7等内核、MCU、MPU、SOC,STM32的一些概念】
624 0