Nios ii设备管理分析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Nios ii设备管理分析

Nios ii设备管理分析 Nios II设备分析 ?????? Altera公司是世界上可编程芯片系统(SOPC)解决方案领先者之一,Nios II是Altera公司推出的最新32位嵌入式软核处理器,具有很大的灵活性,Nios II开发包中含有一套通用外设和接口库,用户可以方便的进行系统集成。我们也需要将拥有自主知识产权的IP集成到Nios II处理器系统,通过SOPC Builder软件的用户逻辑接口向导可以方便的将IP集成到Nios II处理器系统中,同时提供设备驱动程序,本文对Nios II设备体系做一个分析,供开发人员在编写设备驱动程序时参考。 Nios设备体系总体说明 ????? Nios II与以往版本Nios的设备体系有了较大的改进,Nios II不再使用SDK方式提供设备驱动,而是采用了硬件抽象库(hardware abstraction layer system library, HAL),应用程序不再直接去控制硬件设备,而是调用HAL API去驱动。HAL API包含了ANSI C 标准库,应用开发人员可以用熟悉的C库函数存取(控制)设备和文件,HAL使Nios II中的设备象UNIX系统设备一样具有相对一致的开发接口,同时也提供了UNIX风格的库函数,其使用方式和习惯类似于我们熟悉的UNIX (LINUX)系统,设备使用更加一致。这种体系使应用开发人员和设备驱动开发人员可以分工合作,提高开发效率,同时降低应用开发难度。下面是基于HAL 系统逻辑层次图: ? Nios II 设备与硬件系统定义的相关性 ???????Nios II系统开发是一个用户可定制的高度灵活的过程,在SOPC Builder中用户定义处理器系统和外设生成相关的.ptf文件,Nios II IDE 根据此ptf文件在创建项目时为项目生成系统库,其中system.h完整的定义硬件系统参数, alt_sys_init.c完成外设系统资源的分配和设备环境的初始化,这两个文件是我们分析的入口,如图: ? Nios II项目逻辑结构示意图如下: ? 外设系统资源的分配和设备环境的初始化 ??????? Nios II系统中设备驱动程序、实时操作系统(ucos II)和应用程序最终被编译为同一个二进制文件,下载到目标系统FLASH中使用。所以设备资源都以全局变量的形式定义,相同种类的设备加入设备双向链表中,通过HAL API使用设备。下面以lan91c111网络外设为例说明外设系统资源的分配和设备环境的初始化。 1. 全局设备链表的定义 在系统库alt_lwip_dev.c中通过宏ALT_LLIST_HEAD(alt_lwip_device_list)定义了alt_lwip_device_list的设备双向链表。 在alt_llist.h中宏ALT_LLIST_HEAD相关定义如下: typedef struct alt_llist_s alt_llist; struct alt_llist_s { alt_llist* next; /* Pointer to the next element in the list. */ alt_llist* previous; /* Pointer to the previous element in the list. */ }; #define ALT_LLIST_HEAD(head) alt_llist head = {head, head} 从定义中可知初始定义是一个指向自身的双向链表结构。 2. 全局外设系统资源分配 l Nios II IDE生成的应用项目system.h中Lan91c111外设相关部分如下: /* * lan91c111_0 configuration * */ #define LAN91C111_0_NAME /dev/lan91c111_0 #define LAN91C111_0_TYPE altera_avalon_lan91c111 #define LAN91C111_0_BASE 0#define LAN91C111_0_IRQ 1 #define LAN91C111_0_IS_ETHERNET_MAC 1 #define LAN91C111_0_LAN91C111_REGISTERS_OFFSET 0x0300 #define LAN91C111_0_LAN91C111_DATA_BUS_WIDTH 32 l 分配外设系统资源: 在alt_sys_init.c中分配外设系统资源 /* * Allocate the device storage * */ ALTERA_AVALON_CFI_FLASH_INSTANCE( CFI_FLASH_0,

文档评论(0)

jgx3536 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档