首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
Samsung S3C2440平台上的Vxworks BSP移植
来源:本站整理  作者:佚名  2011-08-21 20:04:04



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寄存器赋值完成对串口的最终配置由轮询模式转换为中断模式,并在中断服务程序中实现串口数据的接收和发送。通过对这些功能函数的添加完成串口驱动的设计。

  修改romInit.s

上一页  [1] [2] [3] [4]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:263,101.60000 毫秒