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_CRIT%&&&&&%AL asm(set 13),经过对SR状况寄存器的中止操控位设置完成使能或制止操作体系呼应中止恳求;#define OS_STK_GROWTH 1,界说VG2的仓库由高到低。
(2)改写OS_CPU_C.C中部分函数
OSTaskStkInit()为使命栈结构的初始化函数。VG2呼应中止恳求信号后,将当时寄存器值按先入后出的次序压入仓库。
OSTaskStkInit()依照压入仓库次序对各使命栈初始化。
OSStartHighRdy()函数跳转到一切处于安排妥当状况使命中优先级最高的使命开端运转。操作体系首要得到最高优先级使命栈的指针,然后从使命栈中弹出一切寄存器值,完成跳转。
OSCtxSw()是使命级的使命切换函数。swi 7(软件中止)的中止向量指向该函数。当需求使命切换时,首要该函数将当时使命寄存器值压入仓库。然后将当时使命使命栈指针保存到使命操控块中。最终判别出最高优先级使命,并弹出其使命栈内容,开端运转。
OSTickISR()为操作体系供给一个周期性的时钟源。VG2的定时器0被设定成第20 ms宣布一个时钟中止信号,中止向量指向该函数。首要该函数保存当时使命状况,并将全局变量OSTime递加1。然后判别出最高优先级使命.并弹出其使命栈内容,开端运转。