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

发表评论:

    大名:
    密码:
    主页:
    标题:
Powered by Oblog.