论文部分内容阅读
本文介绍了AMR7微处理器的特点和BSP的概念及构成,并且提出了基于ARM7微处理器的VxWorks系统的BSP设计步骤,为嵌入式系统设计人员提供了一种行之有效的BSP设计实现方案。
ARM7核处理器特点
ARM7系列微处理器为低功耗的32位RISC处理器,最适合用于对价位和功耗要求较高的消费类应用。如工业控制、Internet设备、移动电话等多种多媒体和嵌入式应用。
ARM7微处理器系列具有如下特点:具有嵌入式ICE-RT逻辑,调试开发方便;极低的功耗,适合对功耗要求较高的应用,如便携式产品;能够提供0.9MIPS/MHz的三级流水线结构;代码密度高并兼容16位的Thumb指令集;对操作系统的支持广泛,包括VxWorks、WindowsCE、Linux、PalmOS等。主频最高可达130MIPS,高速的运算处理能力能胜任绝大多数的复杂应用。
BSP概念和构成
1、BSP概念。BSP是指针对具体的硬件平台,用户所编写的启动代码和部分设备驱动程序的集合。BSP是相对于操作系统而言的,不同的操作系统对应不同形式的BSP,因此,在写BSP时要按照要求的操作系统对BSP的定义形式来写。在VxWorks系统中,BSP是介于底层硬件环境和VxWorks之间的一个软件接口,它的主要功能是系统加电后初始化目标机的硬件和VxWorks,并提供部分硬件驱动程序。BSP为各种板卡的硬件功能提供了统一的软件接口,包括硬件初始化、中断的捕捉和处理、硬件时钟和定时器管理、内存地址映射,以及内存分配等。每个BSP还包括一个ROM启动或其他启动机制。
2、BSP的文件构成。
VxWorks的BSP组成文件主要包含在四个目录下:
do\target\config\all:所有BSP的公共部分
do\target\config\comps\vxworks描述文件(*.cdf)
do\target\config\comps\src文件(被usrConfig.c使用)
do\target\config\bspname:与目标板相关的部分
3、BSP的函数构成。
sysLib.c中应该实现以下函数:
①系统时钟中断相关的函数:sysClkConnect( ),sys-ClkDisable( ),sysClkEnable( ),sysClkInt( ),sysClkRateGet( ),sysClkRateSet( );
②系统硬件初始化函数:sysHwInit( ),sysHwlnit2( )
③内存相关的函数:sysMemTop( ),sysNvRamGet( ),sysNvRamSet( )
④串口相关的函数:sysSerialHwlnit( ),sysSerialHwInit2( ),sysSeriaIChanGet( )
⑤杂项函数:sysBspRev( ),sysModel( ),sysToMonitor( )
其它函数如:辅助时钟中断相关函数,总线相关函数。
VxWorks系统的BSP设计
1、VxWorks的引导过程。在编写BSP之前,首先要了解整个系统的启动过程。VxWorks的映像由代码段、数据段和BSS段3部分组成。VxWotks内核可以分为3种:可加载类型映像、基于ROM的VxWorks映像和RoM驻留型映像。这3种类型的映像组织是不一样的,因此启动过程有所区别。
(1)可加载映像包括VxWorks和BootROM两部分内容,两部分是独立创建的。首先,由系统引导代码把ROM引导程序搬到RAM_HIGH_ADRS。然后,ROM引导程序开始运行,将VxWorks映像加载到RAM_LOW_ADRS,之后跳转到VxWorks映像装入点。(2)基于ROM的VxWorks映像在BSP初始化时,会把Image完全搬到RAM中执行,包括代码段和数据段。在拷贝执行完毕后,系统控制权转移给RAM中VxWorks映像的初始化代码。(3)ROM驻留型映像只是将ROM中VxWorks映像的数据段和BSS段拷贝到RAM中,完成后系统控制权转移给ROM/Flash里VxWorks映像的初始化代码,代码段留在ROM中并在ROM中运行。在ROM中运行的VxWorks映像主要是为了节省RAM空间,带来的不利则是运行速度变慢。
2、WorksOS下BSP构建。在开发BSP的时候,需要在Tornado原带BSP目录下找一个与所用的处理器相同或相近。与BSP相关的文件有:romInit.s、sysAlib.s、bootInit.c、bootConfig.c、sysLib.c、config.h、eonfigNet.h、makefile以及与硬件相关的。根据S3C4510B微处理器来设计BSP开发步骤。
(1)拷贝BSP。将wrSBCAnn7BSP拷贝一份并命名为4510BSP,再修改该目录下的文件,从而得到自己的BSP。
(2)修改MakeFile文件。修改4510BSP目录下的makefile文件,具体修改的几行可根据处理器的不同去选定修改。BOOTROM的入口地址、装载Vxworks的地址和绝对地址,这些地址对于S3C4510B来说都应该是重映射后的地址。
(3)修改config.h文件。主要是修改ROM_BASE_ADRS、ROM_TEXT_ADRS、ROM_SIZE、RAM_LOW_ADRS、RAM_HIGH_ADRS和under掉不需要的部分。这些应和makefile文件中设置的一致。
(4)修改romInit.s文件。CPU一上电就开始执行romInit( )函数,因此在romInit.s代码段中它必须是第一个函数。对于热启动,处理器将会执行romInit( )加上4后的代码(具体参考sysLib.c中的sysToMonitor( )函数)。更多的硬件初始化在sysLib.c中sysHwInit( )函数中,romInit( )的工作就是做较少的初始化并把控制权交给romStart( )(在bootInit.c文件)。
(5)利用tsfs下载。要利用tsfs下载VxWorks,配置内容如下:①在config.h文件中添加显示引导信息和VxWorks调试的内容。②配置targetserver。
基于ARM7核处理器VxWorks系统的BSP设计设计时,开发人员应依据上述步骤对BSP的开发进行设计。BSP是相对于操作系统而言的,不同的操作系统对应不同形式的BSP,因此,在设计BSP时一定要按照要求的操作系统对BSP的定义形式来写。对于BSP的开发,一般需要从一个模板来修改。BSP开发的正确性直接影响到VxWorks系统运行的稳定性。
ARM7核处理器特点
ARM7系列微处理器为低功耗的32位RISC处理器,最适合用于对价位和功耗要求较高的消费类应用。如工业控制、Internet设备、移动电话等多种多媒体和嵌入式应用。
ARM7微处理器系列具有如下特点:具有嵌入式ICE-RT逻辑,调试开发方便;极低的功耗,适合对功耗要求较高的应用,如便携式产品;能够提供0.9MIPS/MHz的三级流水线结构;代码密度高并兼容16位的Thumb指令集;对操作系统的支持广泛,包括VxWorks、WindowsCE、Linux、PalmOS等。主频最高可达130MIPS,高速的运算处理能力能胜任绝大多数的复杂应用。
BSP概念和构成
1、BSP概念。BSP是指针对具体的硬件平台,用户所编写的启动代码和部分设备驱动程序的集合。BSP是相对于操作系统而言的,不同的操作系统对应不同形式的BSP,因此,在写BSP时要按照要求的操作系统对BSP的定义形式来写。在VxWorks系统中,BSP是介于底层硬件环境和VxWorks之间的一个软件接口,它的主要功能是系统加电后初始化目标机的硬件和VxWorks,并提供部分硬件驱动程序。BSP为各种板卡的硬件功能提供了统一的软件接口,包括硬件初始化、中断的捕捉和处理、硬件时钟和定时器管理、内存地址映射,以及内存分配等。每个BSP还包括一个ROM启动或其他启动机制。
2、BSP的文件构成。
VxWorks的BSP组成文件主要包含在四个目录下:
do\target\config\all:所有BSP的公共部分
do\target\config\comps\vxworks描述文件(*.cdf)
do\target\config\comps\src文件(被usrConfig.c使用)
do\target\config\bspname:与目标板相关的部分
3、BSP的函数构成。
sysLib.c中应该实现以下函数:
①系统时钟中断相关的函数:sysClkConnect( ),sys-ClkDisable( ),sysClkEnable( ),sysClkInt( ),sysClkRateGet( ),sysClkRateSet( );
②系统硬件初始化函数:sysHwInit( ),sysHwlnit2( )
③内存相关的函数:sysMemTop( ),sysNvRamGet( ),sysNvRamSet( )
④串口相关的函数:sysSerialHwlnit( ),sysSerialHwInit2( ),sysSeriaIChanGet( )
⑤杂项函数:sysBspRev( ),sysModel( ),sysToMonitor( )
其它函数如:辅助时钟中断相关函数,总线相关函数。
VxWorks系统的BSP设计
1、VxWorks的引导过程。在编写BSP之前,首先要了解整个系统的启动过程。VxWorks的映像由代码段、数据段和BSS段3部分组成。VxWotks内核可以分为3种:可加载类型映像、基于ROM的VxWorks映像和RoM驻留型映像。这3种类型的映像组织是不一样的,因此启动过程有所区别。
(1)可加载映像包括VxWorks和BootROM两部分内容,两部分是独立创建的。首先,由系统引导代码把ROM引导程序搬到RAM_HIGH_ADRS。然后,ROM引导程序开始运行,将VxWorks映像加载到RAM_LOW_ADRS,之后跳转到VxWorks映像装入点。(2)基于ROM的VxWorks映像在BSP初始化时,会把Image完全搬到RAM中执行,包括代码段和数据段。在拷贝执行完毕后,系统控制权转移给RAM中VxWorks映像的初始化代码。(3)ROM驻留型映像只是将ROM中VxWorks映像的数据段和BSS段拷贝到RAM中,完成后系统控制权转移给ROM/Flash里VxWorks映像的初始化代码,代码段留在ROM中并在ROM中运行。在ROM中运行的VxWorks映像主要是为了节省RAM空间,带来的不利则是运行速度变慢。
2、WorksOS下BSP构建。在开发BSP的时候,需要在Tornado原带BSP目录下找一个与所用的处理器相同或相近。与BSP相关的文件有:romInit.s、sysAlib.s、bootInit.c、bootConfig.c、sysLib.c、config.h、eonfigNet.h、makefile以及与硬件相关的。根据S3C4510B微处理器来设计BSP开发步骤。
(1)拷贝BSP。将wrSBCAnn7BSP拷贝一份并命名为4510BSP,再修改该目录下的文件,从而得到自己的BSP。
(2)修改MakeFile文件。修改4510BSP目录下的makefile文件,具体修改的几行可根据处理器的不同去选定修改。BOOTROM的入口地址、装载Vxworks的地址和绝对地址,这些地址对于S3C4510B来说都应该是重映射后的地址。
(3)修改config.h文件。主要是修改ROM_BASE_ADRS、ROM_TEXT_ADRS、ROM_SIZE、RAM_LOW_ADRS、RAM_HIGH_ADRS和under掉不需要的部分。这些应和makefile文件中设置的一致。
(4)修改romInit.s文件。CPU一上电就开始执行romInit( )函数,因此在romInit.s代码段中它必须是第一个函数。对于热启动,处理器将会执行romInit( )加上4后的代码(具体参考sysLib.c中的sysToMonitor( )函数)。更多的硬件初始化在sysLib.c中sysHwInit( )函数中,romInit( )的工作就是做较少的初始化并把控制权交给romStart( )(在bootInit.c文件)。
(5)利用tsfs下载。要利用tsfs下载VxWorks,配置内容如下:①在config.h文件中添加显示引导信息和VxWorks调试的内容。②配置targetserver。
基于ARM7核处理器VxWorks系统的BSP设计设计时,开发人员应依据上述步骤对BSP的开发进行设计。BSP是相对于操作系统而言的,不同的操作系统对应不同形式的BSP,因此,在设计BSP时一定要按照要求的操作系统对BSP的定义形式来写。对于BSP的开发,一般需要从一个模板来修改。BSP开发的正确性直接影响到VxWorks系统运行的稳定性。