Calendar
载入中。。。
Placard
载入中。。。
Category
载入中。。。
Latest Entries
载入中。。。
Latest Comments
载入中。。。
Last Messages
载入中。。。
User Login
载入中。。。
Links
Information
载入中。。。
Search
Other


Welcome to my blog!
  NIOS II Step By Step 2--理解HAL
 

前一讲我们实现了一个简单的用户指令,在本系列文档中我们假定用户已经正确安装Nios II IDE开发环境并能创建和调试程序,对Nios II IDE开发环境不再介绍。
目前Nios II 的开发都是在HALhardware abstraction layer)的基础上进行的。在进一步介绍其他内容之前有必要介绍HAL
HAL
系统库是一个轻量级的运行环境,提供了简单的和硬件通讯的设备驱动程序。HAL API集成了ANSI C标准库,这些API允许你用标准C函数(例如:printf,fopen,fwrite等等)去存取设备。
HAL
类似于ARM系统中的BSPboard-support package),提供了一个一致的设备存取界面。由于SOPC BuilderNIOS II IDE紧密的集成,在SOPC Builder生成硬件系统以后,NIOS II IDE 能够自动生成对应的客户HAL系统库。更新硬件系统设置以后,NIOS II IDE能自动更新HAL的驱动设置。在创建软件项目的时候,NIOS II IDE自动生成并管理HAL系统库。
        HAL
体系结构:
   

HAL系统库提供了下列系统服务:
1
        集成newlib。一个ANSI C标准库。(许多人都要求提供NIOS IIC库的说明,具体可以参考 http://sources.redhat.com/newlib
2
        设备驱动。这些设备驱动程序提供了常用设备的驱动。同时也是我们学习设备驱动程序开发的范例。
3
        HAL API。提供了一个一致的设备存取、中断处理以及ALARM等工具。
4
        系统初始化。在main执行前完成相关的初始化任务。注意这里包含了BOOTLOAD以及程序重定位等工作。所以NIOS II开发中没有象ARM系统开发中涉及BOOTLOAD等问题。
5
        设备初始化。在main前分配设备空间,并初始化设备。

NIOS II软件系统开发中,程序员划分为应用程序开发和设备驱动开发,从而为提高开发效率给出一条途径(实际开发中并不一定如此划分,实际我们都身兼数职披挂上阵J)。
1
        应用开发人员使用HAL API去完成开发工作
2
        设备驱动开发人员完成设备驱动的开发并融合到HAL体系中,供应用开发人员使用

设备类型:
在以后的文档中我们会给出NIOS II HAL设备被组织加入到双向设备链表中(在我的BLOG: http://www.pld.com.cn/blog/blog?name=jhljs中有设备组织的分析文挡)。并不是所有的设备被添加到同一个设备链表中而是分成了几个类型:
1
        字符模式设备
2
        时间模式设备
3
        文件系统设备
4
        以太网设备
5
        DMA设备
6
        FLASH设备
不同的设备有大体一致的模式,但内提供的设备驱动函数不同类型不一致。
  
NIOS II 安装完毕以后,NIOS II IDE 中提供了上述类型的外设和相应的驱动程序。我们在以后的文档中会分析这些设备驱动程序,从而为开发自己的设备驱动提供有力的支持和坚实的基础。
   OK
HAL就介绍这些了。点到为止,革命尚未成功,同志仍需努力。 

[ 阅读全文 | 回复(0) | 引用通告 | 编辑

  Post  by  jearome 发表于 2006-9-6 12:22:00
发表评论:
载入中。。。
载入中。。。