在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

OpenHarmony驅(qū)動(dòng)框架解讀

電子發(fā)燒友開源社區(qū) ? 來源:OpenAtom OpenHarmony ? 作者:yuanbo ? 2021-11-06 09:23 ? 次閱讀

IoT時(shí)代下,終端設(shè)備差異較大、形態(tài)各異、尺寸各異、交互方式各異,解決設(shè)備適配問題無疑是實(shí)現(xiàn)萬物互聯(lián)的一個(gè)關(guān)鍵。但是,在驅(qū)動(dòng)框架的開發(fā)和部署過程中,由于終端設(shè)備對(duì)硬件的計(jì)算和存儲(chǔ)能力的需求不同、設(shè)備廠商提供的設(shè)備軟硬件操作接口不同、內(nèi)核提供的操作接口不同,這就使得OEM廠商部署系統(tǒng)的時(shí)候需要投入大量的精力來適配和維護(hù)驅(qū)動(dòng)代碼。

能否提供了一個(gè)跨芯片平臺(tái)、跨內(nèi)核的驅(qū)動(dòng)框架,使得設(shè)備驅(qū)動(dòng)軟件可以在不同的設(shè)備上運(yùn)行?OpenHarmony作為一個(gè)自主研發(fā)、全新技術(shù)生態(tài)的全領(lǐng)域下一代開源操作系統(tǒng),提供了一套驅(qū)動(dòng)框架來滿足此訴求。

下面我們將帶著大家解讀OpenHarmony驅(qū)動(dòng)框架。

一、OpenHarmony驅(qū)動(dòng)框架解讀 1. 設(shè)計(jì)目標(biāo)

為解決在開發(fā)和部署過程中遇到的困難,OpenHarmony驅(qū)動(dòng)框架設(shè)計(jì)目標(biāo)如下:

  • 支持百K級(jí)~G級(jí)容量的設(shè)備部署,如手機(jī)、手環(huán)等

  • 提供統(tǒng)一硬件IO抽象,屏蔽SoC芯片差異,兼容不同內(nèi)核,如Linux、LiteOS等。

  • 屏蔽驅(qū)動(dòng)和系統(tǒng)組件間交互??蓜?dòng)態(tài)拆解,滿足不同容量設(shè)備的部署。

  • 面向不同容量的設(shè)備,提供統(tǒng)一的配置界面。

2. 設(shè)計(jì)思路

OpenHarmony驅(qū)動(dòng)框架(下面簡(jiǎn)稱為HDF)通過提供驅(qū)動(dòng)與芯片平臺(tái)、內(nèi)核解耦的底座,規(guī)范硬件驅(qū)動(dòng)接口,實(shí)現(xiàn)驅(qū)動(dòng)軟件在不同設(shè)備中部署。

HDF驅(qū)動(dòng)框架架構(gòu)如下圖所示。

988caab8-3e41-11ec-82a9-dac502259ad0.png

1 驅(qū)動(dòng)架構(gòu)

為了達(dá)成設(shè)計(jì)目標(biāo),OpenHarmony驅(qū)動(dòng)框架采用如下核心設(shè)計(jì)思路:

(1)彈性化架構(gòu)
  • 框架可動(dòng)態(tài)伸縮:通過對(duì)象管理器,多態(tài)加載不同容量設(shè)備實(shí)現(xiàn)方式,實(shí)現(xiàn)彈性伸縮部署。
  • 驅(qū)動(dòng)可動(dòng)態(tài)伸縮:支持統(tǒng)一的設(shè)備驅(qū)動(dòng)插件管理,實(shí)現(xiàn)設(shè)備驅(qū)動(dòng)任意分層,積木式組合拼接

(2)組件化設(shè)備模型

  • 提供設(shè)備功能模型抽象,屏蔽設(shè)備驅(qū)動(dòng)與系統(tǒng)交互的實(shí)現(xiàn),為開發(fā)者提供統(tǒng)一的驅(qū)動(dòng)開發(fā)接口
  • 提供主流IC的公版驅(qū)動(dòng)能力,支持配置化部署

(3)歸一化平臺(tái)底座

提供規(guī)范化的內(nèi)核、SoC硬件IO適配接口,兼容不同內(nèi)核、SoC芯片,對(duì)外開發(fā)規(guī)范化的平臺(tái)驅(qū)動(dòng)接口

