91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深度剖析Nios II 處理器的硬件抽象層

友晶FPGA ? 來源:友晶FPGA ? 2025-10-31 15:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

硬件抽象層(Hardware Abstraction Layer, HAL)是一個輕量級嵌入式運(yùn)行時環(huán)境,它為用戶應(yīng)用程序和底層硬件提供了一個簡單的設(shè)備驅(qū)動程序接口。HAL應(yīng)用程序接口(API)與ANSI C標(biāo)準(zhǔn)庫綜合在一起,可使用類似C語言的庫函數(shù)來訪問硬件設(shè)備或文件,如printf()、fopen()、fwrite()等函數(shù)。軟件工程師可非常方便的使用這些函數(shù)來與底層硬件通信,而無須關(guān)心底層硬件實現(xiàn)細(xì)節(jié)。

HAL可以看作是一個支持應(yīng)用程序開發(fā)的軟件平臺,它提供API函數(shù)接口,屏蔽硬件訪問細(xì)節(jié),雖然占用了一些額外的資源,但是大大增加了應(yīng)用程序的開發(fā)速度和可移植性。用戶只要利用HAL提供的各種函數(shù)就可以編寫應(yīng)用程序。

HAL作為Nios II處理器系統(tǒng)的設(shè)備驅(qū)動程序包,為系統(tǒng)中的外圍設(shè)備提供了一致的接口。Nios II SBT從SOPC信息文件(.sopcinfo)中提取系統(tǒng)信息,生成一個針對于該硬件配置的定制的HAL板級支持包(BSP)。當(dāng)硬件配置信息發(fā)生改變時,HAL設(shè)備驅(qū)動配置也會自動隨之更改,從而避免了由于底層硬件的變化而產(chǎn)生的編程錯誤。Nios II SBT為用戶自動創(chuàng)建和管理HAL設(shè)備驅(qū)動程序,用戶不用創(chuàng)建或拷貝HAL文件,也不用編輯HAL中的任何源代碼。

HAL為用戶提供以下支持:

集成了newlib ANSI C標(biāo)準(zhǔn)庫,允許調(diào)用類似C標(biāo)準(zhǔn)庫函數(shù);

提供訪問Nios II系統(tǒng)中每個設(shè)備的驅(qū)動程序;

提供HAL API,用于標(biāo)準(zhǔn)的函數(shù)接口如設(shè)備訪問、中斷處理以及ALARM等;

提供系統(tǒng)初始化函數(shù),為main()函數(shù)和C庫函數(shù)建立運(yùn)行時環(huán)境;

提供設(shè)備初始化函數(shù),在main()函數(shù)之前,分配設(shè)備空間并初始化所有的外圍設(shè)備;

Nios II HAL的結(jié)構(gòu)如圖下所示。

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

Nios II HAL的結(jié)構(gòu)

由上圖可以看出,用戶應(yīng)用程序在硬件抽象層和C標(biāo)準(zhǔn)庫函數(shù)上,這說明用戶應(yīng)用程序要訪問硬件設(shè)備至少有4中方法:

調(diào)用C標(biāo)準(zhǔn)庫函數(shù),如printf()和fwrite();

調(diào)用硬件抽象層的API函數(shù),如write();

調(diào)用設(shè)備驅(qū)動程序,如alt_avalon_uart_write();

直接訪問設(shè)備寄存器,如IOWR_ALTERA_AVALON_UART_RXDATA(base, data);

HAL I/O操作宏

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

前兩種方法的抽象度最高,可移植性最好,對用戶來說最容易實現(xiàn),但是需要最多的額外開銷;第三種方法抽象度較低,有一定的移植性,額外開銷較少,但還需要用戶考慮對設(shè)備寫數(shù)據(jù)前的其他硬件操作;最后一種方法完全是對硬件的直接訪問,需要用戶關(guān)注設(shè)備的每個硬件細(xì)節(jié),無額外開銷。

