开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【Linux】nohup后台运行程序并打印日志
在/home/coggle目录下在你英文昵称(中间不要有空格哦)的文件夹中创建一个sleep.py文件,该文件需要完成以下功能:程序一直运行每10秒输出当前时间
223 0
【Linux】nohup后台运行程序并打印日志
在/home/coggle目录下在你英文昵称(中间不要有空格哦)的文件夹中创建一个sleep.py文件,该文件需要完成以下功能:程序一直运行每10秒输出当前时间
197 0
利用powershell进行windows日志分析
0x00 前言   Windows 中提供了 2 个分析事件日志的 PowerShell cmdlet:一个是Get-WinEvent,超级强大,但使用起来比较麻烦;另一个是Get-EventLog,使得起来相当简单,可以实时筛选,接下来,我们利用PowerShell 来自动筛选 Windows 事件日志。
2079 0
《Photoshop七大核心技术》目录—导读
<span style='letter-spacing:1px'>本节书摘来自异步社区《Photoshop七大核心技术》一书中的导读,作者【美】Scott Kelby,更多章节内容可以访问云栖社区“异步社区”公众号查看。</span>
1562 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载