0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

深度剖析Nios II 处理器的硬件抽象层

友晶FPGA 来源:友晶FPGA 2025-10-31 15:25 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

硬件抽象层(Hardware Abstraction Layer, HAL)是一个轻量级嵌入式运行时环境,它为用户应用程序和底层硬件提供了一个简单的设备驱动程序接口。HAL应用程序接口(API)与ANSI C标准库综合在一起,可使用类似C语言的库函数来访问硬件设备或文件,如printf()、fopen()、fwrite()等函数。软件工程师可非常方便的使用这些函数来与底层硬件通信,而无须关心底层硬件实现细节。

HAL可以看作是一个支持应用程序开发的软件平台,它提供API函数接口,屏蔽硬件访问细节,虽然占用了一些额外的资源,但是大大增加了应用程序的开发速度和可移植性。用户只要利用HAL提供的各种函数就可以编写应用程序。

HAL作为Nios II处理器系统的设备驱动程序包,为系统中的外围设备提供了一致的接口。Nios II SBT从SOPC信息文件(.sopcinfo)中提取系统信息,生成一个针对于该硬件配置的定制的HAL板级支持包(BSP)。当硬件配置信息发生改变时,HAL设备驱动配置也会自动随之更改,从而避免了由于底层硬件的变化而产生的编程错误。Nios II SBT为用户自动创建和管理HAL设备驱动程序,用户不用创建或拷贝HAL文件,也不用编辑HAL中的任何源代码。

HAL为用户提供以下支持:

集成了newlib ANSI C标准库,允许调用类似C标准库函数;

提供访问Nios II系统中每个设备的驱动程序;

提供HAL API,用于标准的函数接口如设备访问、中断处理以及ALARM等;

提供系统初始化函数,为main()函数和C库函数建立运行时环境;

提供设备初始化函数,在main()函数之前,分配设备空间并初始化所有的外围设备;

Nios II HAL的结构如图下所示。

fbbcb54e-b3c5-11f0-8c8f-92fbcf53809c.png

Nios II HAL的结构

由上图可以看出,用户应用程序在硬件抽象层和C标准库函数上,这说明用户应用程序要访问硬件设备至少有4中方法:

调用C标准库函数,如printf()和fwrite();

调用硬件抽象层的API函数,如write();

调用设备驱动程序,如alt_avalon_uart_write();

直接访问设备寄存器,如IOWR_ALTERA_AVALON_UART_RXDATA(base, data);

HAL I/O操作宏

fc187e4c-b3c5-11f0-8c8f-92fbcf53809c.png

前两种方法的抽象度最高,可移植性最好,对用户来说最容易实现,但是需要最多的额外开销;第三种方法抽象度较低,有一定的移植性,额外开销较少,但还需要用户考虑对设备写数据前的其他硬件操作;最后一种方法完全是对硬件的直接访问,需要用户关注设备的每个硬件细节,无额外开销。

对于I/O外设,HAL提供了一些宏定义来访问其中的寄存器,这些宏在/components/altera_nios2/HAL/inc/io.h中定义,以下是这些宏定义的详细介绍。当用户编写应用程序时,只需要调用这些宏就可以访问到I/O外设中的寄存器,而无需关心底层硬件的详细信息。

另外,在HAL中还定义了常用的数据类型,这些定义在alt_type.h文件中,下面是alt_types.h文件内容的片段,从中我们可以看出,所有的数据类型都是以alt_开头,若是无符号类型,那么数据类型中含有“u”表示unsigned的意思,最后会用数据的位数来结尾,如8、16、32、64。使用这些HAL数据类型可以很方便的看出变量的数据类型,比如,alt_u8 key_data 就表示key_data是一个8位的无符号数据。

fc734250-b3c5-11f0-8c8f-92fbcf53809c.png

使用HAL开发应用程序

基于HAL的软件工程的创建和管理与Nios II SBT紧密相关,下图为Nios II SBT工程结构。

fccd3f3a-b3c5-11f0-8c8f-92fbcf53809c.png

Nios II SBT工程结构

从上图可以看出,一个Nios II SBT工程包括2个工程:用户应用程序工程和HAL BSP工程。用户应用程序工程包含所有的用户程序代码文件,最终的可执行映像由此工程生成。HAL BSP工程中包含所有与硬件处理器系统相关的接口信息。

在第一次编译Nios II SBT过程中,编译工具会根据硬件系统信息生成一个描述硬件信息的system.h文件,如代码1.1所示。该文件是HAL的基础,它提供了关于Nios II系统硬件的描述,是硬件和软件之间的桥梁。对应用程序开发来说,并不是system.h中的所有信息都有用,因此并不一定要在应用程序的C源代码文件中包含system.h。

由代码1.1可知,system.h文件给出了每个外设的详细信息,包括以下几部分:

外设的硬件配置;

外设的基地址;

中断优先级(如果外设有中断);

外设的符号名称;

fd26719a-b3c5-11f0-8c8f-92fbcf53809c.png

