版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
6.1.3HDF驅(qū)動(dòng)開(kāi)發(fā)步驟通過(guò)本節(jié)學(xué)習(xí),您可以:了解HDF驅(qū)動(dòng)開(kāi)發(fā)步驟HDF驅(qū)動(dòng)開(kāi)發(fā)步驟HDF框架的驅(qū)動(dòng)開(kāi)發(fā)的組成部分:驅(qū)動(dòng)實(shí)現(xiàn)、驅(qū)動(dòng)編譯腳本編寫(xiě)和驅(qū)動(dòng)配置。1.驅(qū)動(dòng)實(shí)現(xiàn):驅(qū)動(dòng)實(shí)現(xiàn)包含驅(qū)動(dòng)業(yè)務(wù)代碼實(shí)現(xiàn)和驅(qū)動(dòng)入口注冊(cè),具體寫(xiě)法如下:(1)驅(qū)動(dòng)業(yè)務(wù)代碼模板
#include"hdf_device_desc.h"http://HDF框架對(duì)驅(qū)動(dòng)開(kāi)發(fā)相關(guān)能力接口的頭文件
#include"hdf_log.h"http://HDF框架提供的日志接口頭文件
#defineHDF_LOG_TAGtest_driver//打印日志所包含的標(biāo)簽,如果不定義則用默認(rèn)定義的HDF_TAG標(biāo)簽。
//將驅(qū)動(dòng)對(duì)外提供的服務(wù)能力接口綁定到HDF框架。
int32_tHdfTestDriverBind(structHdfDeviceObject*deviceObject){
HDF_LOGD("Testdriverbindsuccess");
returnHDF_SUCCESS;
}
//驅(qū)動(dòng)自身業(yè)務(wù)初始化的接口
int32_tHdfTestDriverInit(structHdfDeviceObject*deviceObject){
HDF_LOGD("TestdriverInitsuccess");
returnHDF_SUCCESS;
}
//驅(qū)動(dòng)資源釋放的接口
voidHdfTestDriverRelease(structHdfDeviceObject*deviceObject){
HDF_LOGD("Testdriverreleasesuccess");
return;
}HDF驅(qū)動(dòng)開(kāi)發(fā)步驟(2)驅(qū)動(dòng)入口注冊(cè)到HDF框架
structHdfDriverEntryg_testDriverEntry={
.moduleVersion=1,
.moduleName="test_driver",
.Bind=HdfTestDriverBind,
.Init=HdfTestDriverInit,
.Release=HdfTestDriverRelease,
};
//調(diào)用HDF_INIT將驅(qū)動(dòng)入口注冊(cè)到HDF框架中。在加載驅(qū)動(dòng)時(shí)HDF框架會(huì)先調(diào)用Bind函數(shù),再調(diào)用Init函數(shù)加載該驅(qū)動(dòng);當(dāng)Init調(diào)用異常時(shí),HDF框架會(huì)調(diào)用Release釋放驅(qū)動(dòng)資源并退出。
HDF_INIT(g_testDriverEntry);驅(qū)動(dòng)注冊(cè),就是實(shí)例化驅(qū)動(dòng)入口,驅(qū)動(dòng)入口必須為HdfDriverEntry(在hdf_device_desc.h中定義)類(lèi)型的全局變量,且moduleName要和device_info.hcs中保持一致。HDF框架會(huì)將所有加載的驅(qū)動(dòng)的HdfDriverEntry對(duì)象首地址匯總,形成一個(gè)類(lèi)似數(shù)組的段地址空間,方便上層調(diào)用。HDF驅(qū)動(dòng)開(kāi)發(fā)步驟2.驅(qū)動(dòng)編譯腳本編寫(xiě)添加模塊BUILD.gn把新增模塊的BUILD.gn所在的目錄添加到上一級(jí)BUILD.gn文件中
import("http://drivers/adapter/khdf/liteos/hdf.gni")
hdf_driver("hdf_led"){
sources=[
"led.c",#此處為點(diǎn)燈實(shí)驗(yàn),根據(jù)實(shí)驗(yàn)進(jìn)行修改
]
include_dirs=[
"http://device/st/drivers/module_driver/Module_Common/inc/",
]}
group("drivers"){
deps=[
"led",#新增模塊BUILD.gn的名稱(chēng),根據(jù)實(shí)驗(yàn)進(jìn)行修改
]
}HDF驅(qū)動(dòng)開(kāi)發(fā)步驟3.驅(qū)動(dòng)配置驅(qū)動(dòng)配置包含兩部分:HDF框架定義的驅(qū)動(dòng)設(shè)備描述和驅(qū)動(dòng)的私有配置信息。(1)驅(qū)動(dòng)設(shè)備描述HDF框架加載驅(qū)動(dòng)所需要的信息來(lái)源于HDF框架定義的驅(qū)動(dòng)設(shè)備描述,因此基于HDF框架開(kāi)發(fā)的驅(qū)動(dòng)必須要在HDF框架定義的device_info.hcs配置文件中添加對(duì)應(yīng)的設(shè)備描述。
root{
device_info{
match_attr="hdf_manager";HDF驅(qū)動(dòng)開(kāi)發(fā)步驟
templatehost{//host模板,繼承該模板的節(jié)點(diǎn)(如下test_host)如果使用模板中的默認(rèn)值,則節(jié)點(diǎn)字段可以缺省。
hostName="";
priority=100;
templatedevice{
templatedeviceNode{
policy=0;
priority=100;
preload=0;
permission=0664;
moduleName="";
serviceName="";
deviceMatchAttr="";
}
}
}HDF驅(qū)動(dòng)開(kāi)發(fā)步驟
platform::host{
hostName="platform_host";//host名稱(chēng),host節(jié)點(diǎn)是用來(lái)存放某一類(lèi)驅(qū)動(dòng)的容器。
priority=50;//host啟動(dòng)優(yōu)先級(jí)(0-200),值越大優(yōu)先級(jí)越低,建議默認(rèn)配100,優(yōu)先級(jí)相同則不保證host的加載順序。
device_led::device{//led設(shè)備節(jié)點(diǎn)
device0::deviceNode{//led驅(qū)動(dòng)的DeviceNode節(jié)點(diǎn)
policy=2;//policy字段是驅(qū)動(dòng)服務(wù)發(fā)布的策略
priority=200;//驅(qū)動(dòng)啟動(dòng)優(yōu)先級(jí)(0-200),值越大優(yōu)先級(jí)越低,建議默認(rèn)配100,優(yōu)先級(jí)相同則不保證device的加載順序
preload=0;//驅(qū)動(dòng)按需加載字段
permission=0777;//驅(qū)動(dòng)創(chuàng)建設(shè)備節(jié)點(diǎn)權(quán)限
moduleName="HDF_LED";//驅(qū)動(dòng)名稱(chēng),該字段的值必須和驅(qū)動(dòng)入口結(jié)構(gòu)的moduleName值一致
serviceName="hdf_led";//驅(qū)動(dòng)對(duì)外發(fā)布服務(wù)的名稱(chēng),必須唯一
deviceMatchAttr="st_stm32mp157_led";//驅(qū)動(dòng)私有數(shù)據(jù)匹配的關(guān)鍵字,必須和驅(qū)動(dòng)私有數(shù)據(jù)配置表中的match_attr值相等
}
}
}
}}HDF驅(qū)動(dòng)開(kāi)發(fā)步驟(2)驅(qū)動(dòng)私有配置信息如果驅(qū)動(dòng)有私有配置,則可以添加一個(gè)驅(qū)動(dòng)的配置文件,用來(lái)填寫(xiě)一些驅(qū)動(dòng)的默認(rèn)配置信息。HDF框架在加載驅(qū)動(dòng)的時(shí)候,會(huì)將對(duì)應(yīng)的配置信息獲取并保存在HdfDeviceObject中的property里面,通過(guò)Bind和Init傳遞給驅(qū)動(dòng)。驅(qū)動(dòng)的配置信息示例如下:配置信息定義之后,需要將該配置文件添加到板級(jí)配置入口文件hdf.hcs,示例如下:
root{
LedDriverConfig{
led_gpio
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版白酒銷(xiāo)售顧問(wèn)銷(xiāo)售數(shù)據(jù)分析合同3篇
- 2025年度個(gè)人自用房產(chǎn)交易合同范本4篇
- 二零二五版建筑公司員工勞動(dòng)合同范本3篇
- 一個(gè)簡(jiǎn)短的自我介紹四篇
- 2024年中級(jí)經(jīng)濟(jì)師考試題庫(kù)含答案(b卷)
- 擋墻及護(hù)坡施工方案
- 訓(xùn)練音樂(lè)節(jié)奏課程設(shè)計(jì)
- 2025年度退休員工專(zhuān)業(yè)培訓(xùn)與指導(dǎo)合同3篇
- 輸電線路防雷施工方案
- 二零二五版合伙購(gòu)買(mǎi)二手房裝修及改造協(xié)議3篇
- 中小銀行上云趨勢(shì)研究分析報(bào)告
- 機(jī)電安裝工程安全培訓(xùn)
- 洗浴部前臺(tái)收銀員崗位職責(zé)
- 2024年輔警考試公基常識(shí)300題(附解析)
- GB/T 43650-2024野生動(dòng)物及其制品DNA物種鑒定技術(shù)規(guī)程
- 暴發(fā)性心肌炎查房
- 工程質(zhì)保金返還審批單
- 【可行性報(bào)告】2023年電動(dòng)自行車(chē)項(xiàng)目可行性研究分析報(bào)告
- 五月天歌詞全集
- 商品退換貨申請(qǐng)表模板
- 實(shí)習(xí)單位鑒定表(模板)
評(píng)論
0/150
提交評(píng)論