微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > SamsungS3C2440平台上的VxworksBSP移植

SamsungS3C2440平台上的VxworksBSP移植

时间:10-28 来源:中电网 点击:

dm9kEnd.c

由于S3C2440使用的是DM9000网卡。要做好DM9000网卡的END驱动首先要初始化网卡的数据结构dm9kDevice,这个数据结构如下:

typedef struct dm9kDevice

{

END_OBJ endObj; /*继承类 */

int unit; /*设备单元号 */

UINT32 flags; /* 本地标志信号*/

int ivec; /* 中断向量 */

int ilevel; *中断级 */

……

} DM9K_DRV_CTRL

数据结构中的END_OBJ类型成员、网卡单元号、中断号和中断向量是网卡驱动中必须包含的成员元素。

驱动的部分接口函数,主要包括网卡加载函数dm9kEndLoad、网卡启动函数dm9kStart、停止网卡函数dm9kStop、网卡控制函数dm9kIoctl、网卡卸载函数dm9kUnload、网卡发送函数dm9kSend、获取组播地址函数dm9kMCastGet、启动轮询模式函数dm9kPollStart、关闭轮询模式函数dm9kPollStop、轮询模式发送函数dm9kPollSend、轮询模式接收函数dm9kPollRcv等,通过对这些接口函数编写功能,实现网卡驱动。

在编写驱动的过程中,还必须注意:由于目标板用一种100pin的DM9000芯片,这种芯片除了有CMD信号之外,还有6根地址片选信号SA4~SA9,根据SA4~SA9对应的CPU地址线和数据手册上引脚定义,可以计算出网卡的端口地址,如果SA4~SA9对应CPU地址的addr4~addr9,那么网卡端口基址就是0x18000300,这样可以计算出网卡的基地址。

图2 VxWorks COM1口的打印信息

BSP的调试与仿真

BSP修改完成以后,就要进行调试了,这里采用点亮LED灯的调试方法,写一段点灯程序,用BSP生成bootrom和VxWorks映像,使用H-JTAG软件将bootrom烧写进目标板的norflash中,通过在不同位置反复的调用点灯程序和烧写bootrom到norflash中来调试BSP,并通过串口查看调试信息,如图2所示,是操作系统启动过程中,经过串口传输到主机上打印的调试消息,通过这些信息可以判断出系统启动过程中哪一部分出现了问题。

图3 VxWorks Shell界面

系统上电之后,bootrom首先运行,然后通过网线将VxWorks映像文件下载进rom中,图3所示为VxWorks的Shell界面,显示设备列表有串口和网口,表明串口和网口驱动成功。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top