基于μC/OS-II的VG2以太网和USB接口设计
1 引言
近几年来,随着计算机网络技术的快速发展,TCP/IP协议已成为应用最广泛的网络互联协议。USB(通用串行总线)以灵活、方便、通信稳定、成本低廉、即插即用等优点已经成为数据存储与交换的通用接口。
ADChips公司的32位多媒体微处理器VirgineG2(简称VG2)具有强大的数据、图像和音频处理功能,而且能够直接输出NTSC/PAL制式模拟信号。VG2只提供了一路32位的I/O接口和两路串行通讯接口,因此需要对VG2扩展TCP/IP接口和USB接口,以实现远/近程数据的交互和大容量数据存储。
本文采用Realtek公司的RTL8019AS芯片对VG2进行以太网接口扩展,通过TCP/IP协议规范及LwIP实现VG2的TCP/IP协议栈。同时采用Philips公司的ISP1161芯片实现VG2的USB主/从控制接口扩展。
2 VG2的以太网和USB硬件接口设计
2.1芯片简介
VG2内嵌16/32位(EISCSE3208)多媒体微控制器,内含2路4 KB的Cache、2D图像加速器,32通道的8/16位音频处理器以及DAC、DRAM,控制器、DMA、定时器、双串口等多种外设。还具有8个外部片选信号(PCS0#一PCS7#)和27个中断源,其中包括8个外部中断(IRQ0~IRQ7)。基于3D的2D图形加速器支持NTSC/PAL制式电视显示。
RTL8019AS是Realtek公司生产的以太网接口控制器,符合NE2000标准,遵循IEEE802.3协议。支持8位、16位的数据总线,有即插即用、跳线和免跳线三种工作方式。RTL8019AS内置16 KB RAM,用作收发缓冲以降低对主处理器的请求频率。内部还有远程DMA通道和本地DMA通道。
ISP1161是Philips公司生产的通用串行总线(USB)主机控制器(HC)和设备控制器(DC),遵循USB 1.1,支持全速(12 Mbit/s)及低速(1.5 Mbit/s,)两种数据传输模式。两个USB控制器在使用中共用一个微处理器总线接口,但I/O地址不同,并有各自的中断请求输出引脚和独立的DMA通道。ISP1161提供两个下行端口和一个上行端口.每一个下行端口都有一个过流(OC)检测输入引脚及电源开关控制输出端,上行端口也有自身的VBUS检测输入端。另外还提供了单独的唤醒输入端和挂起输出端。HC的下行端口能与USB兼容设备及具有USB上行端口的USB集线器连接。
2.2 VG2的TCP/IP和USB接口设计
2.2.1硬件设计
对VG2扩展USB接口和以太网接口的硬件原理框图如图1所示。
以太网接口设计中。VG2的PCS6和IRQ6分别作为RTL8019AS的片选信号和中断信号。RTL8019AS其他引脚连接方式为:JP接高电平,设置RTL8019AS工作在跳线方式下;IOS3~IOS0接低电平,设置其I/O基地址Ox300,这样RTL8019AS只对地址为0x300~0x31F的信号产生响应;IRQS2~IRQS0接低电平,INT0被选中作为中断请求的输出;PL1、PL0接低电平,设置具有自动检测接口类型的功能。
当PCS6有效时,VG2为RTL8019AS映射从0x0160 0000开始的1 MB内存,SA8和SA9位为高电平,对应于RTL8019AS的地址线信号为0000 0000 0011 000X XXXX,I/O基址设置为0x300。这样通过地址的低5位就可以读取RTL8019AS内部的32个寄存器。对VG2控制映射RTL8019AS内部寄存器地址为0x0160 0000+相应的偏移地址(0x00~Ox1F)。
2.2.2 USB接口设计
VG2采用PCS7和IRQ7分别作为ISP1161的片选信号和中断信号,ISP1161采用I/O通信的方式,其I/O地址如表1所列。
ISP1161寄存器是一个指令-数据双重结构寄存器。一个完整的寄存器访问周期首先为指令阶段,然后为数据阶段。指令(也可以理解为寄存器的指针)指向ISP1161的下一个将被访问的寄存器。一个指令为8位长,在一个微处理器的16位数据总线上,指令占用低字节,高字节被填充为0。微处理器先向指令端口写入一个指令代码.然后从数据端口读/写数据字。
当PCS7有效时,VG2为ISP1161映射从0x1700 0000开始的1 MB内存。ISP1161主机控制器的数据和命令地址分别是Ox0170 0000和Ox0170 0002,设备控制器的数据和命令地址分别是0x0170 0004和0x0170 0006。
3软件设计
系统的软件部分通过在VG2中嵌入实时多任务操作系统μC/OS一Ⅱ来实现。在μC/OS一Ⅱ平台上分别对各个接口进行多任务的控制。
3.1 μC/OS-Ⅱ移植
μC/OS一Ⅱ是一个完整、可移植、固化、裁剪的占先式实时多任务内核。如果只保留其最核心的代码,则可压缩到3 KB。将μC/OS-Ⅱ移植到VG2微处理器上需改写与硬件相关的汇编语言。具体改写内容如下所示:
(1)改写OS_CPU.H中部分函数
#define OS_TASK_SW() asm("swi 7"),通过软件中断指令来实现操作系统的任务切换函数:#defi-neOS_ENTER_CRITICAL()asm("clrl3"),#define OS_EXIT_CRITICAL asm("set 13"),通过对SR状态寄存器的中断控制位设置实
- 详解μC/OS-II如何检测任务堆栈实际使用情况(11-27)
- μC/OS-II 移植笔记 1(FreeScale 68HCS12 核单片机)(11-20)
- μC/OS-II 移植笔记 2(FreeScale 68HCS12 核单片机)(11-20)
- 嵌入式实时操作系统 μC/OS-II 在S12单片机上的移(09-12)
- 基于μCOS-II的USB主机系统设计(12-27)
- 基于LPC2131嵌入式系统μCOS-II实现CAN通讯(09-12)