中关村元坤智造工厂,注册立享优惠!

国内专业的IC销售商
北京耐芯威科技有限公司
Beijing NaiXinWei Technology Co., Ltd.

产品与服务

单片机驱动程序的设计(代码 RTL8019AS)

相信大家都装过电脑,安装完操作系统后我们就需要装各种驱动程序。单片机加上网卡芯片后也需要驱动程序才能正常工作,下面就谈谈单片机驱动程序的设计。

  RTL8019AS数据收发是通过一种称为DMA方式进行的,按数据链路不同划分为远程DMA(remote DMA)和本地DMA(local DMA)两部分。远程DMA完成主处理器和网卡内部缓冲区数据交换,本地DMA完成缓冲区数据发送,CPU发送数据时,先将一帧数据通过远程DMA通道送到RTL8019AS的发送缓冲区,然后发出传送命令。当 RTL8019AS收到一帧正确数据后,将其存放在接收缓冲区并置位相关寄存器或产生中断。要明白以上过程我们首先要清楚RTL8019AS缓冲区结构和相关DMA控制寄存器。

  RTL8019AS内部有16K byte SRAM,分为256字节/页,只能按页操作,地址从0x40~0x7F,共64页组成环形队列作为收发缓冲区。与之相关的寄存器有 PSTART(Page Start Register), PSTOP(Page Stop Register), BNRY(Boundary Register),CURR(Current Page Register)四个。PSTART 定义接收缓冲区起始地址,PSTOP定义接收缓冲区结束地址,BNRY 指向队列中没有被主机读取的第一个数据包地址,CURR指向将要接收数据包的存储起始地址。我们可以简单的理解为CURR为写指针,而BNRY为读指针。 CURR指针由RTL8019AS自动改变,BNRY由程序控制。

  与DMA相关的寄存器如下图所示:


    其中TPSR为发送缓冲区起始地址,TBCR为要发送的字节数,RSAR为远程DMA起始地址,RBCR为远程DMA字节数。其他寄存器我们很少用到,在此不作介绍。