Nios II下网络设备LAN91C111加载机制分析

上传人:壹****1 文档编号:508497116 上传时间:2023-05-01 格式:DOC 页数:5 大小:124.50KB
返回 下载 相关 举报
Nios II下网络设备LAN91C111加载机制分析_第1页
第1页 / 共5页
Nios II下网络设备LAN91C111加载机制分析_第2页
第2页 / 共5页
Nios II下网络设备LAN91C111加载机制分析_第3页
第3页 / 共5页
Nios II下网络设备LAN91C111加载机制分析_第4页
第4页 / 共5页
Nios II下网络设备LAN91C111加载机制分析_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《Nios II下网络设备LAN91C111加载机制分析》由会员分享,可在线阅读,更多相关《Nios II下网络设备LAN91C111加载机制分析(5页珍藏版)》请在金锄头文库上搜索。

1、Nios II下网络设备LAN91C111加载机制分析 乔从连 (船舶重工集团公司723所,扬州225001) 摘要:本文主要针对lan91c111在Nios II平台下的网络通讯应用,结合HAL系统库、lwIp协议,详细分析了Nios II平台下网络设备的加载机制。 关键词: SOPC;Nios II;lan91c111;lwIp the Loading Mechanism Analysis of Lan91c111 based on Nios II QIAO Cong-lian (The 723 Institute of CSIC,Yangzhou 225001,China)Abstrac

2、t: This paper mostly aimed at the net communication of lan91c111 in the Nios II ,combined the HAL system library and the lwIp protocol, particularly analysed the loading mechanism of lan91c111 based on Nios II. Keyword: SOPC;Nios II;lan91c111;lwIp0 引言在Nios II平台上开发网络通讯时,对网络设备lan91c111的支持的需求,需要理解该网络芯片

3、如何在Nios II系统平台中如何一步步加载成功,直至可以进行用户要求的TCP或UDP通讯开发。Altera所推出的Nios II平台中,其HAL系统库可以支持开放式硬件驱动开发;为了支持网络通讯开发而将裁剪版的TCP/IP协议lwIP移植进来。完整的lan91c111的逻辑控制接口及驱动已被Nios II平台支持。以下将先简单介绍Nios II 平台、lan91c111网络芯片、HAL系统库、lwIP,然后详细分析Nios II平台下lan91c111网络设备的加载机制。1 Nios II平台介绍、LAN91C111网络芯片 传统的集成电路设计技术是将IC芯片通过印刷电路板(PCB)等技术实

4、现整机系统的。尽管IC的速度可以很高,功耗可以很小,但由于PCB板中IC芯片之间的连线延时、PCB板可靠性及重量等因素的限制,整机系统的性能受到了很大的限制。SOPC(System on a Programmable Chip)是Altera公司提出来的一种灵活高效的片上系统解决方案。它将处理器、存储器、I/O口、LVDS、CDR等系统设计需要的功能模块集成到一个PLD器件上,构建成一个可编程的片上系统。Nios II是Altera公司为了支持可编程SOPC系统而推出的软核处理器,可放入FPGA中,它只占芯片内部很少的一部分逻辑单元,成本很低。所以我们也可以将Nios II处理器理解为可在可编

5、程逻辑器件内实现的CPU。Nios II平台支持网络通讯功能,通过对外围网络芯片设备的支持来完成;目前已提供了完整的对LAN91C111芯片的逻辑接口支持。LAN91C111是SMSC公司为嵌入式应用系统推出的第三代快速以太网控制器,集成了遵循SMSC/CD协议的MAC(媒体层)和PHY(物理层),符合IEEE802.3/802.U-100Base-Tx/10Base-T规范,主要功能如下:自适应的传输速率,支持100M/10Mbps支持突发数据的传输.8kb的内部存储器件用于接收和发送的缓存支持8位,16位,32位的数据传输方式提前发送和接收功能.2 HAL系统库简单介绍 HAL系统库是一个

6、轻量级的运行环境,它为应用程序与底层硬件设备提供了一个简单的设备驱动程序接口;HAL的API与标准C库结合在一起,HAL API可以允许用户使用熟悉的C库函数比如printf()、fopen()和fwrite()等来访问设备和文件。HAL作为Nios II处理器系统的板级支持包,为你的嵌入式系统提供了一个统一的外设接口。通过对SOPC Builder和NIOS II IDE的紧密结合使用,用户可以轻松得到一个HAL系统。首先由SOPC Builder产生一个硬件系统,然后Nios II IDE能够根据你之前建立的硬件系统来定制相匹配的HAL系统库;此外,硬件配置上的改变可以自动反映到HAL设备