(4)統(tǒng)一配置界面

構(gòu)建全新的配置語言,面向不同容量的設(shè)備,提供統(tǒng)一配置界面,支持硬件資源配置和設(shè)備信息配置

3. 構(gòu)建策略

面向Liteos的輕量級(jí)設(shè)備,主要基于HDF構(gòu)建主流IC驅(qū)動(dòng),形成公版驅(qū)動(dòng)和通用設(shè)備功能模型,支撐不同硬件芯片、不同內(nèi)核(LiteOS-M/LiteOS-A)部署。98ea93ee-3e41-11ec-82a9-dac502259ad0.png

2 輕量級(jí)設(shè)備部署模式

面向標(biāo)準(zhǔn)設(shè)備,除了支持內(nèi)核態(tài)驅(qū)動(dòng),還支持用戶態(tài)驅(qū)動(dòng)。用戶態(tài)驅(qū)動(dòng)的重點(diǎn)在于構(gòu)建設(shè)備抽象模型,為系統(tǒng)提供統(tǒng)一的設(shè)備接口,兼容Linux原生驅(qū)動(dòng)和HDF驅(qū)動(dòng)。內(nèi)核態(tài)則使用Linux驅(qū)動(dòng)與HDF驅(qū)動(dòng)并存的策略,提供端到端的解決方案。

994f368c-3e41-11ec-82a9-dac502259ad0.png

3 標(biāo)準(zhǔn)設(shè)備部署模式

4. 現(xiàn)狀與演進(jìn)

目前HDF驅(qū)動(dòng)框架已經(jīng)支持Liteos-m、Liteos-a、Linux內(nèi)核,以及OpenHarmony輕量級(jí)、標(biāo)準(zhǔn)級(jí)上部署,并且在標(biāo)準(zhǔn)系統(tǒng)上同時(shí)支持內(nèi)核態(tài)與用戶態(tài)部署。

經(jīng)過開發(fā)者的不斷努力,OpenHarmony驅(qū)動(dòng)框架正在不斷完善和增強(qiáng),在OpenHarmony LTS3.0中,基礎(chǔ)框架新增了對(duì)熱插拔設(shè)備的管理以及HDI編譯工具h(yuǎn)di-gen,驅(qū)動(dòng)模型部分新增了Audio、Camera、Senso、USB DDK等多個(gè)模塊的支持。

二、OpenHarmony驅(qū)動(dòng)開發(fā) OpenHarmony驅(qū)動(dòng)為了避免與具體內(nèi)核產(chǎn)生依賴,實(shí)現(xiàn)可遷移目標(biāo),開發(fā)時(shí)需要遵循以下約定:
  • 系統(tǒng)相關(guān)接口使用HDF OSAL接口;
  • 總線和硬件資源相關(guān)接口使用平臺(tái)驅(qū)動(dòng)提供的相關(guān)接口。

基于HDF框架,驅(qū)動(dòng)開發(fā)的通常流程包含驅(qū)動(dòng)代碼的實(shí)現(xiàn)、編譯腳本、配置文件添加、以及用戶態(tài)程序和驅(qū)動(dòng)交互的流程。下面將詳細(xì)介紹HDF驅(qū)動(dòng)開發(fā)一般步驟。

1. 實(shí)現(xiàn)驅(qū)動(dòng)代碼

在HDF驅(qū)動(dòng)框架中,HdfDriverEntry對(duì)象被用來描述一個(gè)驅(qū)動(dòng)實(shí)現(xiàn)。
structHdfDriverEntry{int32_tmoduleVersion;constchar*moduleName;int32_t(*Bind)(structHdfDeviceObject*deviceObject);int32_t(*Init)(structHdfDeviceObject*deviceObject);void(*Release)(structHdfDeviceObject*deviceObject);};