對于I/O外設(shè),HAL提供了一些宏定義來訪問其中的寄存器,這些宏在/components/altera_nios2/HAL/inc/io.h中定義,以下是這些宏定義的詳細(xì)介紹。當(dāng)用戶編寫應(yīng)用程序時,只需要調(diào)用這些宏就可以訪問到I/O外設(shè)中的寄存器,而無需關(guān)心底層硬件的詳細(xì)信息。

另外,在HAL中還定義了常用的數(shù)據(jù)類型,這些定義在alt_type.h文件中,下面是alt_types.h文件內(nèi)容的片段,從中我們可以看出,所有的數(shù)據(jù)類型都是以alt_開頭,若是無符號類型,那么數(shù)據(jù)類型中含有“u”表示unsigned的意思,最后會用數(shù)據(jù)的位數(shù)來結(jié)尾,如8、16、32、64。使用這些HAL數(shù)據(jù)類型可以很方便的看出變量的數(shù)據(jù)類型,比如,alt_u8 key_data 就表示key_data是一個8位的無符號數(shù)據(jù)。

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

使用HAL開發(fā)應(yīng)用程序

基于HAL的軟件工程的創(chuàng)建和管理與Nios II SBT緊密相關(guān),下圖為Nios II SBT工程結(jié)構(gòu)。

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

Nios II SBT工程結(jié)構(gòu)

從上圖可以看出,一個Nios II SBT工程包括2個工程:用戶應(yīng)用程序工程和HAL BSP工程。用戶應(yīng)用程序工程包含所有的用戶程序代碼文件,最終的可執(zhí)行映像由此工程生成。HAL BSP工程中包含所有與硬件處理器系統(tǒng)相關(guān)的接口信息。

在第一次編譯Nios II SBT過程中,編譯工具會根據(jù)硬件系統(tǒng)信息生成一個描述硬件信息的system.h文件,如代碼1.1所示。該文件是HAL的基礎(chǔ),它提供了關(guān)于Nios II系統(tǒng)硬件的描述,是硬件和軟件之間的橋梁。對應(yīng)用程序開發(fā)來說,并不是system.h中的所有信息都有用,因此并不一定要在應(yīng)用程序的C源代碼文件中包含system.h。

由代碼1.1可知,system.h文件給出了每個外設(shè)的詳細(xì)信息,包括以下幾部分:

外設(shè)的硬件配置;

外設(shè)的基地址;

中斷優(yōu)先級(如果外設(shè)有中斷);

外設(shè)的符號名稱;

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

代碼1.1 system.h文件示例

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    20253

    瀏覽量

    252237
  • 嵌入式
    +關(guān)注

    關(guān)注

    5198

    文章

    20445

    瀏覽量

    334008
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    9520

    瀏覽量

    157021
  • 硬件
    +關(guān)注

    關(guān)注

    11

    文章

    3595

    瀏覽量

    69011

原文標(biāo)題:Nios II 處理器的硬件抽象層(HAL)中文解說

