资料介绍
引 言
美国WindRiver公司于1983年设计开发的VxWorks操作系统是一种嵌入式实时操作系统(RTOS),是嵌入式操作系统的典型代表,它的高可靠性、可剪裁性、强实时性被广泛的应用在军事、通信、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、导弹制导、飞机导航等。BSP(Board Support Package)在VxWorks操作系统中起到了部分接口的驱动和硬件初始化的作用,它是生成bootrom和VxWorks映像文件的前提,而S3C2440是Samsung公司设计的ARM920T系列的核心处理器,是嵌入式领域比较常用的ARM处理器。因此,研究基于S3C2440平台上的Vxworks BSP移植具有重要的意义。本文就BSP的概念、BSP移植过程中重点修改的几个文件、串口和网口驱动以及BSP的调试和仿真做详细的介绍。
BSP概述
VxWorks操作系统将所有硬件的功能函数分别放到一系列库中,这些库就被称为板级支持包BSP。BSP是连接VxWorks操作系统与硬件平台的一个接口软件包,在引导系统、支持系统运行过程中扮演着重要的角色,首先,通过BSP可以生成引导操作系统的bootrom;其次,引导行工程的建立基础就是BSP;最后,BSP具有与用户交互的作用,可以提供一个基础的硬件调试环境。BSP还可以使VxWorks运行于特定的硬件平台,如ARM、PPC、X86等,它包含了一系列与硬件相关的函数,完成针对硬件的基本输入与输出操作,可以使上层程序员在不用熟悉硬件的情况下进行编程。例如,一般它完成以下操作:目标板硬件初始化、内存控制器初始化、堆栈初始化、外围设备初始化(I/O、Interrupt……)、异常向量处理、CACHE操作、硬件设备的底层驱动、定时器驱动、串口驱动、END网络驱动、FLASH驱动、LCD驱动等。
BSP在嵌入式系统中扮演的角色,很类似于在PC系统中的BIOS和驱动程序的地位。图1中包括了VxWorks操作系统的各种组件,指明了BSP在整个系统中所处的地位和作用。
VxWorks在S3C2440上的BSP设计
S3C2440简介
移植目标机的硬件配置具体如下:处理器S3C2440,采用ARM920T内核,内存大小64M;NAND Flash大小为128M;
NOR Flash大小为2M;3路URAT;2路SPI;IIC总线接口;网卡:DM9000,10/100M的自适应。
图1 BSP在嵌入式系统中的位置框图
BSP的移植过程
要进行BSP的开发和设计,最好有一个可参考的模板,由于Samsung S3C2440A的内核是ARM920T,所以参考的模板选择Tornado for arm 的integrator920t。BSP文件主要在VxWorks编译环境Tornado的目录target/config/all和target/config/integrator920t文件夹中。其中,all文件夹里的文件对于绝大多数BSP都是共用的,一般来说不用怎么修改,重点是修改integrator920文件夹下的几个文件,这主要是指makefile、config.h、rominit.s和sysLib.c中相关部分的修改,另外添加了串口驱动和DM9000的网卡驱动。
修改Makefile文件
Makefile的两个主要功能就是提供文件之间的依赖关系和目标文件生成方法,定义编译和链接整个BSP的规则,在makefile文件中有一些参数已经在config.h文件中定义过了,但是必须保证两处的定义一致,否则会出现编译错误。下面介绍一些需要修改的参数:
CPU:描述目标板的处理器类型,设计中为ARMARCH4;
TOOL:该参数用来选择编译工具,VxWorks中可使用GNU和DIAB两种,设计中用GNU编译器来编译目标代码;
TGT_DIR:默认设置为$(WIND_BASE)/target;
TARGET_DIR:默认为BSP所在的目录,设计中为mini2440;
VENDOR:板卡生产商的名称,设计中为HITSAT;
BOARD:板卡的名称,设计中为OMU;
ROM_SIZE:ROM或Flash的大小(十六进制);
RAM_LOW_ADRS:VxWorks在RAM中的起始地址,即入口地址;
RAM_HIGH_ADRS:非驻留ROM内核的启动程序加载地址。关于入口地址和高位地址的指定需参考硬件的RAM组织。
该文件下其余的设置和定义都与模板中的一致。
修改config.h
config.h文件是BSP软件中比较重要的一个文件,VxWorks内核组件的配置可以通过config.h文件来定义。config.h文件包含了所有头文件和CPU相关的特殊定义,config.h文件中的配置参数是在configAll.h文件内容的基础上根据开发板的硬件资源设置的,其中包括定义引导行、修改存储空间的地址等。下面详细介绍config.h文件中修改的部分配置参数:
(1)定义引导行
#define DEFAULT_BOOT_LINE “dm(0,0) zwj-PC:d:\VxWorks h=192.168.0.1 e=192.168.0.2 u=zwjhjj pw=zwjfile tn=mini2440”
其中:dm(0,0)为boot device,即启动设备映像;
zwj-PC为host name,即主机名;
d:\VxWorks为file name,即要下载的VxWorks镜像文件路径;
h=192.168.0.1为主机IP地址;
e=192.168.0.2为目标板IP地址;
u=zwjhjj为FTP登陆时的用户名;
pw=zwjfile为FTP登陆时的密码;
tn=mini2440为目标板名称。
(2)修改地址
对目标板存储区配置参数的修改时一定要注意:该文件中地址定义,如ROM-TEXT-ADRS、ROM-SIZE、RAM-LOW-ADR、SRAM-HIGH-SIZE等要与Makefile文件中的相关定义一致。根据实际CPU以及外扩存储器的大小来确定目标板内存。
#define LOCAL_MEM_LOCAL_ADRS 0x30000000 / *RAM的起始地址*/
#define LOCAL_MEM_SIZE 0x04000000 /*RAM的大小为64M*/
#define ROM_BASE_ADRS 0x00000000 /*Flash的基地址*/
#define ROM_SIZE0x00100000 /*存VxWorks的Flash大小*/
#define ROM_COPY_SIZE ROM_SIZE
#define ROM_SIZE_TOTAL 0x00200000 /*Flash总大小*/
#define RAM_LOW_ADRS 0x30001000 /*VxWorks 映像的入口地址*/
#define RAM_HIGH_ADRS 0x32e00000 /*Bootrom在RAM中的起始地址*/
修改S3C2440x.h
该文件是自己添加的一个文件,其中包括处理器相关的外设寄存器结构、地址、外设中断号分配、串口等的设置。下面主要介绍一下该文件中对串口的定义:
/* s3c2440串口的定义*/
#define UART_XTAL_FREQ s3c2440x_PCLK
/*串口时钟频率*/
#define N_s3c2440x_UART_CHANNELS 3 /*串口通道数 */
#define N_SIO_CHANNELS N_s3c2440x_UART_CHANNELS
#define N_UART_CHANNELS N_s3c2440x_UART_CHANNELS
#define UART_0_BASE_ADR 0x50000000 /*串口0的基地址*/
#define UART_1_BASE_ADR 0x50004000/*串口1的基地址*/
#define UART_2_BASE_ADR 0x50008000/*串口2的基地址*/
另外又添加了一个s3c2440xSio.h文件,在该文件中定义了串口数据结构:
typedef struct s3c2440x_CHAN
{ SIO_CHAN sio; /* 标准SIO_CHAN结构 */
STATUS (*getTxChar) (); /*安装发送回调函数 */
STATUS (*putRcvChar) (); /*安装接收回调函数 */
void * getTxArg;
void * putRcvArg;
……。
UINT32 channelMode; /*当前模式(中断或轮询)*/
int baudRate; /*当前波特率*/
}
数据结构初始化之后,还有几个重要的函数需要注意:sysHwInit():处理器I/O端口的初始化;sysSerialHwInit():初始化设备描述符;sysSerialHwInit2():通过intConnect()把串口的中断处理程序s3c2440xIntTx、s3c2440xIntRcv连接接到相应的中断向量上,并由int Enable()开启两个中断,调用s3c2440xDevInit2()对_UCON寄存器赋值完成对串口的最终配置由轮询模式转换为中断模式,并在中断服务程序中实现串口数据的接收和发送。通过对这些功能函数的添加完成串口驱动的设计。
美国WindRiver公司于1983年设计开发的VxWorks操作系统是一种嵌入式实时操作系统(RTOS),是嵌入式操作系统的典型代表,它的高可靠性、可剪裁性、强实时性被广泛的应用在军事、通信、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、导弹制导、飞机导航等。BSP(Board Support Package)在VxWorks操作系统中起到了部分接口的驱动和硬件初始化的作用,它是生成bootrom和VxWorks映像文件的前提,而S3C2440是Samsung公司设计的ARM920T系列的核心处理器,是嵌入式领域比较常用的ARM处理器。因此,研究基于S3C2440平台上的Vxworks BSP移植具有重要的意义。本文就BSP的概念、BSP移植过程中重点修改的几个文件、串口和网口驱动以及BSP的调试和仿真做详细的介绍。
BSP概述
VxWorks操作系统将所有硬件的功能函数分别放到一系列库中,这些库就被称为板级支持包BSP。BSP是连接VxWorks操作系统与硬件平台的一个接口软件包,在引导系统、支持系统运行过程中扮演着重要的角色,首先,通过BSP可以生成引导操作系统的bootrom;其次,引导行工程的建立基础就是BSP;最后,BSP具有与用户交互的作用,可以提供一个基础的硬件调试环境。BSP还可以使VxWorks运行于特定的硬件平台,如ARM、PPC、X86等,它包含了一系列与硬件相关的函数,完成针对硬件的基本输入与输出操作,可以使上层程序员在不用熟悉硬件的情况下进行编程。例如,一般它完成以下操作:目标板硬件初始化、内存控制器初始化、堆栈初始化、外围设备初始化(I/O、Interrupt……)、异常向量处理、CACHE操作、硬件设备的底层驱动、定时器驱动、串口驱动、END网络驱动、FLASH驱动、LCD驱动等。
BSP在嵌入式系统中扮演的角色,很类似于在PC系统中的BIOS和驱动程序的地位。图1中包括了VxWorks操作系统的各种组件,指明了BSP在整个系统中所处的地位和作用。
VxWorks在S3C2440上的BSP设计
S3C2440简介
移植目标机的硬件配置具体如下:处理器S3C2440,采用ARM920T内核,内存大小64M;NAND Flash大小为128M;
NOR Flash大小为2M;3路URAT;2路SPI;IIC总线接口;网卡:DM9000,10/100M的自适应。
图1 BSP在嵌入式系统中的位置框图
BSP的移植过程
要进行BSP的开发和设计,最好有一个可参考的模板,由于Samsung S3C2440A的内核是ARM920T,所以参考的模板选择Tornado for arm 的integrator920t。BSP文件主要在VxWorks编译环境Tornado的目录target/config/all和target/config/integrator920t文件夹中。其中,all文件夹里的文件对于绝大多数BSP都是共用的,一般来说不用怎么修改,重点是修改integrator920文件夹下的几个文件,这主要是指makefile、config.h、rominit.s和sysLib.c中相关部分的修改,另外添加了串口驱动和DM9000的网卡驱动。
修改Makefile文件
Makefile的两个主要功能就是提供文件之间的依赖关系和目标文件生成方法,定义编译和链接整个BSP的规则,在makefile文件中有一些参数已经在config.h文件中定义过了,但是必须保证两处的定义一致,否则会出现编译错误。下面介绍一些需要修改的参数:
CPU:描述目标板的处理器类型,设计中为ARMARCH4;
TOOL:该参数用来选择编译工具,VxWorks中可使用GNU和DIAB两种,设计中用GNU编译器来编译目标代码;
TGT_DIR:默认设置为$(WIND_BASE)/target;
TARGET_DIR:默认为BSP所在的目录,设计中为mini2440;
VENDOR:板卡生产商的名称,设计中为HITSAT;
BOARD:板卡的名称,设计中为OMU;
ROM_SIZE:ROM或Flash的大小(十六进制);
RAM_LOW_ADRS:VxWorks在RAM中的起始地址,即入口地址;
RAM_HIGH_ADRS:非驻留ROM内核的启动程序加载地址。关于入口地址和高位地址的指定需参考硬件的RAM组织。
该文件下其余的设置和定义都与模板中的一致。
修改config.h
config.h文件是BSP软件中比较重要的一个文件,VxWorks内核组件的配置可以通过config.h文件来定义。config.h文件包含了所有头文件和CPU相关的特殊定义,config.h文件中的配置参数是在configAll.h文件内容的基础上根据开发板的硬件资源设置的,其中包括定义引导行、修改存储空间的地址等。下面详细介绍config.h文件中修改的部分配置参数:
(1)定义引导行
#define DEFAULT_BOOT_LINE “dm(0,0) zwj-PC:d:\VxWorks h=192.168.0.1 e=192.168.0.2 u=zwjhjj pw=zwjfile tn=mini2440”
其中:dm(0,0)为boot device,即启动设备映像;
zwj-PC为host name,即主机名;
d:\VxWorks为file name,即要下载的VxWorks镜像文件路径;
h=192.168.0.1为主机IP地址;
e=192.168.0.2为目标板IP地址;
u=zwjhjj为FTP登陆时的用户名;
pw=zwjfile为FTP登陆时的密码;
tn=mini2440为目标板名称。
(2)修改地址
对目标板存储区配置参数的修改时一定要注意:该文件中地址定义,如ROM-TEXT-ADRS、ROM-SIZE、RAM-LOW-ADR、SRAM-HIGH-SIZE等要与Makefile文件中的相关定义一致。根据实际CPU以及外扩存储器的大小来确定目标板内存。
#define LOCAL_MEM_LOCAL_ADRS 0x30000000 / *RAM的起始地址*/
#define LOCAL_MEM_SIZE 0x04000000 /*RAM的大小为64M*/
#define ROM_BASE_ADRS 0x00000000 /*Flash的基地址*/
#define ROM_SIZE0x00100000 /*存VxWorks的Flash大小*/
#define ROM_COPY_SIZE ROM_SIZE
#define ROM_SIZE_TOTAL 0x00200000 /*Flash总大小*/
#define RAM_LOW_ADRS 0x30001000 /*VxWorks 映像的入口地址*/
#define RAM_HIGH_ADRS 0x32e00000 /*Bootrom在RAM中的起始地址*/
修改S3C2440x.h
该文件是自己添加的一个文件,其中包括处理器相关的外设寄存器结构、地址、外设中断号分配、串口等的设置。下面主要介绍一下该文件中对串口的定义:
/* s3c2440串口的定义*/
#define UART_XTAL_FREQ s3c2440x_PCLK
/*串口时钟频率*/
#define N_s3c2440x_UART_CHANNELS 3 /*串口通道数 */
#define N_SIO_CHANNELS N_s3c2440x_UART_CHANNELS
#define N_UART_CHANNELS N_s3c2440x_UART_CHANNELS
#define UART_0_BASE_ADR 0x50000000 /*串口0的基地址*/
#define UART_1_BASE_ADR 0x50004000/*串口1的基地址*/
#define UART_2_BASE_ADR 0x50008000/*串口2的基地址*/
另外又添加了一个s3c2440xSio.h文件,在该文件中定义了串口数据结构:
typedef struct s3c2440x_CHAN
{ SIO_CHAN sio; /* 标准SIO_CHAN结构 */
STATUS (*getTxChar) (); /*安装发送回调函数 */
STATUS (*putRcvChar) (); /*安装接收回调函数 */
void * getTxArg;
void * putRcvArg;
……。
UINT32 channelMode; /*当前模式(中断或轮询)*/
int baudRate; /*当前波特率*/
}
数据结构初始化之后,还有几个重要的函数需要注意:sysHwInit():处理器I/O端口的初始化;sysSerialHwInit():初始化设备描述符;sysSerialHwInit2():通过intConnect()把串口的中断处理程序s3c2440xIntTx、s3c2440xIntRcv连接接到相应的中断向量上,并由int Enable()开启两个中断,调用s3c2440xDevInit2()对_UCON寄存器赋值完成对串口的最终配置由轮询模式转换为中断模式,并在中断服务程序中实现串口数据的接收和发送。通过对这些功能函数的添加完成串口驱动的设计。
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- 基于S3C2440的裂纹实时测量系统的设计
- s3c2440用户资料手册 27次下载
- 裸机学习s3c2440 29次下载
- s3c2440全套中文手册 61次下载
- S3C2440A全套中文手册 15次下载
- s3c2440芯片中文手册 4次下载
- 基于S3C2440和μC%2fOS的FAT文件系统的设计与实现 5次下载
- 嵌入式Linux在s3c2440上的移植研究 67次下载
- 基于ARM处理器S3C2440的VGA显示技术 234次下载
- s3c2440整套中文手册 datasheet
- 基于S3C2440检测系统的设计与应用
- 基于S3C2440的设备远程监控系统
- 基于S3C2440的无线物流终端机的设计与应用
- S3C2440应用电路图
- s3c2440 pdf datasheet
- 中兴车用操作系统SafetyLinux在A1000平台上的适配 700次阅读
- 基于S3C2440A嵌入式微处理器实现高速接入网络的设计 2491次阅读
- 基于S3C2410A处理器实现增强型网络驱动的应用方案 1971次阅读
- 基于S3C2410处理器对Windows CE 5.0操作系统实现BSP移植 977次阅读
- 飞凌嵌入式FL2440开发板简介 1.1w次阅读
- 友善之臂Mini2451平台介绍 4070次阅读
- 友善之臂Tiny2451规格 2715次阅读
- 友善之臂Tiny2416简介 4700次阅读
- 基于S3c2440的I2C驱动与测试程序追踪交叉分析 1337次阅读
- 以嵌入式处理器S3C2440为核心的多任务机器人控制系统设计详解 1723次阅读
- 关于ARM7 S3C4510B上μClinux移植问题 2330次阅读
- 关于Blob的介绍及其在S3C44B0上的移植 4395次阅读
- ARM平台上运行Xen 可同时管理linux和VxWorks 7071次阅读
- ARM的发展史以及架构解析 1.5w次阅读
- MCU设计开发小Tips:创建并移植K10 BSP包的具体步骤和方法 6638次阅读
下载排行
本周
- 1电子电路原理第七版PDF电子教材免费下载
- 0.00 MB | 1490次下载 | 免费
- 2单片机典型实例介绍
- 18.19 MB | 92次下载 | 1 积分
- 3S7-200PLC编程实例详细资料
- 1.17 MB | 27次下载 | 1 积分
- 4笔记本电脑主板的元件识别和讲解说明
- 4.28 MB | 18次下载 | 4 积分
- 5开关电源原理及各功能电路详解
- 0.38 MB | 10次下载 | 免费
- 6基于AT89C2051/4051单片机编程器的实验
- 0.11 MB | 4次下载 | 免费
- 7蓝牙设备在嵌入式领域的广泛应用
- 0.63 MB | 3次下载 | 免费
- 89天练会电子电路识图
- 5.91 MB | 3次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 2PADS 9.0 2009最新版 -下载
- 0.00 MB | 66304次下载 | 免费
- 3protel99下载protel99软件下载(中文版)
- 0.00 MB | 51209次下载 | 免费
- 4LabView 8.0 专业版下载 (3CD完整版)
- 0.00 MB | 51043次下载 | 免费
- 5555集成电路应用800例(新编版)
- 0.00 MB | 33562次下载 | 免费
- 6接口电路图大全
- 未知 | 30320次下载 | 免费
- 7Multisim 10下载Multisim 10 中文版
- 0.00 MB | 28588次下载 | 免费
- 8开关电源设计实例指南
- 未知 | 21539次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935053次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537791次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233045次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191183次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183277次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138039次下载 | 免费
评论
查看更多