7、驱动配置上,从而可以消除由底层硬件的细微变化产生的bug。 HAL设备驱动为应用程序与设备驱动软件提供了一个清除的区别。HAL设备驱动的存在使得用户可以不用去关心底层硬件的变化而重复调用应用程序代码。另外也很容易在已有的HAL设备驱动库下对新增加的硬件外设编写与现有外设驱动兼容的设备驱动程序。HAL结构图如图1所示: 图1 HAL结构图3 LWIP简单介绍 lwIP是一套小型化的TCP/IP传输控制协议,它可以在提供完整的TCP/IP功能的同时减少系统资源的使用。lwIP就是专为存储器容量较小的嵌入式系统设计,自然也就适用于Nios II处理器系统。lwIP包括以下功能: 可以捆绑多个网络接口

8、的IP协议 用于网络维护和调试的ICMP协议 用户数据报协议UDP 具有堵塞控制的TCP协议,RTT预测、快速的恢复及重新传输 DHCP协议 以太网的地址解析ARP协议 最后提供给用户程序接口的标准socket接口4 LAN91C111在Nios II平台上的设备加载过程详细分析以下所涉及到的程序文件名、存放位置、内容等均为在Nios II5.1环境下。主要的文件内容目录介绍:alt_lwip_dev.c:nios2_51componentsaltera_lwipUCOSIIsrc 需加载LWIP的网络设备初始化文件;system.h:softwaresimple_socket_server_

9、0_syslibDebugsystem_description 位于用户工程目录中,主要由计算机动态产生,描述了根据用户系统设置生成的系统资源配置内容,用户不用修改;alt_sys_init.c :softwaresimple_socket_server_0_syslibDebugsystem_description位于用户工程目录中,HAL系统库初始化程序文件,用户不用修改;altera_avalon_lan91c111.c:nios2_51componentsaltera_avalon_lan91c111UCOSIIsrc lan91c111网络设备驱动程序文件;系统网络设备的加载机制,流

10、程如图2所示: 图2 网络设备加载主流程图1) 加载第一步:为网络设备lan91c111分配系统资源 首先在lwip初始化文件alt_lwip_dev.c中定义了lwip设备链表:“ALT_LLIST_HEAD(alt_lwip_device_list);” 这里的宏ALT_LLIST_HEAD定义在alt_llist.h文件中: “typedef struct alt_llist_s alt_llist;struct alt_llist_s alt_llist* next; /* Pointer to the next element in the list. */ alt_llist* p

11、revious; /* Pointer to the previous element in the list. */;#define ALT_LLIST_HEAD(head) alt_llist head = &head, &head ” 然后在HAL系统库初始化程序文件alt_sys_init.c中为lan91c111分配系统资源:“ALTERA_AVALON_LAN91C111_INSTANCE( LAN91C111, lan91c111 );”这里ALTERA_AVALON_LAN91C111_INSTANCE宏定义在altera_avalon_lan91c111.h文件中函数“alt

12、_avalon_lan91c111_init、alt_avalon_lan91c111_rx”,分别为设备初始化函数和负责接收网络数据的函数,具体定义在后面的网络设备驱动程序altera_avalon_lan91c111.c里。资源定义:IRQ、BASE、BUS_WIDTH等的值在用户工程文件system.h中定义:“#define LAN91C111_BASE 0x01010000#define LAN91C111_IRQ 0#define LAN91C111_LAN91C111_DATA_BUS_WIDTH 32 ”2) 加载第二步:为lan91c111分配好系统资源后,开始初始化网络设备

13、环境在完成定义设备链表及分配系统资源后,开始设备环境初始化,动态的组织这些资源数据。 初始化程序文件alt_sys_init.c中的唯一一个函数alt_sys_init()就是用来执行初始化所有外设环境的:“void alt_sys_init( void ) ALTERA_AVALON_LAN91C111_INIT( LAN91C111, lan91c111 ); ” 其中用来初始化lan91c111的宏ALTERA_AVALON_SYSID_INIT( SYSID, sysid )定义在网络设备驱动程序头文件altera_avalon_lan91c111.h中,其主要的动作是执行函数alt_

14、lwip_dev_reg(dev)。 而函数alt_lwip_dev_reg(dev)的定义在文件alt_lwip_dev.h中,内容为: “#define alt_lwip_dev_reg(dev) alt_llist_insert(&alt_lwip_device_list, &dev.lwip_dev_list.llist)” 函数alt_llist_insert()的定义在文件alt_llist.h中,alt_lwip_device_list参数正是在第一步中的定义的lwip设备链表,在这里正式加载,至此网络设备环境初始化工作完成。3) 加载第三步:lan91c111设备环境初始化成功后,开始初始化网络芯片接口及网络协议栈在前面两步工作完成后,系统进入结合用户工程文件进行网络芯片接口和网络协议栈的初始化阶段。系统通过对网络协议栈的初始化的过程中依次初始化网络芯片接口电路;主要流程如图3所示: 图3 网络协议栈及芯片电路初始化主流程 第一步:网络协议栈初始化 lwip_stack_init函数定义在alt_lwip_d

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 小学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号