基于VxWorks的BSP概念与开发
来源:互联网 发布:网络短篇小说免费阅读 编辑:程序博客网 时间:2024/05/02 09:48
BSP文件在vxworks/target/all和vxworks/target/config/bspname文件夹里。其中,all文件夹里的文件是所有BSP的通用文件,bspname文件夹的文件是用户自己定制的BSP文件。
经过编译,链接,并在makefile和depend.bspname等文件的控制下,源程序最后将生成镜像。VxWorks的镜像可分成两类,可下载镜像和可引导镜像。
可下载镜像(Loadable Image):实际包括两部分,一是VxWorks,二是boot ROM,两部分是独立创建的。其中boot ROM包括被压缩的boot ROM镜像(bootrom)、非压缩的boot ROM镜像(bootrom_uncmp)和驻留ROM的boot ROM镜像(bootrom_res)三种类型。
可引导镜像(Bootable Image):是将引导程序和Vxworks融为一体的镜像,它常常是最终产品,包括不驻留ROM的镜像和驻留ROM的镜像两种类型。
对于可引导镜像在usrConfig.c文件里执行,对于可下载镜像在bootConfig.c文件里执行。
BSP的开发过程
建立开发环境
主要是以目标板CPU的BSP文件为模板,在tornado argetconfig目录下创建用户的BSP目录bspname,
把tornado argetconfigall下的文件和BSP模板文件拷贝到该目录下,根据具体情况选择合适的VxWorks镜像类型。
修改模板程序
Makefile
Makefile文件控制镜像的创建,在Makefile文件里使用了将近135个宏,最简单的Makefile要包括如下宏:
.CPU
.TOOL:主机的make工具,为GNU
.TGT_DIR:target路径,默认为$(WIND_BASE)/target
.TARGET_DIR:BSP目录名
.VENDER:目标板生产商名
.BOARD:目标板名
.ROM_TEXT_ADRS:bootROM的入口地址(以16进制表示,并且与config.h文件定义相同)
.ROM_SIZE:ROM的大小
.RAM_LOW_ADRS:加载vxworks的目标地址
.RAM_HIGH_ADRS:bootROM拷贝到RAM的目标地址
.HEX_FLAGS:特殊结构的标记,用于产生S-记录文件
.MACH_EXTRA:扩展文件,用户自己加入自己的目标模块
除此之外,Makefile文件还需要包括如下文件:
.$(TGT_DIR)/h/make/defs.bsp:VxWorks系统运行的标准变量定义
.$(TGT_DIR)/h/make/make.$(CPU)$(TOOL):提供了特别的目标机制和一套编译工具,如make.ARM7TDMI_Tgnu
.$(TGT_DIR)/h/make/defs.$(WIND_HOST_TYPE):提供了与主机系统有关的定义
.rules.bsp:在创建目标文件时所需要的规则
.rules.$(WIND_HOST_TYPE):指出创建目标文件所需的从属文件表
.如果没有用all目录下的文件而是拷贝到bspname下修改并使用,需要定义与这些文件有关的宏,如BOOTINIT=bootInit.c
这样在创建镜像时就不会用all目录下的文件而使用bspname目录下的对应文件了
在Makefile文件里凡是16进制数前面都无需加"0X"
bspname.h
根据具体目标板设置 串口接口,时钟以及I/O设备等。在该文件中必须包含如下内容:
.中断向量/级别
.I/O设备地址
.设备寄存器位的含义
.系统和附加时钟参数(最大和最小速率)
config.h
根据目标板的具体情况配置宏定义,注意ROM_TEXT_ADRS,ROM_SIZE,RAM_LOW_ADRS,
RAM_HIGH_ADRS要与Makefile文件里定义的一致,LOCAL_MEM_LOCAL_ADRS和LOCAL_MEM_SIZE要正确。
romInit.s
这是系统上电后运行的第一个程序,根据具体目标板对寄存器和CPU进行设置;以CPU为ARM7TDMI为例,romInit.s需要进行的工作有:
.保存启动方式:对于泠启动,如果CPU配置的是HIGH_VECTORS,就设置入口地址为0xFFFF0000,否则设置入口地址为0x00000000;
.屏蔽中断:通过设置cpsr的I_BIT和F_BIT都为1来实现,还要设置中断寄存器为关 模式,同时设定运行模式为SVC32模式。
.初始化堆栈指针PC和SP:堆栈指针指向STACK_ADRS,这个宏的定义为当镜像为驻留ROM时,该宏值为_sdata,当镜像为非驻留ROM时该宏置为_romInit,这两个 地址经过地址映射后都指向被拷贝镜像在RAM的目标地址。
.初始化cache,屏蔽cache
.根据具体目标板的需要 初始化其他寄存器
.指针跳转到romStart()函数并执行
bootConfig.c
一般不需要用户修改,也可以根据具体情况做适当修改
sysALib.s
与romInit.s文件实现的功能相似,单如果在romInit.s文件里对DRAM和内存控制器 进行了初始化在 这里不再进行这项工作。
创建VxWorks镜像
根据 具体需要在命令行环境下利用Makefile创建各种镜像,也可以在Tornado的集成环境下Build菜单中选择Build Boot ROM来创建各种类型的BootROM。
除此以外,如果系统硬件包括串口,还要根据具体情况修改sysSerial.c文件。如果包含网络部分还要修改configNet.h;如果包含NVRAM还要修改bootnv.h文件。总之,BSP的开发要根据具体目标板的硬件进行。
对同一目标板而言,不同操作系统的BSP在本质上是一样的,但是不同的操作系统将提供不同的支持库,在BSP结构上也可能会有所不同。
- 基于VxWorks的BSP概念与开发
- 基于VxWorks的BSP概念与开发
- 基于VxWorks的BSP开发指南
- 基于VxWorks的BSP概念设计和实现
- VxWorks的BSP开发
- VxWorks的BSP开发
- VxWorks基本概念及常见问题及BSP 概念
- vxworks BSP移植(基于lpc2210)
- VxWorks BSP开发和启动过程
- VxWorks----BSP概述和开发流程
- 基于嵌入式操作系统VxWorks的图形界面开发
- BSP的概念
- VxWorks在S3C2410上的BSP设计
- VxWorks的移植和BSP定制过程
- VxWorks的移植和BSP定制过程
- VxWorks与SNMP代理的开发
- 基于S3C4510B的一个简单BSP的开发报告
- 基于S3C4510B的一个简单BSP的开发报告
- 自己用C#编写的日期选择web自定义控件(有修订)
- flash创作技巧
- 分销流程变更
- 求助,请各位大虾告诉小北TRS WAS40下载地址
- 书店会员销售系统(一)
- 基于VxWorks的BSP概念与开发
- 书店会员销售系统(二)
- 书店会员销售系统(三)
- 常用脚本/函数
- ARM IXP425上移植MVL内核
- [DNN扩展]将Lion.Web.WebHtmlEditor作为DNN的富文本编辑器(初步实现)
- 基于ARP欺骗的嗅探原理
- NAPI 技术在 Linux 网络驱动上的应用和完善
- [DNN扩展]LionHtmlEditorProvider(v1.0.3)