当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]嵌入式MICREL网卡驱动设计

摘要:文中在HEROS嵌入式操作系统中,利用开放源代码的TCP/IP协议栈,在MICREL芯片组成的网卡架构的基础上,详细描述了添加网卡底层驱动程序的步骤,探讨并实现了驱动程序的开发。
关键词:网卡驱动;嵌入式操作系统;MICREL

    目前随着互联网的发展,越来越多的电子设备已经将网络接入功能作为其默认配置,以实现设备的远程监控和信息分布式处理。TCP/IP协议栈在很多应用中已经证明了其稳定性,所以在实际应用中主要解决移植和编写网卡的底层驱动程序的问题,本文讨论的是MICREL网卡驱动在HEROS系统中的实现,该款芯片为8851,有两个完全独立的网卡电路实现。

1 网卡与HEROS概述
    网卡驱动完成的工作是正常发送以及接收网络数据包。Micrel网卡驱动程序对于操作系统而言是一组子程序,它屏蔽了底层的硬件处理细节,同时向上层软件提供接口。驱动程序将要发送的数据包按指定格式写入芯片并启动发送命令,然后Micrel网卡内部处理单元会自动把数据包转换成物理帧格式在物理信道上传输。反之,Micrel网卡收到物理信号后将其还原成数据,按指定格式存放在芯片缓冲区中以便主机程序取用。
    由于Micrel网卡在HEROS系统中的设计采用的是外扩设计,所以图1中Micrel网卡模块的位置相应地就位于HEROS操作系统以外,以体现其外扩特性。



2 硬件设计
2.1 网卡硬件特点
    KSZ8851整合了一个快速以太网MAC/PHY与一个8/16/32位的普通主机处理器接口和SPI接口。该设备拥有在RXQ和TXQ之间进行共享的18KB内部缓冲存储器。该缓冲存储器在接收队列的缓存容量是12KB,而在发送队列则是6KB。凭借引脚与麦瑞半导体现有的KSZ8841MQL和KSZ8842MQL系列兼容,该设备可提供80Mbps或更高的性能。该解决方案支持大端(Big—Endian)和小端(Little—Endian)处理器,还支持IPv4/IPv6 checksum生成与校验。这些功能大大减少了对CPU的使用,并提高了系统整体性能。通过能量检测模式、可编程的3.3V/2.5V/1.8V IO选项以及一个零下40摄氏度至85摄氏度的工作温度范围,KSZ8851还为设计师提供了更强的功率管理功能。最后,该设备以多种封装形式推出,包括128引脚PQFP封装、48引脚LQFP封装和32引脚QFN封装。[!--empirenews.page--]
2.2 网卡初始化
    为正常使用网卡收发数据功能,首先需要对Micrel网卡进行初始化。初始化工作应在网卡正常工作前完毕,所以应在HEROS系统初始化过程中一并完成Micrel网卡的初始化工作。下面这个函数是写命令用的:

2.3 发送处理函数
    首先,在网卡初始化时,就需要设置一些有关发送数据的发送寄存器,然后,网卡才能正常发送数据。Mierel网卡发送寄存器的初始化框图如图2所示。

[!--empirenews.page--]


    在网卡发送模式正确初始化后,即可进行数据发送操作。首先用户层发出发送数据的请求,然后该请求通过HEROS系统协议栈发给MICREL网卡驱动层,最后发出数据。发送前要注意:
    (1)此时该网卡没有在接收数据包,否则会引起时序混乱,导致网卡最后失效,所以在发送的时候要去判断信号量micrel_int_1_flag是否为0,如果为0,则可以发送,为1则表明此时正在接收数据包,不可以发送。
    (2)发送长度要以四个字节对齐。GET_4BYTES_AUGNMENT(uOrgPktLen,&len);
    实际发送长度为len。
2.4 接收处理函数
    Micrel网卡接收寄存器的初始化框图如图3所示。在网卡接收模式正确初始化后,即可进行数据接收操作。首先用户层发出接收数据的请求,然后该请求通过HEROS系统协议栈发给MICREL网卡驱动层,最后接收数据。接收时需注意:


    (1)首先要从帧头中获取帧长度byte_count,最大为1518,并且必须把byte_count按4个字节对齐;
    (2)其次要将Micrel芯片的接收中断关闭,接收完毕后,再打开接收中断。
    (3)注意帧开始的2个字节和最后4个字节不要读到接收缓冲区。

3 结束语
    本文介绍了以HEROS为核心、KS8851作为网络接口芯片的终端接口,通过TCP/IP协议栈与本文讨论的网卡驱动,用ping ip地址命令可以得到ICMP reply响应。MICREL芯片具有性价比高、连接方便等特点,是进行嵌入式以太网终端设计时的主要控制芯片之一。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