




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
嵌入式技術(shù)概述_NIOSII處理器系統(tǒng)的軟件設計流程和方法(二)硬件抽象層HAL概述
1)什么是HAL,基于HAL進行系統(tǒng)軟件設計的優(yōu)點是什么?
硬件抽象層HAL是輕量級的運行環(huán)境,提供了設備驅(qū)動程序接口,使用設備驅(qū)動程序接口訪問底層硬件。 優(yōu)點: (1)HAL將應用程序與驅(qū)動程序區(qū)別開來,使底層硬件的改變對應用程 序沒有影響,保證了應用程序代碼的可重用性; (2)、驅(qū)動程序開發(fā)是嵌入式系統(tǒng)軟件開發(fā)的主要組成部分, 對于應用程序開發(fā)人員,HAL提供了一套初始化和訪問各類設備的 函數(shù),統(tǒng)一的API對系統(tǒng)硬件是透明的,開發(fā)人員不必關(guān)心底層硬 件的差異; 對于驅(qū)動程序開發(fā)人員,HAL提供了一套必要的驅(qū)動函數(shù),驅(qū)動程 序調(diào)用驅(qū)動函數(shù)來訪問底層硬件,加快了驅(qū)動程序的開發(fā)。12/13/20232硬件抽象層HAL概述
2)基于HAL開發(fā)NIOSII軟件的特殊優(yōu)點是什么?
NIOSII處理器系統(tǒng)的HAL基于一個特定的SOPCBuilder系統(tǒng)創(chuàng)建,SOPCBuilder與NiosIIEDS之間的緊密集成保證了:
(1)用戶在創(chuàng)建應用工程時,NiosIIIDE也同時創(chuàng)建了HAL系統(tǒng)庫,用 戶不必創(chuàng)建、復制、編輯HAL系統(tǒng)庫,NiosIIIDE自動為用戶管理 和維護HAL庫; (2)若SOPCBuilder的硬件系統(tǒng)發(fā)生了改動,NiosIIIDE會自動地對 HAL系統(tǒng)庫進行更新,保證了底層硬件與應用程序的一致性。12/13/20233硬件抽象層HAL概述
3)NIOSII處理器系統(tǒng)的HAL的體系結(jié)構(gòu)
HAL提供的服務:1)提供newlibANSIC標準庫2)提供設備驅(qū)動程序3)提供統(tǒng)一的HAL應用程序接口API4)提供系統(tǒng)初始化:main()函數(shù)執(zhí)行之前,執(zhí)行處理器和運行環(huán)境的初始化任務5)提供設備初始化:main()函數(shù)執(zhí)行之前,例化和初始化系統(tǒng)中的各個設備12/13/20234硬件抽象層HAL概述
3)NIOSII處理器系統(tǒng)的HAL的體系結(jié)構(gòu) HAL系統(tǒng)庫對設備提供的兩個服務層次: 通用設備模型和驅(qū)動程序、頭文件和訪問函數(shù) (1)通用設備模型和驅(qū)動程序:通用設備模型是HAL強大功能的核心,用戶可采用統(tǒng)一的API編寫程序訪問提供通用設備模型的設備;HAL為大多數(shù)NIOSII系統(tǒng)外設提供驅(qū)動程序,使用戶可以通過HALAPI訪問硬件 字符型設備:UART核、JTAGUART核、LCD16207顯示控制器 定時器設備:TIMER核 文件子系統(tǒng):基于ALTERA主機的文件系統(tǒng)、ALTERA壓縮只讀文件子系統(tǒng) 以太網(wǎng)設備:Ethernet核、LAN91C111EthernetMAC/PHY控制器 DMA設備:DMA控制器核、Scatter-gatherDMA控制器核 FLASH存儲設備:CFIFLASH接口、EPCS串口配置控制器12/13/20235硬件抽象層HAL概述
3)NIOSII處理器系統(tǒng)的HAL的體系結(jié)構(gòu) HAL系統(tǒng)庫對設備提供的三個服務層次: 通用設備模型、驅(qū)動程序、頭文件和訪問函數(shù) (2)頭文件和訪問函數(shù):對于部分NIOSII系統(tǒng)外設和一些自定制外設,HAL只提供頭文件和訪問函數(shù)。 NIOSII系統(tǒng)的通用IO核:PIO核 用戶自定制的外設 此外,對于具有特殊硬件特性的外設,不能使用通用API,HAL提供了UNIX類型的ioctl()函數(shù)12/13/20236基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
1)NIOSIIIDE工程結(jié)構(gòu)HAL系統(tǒng)庫工程包含了所有的用戶程序與系統(tǒng)硬件接口的必要信息HAL系統(tǒng)庫工程緊密依賴于SOPCBuiler系統(tǒng),保證了HAL與目標硬件的同步12/13/20237基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
2)系統(tǒng)描述文件system.h
system.h文件提供了完整的NIOSII系統(tǒng)硬件的描述,包括:
外設的硬件配置 外設的基地址 外設的中斷請求優(yōu)先級 外設的符號名12/13/20238基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
2)系統(tǒng)描述文件system.h12/13/20239基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
3)數(shù)據(jù)寬度和HAL類型定義 對于嵌入式處理器,準確的數(shù)據(jù)寬度和精度定義是非常重要的,而標準C的數(shù)據(jù)類型寬度取決于編譯器的約定。頭文件alt_types.h定義了HAL類型12/13/202310基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
4)文件系統(tǒng) HAL提供支持UNIX風格的文件訪問機制,用戶能夠在基于HAL的文件系統(tǒng)中訪問文件: (1)可以使用newlibC庫中的文件I/O函數(shù) (2)可以使用HAL系統(tǒng)庫提供的UNIX風格的文件I/O函數(shù)
12/13/202311基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
4)文件系統(tǒng) HAL提供支持UNIX風格的文件訪問機制,用戶能夠在基于HAL的文件系統(tǒng)中訪問文件: (3)HAL將一個子文件系統(tǒng)注冊為HAL文件系統(tǒng)的一個掛載點(mount point); (4)HAL文件系統(tǒng)沒有當前目錄的概念,訪問文件時必須使用絕對路 徑; (5)HAL文件系統(tǒng)允許通過UNIX風格的路徑名管理字符型設備,HAL將字 符型設備注冊為HAL文件系統(tǒng)的節(jié)點。
12/13/202312基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
4)文件系統(tǒng)
從只讀zip文件子系統(tǒng) ozipfs讀取字符:
使用newlibC庫中的文件I/O函數(shù)12/13/202313基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
5)對字符型設備的訪問 (1)使用標準輸入、標準輸出和標準錯誤通道訪問字符型設備 用戶可以通過在系統(tǒng)庫屬性設置中將標準輸入、標準輸出和標準錯誤通道與某一特定的字符型設備關(guān)聯(lián)起來
發(fā)送字符到標準輸出stdout相關(guān)聯(lián)的設備12/13/202314基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
5)對字符型設備的訪問 (2)使用通用的訪問文件的方式訪問字符型設備
寫字符到UART112/13/202315基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
6)定時器設備的使用
HALAPI提供了兩種定時器設備的驅(qū)動程序:
系統(tǒng)時鐘驅(qū)動程序:支持報警功能,用于調(diào)度程序 時間戳驅(qū)動程序:支持高精度時間測量 使用定時器設備,系統(tǒng)硬件中必須包含定時器外設,某個定時器外設不能同時作為系統(tǒng)時鐘和時間戳12/13/202316基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
6)定時器設備的使用 (1)系統(tǒng)時鐘驅(qū)動程序
用戶通過在NIOSIIIDE的系統(tǒng)庫屬性中設置來指定系統(tǒng)時鐘的定時器外設。 針對系統(tǒng)時鐘,HAL提供的標準UNIX函數(shù)包括: gettimeofday():獲得當前時間 settimeofday():設置當前時間 times():獲得已經(jīng)發(fā)生的ticks數(shù)目 alt_nticks():獲得系統(tǒng)時鐘的當前值(系統(tǒng)復位后經(jīng)歷的時間) alt_ticks_per_second():獲得系統(tǒng)時鐘的速率
12/13/202317基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
6)定時器設備的使用 (1)系統(tǒng)時鐘驅(qū)動程序
基于系統(tǒng)時鐘的報警注冊:在指定的時刻執(zhí)行某個函數(shù) 可以通過調(diào)用alt_alarm_stop()取消一個報警。
12/13/202318基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
6)定時器設備的使用 (2)時間戳驅(qū)動程序 時間戳測量比系統(tǒng)時鐘精度高的時間間隔,HAL只支持一個時間戳驅(qū)動程序,用戶可以在NIOSIIIDE的系統(tǒng)庫屬性中指定時間戳設備的定時器外設。 時間戳驅(qū)動程序相關(guān)的函數(shù)包括: alt_timest_start():啟動時間戳計數(shù)器 alt_timest():返回時間戳計數(shù)器的當前值 alt_timest_start():alt_timest()之后的調(diào)用,復位計數(shù)器 為0 alt_timest_freq():獲得時間戳計數(shù)器的速率(一般為系統(tǒng)主頻)12/13/202319基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
7)FLASH設備的使用 HAL對FLASH設備的支持包括: (1)提供寫FLASH的HALAPI:FLASH存儲器的存儲協(xié)議一般比較特殊 (2)提供讀FLASH的HALAPI:大多數(shù)FLASH的讀操作可將FLASH看成簡單 的存儲器,無需調(diào)用HALAPI,但訪問具有特殊讀數(shù)據(jù)協(xié)議的FLASH 時(如EPCSFLASH),必須調(diào)用HALAPI。 HALAPI提供兩種層次的FLASH訪問:簡單的FLASH訪問和精細的FLASH訪問12/13/202320基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
7)FLASH設備的使用 簡單FLASH訪問:函數(shù)寫緩沖數(shù)據(jù)到FLASH和從FLASH讀數(shù)據(jù)都是以分區(qū) (block)的層次進行的,寫FLASH時,若緩沖器比一個完整的 分區(qū)小,函數(shù)會擦除整個分區(qū)。
Alt_flash_open_dev():打開FLASH設備,獲得FLASH設備的文件句柄 alt_write_flash():寫數(shù)據(jù)到FLASH設備(會先擦除一個分區(qū),導致不期 望的數(shù)據(jù)擦除)
12/13/202321基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
7)FLASH設備的使用 簡單FLASH訪問:函數(shù)寫緩沖數(shù)據(jù)到FLASH和從FLASH讀數(shù)據(jù)都是以分區(qū) (block)的層次進行的,寫FLASH時,若緩沖器比一個完整的 分區(qū)小,函數(shù)會擦除整個分區(qū)。
alt_read_flash():從FLASH設備讀數(shù)據(jù)
alt_flash_close_dev():關(guān)閉一個FLASH設備
12/13/202322基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
7)FLASH設備的使用 精細FLASH訪問:函數(shù)寫緩沖數(shù)據(jù)到FLASH和從FLASH讀數(shù)據(jù)都是以緩沖器的層 次進行的,寫FLASH時,若緩沖器比一個完整的分區(qū)小,函數(shù) 保留之前存在于FLASH中的新寫數(shù)據(jù)單元之上和之下的數(shù)據(jù)。 精細FLASH訪問是將寫FLASH過程自動化了:
從FLASH器件的本質(zhì)來說,用戶是不能清除一個分區(qū)的單獨地址的,用戶要改變一個分區(qū)內(nèi)特定位置的內(nèi)容而不改變分區(qū)內(nèi)其他位置的內(nèi)容,只能是先讀出分區(qū)的整個內(nèi)容到緩沖器中,在緩沖器中改變相應的內(nèi)容,將整個分區(qū)擦除,最后將整個緩沖器內(nèi)容寫到FLASH的整個分區(qū)中。12/13/202323基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
7)FLASH設備的使用 精細FLASH訪問的相關(guān)函數(shù): alt_get_flash_info():獲得擦除區(qū)域的數(shù)目、每個區(qū)域內(nèi)分區(qū)的數(shù) 目、每個分區(qū)的大小12/13/202324基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
7)FLASH設備的使用 精細FLASH訪問的相關(guān)函數(shù): alt_erase_flash():擦除FLASH的一個單獨分區(qū) alt_write_flash_block():寫FLASH的一個單獨分區(qū)12/13/202325基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
8)DMA設備的使用 在HALDMA設備模型中,DMA傳輸有兩種分類:發(fā)送或接收。 HAL提供兩個設備驅(qū)動來實現(xiàn)發(fā)送通道和接收通道:發(fā)送通道從數(shù)據(jù)源的緩沖器獲得數(shù)據(jù),發(fā)送數(shù)據(jù)到目的設備;接收通道接收數(shù)據(jù),并將數(shù)據(jù)存到目的緩沖器中。
12/13/202326基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
8)DMA設備的使用 (1)DMA發(fā)送通道 與DMA發(fā)送通道相關(guān)的HAL函數(shù)包括: alt_dma_txchan_open():獲得DMA發(fā)送句柄; alt_dma_txchan_send():發(fā)送一個發(fā)送請求;12/13/202327基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
8)DMA設備的使用 (1)DMA發(fā)送通道 與DMA發(fā)送通道相關(guān)的HAL函數(shù)包括:
alt_dma_txchan_space():返回當前還有多少個發(fā)送請求可以加入到發(fā) 送隊列中; alt_dma_txchan_ioctl():執(zhí)行發(fā)送設備中與設備相關(guān)的操作;12/13/202328基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
8)DMA設備的使用 (2)DMA接收通道 與DMA接收通道相關(guān)的HAL函數(shù)包括: alt_dma_rxchan_open():獲得DMA接收句柄; alt_dma_rxchan_prepare():發(fā)送一個接收請求;12/13/202329基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
8)DMA設備的使用 (2)DMA接收通道 與DMA接收通道相關(guān)的HAL函數(shù)包括: alt_dma_rxchan_depth():返回設備可允許的最大接收請求數(shù); alt_dma_txchan_ioctl():執(zhí)行接收設備中與設備相關(guān)的操作; (3)存儲器到存儲器的DMA傳輸 存儲器到存儲器的DMA傳輸同時包括DMA接收通道和DMA發(fā)送通道。12/13/202330基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
9)程序的入口點和啟動順序 程序的入口點有兩個:main()、alt_main()Main():一種系統(tǒng)托管的應用,在main()開始時,一個托管的應用運行 環(huán)境和系統(tǒng)服務均已準備好,HAL負責初始化系統(tǒng)。Alt_main():一種獨立的應用,用戶可以對系統(tǒng)初始化進行完全控制 12/13/202331基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
9)程序的入口點和啟動順序
main()作為入口點的系統(tǒng)啟動順序12/13/202332基于HAL的NIOSII系統(tǒng)應用程序開發(fā)
9)程序的入口點和啟動順序 main()作為入口點時HAL提供的默認的alt_main()的函數(shù)實現(xiàn)12/13/202333基于HAL的NIOSII系統(tǒng)的異常處理
1)NIOSII異常處理概述
NIOSII異常處理以經(jīng)典的RISC方式實現(xiàn):所有的異常類型都由一個位于異常地址(exceptionaddress)的異常處理程序處理,而沒有采用中斷向量表的方式。 異常類型:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZSA 277-2024 高速落絲上筒機器人
- 二零二五年度跨境電商股份轉(zhuǎn)讓及供應鏈整合協(xié)議
- 2025年度智能公寓退房協(xié)議書
- 二零二五年度白酒品牌區(qū)域總代理合作協(xié)議
- 二零二五年度醫(yī)院及學校化糞池專業(yè)清理服務合同
- 二零二五年度企業(yè)財務報表審計委托代理服務合同
- 2025年度車間租賃安全管理制度與執(zhí)行協(xié)議
- 二零二五年度無房產(chǎn)證房屋買賣雙方責任劃分協(xié)議
- 二零二五年度勞動合同法企業(yè)人力資源管理制度合同
- 二零二五年度知識產(chǎn)權(quán)侵權(quán)糾紛調(diào)解協(xié)議范本匯編
- 產(chǎn)教融合大學科技園建設項目實施方案
- 交通法律與交通事故處理培訓課程與法律解析
- 廣西版四年級下冊美術(shù)教案
- 《換熱器及換熱原理》課件
- 兒童權(quán)利公約演示文稿課件
- UPVC排水管技術(shù)標準
- MSA-測量系統(tǒng)分析模板
- 血透室公休座談水腫的護理
- 急診預檢分診專家共識課件
- 廣州市海珠區(qū)事業(yè)單位考試歷年真題
- 2023年山西省太原市迎澤區(qū)校園招考聘用教師筆試題庫含答案詳解
評論
0/150
提交評論