基于NiosⅡ的SD卡驅(qū)動(dòng)程序開發(fā)
HAL系統(tǒng)庫為Nios軟件設(shè)計(jì)人員提供了應(yīng)用程序與底層硬件交互的設(shè)備驅(qū)動(dòng)接口,大大簡化了應(yīng)用程序的開發(fā)。同時(shí),HAL系統(tǒng)庫還為應(yīng)用程序與底層硬件驅(qū)動(dòng)劃分了一條很清晰的分界線,從而大大提高了應(yīng)用程序的復(fù)用性,使得應(yīng)用程序不受底層硬件變化的影響。基于HAL的系統(tǒng)層次結(jié)構(gòu)如圖6所示。本文引用地址:http://www.ex-cimer.com/article/151709.htm
SD卡設(shè)備屬于字符模型設(shè)備,其數(shù)據(jù)結(jié)構(gòu)負(fù)責(zé)收集一系列用于響應(yīng)HAL文件系統(tǒng)訪問操作的函數(shù)指針,函數(shù)實(shí)體由設(shè)備驅(qū)動(dòng)定義。SD卡設(shè)備的數(shù)據(jù)結(jié)構(gòu)如下:
其中,dev指向當(dāng)前字符模式設(shè)備的alt_dev數(shù)據(jù)結(jié)構(gòu)實(shí)例;fd_flags代表傳遞給open()函數(shù)的操作選項(xiàng)參數(shù);priv為當(dāng)前HAL系統(tǒng)代碼并未使用該變量。llist代表設(shè)備的節(jié)點(diǎn),具有previous和next兩個(gè)域,分別指向之前和之后注冊(cè)的設(shè)備,這樣系統(tǒng)中的所有已注冊(cè)設(shè)備就形成一個(gè)設(shè)備鏈,供HAL操作系統(tǒng)內(nèi)部使用。name即system.h中定義的設(shè)備名,表示HAL文件系統(tǒng)的一個(gè)裝載點(diǎn)。
其設(shè)備的數(shù)據(jù)結(jié)構(gòu)定義為:
評(píng)論