VxWorks BSP 移植技术笔记
V0.01
VxWorks 技术笔记
Technical
Note
基于 s3c2440a 的 VxWorks BSP 移植
TN01010101
Date:2009/04/08
类别
关键词
摘 要
内容
VxWorsk BSP s3c2440a
VxWorks 的 BSP 开发
广州致远电子有限公司
广州致远电子有限公司
VxWorks BSP 移植技术笔记
VxWorks 技术笔记
修订历史
版本
V0.01
日期
2009/04/08
原因
创建文档
VxWorks 技术笔记
©2009 Guangzhou ZHIYUAN Electronics CO.,
LTD.
i
广州致远电子有限公司
VxWorks BSP 移植技术笔记
VxWorks 技术笔记
销售与服务网络(一)
广州周立功单片机发展有限公司
地址:广州市天河北路 689 号光大银行大厦 12 楼 F4
邮编:510630
电话:(020)38730916 38730917 38730972 38730976 38730977
传真:(020)38730925
网址:www.zlgmcu.com
广州专卖店
南京周立功
地址:广州市天河区新赛格电子城 203-204 室
电话:(020)87578634 87569917
传真:(020)87578842
地址:南京市珠江路 280 号珠江大厦 2006 室
电话:(025)83613221 83613271 83603500
传真:(025)83613271
北京周立功
重庆周立功
地址:北京市海淀区知春路 113 号银网中心 A 座
1207-1208 室(中发电子市场斜对面)
电话:(010)62536178 62536179 82628073
传真:(010)82614433
地址:重庆市石桥铺科园一路二号大西洋国际大厦
(赛格电子市场)1611 室
电话:(023)68796438 68796439
传真:(023)68796439
杭州周立功
成都周立功
地址:杭州市天目山路 217 号江南电子大厦 502 室
电话:(0571) 28139611 28139612 28139613
28139615 28139616 28139618
传真:(0571) 28139621
地址:成都市一环路南二段 1 号数码同人港 401 室
(磨子桥立交西北角)
电话:(028)85439836 85437446
传真:(028)85437896
深圳周立功
武汉周立功
地址:深圳市深南中路 2070 号电子科技大厦 C 座 4
楼 D 室
电话:(0755)83781788(5 线)
传真:(0755)83793285
地址:武汉市洪山区广埠屯珞瑜路 158 号 12128 室
(华中电脑数码市场)
电话:(027)87168497 87168297 87168397
传真:(027)87163755
上海周立功
西安办事处
地址:上海市北京东路 668 号科技京城东座 7E 室
电话:(021)53083452 53083453 53083496
传真:(021)53083491
地址:西安市长安北路 54 号太平洋大厦 1201 室
电话:(029)87881296 83063000 87881295
传真:(029)87880865
VxWorks 技术笔记
©2009 Guangzhou ZHIYUAN Electronics CO.,
LTD.
ii
广州致远电子有限公司
VxWorks BSP 移植技术笔记
VxWorks 技术笔记
销售与服务网络(二)
广州致远电子有限公司
地址:广州市天河区车陂路黄洲工业区 3 栋 2 楼
邮编:510660
传真:(020)38601859
网址:www.embedtools.com
(嵌入式系统事业部)
www.embedcontrol.com (工控网络事业部)
www.ecardsys.com
(楼宇自动化事业部)
技术支持:
CAN-bus:
电话:(020)22644381 22644382 22644253
邮箱:can.support@embedcontrol.com
MiniARM:
电话:(020)28872684 28267813
邮箱:miniarm.support@embedtools.com
无线通讯:
电话:(020) 22644386
邮箱:wireless@embedcontrol.com
iCAN 及数据采集:
电话:(020)28872344 22644373
邮箱:ican@embedcontrol.com
以太网:
电话:(020)22644380 22644385
邮箱:ethernet.support@embedcontrol.com
串行通讯:
电话:(020)28267800 22644385
邮箱:serial@embedcontrol.com
编程器:
分析仪器:
电话:(020)22644371
邮箱:programmer@embedtools.com
电话:(020)22644375 28872624 28872345
邮箱:tools@embedtools.com
ARM 嵌入式系统:
电话:(020)28872347 28872377 22644383 22644384
邮箱:arm.support@zlgmcu.com
楼宇自动化:
电话:(020)22644376 22644389 28267806
邮箱:mjs.support@ecardsys.com
mifare.support@zlgmcu.com
销售:
电话:(020)22644249 22644399 22644372 22644261 28872524
28872342 28872349 28872569 28872573 38601786
维修:
电话:(020)22644245
VxWorks 技术笔记
©2009 Guangzhou ZHIYUAN Electronics CO.,
LTD.
iii
广州致远电子有限公司
VxWorks BSP 移植技术笔记
VxWorks 技术笔记
目 录
2.2.1
2.2.2
2.2.3
1. 适用范围.................................................................................................................. 1
2. BSP 分析................................................................................................................... 2
BSP 的文件构成........................................................................................................2
BSP 的执行逻辑........................................................................................................3
BootROM image ................................................................................................ 3
VxWorks image..................................................................................................4
Driver 加载的时机.............................................................................................5
3. 移植要点.................................................................................................................. 6
异常处理 .................................................................................................................... 6
中断处理 .................................................................................................................... 9
时钟 .......................................................................................................................... 11
串口驱动 .................................................................................................................. 11
概述 .................................................................................................................. 11
ttyDrv(包括 tyLib)......................................................................................12
xxDrv 驱动的实现 ...........................................................................................15
编译链接 .................................................................................................................. 22
4. 参考资料................................................................................................................ 23
3.4.1
3.4.2
3.4.3
2.1
2.2
3.1
3.2
3.3
3.4
3.5
移植技术笔记
©2009 Guangzhou ZHIYUAN Electronics CO., LTD.
1
广州致远电子有限公司
VxWorks BSP 移植技术笔记
VxWorks 技术笔记
1. 适用范围
主要从几个关键主题描述 s3c2440a 的 VxWorks BSP 定制工作, 对整个过程作了详细
描述。另外提供一些开发中需要使用的参考资源,包括手册、文档、代码和工具等。
适用于基于 ARM 的 VxWorks 的 BSP 开发。
此次移植的 VxWorks BSP 基于 Tornado 2.2,适用于 EPC6000,MiniHMI-1000 等基于
s3c2440a 的工控板上。实现了向量表映射,中断异常管理,系统时钟,辅助时钟,Uart 等最
基本的驱动与功能。可用于生成 VxWorks 的 bootrom 和 VxWorks 镜像。
移植技术笔记
©2009 Guangzhou ZHIYUAN Electronics CO., LTD.
1
广州致远电子有限公司
VxWorks BSP 移植技术笔记
VxWorks 技术笔记
2. BSP 分析
2.1 BSP 的文件构成
VxWorks 的 BSP 组成文件主要包含在四个目录下:
Tornado\target\config\all :所有 BSP 的公共部分;
Tornado\target\config\comps\vxworks:基本模块描述文件(*.cdf);
Tornado\target\config\comps\src:模块配置文件(被 usrConfig.c 使用);
Tornado\target\config\bspname:与目标板相关的部分。
通常将\target\config\all 下的文件拷贝到\target\config\bspname\all,同时修改 makefile 文
件中的“CONFIG_ALL”项,设置为正确的路径。这样做的目的是为了在修改 all 目录下文
件时不影响其它的 BSP。
all 目录:
下面分别介绍这些文件:
1.
在该目录下主要有如下几个文件:
bootConfig.c:是 bootrom 的主要初始化与控制文件。BootConfig.c 是 usrConfig.c 的一个
子集,所以 bootrom 只能提供完整 VxWorks Image 中的部分功能。bootrom 不使用 MMU 库
(SPARC 除外)。在集成环境下修改工程相关的配置信息不会影响 bootrom,只有直接修改
config.h,configAll.h,bootConfig.c 和 bootInit.c 文件才会影响到 bootrom;
bootInit.c:定义了 romStart()函数,用于 bootrom 的第二阶段初始化。首先把 text 和 data
段从 ROM 拷到 RAM 中,然后初始化部分 RAM,进行解压;
usrConfig.c:包含 VxWorks 镜像的主要初始化代码。在 Tornado 集成环境下生成 VxWorks
镜像时会用到此文件。
bspname 目录:
2.
在该目录下主要有如下几个文件:
Makefile:bootrom 的 Makefile 文件。其中定义了一些宏,如:ROM_TEXT_ADRS,
ROM_SIZE,RAM_LOW_ADRS,RAM_HIGH_ADRS;这些宏定义应该与 config.h 下的定
义相一致;
config.h:包含所有的头文件和与 CPU 及系统相关的宏定义,如:对 Cache 和 MMU 的
配置,RAM 和 ROM 的定位以及大小配置;
romInit.s:该文件是 bootrom 和带 ROM 启动功能的 VxWorks 镜像的初始化入口汇编
代码,即实现了 romInit()。目标板一上电就开始执行 romInit(),主要完成三部分工作:
关看门狗,屏蔽中断,禁能 MMU,Cache,配置处理器时钟;
初始化内存控制器;
初始化堆栈指针和其它寄存器以执行 C 语言,然后调用 romStart().
注意:romInit()中的函数或变量必须设计成与内存地址无关的代码(PIC),如程序清单
2.1 所示:
移植技术笔记
©2009 Guangzhou ZHIYUAN Electronics CO., LTD.
2
广州致远电子有限公司
VxWorks BSP 移植技术笔记
VxWorks 技术笔记
程序清单 2.1 与内存地址无关代码
L$_HiPosn:
.long
ROM_TEXT_ADRS + HiPosn - FUNC(romInit)
L$_rStrtInRom:
.long
ROM_TEXT_ADRS + FUNC(romStart) - FUNC(romInit)
L$_SMRDATA:
ROM_TEXT_ADRS + SMRDATA - FUNC(romInit)
.long
romInit.s 只执行一些必要的初始化,其余的初始化工作在后面完成。
sysALib.s:包含目标板或系统相关的汇编语言函数,即实现了_sysInit(),是基于 RAM
的 VxWorks 镜像的入口程序,当 bootrom 引导完镜像后,就会从此出开始执行。sysALib.s
类似于 romInit.s 完成的工作,但它不必设计成 PIC,且可调用其它库中的函数。
sysSerial.c:串口驱动程序的安装和初始化。
bspname.h:包含与处理器相关的宏定义。
sysLib.c:包含与目标板或系统相关的 C 语言函数,sysLib.c 中应该实现以下几类函数:
系统时钟中断相关的函数:sysClkConnect(),sysClkDisable(),sysClkEnable(),
sysClkInt(),sysClkRateGet(),sysClkRateSet();
系统硬件初始化函数:sysHwInit(),sysHwInit2()
内存相关的函数:sysMemTop(),sysNvRamGet(),sysNvRamSet()
串口相关的函数:sysSerialHwInit(),sysSerialHwInit2(),sysSerialChanGet()
杂项函数:sysBspRev(),sysModel(),sysToMonitor()
其它可选函数:如:辅助时钟中断相关函数,总线相关函数
其中部分函数的实现在驱动程序子文件中完成。通过包含 C 文件的方式引入到 sysLib.c
中,如程序清单 2.2 所示:
程序清单 2.2 包含 C 文件
#include "sysInt.c"
#include "sysTimer.c"
#include "sysSerial.c"
#ifdef INCLUDE_END
#include "ax88796End.c"
#endif
2.2 BSP 的执行逻辑
2.2.1 BootROM image
/* sys interrupt
/*
/* sio channel
sys timer
/* END device
*/
*/
*/
*/
bootrom 主要用于启动装载 VxWorks image,因此完成较少的系统初始化,。一般有压缩
和不压缩两种形式,如 bootrom 和 boot_uncmp。与 VxWorks image 的主要区别在于 Bootrom
调用 bootConfig.c,而 VxWorks 镜像调用 usrConfig.c。
bootrom 的执行逻辑:
1.
文 件 romInit.s 中 的 romInit→ 文 件 bootInit.c 中 的 romStart→ 文 件 bootConfig.c 中 的
usrInit→sysHwInit()→usrKernelInit()→KernelInit(usrRoot,...)
移植技术笔记
©2009 Guangzhou ZHIYUAN Electronics CO., LTD.
3