基于VxWorks和MC68332的变电站测控系统驱动程序设计(4)
发布时间:2021-06-07
发布时间:2021-06-07
单片机
陈连玉,等基于VxWorks和MC68332的变电站测控系统驱动程序设计.79.
设置CAN卡工作寄存器,如接收码寄存器和屏蔽码寄存器等
CAN卡开中断和进入操作模式
Retum((int)pCan_Dev):/★注意必须返回设备描述结构指针+/
}
intCanRead(intCAN_DEV—ID,UBYTE水buLintnBytes){
等待信号量(该信号量由中断处理例程释放)
从接收缓冲区读取数据
释放接收缓冲
返回接收数据数量
)
intCanWrite(intCAN_DEV_ID.UBYTE木buf,intnbyte){
查询发送缓冲是否可用
向发送缓冲区写数据
命令发送
查询发送完成标志
返回发送数据数量
)
voidinterrupt_handleroutin(intarg){
处理中断事件;
发送(释放)信号量;
)
3以太网驱动设计
3.1设计思想
VxWorks支持两种形式的网络驱动,一种是BSD驱动支持通用的BSD4.4网络,API结构等和大多数BSD网络的驱动类似。另一种是END网络驱动,是VxWorks独有的,根据VxWorksMUX接口编程,不过END驱动在底层也要转换成BSD的形式。
本系统采用100M以太网和TCP/口网络通信协议,在网络通信层达到了资源共享。VxWorks网络结构与OSI参考模型相比是在IP层和链路层之间有一Mux层,屏蔽了网络层和数据链路的直接交互,通过增强型网络驱动(EnhancedNetworkDrivers)实现lP层与链路层之间的数据交互。该驱动向上通过Mux层与IP层相连,向下与链路层直接相连,
从而在IP层与链路层之间建立一个数据传输通道。此结构与以太网控制器中为其驱动定义的控制结构相类似。
3.2基于VxWorks的TCP/IP数据封装
在68332中嵌入VxWorks后,可以实时完成把采集到数据进行TCP/口协议封装。VxWorks提供支持嵌入式器件内核的板级支持包以及TCP/球工具包。在68332上配置VxWorks的方法如下:首先要调试VxWorks在68332上的BSP,其中Configh是一个重要的配置文件。该文件中最需要关注的部分就是对存储空间的配置,如下:
#defineROMBASEADRS0x01000000/木Flash起始点?半/
#defineROMTEXTADRS0x0100(K)00/*ROM的开始地址木/
#defineROMSIZE0x00100000/*VxWorks占用的/
#defineRAMLOWADRSOx00001000/*VxWorks一镜像进入点串/
事实上#defineRAMHIGHADRS0x00100000/半为ROM启动的RAM地址术/
相应的,在MAKEFILE文件中对内存的设置要与上面相同,如下:
ROM—TEXTADRS=”01000000#ROM”entryaddressROMWARM_ADRS=01000004#ROMwarmentryaddress
ROMSIZE=”00100000#numberofbytes”ofROM
space
RAMLOWADRS=”0000l000#RAM”text/data
address(bootrom】
RAM——HIGH_ADRS=0010000(ORAMtext/data
address(bootrom)
丌始
醐config.h支件
添JJDMUX接口
阿卡控制器初始化(包括网
卡、主从机IP地址等)
获取中断『川量、开中断
添加设备列表
设置缓冲区
释放缓冲[x
一发送
生
读底层数据库
二j[=二
数据封装
=二[二=
轮询发送
图3以太网驱动流程图
Fig.3
FlowdiagramofEthernetdriver
万方数据
上一篇:刀剑乱舞阵型效果图文详解
下一篇:“国学小名士”经典诵读题库