VxWorks BSP开发入门
VxWorks将所有硬件平台相关的代码封装在BSP(Board Support Package)库中,从而为应用层代码提供了独立于硬件平台和体系接口的特性。
BSP库中封装了一组统一的API,包括硬件初始化、中断的触发和处理、硬件时钟和定时器管理、内存和总线内存空间映射、内存分配等。

target/config/all 所有BSPs公共的配置
target/config/all/configAll.h 包含针对所有VxWorks镜像的默认配置项,一般情况下,不要修改这个文件。如果你希望修改默认配置,在自己的BSP的config.h文件中覆盖该配置项即可(#define or #undef)
target/config/bspname 特定BSP的配置
target/config/comps/src包含configlette最小配置,编译时覆盖target/config/all
1)target/config/all下的文件:
bootConfig.c - bootROM镜像的初始化程序,包括完成的shell task的实现,同时包括NETIF完成网络设备的初始化。它是usrConfig.c的子集。只有config.h, configAll.h, bootConfig.c和bootInit.c这几个文件影响boot ROM的编译。
bootInit.c - ROM初始化的第二阶段代码,romInit.s的romInit()函数执行结束之后,跳转到bootInit.c的romStart()函数,romStart()函数解压并重定位ROM镜像。首先,它从ROM拷贝代码段和数据段到RAM中;然后清除RAM中空闲的空间;最后,解压ROM镜像中压缩的部分。不同的配置选项决定了上述操作的具体实现。在Tornado 2.x中,romStart.c取代了bootInit.c
dataSegPad.s - VxVMI代码段保护,确保代码段和数据段不共享同一MMU页
usrConfig.c - VxWorks Image的初始化代码,usrConfig.c调用target/src/config/usrExtra.c完成各子系统的配置和初始化。
2)target/config/comps/vxWorks目录
该目录下包含VxWorks实时内核的基本CDF(Component Descriptor File)文件,参考CDL(Component Description Language)
3)target/config/comps/src目录
configlettes,target/config/all/usrConfig.c和target/src/config中引用的代码片段
4)target/config/bspname
包含BSP中与系统和硬件相关的代码
Makefile和depend.bspname,前者为BSP主Makefile,后者为依赖文件。Makefile引用target/h/make下的子makefile,在Makefile文件中需要定义以下宏:CPU, TOOL,TARGET_DIR,VENDOR,BOARD,ROM_TEXT_ADRS(指定了bootROM的入口地址),ROM_WARM_ADRS(bootROM热启动的入口地址),ROM_SIZE,ROM_LOW_ADRS(加载VxWorks的地址),RAM_HIGH_ADRS(boot ROM拷贝到RAM的地址)
config.h的配置包括:BSP版本号和子版本号,configAll.h(#include),缓存和MMU配置,共享内存和网络配置,内存地址和大小,ROM地址和大小,NVRAM参数,启动参数,时间戳,外部总线地址映射,网络设备和中断向量,bspname.h(#include)
VxWorks启动流程

romInit()主要实现三个功能:
a) 禁止中断并初始化CPU
b) 初始化内存,包括关闭caches以及初始化内存控制器(对于SPARC架构,还需要使能MMU)
c) 设置stack pointer(栈)以及其他寄存器,为执行C程序做准备
完成上述操作之后,跳转到romStart()执行。romInit()需要按照PIC(Position Independent Code位置无关代码)原则编码,因为启动策略和内存加载位置可能不同。
romInit.s中不应该添加过多的初始化代码,在sysHwInit()中初始化各硬件外设会更容易。另外,romInit.s中初始化的硬件,在sysALib.s或者sysLib.c中需要重新初始化。
VxWorks镜像的入口函数_sysInit在sysALib.s文件中,它做了与romInit.s一样的工作,除了系统内存配置。sysALib.s中的代码不需要按照PIC的原则编写,即不需要使用ROM_ADRS宏进行重新映射。sysLib.c为VxWorks和应用层代码提供了板级的API接口,它调用src/drv下面的驱动代码完成驱动的初始化和配置,比如sysSerial.c, sysScsi.c,sysNet.c等。
VxWorks BSP开发入门的更多相关文章
- vxWorks BSP主要文件目录的组成及主要文件的作用
vxWorks BSP主要文件目录的组成及主要文件的作用 1.目录target/config/All: 这个目录下的文件是所有BSP文件共享的,不是特别需要不要更改里面的任何文件. a.configA ...
- openresty 前端开发入门五之Mysql篇
openresty 前端开发入门五之Mysql篇 这章主要演示怎么通过lua连接mysql,并根据用户输入的name从mysql获取数据,并返回给用户 操作mysql主要用到了lua-resty-my ...
- java WEB开发入门
WEB开发入门 1 进入web JAVASE:标准- standard JAVA桌面程序 GUI SOCKET JAVAEE:企业-浏览器控制 web 2 软件结构 C/S :client ...
- [译]:Xamarin.Android开发入门——Hello,Android Multiscreen深入理解
原文链接:Hello, Android Multiscreen_DeepDive. 译文链接:Xamarin.Android开发入门--Hello,Android Multiscreen深入理解. 本 ...
- [译]:Xamarin.Android开发入门——Hello,Android深入理解
返回索引目录 原文链接:Hello, Android_DeepDive. 译文链接:Xamarin.Android开发入门--Hello,Android深入理解 本部分介绍利用Xamarin开发And ...
- [译]:Xamarin.Android开发入门——Hello,Android快速上手
返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...
- VR原理讲解及开发入门
本文是作者obuil根据多年心得专门为想要入门的VR开发者所写,由52VR网站提供支持. 1. VR沉浸感和交互作用产生的原理: 在之前,我们观看一个虚拟的创造内容是通过平面显示器的,52VR ...
- Eclipse_luna_J2EE_For_JS+tomcat8.0环境搭建、配置、开发入门
一.所有需要的软件.插件等下载地址 J2SE的官方下载路径:http://www.oracle.com/technetwork/java/javase/downloads/index.html Ecl ...
- OWIN的理解和实践(三) –Middleware开发入门
上篇我们谈了Host和Server的建立,但Host和Server无法产出任何有实际意义的内容,真正的内容来自于加载于Server的Middleware,本篇我们就着重介绍下Middleware的开发 ...
随机推荐
- 解决ie低版本不认识html5标签
在不支持HTML5新标签的浏览器里,会将这些新的标签解析成行内元素(inline)对待,所以我们只需要将其转换成块元素(block)即可使用,但是在IE9版本以下,并不能正常解析这些新标签,但是却可以 ...
- while循环和字符串格式化
小知识点 \n#换行 \t #制表 \r #回车 print(a,b,c,d,sep="\n")换行 sep默认空格 1.while--关键字(死循环) while 空格 条件: ...
- babel的初步了解
前段时间开始研究ast,然后慢慢的顺便把babel都研究了,至于ast稍后的时间会写一篇介绍性博客专门介绍ast,本博客先介绍一下babel的基本知识点. 背景: 由于现在前端出现了很多非es5的语法 ...
- django -----原生SQL语句查询与前端数据传递?
view.py中 import MySQL def request_data(request): if request.method == "GET": conn = MySQLd ...
- java代码转化为jar包,再转化为.exe文件步骤
下面是具体步骤: 一.先把自己的程序发布成jar文件 这是eclipse自带的功能,右键工程包-->Export 然后选择Java-->JAR file,next 选择输出路径,next ...
- Jpa-Spec oracle函数bitand,instr等扩展
jpa-spec github: https://github.com/wenhao/jpa-spec 使用这个框架可以简化我们拼条件的复杂度,如下代码: public Page<Person& ...
- SQL性能优化概要
基本概要 1.查询的模糊匹配时,避免使用Like '%开头',使得索引失效 2.索引问题 ◆ 避免对索引字段进行运算操作和使用函数 ◆ 避免在索引字段上使用not,<>,!= ◆ 避免在索 ...
- 给UITextView添加链接
给UITextView增加了链接 现在在iOS添加你自己的Twitter账户更加简单了,现在你可以给一个NSAttributedString增加链接了,然后当它被点击的时候唤起一个定制的action. ...
- mailaddr - 关于邮件地址的描述
DESCRIPTION 描述 本手册给出的是 Internet 使用的 SMTP 邮件地址的简要描述.这些地址的通常的格式是 user@domain 这里的域 (domain) 是分级的子域的列表,子 ...
- mongo 数据库操作
启动和关闭数据库 启动 # mongodb 默认使用执行 mongod 命令所处的盘的根目录下 /data/db 作为自己的数据存储目录 # 所以在第一次执行该命令之前先自己动手新建一个 /d ...