編寫一個(gè)簡(jiǎn)單的驅(qū)動(dòng),首先需要實(shí)現(xiàn)驅(qū)動(dòng)程序(Driver Entry)入口中的三個(gè)主要接口:

  • Bind接口:實(shí)現(xiàn)驅(qū)動(dòng)接口實(shí)例化綁定,如果需要發(fā)布驅(qū)動(dòng)接口,會(huì)在驅(qū)動(dòng)加載過程中被調(diào)用,實(shí)例化該接口的驅(qū)動(dòng)服務(wù)并和DeviceObject綁定。當(dāng)用戶態(tài)發(fā)起調(diào)用時(shí),Bind中綁定的服務(wù)對(duì)象的Dispatch方法將被回調(diào),在該方法中處理用戶態(tài)調(diào)用的消息。
  • Init接口:實(shí)現(xiàn)驅(qū)動(dòng)或者硬件的初始化,返回錯(cuò)誤將中止驅(qū)動(dòng)加載流程。

  • Release接口:實(shí)現(xiàn)驅(qū)動(dòng)的卸載,在該接口中釋放驅(qū)動(dòng)實(shí)例的軟硬件資源。

一個(gè)基于HDF框架編寫的簡(jiǎn)單驅(qū)動(dòng)代碼如下,其功能是用戶態(tài)消息回環(huán),即驅(qū)動(dòng)收到用戶態(tài)發(fā)送的消息后將相同內(nèi)容的消息再發(fā)送給用戶態(tài):

#include"hdf_base.h"#include"hdf_device_desc.h"#include"hdf_log.h"#defineHDF_LOG_TAG"sample_driver"#defineSAMPLE_WRITE_READ0xFF00static int EchoString(struct HdfDeviceObject *deviceObject, struct HdfSBuf *data, struct HdfSBuf *reply){constchar*readData=HdfSbufReadString(data);if(readData==NULL){HDF_LOGE("%s:failedtoreaddata",__func__);returnHDF_ERR_INVALID_PARAM;}if(!HdfSbufWriteInt32(reply,INT32_MAX)){HDF_LOGE("%s:failedtoreplyint32",__func__);returnHDF_FAILURE;}returnHdfDeviceSendEvent(deviceObject,id,data);//發(fā)送事件到用戶態(tài)}int32_tHdfSampleDriverDispatch(structHdfDeviceObject*deviceObject,intid,structHdfSBuf*data,structHdfSBuf*reply){constchar*readData=NULL;intret=HDF_SUCCESS;switch(id){switchSAMPLE_WRITE_READ:ret=EchoString(deviceObject,data,reply);break;default:HDF_LOGE("%s:unsupportedcommand");ret=HDF_ERR_INVALID_PARAM;}returnret;}void HdfSampleDriverRelease(struct HdfDeviceObject *deviceObject){//在這里釋放驅(qū)動(dòng)申請(qǐng)的軟硬件資源return;}int HdfSampleDriverBind(struct HdfDeviceObject *deviceObject){if(deviceObject==NULL){returnHDF_FAILURE}staticstructIDeviceIoServicetestService={.Dispatch=HdfSampleDriverDispatch,};deviceObject->service=&testService;returnHDF_SUCCESS;}int HdfSampleDriverInit(struct HdfDeviceObject *deviceObject){if(deviceObject==NULL){HDF_LOGE("%s::ptrisnull!",__func__);returnHDF_FAILURE;}HDF_LOGE("SampledriverInitsuccess");returnHDF_SUCCESS;}structHdfDriverEntryg_sampleDriverEntry={.moduleVersion=1,.moduleName="sample_driver",.Bind=HdfSampleDriverBind,.Init=HdfSampleDriverInit,.Release=HdfSampleDriverRelease,};HDF_INIT(g_sampleDriverEntry);

2. 配置設(shè)備信息