代码1.1 system.h文件示例

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    20378

    浏览量

    255606
  • 嵌入式
    +关注

    关注

    5212

    文章

    20763

    浏览量

    338759
  • 接口
    +关注

    关注

    33

    文章

    9635

    浏览量

    157801
  • 硬件
    +关注

    关注

    13

    文章

    3666

    浏览量

    69231

原文标题:Nios II 处理器的硬件抽象层(HAL)中文解说

文章出处:【微信号:友晶FPGA,微信公众号:友晶FPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于NIOS II嵌入式处理器的LCD控制实现

    本文介绍了一种基于NIOS II软核处理器实现对LCD-LQ057Q3DC02控制的新方法。在设计中利用FPGA的Altera的SOPC Builder定制NIOS
    发表于 11-09 11:30 2424次阅读
    基于<b class='flag-5'>NIOS</b> <b class='flag-5'>II</b>嵌入式<b class='flag-5'>处理器</b>的LCD控制实现

    基于Nios II和uClinux实现远程测控服务的设计

    系统的硬件结构如图2所示。硬件系统的核心是构建于Ahera Cyclone FPGA中的Nios II嵌入式软核处理器
    发表于 06-28 14:49 1246次阅读
    基于<b class='flag-5'>Nios</b> <b class='flag-5'>II</b>和uClinux实现远程测控服务<b class='flag-5'>器</b>的设计

    基于NIOS II 软核处理器的SOPC 技术

    基于NIOS II 软核处理器的SOPC 技术摘要:介绍了基于NIOS II 软核处理器的SOP
    发表于 10-06 15:05

    Cyclone II FPGA和Nios II嵌入式处理器的优势

    在其业内领先的低成本Cyclone TM FPGA系列和Nios软核嵌入式处理器成功的基础上,Altera现在推出了第二代产品系列。Cyclone II器件为用户提供更高的逻辑密度和新增硬件
    发表于 07-18 07:43

    基于Nios II处理器的USB接口设计

    本文以Nios II 嵌入式软处理器为核心,利用USB 控制芯片CH372,设计了基于Nios II 嵌入式软
    发表于 08-28 11:34 33次下载

    Nios II 嵌入式处理器 7.1 的新特性

    Nios II 嵌入式处理器 7.1 的新特性
    发表于 08-04 14:40 4次下载

    NIOS II的特性及开发设计流程

    NIOS II的特性及开发设计流程 NIOS的主要特点NIOS II是一个用户可配置的通用RISC嵌入式
    发表于 02-08 14:47 2199次阅读

    Nios II处理器-世界上最通用的处理器

      Nios II系列软核处理器是Altera的第二代FPGA嵌入式处理器,其性能超过200DMIPS,在Altera FPGA中实现仅需35美分。Altera的Stratix 、St
    发表于 11-30 16:33 8122次阅读
    <b class='flag-5'>Nios</b> <b class='flag-5'>II</b><b class='flag-5'>处理器</b>-世界上最通用的<b class='flag-5'>处理器</b>

    Nios II处理器内核详解

    电子发烧友网核心提示 :与其他软核处理器相比,世界上越来越多的设计人员使用了Nios II嵌入式处理器,该处理器一直是FPGA和HardCo
    发表于 10-17 13:50 8606次阅读

    Nios II 系列处理器配置选项

    Nios II 系列处理器配置选项:This chapter describes the Nios II Processor paramet
    发表于 10-17 14:08 17次下载

    怎样使用Nios II处理器来构建多处理器系统

    怎样使用Nios II处理器来构建多处理器系统 Chapter 1. Creating Multiprocessor Nios
    发表于 10-17 14:51 19次下载

    使用 Nios II 处理器进行设计(1)

    使用 Nios II 处理器进行设计”第一部分
    的头像 发表于 06-20 00:17 4875次阅读
    使用 <b class='flag-5'>Nios</b> <b class='flag-5'>II</b> <b class='flag-5'>处理器</b>进行设计(1)

    启动 Nios II 处理器的方法

    Nios II 处理器的各种启动方法
    的头像 发表于 06-20 01:22 4654次阅读
    启动 <b class='flag-5'>Nios</b> <b class='flag-5'>II</b> <b class='flag-5'>处理器</b>的方法

    FPGA视频教程之如何使用NIOS II处理器

    本文档的主要内容详细介绍的是FPGA视频教程之如何使用NIOS II处理器详细资料免费下载。
    发表于 03-20 14:35 6次下载
    FPGA视频教程之如何使用<b class='flag-5'>NIOS</b> <b class='flag-5'>II</b><b class='flag-5'>处理器</b>

    FPGA Nios嵌入式处理器硬件开发

    本章将介绍Nios 处理器硬件开发环境和硬件开发的整个流程。一个简单Nios 开发系统包括Nios
    发表于 01-15 15:57 5次下载
    FPGA <b class='flag-5'>Nios</b>嵌入式<b class='flag-5'>处理器</b>的<b class='flag-5'>硬件</b>开发