文章出處:【微信號:友晶FPGA,微信公眾號:友晶FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    基于NIOS II嵌入式處理器的LCD控制實現(xiàn)

    本文介紹了一種基于NIOS II軟核處理器實現(xiàn)對LCD-LQ057Q3DC02控制的新方法。在設(shè)計中利用FPGA的Altera的SOPC Builder定制NIOS
    發(fā)表于 11-09 11:30 ?2350次閱讀
    基于<b class='flag-5'>NIOS</b> <b class='flag-5'>II</b>嵌入式<b class='flag-5'>處理器</b>的LCD控制實現(xiàn)

    基于Nios II和uClinux實現(xiàn)遠(yuǎn)程測控服務(wù)的設(shè)計

    系統(tǒng)的硬件結(jié)構(gòu)如圖2所示。硬件系統(tǒng)的核心是構(gòu)建于Ahera Cyclone FPGA中的Nios II嵌入式軟核處理器。
    發(fā)表于 06-28 14:49 ?1154次閱讀
    基于<b class='flag-5'>Nios</b> <b class='flag-5'>II</b>和uClinux實現(xiàn)遠(yuǎn)程測控服務(wù)<b class='flag-5'>器</b>的設(shè)計

    基于NIOS II 軟核處理器的SOPC 技術(shù)

    基于NIOS II 軟核處理器的SOPC 技術(shù)摘要:介紹了基于NIOS II 軟核處理器的SOP
    發(fā)表于 10-06 15:05

    Cyclone II FPGA和Nios II嵌入式處理器的優(yōu)勢

    在其業(yè)內(nèi)領(lǐng)先的低成本Cyclone TM FPGA系列和Nios軟核嵌入式處理器成功的基礎(chǔ)上,Altera現(xiàn)在推出了第二代產(chǎn)品系列。Cyclone II器件為用戶提供更高的邏輯密度和新增硬件
    發(fā)表于 07-18 07:43

    基于Nios II處理器的USB接口設(shè)計

    本文以Nios II 嵌入式軟處理器為核心,利用USB 控制芯片CH372,設(shè)計了基于Nios II 嵌入式軟
    發(fā)表于 08-28 11:34 ?33次下載

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

    Nios II 嵌入式處理器 7.1 的新特性
    發(fā)表于 08-04 14:40 ?4次下載

    NIOS II的特性及開發(fā)設(shè)計流程

    NIOS II的特性及開發(fā)設(shè)計流程 NIOS的主要特點NIOS II是一個用戶可配置的通用RISC嵌入式
    發(fā)表于 02-08 14:47 ?2141次閱讀

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

      Nios II系列軟核處理器是Altera的第二代FPGA嵌入式處理器,其性能超過200DMIPS,在Altera FPGA中實現(xiàn)僅需35美分。Altera的Stratix 、St
    發(fā)表于 11-30 16:33 ?7873次閱讀
    <b class='flag-5'>Nios</b> <b class='flag-5'>II</b><b class='flag-5'>處理器</b>-世界上最通用的<b class='flag-5'>處理器</b>

    Nios II處理器內(nèi)核詳解

    電子發(fā)燒友網(wǎng)核心提示 :與其他軟核處理器相比,世界上越來越多的設(shè)計人員使用了Nios II嵌入式處理器,該處理器一直是FPGA和HardCo
    發(fā)表于 10-17 13:50 ?8313次閱讀

    Nios II 系列處理器配置選項

    Nios II 系列處理器配置選項:This chapter describes the Nios II Processor paramet
    發(fā)表于 10-17 14:08 ?17次下載

    怎樣使用Nios II處理器來構(gòu)建多處理器系統(tǒng)

    怎樣使用Nios II處理器來構(gòu)建多處理器系統(tǒng) Chapter 1. Creating Multiprocessor Nios
    發(fā)表于 10-17 14:51 ?19次下載

    使用 Nios II 處理器進(jìn)行設(shè)計(1)

    使用 Nios II 處理器進(jìn)行設(shè)計”第一部分
    的頭像 發(fā)表于 06-20 00:17 ?4721次閱讀
    使用 <b class='flag-5'>Nios</b> <b class='flag-5'>II</b> <b class='flag-5'>處理器</b>進(jìn)行設(shè)計(1)

    啟動 Nios II 處理器的方法

    Nios II 處理器的各種啟動方法
    的頭像 發(fā)表于 06-20 01:22 ?4475次閱讀
    啟動 <b class='flag-5'>Nios</b> <b class='flag-5'>II</b> <b class='flag-5'>處理器</b>的方法

    FPGA視頻教程之如何使用NIOS II處理器

    本文檔的主要內(nèi)容詳細(xì)介紹的是FPGA視頻教程之如何使用NIOS II處理器詳細(xì)資料免費(fèi)下載。
    發(fā)表于 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嵌入式處理器硬件開發(fā)

    本章將介紹Nios 處理器硬件開發(fā)環(huán)境和硬件開發(fā)的整個流程。一個簡單Nios 開發(fā)系統(tǒng)包括Nios
    發(fā)表于 01-15 15:57 ?5次下載
    FPGA <b class='flag-5'>Nios</b>嵌入式<b class='flag-5'>處理器</b>的<b class='flag-5'>硬件</b>開發(fā)