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,如需转载请自行联系原作者



相关文章
|
数据库 开发者 索引
24.[HarmonyOS NEXT Column案例五(上)] 构建高效复合布局:垂直列表与水平操作栏的完美结合
在HarmonyOS NEXT应用开发中,复合布局是构建丰富用户界面的关键技术。本教程将详细讲解如何使用Column和Row组件的嵌套组合,创建一个既有垂直列表结构又包含水平操作栏的复合布局。通过一个产品列表的实际案例,我们将展示如何构建层次分明、信息丰富的列表界面,帮助开发者掌握复杂布局的实现技巧。
220 3
|
消息中间件 存储 中间件
微服务异步架构---MQ之RocketMQ(一)
“我们大家都知道把一个微服务架构变成一个异步架构只需要加一个MQ,现在市面上有很多MQ的开源框架。到底选择哪一个MQ的开源框架才合适呢?”
微服务异步架构---MQ之RocketMQ(一)
|
人工智能 前端开发
前端封装库/工具库的字体/图标之Iconfont
在前端开发中,图标是不可或缺的一部分。传统的图片素材虽然能够满足需求,但使用方式较为繁琐,还会增大项目的体积和加载时间。随着前端技术的发展,字体/图标库逐渐成为了替代传统图片素材的新选择。其中一个非常流行的字体/图标库就是 Iconfont。
979 1
|
存储 Oracle 关系型数据库
Oracle表空间:数据王国的疆域规划
【4月更文挑战第19天】Oracle中的表空间是逻辑存储结构,用于存放数据库对象的物理数据,是数据库性能优化和备份恢复的基础。表空间类型多样,如永久和临时表空间,需根据业务需求进行规划和管理。通过监控使用情况、利用自动扩展功能,可有效管理表空间,提高数据访问速度和可靠性。深入理解表空间有助于优化数据库存储和管理。
基于单片机的宠物定时喂食器设计
基于单片机的宠物定时喂食器设计
337 0
基于单片机的宠物定时喂食器设计
|
定位技术
GIS开发:mapbox中简单模型
GIS开发:mapbox中简单模型
540 0
Intellij IDEA误删文件恢复
Intellij IDEA误删文件恢复
834 0
Intellij IDEA误删文件恢复
|
数据采集 人工智能 大数据
行业观察 | 购物中心如何实现高质量数据采集?
⼈脸算法的升级和智能硬件的普及将真正把Mall的数字化从概念走进现实。
4456 0
|
程序员
程序员该如何锻炼身体
为什么要锻炼 在椅子上坐了大半天,不知道是吃的饭不合适等缘故还是喝水不足的缘故,有那么一瞬间感觉到浑身内脏湿漉漉的,仿佛外面包裹了一层黄油,哇好恶心,我怎么能说出这种话,不过真的整个人感觉不舒服,后来我想了下人的生命周期中,哪个是最核心的部分,对,是血液!最后我的大脑一致认为,是血液没有很好的执行监听内脏的任务,因为它的进程好像并没有那么活跃。
1409 0