在HDF框架的配置文件(例如vendor/hisilicon/xxx/config/device_info.hcs)中添加該驅(qū)動(dòng)的配置信息,配置目錄與具體開發(fā)板關(guān)聯(lián),如下所示:
root{device_info{match_attr="hdf_manager";templatehost{hostName="";priority=100;templatedevice{templatedeviceNode{policy=0;priority=100;preload=0;permission=0664;moduleName="";serviceName="";deviceMatchAttr="";}}}sample_host::host{hostName="host0";//host名稱,host節(jié)點(diǎn)是用來存放某一類驅(qū)動(dòng)的容器priority=100;//host啟動(dòng)優(yōu)先級(jí)(0-200),值越大優(yōu)先級(jí)越低,建議默認(rèn)配100,優(yōu)先級(jí)相同則不保證host的加載順序device_sample::device{//sample設(shè)備節(jié)點(diǎn)device0::deviceNode{//sample驅(qū)動(dòng)的DeviceNode節(jié)點(diǎn)policy=1;//policy字段是驅(qū)動(dòng)服務(wù)發(fā)布的策略,在驅(qū)動(dòng)服務(wù)管理章節(jié)有詳細(xì)介紹priority=100;//驅(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)加載策略,參考《5.2HDF驅(qū)動(dòng)框架章節(jié)》permission=0664;//驅(qū)動(dòng)創(chuàng)建設(shè)備節(jié)點(diǎn)權(quán)限moduleName="sample_driver";//驅(qū)動(dòng)名稱,該字段的值必須和驅(qū)動(dòng)入口結(jié)構(gòu)體的moduleName值一致serviceName="sample_service";//驅(qū)動(dòng)對(duì)外發(fā)布服務(wù)的名稱,必須唯一deviceMatchAttr="sample_config";//驅(qū)動(dòng)私有數(shù)據(jù)匹配的關(guān)鍵字,必須和驅(qū)動(dòng)私有數(shù)據(jù)配置表中的match_attr值相等}}}}}

(左右滑動(dòng),查看更多)

定義設(shè)備列表時(shí)使用了HCS的模板語法,template host節(jié)點(diǎn)下的內(nèi)容由HDF框架定義,新增host以及host中的device只需要繼承該模板并填充具體內(nèi)容即可。

在配置中定義的device將在加載過程中產(chǎn)生一個(gè)設(shè)備實(shí)例,配置中通過moduleName字段指定設(shè)備對(duì)應(yīng)的驅(qū)動(dòng)名稱,從而將設(shè)備與驅(qū)動(dòng)關(guān)聯(lián)起來。其中,設(shè)備與驅(qū)動(dòng)可以是一對(duì)多的關(guān)系,即可以實(shí)現(xiàn)一個(gè)驅(qū)動(dòng)支持多個(gè)同類型設(shè)備。

3. 用戶態(tài)程序與驅(qū)動(dòng)交互

用戶態(tài)程序和驅(qū)動(dòng)交互基于HDF IoService模型實(shí)現(xiàn),該設(shè)計(jì)屏蔽了具體內(nèi)核的差異,將驅(qū)動(dòng)接口抽象為IoService對(duì)象,調(diào)用者基于名稱獲取該對(duì)象,并可以使用IoService系列接口進(jìn)行接口調(diào)用和事件監(jiān)聽。值得一提的是消息傳遞時(shí)使用了HDF Sbuf對(duì)象進(jìn)行參數(shù)的序列化和反序列化,這樣可以避免不受控的內(nèi)存訪問,也簡(jiǎn)化了消息傳遞和分發(fā)過程中的內(nèi)存所有權(quán)問題,有利于提升用戶態(tài)和內(nèi)核態(tài)數(shù)據(jù)傳遞的安全性和便利性。HDF Sbuf相關(guān)接口可以參考HarmonyOS設(shè)備開發(fā)官網(wǎng)API Reference中頭文件hdf_sbuf.h部分。

基于HDF框架編寫的用戶態(tài)程序和驅(qū)動(dòng)交互的代碼如下:

#include"hdf_log.h"#include"hdf_sbuf.h"#include"hdf_io_service_if.h"#defineHDF_LOG_TAG"sample_test"#defineSAMPLE_SERVICE_NAME"sample_service"#defineSAMPLE_WRITE_READ0xFF00intg_replyFlag=0;static int OnDevEventReceived(void *priv, uint32_t id, struct HdfSBuf *data){constchar*string=HdfSbufReadString(data);intret=HDF_SUCCESS;if(string==NULL){HDF_LOGE("failedtoreadstringineventdata");ret=HDF_FAILURE;}else{HDF_LOGE("%s",string);}g_replyFlag=1;returnret;}static int SendEvent(struct HdfIoService *serv, char *eventData){intret=0;structHdfSBuf*data=HdfSBufObtainDefaultSize();//申請(qǐng)需要發(fā)送的序列化對(duì)象if(data==NULL){HDF_LOGE("failedtoobtainsbufdata");return1;}structHdfSBuf*reply=HdfSBufObtainDefaultSize();//申請(qǐng)返回?cái)?shù)據(jù)的序列化對(duì)象if(reply==NULL){HDF_LOGE("failedtoobtainsbufreply");ret=HDF_DEV_ERR_NO_MEMORY;gotoout;}if(!HdfSbufWriteString(data,eventData)){//準(zhǔn)備消息內(nèi)容HDF_LOGE("failedtowritesbuf");ret=HDF_FAILURE;gotoout;}ret=serv->dispatcher->Dispatch(&serv->object,SAMPLE_WRITE_READ,data,reply);//發(fā)起接口調(diào)用if(ret!=HDF_SUCCESS){HDF_LOGE("failedtosendservicecall");gotoout;}intreplyData=0;if(!HdfSbufReadInt32(reply,&replyData)){//反序列化返回?cái)?shù)據(jù)HDF_LOGE("failedtogetservicecallreply");ret=HDF_ERR_INVALID_OBJECT;gotoout;}HDF_LOGE("Getreplyis:%d",replyData);out:HdfSBufRecycle(data);HdfSBufRecycle(reply);returnret;}int main(){structHdfIoService*serv=HdfIoServiceBind(SAMPLE_SERVICE_NAME);//通過名稱獲取IoService對(duì)象,與驅(qū)動(dòng)配置中的名稱一致if(serv==NULL){HDF_LOGE("failedtogetservice%s",SAMPLE_SERVICE_NAME);returnHDF_FAILURE;}staticstructHdfDevEventlistenerlistener={//構(gòu)造驅(qū)動(dòng)事件監(jiān)聽器對(duì)象.callBack=OnDevEventReceived,//填充事件處理方法.priv=NULL;};if(HdfDeviceRegisterEventListener(serv,&listener)!=HDF_SUCCESS){//注冊(cè)事件監(jiān)聽HDF_LOGE("failedtoregistereventlistener");returnHDF_FAILURE;}if(SendEvent(serv,"HelloWorld,HDFDriver!")){//調(diào)用驅(qū)動(dòng)接口,樣例驅(qū)動(dòng)收到事件HDF_LOGE("failedtosendevent");returnHDF_FAILURE;}while(g_replyFlag==0){//等待驅(qū)動(dòng)上報(bào)事件sleep(1);}HdfDeviceUnregisterEventListener(serv,&listener));//去注冊(cè)事件監(jiān)聽器HdfIoServiceRecycle(serv);//回收IoService對(duì)象return0;}

(左右滑動(dòng),查看更多)

該示例執(zhí)行后會(huì)在終端中打印出"Hello World, HDF Driver!"字符串,表明我們的用戶態(tài)測(cè)試程序和驅(qū)動(dòng)成功地進(jìn)行了一次交互。

三、使用DevEco Device Tool進(jìn)行驅(qū)動(dòng)開發(fā)

上一小節(jié)介紹了OpenHarmony驅(qū)動(dòng)的一般開發(fā)方法,那么有沒有更簡(jiǎn)單的方法添加一款驅(qū)動(dòng)呢?答案就是華為南向開發(fā)IDE——DevEco Device Tool。DevEco Device Tool最新版本已經(jīng)集成了HDF驅(qū)動(dòng)開發(fā)功能,下面介紹如何使用DevEco Device Tool進(jìn)行驅(qū)動(dòng)開發(fā)。

DevEco Device Tool下載鏈接:https://device.harmonyos.com/cn/develop/ide#download_release。

1. 創(chuàng)建驅(qū)動(dòng)

(1)導(dǎo)入工程

參考DevEco Device Tool手冊(cè),通過npm或網(wǎng)絡(luò)下載的方式導(dǎo)入OHOS工程。

(2)使用HDF頁(yè)面工具創(chuàng)建新驅(qū)動(dòng),按照需求填寫Module名稱,工具將根據(jù)Module名稱創(chuàng)建對(duì)應(yīng)驅(qū)動(dòng)代碼與。

DevEco Device Tool將自動(dòng)生成驅(qū)動(dòng)實(shí)現(xiàn)代碼:

9b2055f4-3e41-11ec-82a9-dac502259ad0.png

7 Device Eco Tool 生成驅(qū)動(dòng)代碼

為源碼文件自動(dòng)生成編譯腳本:

9b9fadf4-3e41-11ec-82a9-dac502259ad0.png

8 Device Eco Tool 生成驅(qū)動(dòng)編譯腳本

DevEco Device Tool還會(huì)在對(duì)應(yīng)單板的驅(qū)動(dòng)配置中生成驅(qū)動(dòng)設(shè)備配置信息:

9bfb783c-3e41-11ec-82a9-dac502259ad0.png

9 Device Eco Tool 生成驅(qū)動(dòng)配置信息

2. 修改驅(qū)動(dòng)

DevEco Device Tool提供了快捷方式直達(dá)源碼、編譯腳本、配置文件,點(diǎn)擊鏈接修改相關(guān)文件,實(shí)現(xiàn)驅(qū)動(dòng)功能。DevEco Device Tool自動(dòng)生成代碼已經(jīng)提供了DriverEntry的基礎(chǔ)實(shí)現(xiàn),只需填充對(duì)應(yīng)函數(shù)的實(shí)際功能即可。

3. 編譯版本

使用DevEco Device Tool build功能一鍵編譯版本,編譯輸出顯示在終端窗口:9cb753ea-3e41-11ec-82a9-dac502259ad0.png

11 Device Eco Tool編譯界面

4. 燒錄驗(yàn)證

DevEco Device Tool提供了一站式的燒錄、調(diào)試環(huán)境。使用upload功能將編譯好的鏡像燒錄進(jìn)開發(fā)板。9d136d6a-3e41-11ec-82a9-dac502259ad0.png

12 Device Eco Tool燒寫功能界面

燒錄過程和進(jìn)度顯示在終端窗口

9d6ac830-3e41-11ec-82a9-dac502259ad0.png

圖13 Device Eco Tool燒寫輸出

四、總結(jié)

除了在此次HDC大會(huì)與大家分享驅(qū)動(dòng)框架的設(shè)計(jì)和最新進(jìn)展,開放原子基金會(huì)還在OpenHarmony公眾號(hào)、gitee社區(qū)等渠道發(fā)布了一系列技術(shù)分享、指導(dǎo)文檔等資料,歡迎大家關(guān)注并一起建設(shè)OpenHarmony驅(qū)動(dòng)生態(tài)。

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

    關(guān)注

    459

    文章

    52253

    瀏覽量

    437019
  • 驅(qū)動(dòng)
    +關(guān)注

    關(guān)注

    12

    文章

    1906

    瀏覽量

    86591
  • 鴻蒙系統(tǒng)
    +關(guān)注

    關(guān)注

    183

    文章

    2641

    瀏覽量

    67768
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2084

    瀏覽量

    32228
  • OpenHarmony
    +關(guān)注

    關(guān)注

    28

    文章

    3836

    瀏覽量

    18220

原文標(biāo)題:HDC2021技術(shù)分論壇:OpenHarmony驅(qū)動(dòng)框架解讀和開發(fā)實(shí)踐

文章出處:【微信號(hào):HarmonyOS_Community,微信公眾號(hào):電子發(fā)燒友開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

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

    迅為RK3568開發(fā)板驅(qū)動(dòng)開發(fā)指南helloworld驅(qū)動(dòng)實(shí)驗(yàn)-驅(qū)動(dòng)的基本框架

    Linux 驅(qū)動(dòng)的基本框架主要由模塊加載函數(shù),模塊卸載函數(shù),模塊許可證聲明,模塊參數(shù),塊導(dǎo)出符號(hào),模塊作者信息等幾部分組成,其中模塊參數(shù),模塊導(dǎo)出符號(hào),模塊作者信息是選的部分,也就是可要可不要。剩余
    發(fā)表于 04-02 14:47

    【北京迅為】iTOP-RK3568開發(fā)板鴻蒙OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)實(shí)操-HDF驅(qū)動(dòng)配置UART

    【北京迅為】iTOP-RK3568開發(fā)板鴻蒙OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)實(shí)操-HDF驅(qū)動(dòng)配置UART
    的頭像 發(fā)表于 03-25 11:02 ?604次閱讀
    【北京迅為】iTOP-RK3568開發(fā)板鴻蒙<b class='flag-5'>OpenHarmony</b>系統(tǒng)南向<b class='flag-5'>驅(qū)動(dòng)</b>開發(fā)實(shí)操-HDF<b class='flag-5'>驅(qū)動(dòng)</b>配置UART

    北京迅為iTOP-RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)實(shí)操-HDF驅(qū)動(dòng)配置LED

    北京迅為iTOP-RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)實(shí)操-HDF驅(qū)動(dòng)配置LED
    的頭像 發(fā)表于 03-14 14:41 ?539次閱讀
    北京迅為iTOP-RK3568開發(fā)板<b class='flag-5'>OpenHarmony</b>系統(tǒng)南向<b class='flag-5'>驅(qū)動(dòng)</b>開發(fā)實(shí)操-HDF<b class='flag-5'>驅(qū)動(dòng)</b>配置LED

    飛凌嵌入式ElfBoard ELF 1板卡-字符驅(qū)動(dòng)之字符驅(qū)動(dòng)框架描述

    字符驅(qū)動(dòng)框架的核心組件包括以下部分: 文件操作函數(shù) (file_operations):字符驅(qū)動(dòng)框架通過 file_operations結(jié)構(gòu)體定義了一組函數(shù)指針,用于處理設(shè)備文件的各種
    發(fā)表于 03-14 09:45

    北京迅為RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)內(nèi)核HDF驅(qū)動(dòng)框架架構(gòu)

    北京迅為RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)內(nèi)核HDF驅(qū)動(dòng)框架架構(gòu)
    的頭像 發(fā)表于 03-11 14:13 ?1022次閱讀
    北京迅為RK3568開發(fā)板<b class='flag-5'>OpenHarmony</b>系統(tǒng)南向<b class='flag-5'>驅(qū)動(dòng)</b>開發(fā)內(nèi)核HDF<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>框架</b>架構(gòu)

    【北京迅為】iTOP-RK3568OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)GPIO基礎(chǔ)知識(shí)

    【北京迅為】iTOP-RK3568OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)GPIO基礎(chǔ)知識(shí)
    的頭像 發(fā)表于 03-06 11:23 ?546次閱讀
    【北京迅為】iTOP-RK3568<b class='flag-5'>OpenHarmony</b>系統(tǒng)南向<b class='flag-5'>驅(qū)動(dòng)</b>開發(fā)GPIO基礎(chǔ)知識(shí)

    迅為RK3568開發(fā)板篇OpenHarmony實(shí)操HDF驅(qū)動(dòng)控制LED-編寫內(nèi)核 LED HDF 驅(qū)動(dòng)程序

    接下來編譯 LED 驅(qū)動(dòng),該驅(qū)動(dòng)用于在基于華為設(shè)備框架(HDF)的系統(tǒng)中控制 LED 燈的開關(guān),完整代碼如下所示: 更多內(nèi)容可以關(guān)注:迅為RK3568開發(fā)板篇OpenHarmony
    發(fā)表于 01-17 15:13

    迅為RK3568開發(fā)板篇OpenHarmony配置HDF驅(qū)動(dòng)控制LED-新增 topeet子系統(tǒng)

    程序目錄 ├── led_driver.c:內(nèi)核 LED HDF 驅(qū)動(dòng)程序 └── Makefile:內(nèi)核 LED HDF 驅(qū)動(dòng)編譯腳本 更多內(nèi)容可以關(guān)注:迅為RK3568開發(fā)板篇OpenHarmony
    發(fā)表于 01-13 15:59

    OpenHarmony程序分析框架論文入選ICSE 2025

      近日,ICSE 2025軟件工程實(shí)踐Track放榜,面向OpenAtom OpenHarmony(以下簡(jiǎn)稱“OpenHarmony”)的ArkTS程序分析基礎(chǔ)框架--方舟程序分析器(論文題目為
    的頭像 發(fā)表于 01-02 13:41 ?1017次閱讀
    <b class='flag-5'>OpenHarmony</b>程序分析<b class='flag-5'>框架</b>論文入選ICSE 2025

    第三屆OpenHarmony技術(shù)大會(huì)星光璀璨、致謝OpenHarmony社區(qū)貢獻(xiàn)者

    取得豐碩成果的TSG團(tuán)隊(duì)、OpenHarmony技術(shù)俱樂部團(tuán)隊(duì)及個(gè)人,本次大會(huì)特別舉辦了星光團(tuán)隊(duì)和星光個(gè)人授牌儀式。共授牌4個(gè)星光TSG,分別是安全及機(jī)密計(jì)算TSG、跨平臺(tái)應(yīng)用開發(fā)框架TSG、編程語言
    的頭像 發(fā)表于 10-21 14:10 ?492次閱讀

    2024年度OpenHarmony競(jìng)賽訓(xùn)練營(yíng)頒獎(jiǎng)——?jiǎng)?chuàng)新驅(qū)動(dòng),培育未來科技人才

    及運(yùn)營(yíng)的開源項(xiàng)目,目標(biāo)是面向全場(chǎng)景、全連接、全智能時(shí)代、基于開源的方式,搭建一個(gè)智能終端設(shè)備操作系統(tǒng)的框架和平臺(tái),促進(jìn)萬物互聯(lián)產(chǎn)業(yè)的繁榮發(fā)展。OpenHarmony競(jìng)賽訓(xùn)練營(yíng)始終致力于引導(dǎo)高校學(xué)生將
    的頭像 發(fā)表于 10-21 14:10 ?538次閱讀

    基于ArkTS語言的OpenHarmony APP應(yīng)用開發(fā):HelloOpenharmony

    1、程序簡(jiǎn)介該程序是基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)編寫的UI應(yīng)用類:HelloOpenHarmony。本案例是基于API9接口開發(fā)。本案例已在OpenHarmony凌蒙派-RK3568開發(fā)
    的頭像 發(fā)表于 09-15 08:09 ?786次閱讀
    基于ArkTS語言的<b class='flag-5'>OpenHarmony</b> APP應(yīng)用開發(fā):Hello<b class='flag-5'>Openharmony</b>

    【迅為RK3568開發(fā)板】OpenHarmony學(xué)習(xí)開發(fā)系列教程(第1期 北向基礎(chǔ)篇一)

    P1P0_先導(dǎo)課1:30 P2P1_OpenHarmony系統(tǒng)概述8:12 P3P2_OpenHarmony功能框架5:38 P4P3_OpenHarmony技術(shù)特性5:10
    發(fā)表于 08-16 15:27

    第二屆大會(huì)回顧第24期 | 面向OpenHarmony的軟件工程研究:機(jī)遇與挑戰(zhàn)

    隨著萬物智聯(lián)時(shí)代的到來,OpenHarmony作為一個(gè)開源的智能終端設(shè)備操作系統(tǒng)的框架和平臺(tái),將會(huì)遇到哪些機(jī)遇和挑戰(zhàn)?北京航空航天大學(xué)教授、OpenHarmony技術(shù)俱樂部主任黎立在第二屆Op
    的頭像 發(fā)表于 08-07 18:14 ?1515次閱讀
    第二屆大會(huì)回顧第24期 | 面向<b class='flag-5'>OpenHarmony</b>的軟件工程研究:機(jī)遇與挑戰(zhàn)

    鴻蒙OpenHarmony南向/北向快速開發(fā)教程-迅為RK3568開發(fā)板

    P2_OpenHarmony功能框架 P3_OpenHarmony技術(shù)特性 P4_OpenHarmony支持設(shè)備類型 p5_南向開發(fā)和北向開發(fā)的區(qū)別 P6_
    發(fā)表于 07-23 10:44
    主站蜘蛛池模板: 欧美+日本+国产+在线观看 | 在线种子搜索 | 8888四色奇米在线观看不卡 | 久久99精品福利久久久 | 午夜美女写真福利写视频 | 91精选视频在线观看 | 五月婷婷六月丁香 | 女人被两根一起进3p在线观看 | 国产成人午夜片在线观看 | 五月天婷亚洲 | 天天久久综合网站 | 天天爽夜夜爽视频 | 欧美视频一区二区三区在线观看 | 日本大片在线看 | 四虎国产精品永久在线播放 | 日本在线视频www色 日本在线视频精品 | 日韩美毛片 | 好男人社区www在线观看 | 美女视频黄a全部 | 日产精品卡二卡三卡四卡乱码视频 | 精品视频网站 | 久久午夜免费视频 | 色综合色狠狠天天综合色hd | 午夜视频h | 国产女人伦码一区二区三区不卡 | 天天拍夜夜爽 | 狠狠色噜噜狠狠狠狠999米奇 | www.嫩草影院| 色wwwwww | 中国业余老太性视频 | 大看蕉a在线观看 | 久久夜色精品国产噜噜小说 | 国产免费福利网站 | 色视频日本 | 日本在线黄色网址 | 天堂在线国产 | 婷婷激情四月 | 电影一区二区三区 | 最近2018中文字幕免费看在线 | 日韩欧美高清色码 | 窝窝午夜在线观看免费观看 |