精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

樹莓派4B編寫HDF驅動示例

系統
前段時間已經在樹莓派4B成功加入了HDF驅動框架,帖子鏈接。得用HDF編寫個自己的驅動來測試下移植的效果。

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

前言

前段時間已經在樹莓派4B成功加入了HDF驅動框架,帖子鏈接。得用HDF編寫個自己的驅動來測試下移植的效果。不說了代碼最實在,看代碼吧。

樹莓派4B編寫HDF驅動示例-鴻蒙HarmonyOS技術社區

1.內核態驅動代碼

一個簡單的測試驅動,可以認為是串口驅動。因為在linux內核下,所以驅動放置在linux\platform\uart目錄下。

drivers\adapter\khdf\linux\platform\uart\my_hdf_uart.c

  1. #include "hdf_device_desc.h"    // HDF框架對驅動開發相關能力接口的頭文件 
  2. #include "hdf_log.h"            // HDF 框架提供的日志接口頭文件 
  3.  
  4. #define HDF_LOG_TAG "my_hdf_uart"   // 打印日志所包含的標簽,如果不定義則用默認定義的HDF_TAG標簽 
  5.  
  6. // 【3.1驅動消息機制管理】Dispatch是用來處理用戶態發下來的消息 
  7. int32_t MyUartDriverDispatch(struct HdfDeviceIoClient *client, int cmdId, struct HdfSBuf *data, struct HdfSBuf *reply) 
  8.     HDF_LOGE("%s::enter", __func__); 
  9.     HDF_LOGE("get cmdId::%d",cmdId); 
  10.     return HDF_SUCCESS; 
  11.  
  12. // 【1.驅動開發】驅動對外提供的服務能力,將相關的服務接口綁定到HDF框架 
  13. int32_t MyHdfUartDriverBind(struct HdfDeviceObject *deviceObject) 
  14.     HDF_LOGE("%s::enter", __func__); 
  15.  
  16.     // 【2.驅動服務管理】deviceObject為HDF框架給每一個驅動創建的設備對象,用來保存設備相關的私有數據和服務接口 
  17.     if (deviceObject == NULL) { 
  18.         HDF_LOGE("My Uart device object is null!"); 
  19.         return HDF_FAILURE; 
  20.     } 
  21.     static struct IDeviceIoService testService = { 
  22.         .Dispatch = MyUartDriverDispatch,   // 【3.2驅動消息機制管理】在服務實現過程中,實現服務基類成員IDeviceIoService中的Dispatch方法 
  23.         .Open = NULL,                       // 【2.驅動服務管理】驅動提供的其他服務。 
  24.         .Release = NULL
  25.         // .ServiceA = SampleDriverServiceA, 
  26.     }; 
  27.     deviceObject->service = &testService; 
  28.  
  29.     return HDF_SUCCESS; 
  30.  
  31. // 【1.驅動開發】驅動自身業務初始的接口 
  32. int32_t MyHdfUartDriverInit(struct HdfDeviceObject *deviceObject) 
  33.     HDF_LOGE("%s::enter", __func__);  
  34.     HDF_LOGD("Uart driver bind success");        
  35.     return 0; 
  36. static int32_t MyUartParseAndInit(struct HdfDeviceObject *device, const struct DeviceResourceNode *node) 
  37.     HDF_LOGE("%s::enter", __func__); 
  38.     return 0; 
  39.  
  40.  
  41. // 【1.驅動開發】驅動資源釋放的接口 
  42. void MyHdfUartDriverRelease(struct HdfDeviceObject *deviceObject) 
  43.     HDF_LOGE("%s::enter", __func__); 
  44.     return
  45.  
  46. // 【1.驅動開發】定義驅動入口的對象,必須為HdfDriverEntry(在hdf_device_desc.h中定義)類型的全局變量 
  47. struct HdfDriverEntry g_myhdfUartDriverEntry = { 
  48.     .moduleVersion = 1, 
  49.     .moduleName = "my_hdf_uart"
  50.     .Bind = MyHdfUartDriverBind, 
  51.     .Init = MyHdfUartDriverInit, 
  52.     .Release = MyHdfUartDriverRelease, 
  53. }; 
  54.  
  55. // 【1.驅動開發】調用HDF_INIT將驅動入口注冊到HDF框架中,在加載驅動時HDF框架會先調用Bind函數,再調用Init函數加載該驅動,當Init調用異常時,HDF框架會調用Release釋放驅動資源并退出。 
  56. HDF_INIT(g_myhdfUartDriverEntry); 

drivers\adapter\khdf\linux\platform\uart\Makefile:將驅動加入內核編譯

  1. - uart_adapter.o 
  2.  
  3. + uart_adapter.o \ 
  4. + my_hdf_uart.o 

2.添加驅動配置文件

vendor\raspberrypi\RPI4B\hdf_config\khdf\device_info\device_info.hcs

  1. # device_uart :: device 下添加 
  2.  
  3. device2 :: deviceNode { 
  4.     policy = 2; 
  5.     permission = 0644; 
  6.     priority = 40; 
  7.     moduleName = "my_hdf_uart"
  8.     serviceName = "my_hdf_uart_service"

3.用戶態HDF驅動交互驗證

applications\standard\app\myuarttest.c:用戶態主程序,主要代碼已經添加注釋了。

  1. #include <utils/hdf_log.h> 
  2. #include <core/hdf_io_service_if.h> 
  3. #include "hdf_sbuf.h" 
  4.  
  5. #define HDF_LOG_TAG "my_hdf_uart" 
  6. #define SAMPLE_SERVICE_NAME "my_hdf_uart_service" 
  7.  
  8. #define SAMPLE_WRITE_READ 1001   // 【驅動消息機制管理】讀寫操作碼,驅動定義消息處理函數中的cmd類型 
  9.  
  10. int main() 
  11.     HDF_LOGE("%s::enter", __func__); 
  12.     int ret = 0; 
  13.  
  14.     // 用戶態獲取驅動的服務,獲取該服務之后通過服務中的Dispatch方法向驅動發送消息。 
  15.     struct HdfIoService *serv = HdfIoServiceBind(SAMPLE_SERVICE_NAME);  // 【3驅動消息機制管理】用戶態(通過服務名)獲取服務接口 
  16.     if (serv == NULL) { 
  17.         HDF_LOGE("fail to get service %s", SAMPLE_SERVICE_NAME); 
  18.         return HDF_FAILURE; 
  19.     } 
  20.      
  21.     char *sendData = ""
  22.     struct HdfSBuf *data = HdfSBufObtainDefaultSize();      // 存放要發送的數據 
  23.     if (!HdfSbufWriteString(data, sendData)) {              // 發送的內容賦值 
  24.         HDF_LOGE("fail to write sbuf"); 
  25.         ret = HDF_FAILURE; 
  26.     } 
  27.  
  28.     struct HdfSBuf *reply = HdfSBufObtainDefaultSize();                                         // 存放返回的數據 
  29.     ret = serv->dispatcher->Dispatch(&serv->object, SAMPLE_WRITE_READ, data, reply);        // 發送消息到驅動 
  30.     if (ret != HDF_SUCCESS) { 
  31.         HDF_LOGE("fail to send service call"); 
  32.     } 
  33.  
  34.     HdfIoServiceRecycle(serv); 
  35.     return HDF_SUCCESS; 

applications\standard\app\BUILD.gn:編寫構建腳本

  1. import("//build/ohos.gni"
  2. import("//drivers/adapter/uhdf2/uhdf.gni"
  3.  
  4. ohos_executable("myuarttest") { 
  5.   sources = [ 
  6.     "myuarttest.c" 
  7.   ] 
  8.   include_dirs = [     
  9.     "//drivers/framework/include",                                  # <utils/hdf_log.h> <core/hdf_io_service_if.h> 
  10.     "//drivers/adapter/uhdf2/osal/include",                         # hdf_log_adapter.h 
  11.     "//base/hiviewdfx/hilog/interfaces/native/innerkits/include",   # <hilog/log.h> 
  12.     "//drivers/framework/ability/sbuf/include",                     # hdf_sbuf.h 
  13.     "//drivers/framework/include/utils",                            # hdf_base.h 
  14.   ] 
  15.   deps = [ 
  16.     "//drivers/adapter/uhdf2/osal:libhdf_utils",                    # hdf_log_adapter.h 
  17.     "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog"   # <hilog/log.h> 
  18.   ] 
  19.   subsystem_name = "applications" 
  20.   part_name = "prebuilt_hap" 

 applications\standard\hap\ohos.build:最后將app加入編譯框架

  1. "//applications/standard/app:myuarttest"

4.測試

最后執行用戶態的myuarttest程序,就可以測試驅動是否添加成功了。

樹莓派4B編寫HDF驅動示例-鴻蒙HarmonyOS技術社區

用戶態只需要發送cmdId比如1001,然后內核驅動程序根據cmdID執行相應的操作即可。

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-11-23 15:35:05

鴻蒙HarmonyOS應用

2021-12-09 10:11:04

鴻蒙HarmonyOS應用

2021-12-31 10:00:30

鴻蒙HarmonyOS應用

2022-06-21 11:02:27

系統移植鴻蒙

2019-03-31 08:00:02

樹莓派更新樹莓派 Linux

2019-03-24 20:30:18

樹莓派Linux

2022-08-08 19:35:37

HDF驅動開發鴻蒙

2019-03-12 18:33:57

樹莓派Linux

2023-03-23 16:02:07

樹莓派4GPU調試

2021-07-25 10:30:04

樹莓派Linux

2022-05-16 11:30:39

openEuler樹莓派鴻蒙

2021-12-22 15:30:24

樹莓派Android開發者

2021-09-26 10:11:14

Ubuntu樹莓派

2023-08-18 14:34:09

HDF驅動框架

2021-11-17 16:20:49

Linux 系統 樹莓派

2021-03-29 21:24:40

樹莓派Linux

2022-02-11 09:24:05

樹莓派OpenWrt固定IP服務

2019-03-23 19:33:14

樹莓派Linux操作系統

2021-11-24 10:09:41

鴻蒙樹莓操作系統

2018-10-12 11:20:20

樹莓派NAS Linux
點贊
收藏

51CTO技術棧公眾號

国产熟妇搡bbbb搡bbbb| 国产精品高清一区二区三区| 黄免费在线观看| 欧美亚洲二区| 一区二区三区日韩欧美精品| 精品国产日本| 在线观看亚洲一区二区| 欧美一区二区三区久久精品| 亚洲精品国产精品国自产在线| 国产性生交xxxxx免费| 免费网站免费进入在线| 成人小视频免费在线观看| 国产成人精品在线| 久草免费在线视频观看| 免费欧美一区| 精品国产一区二区三区忘忧草| 成人在线激情网| 青青草原av在线| 国产精品丝袜一区| 久久精彩视频| 精品国产av鲁一鲁一区| 麻豆亚洲精品| 欧美国产一区二区三区| xxxxx99| 理论片一区二区在线| 欧美日韩久久久| 国产精品免费入口| 欧美一卡二卡| 亚洲色欲色欲www| 日韩欧美精品一区二区| 天天综合天天综合| 国产福利一区在线| 成人a在线视频| 蜜臀尤物一区二区三区直播| 亚洲经典自拍| 九色精品免费永久在线| 亚洲女人毛茸茸高潮| 亚洲精品播放| 日韩av在线影院| 曰本三级日本三级日本三级| 日韩av懂色| 欧美视频一区在线| 97在线播放视频| 欧美私密网站| 午夜精品国产更新| 国产精品久久久久9999爆乳| 中文字幕在线观看网站| 中文字幕视频一区| 亚洲午夜精品一区二区三区| 丝袜视频国产在线播放| caoporn国产精品| 成人在线视频网址| 亚洲第一天堂网| 国产91精品免费| 官网99热精品| 蜜臀av午夜精品| 成人不卡免费av| 国产欧美日韩在线播放| 免费看黄网站在线观看| 99久久国产综合精品色伊| 成人免费看片网站| 成人无码一区二区三区| yourporn久久国产精品| 国产亚洲精品自在久久| 午夜激情在线视频| 91麻豆高清视频| 日本精品国语自产拍在线观看| 精品电影在线| 国产精品免费丝袜| 强伦女教师2:伦理在线观看| 八戒八戒神马在线电影| 亚洲精品国产一区二区精华液| 成人在线免费观看视频网站| 色女人在线视频| 欧美日韩免费在线观看| 少妇高清精品毛片在线视频| 欧洲av一区二区| 在线91免费看| 亚洲成人福利视频| 欧美顶级毛片在线播放| 亚洲香蕉av在线一区二区三区| 亚洲区自拍偷拍| 亚洲91久久| 国内精品久久久久久影视8| 亚洲欧美精品一区二区三区| 日韩国产在线观看| 92看片淫黄大片看国产片| 懂色av蜜臀av粉嫩av分享吧| 久久欧美中文字幕| 一区二区日本伦理| 97天天综合网| 狠狠干狠狠久久| 天堂一区在线观看| swag国产精品一区二区| 亚洲人成网站免费播放| 欧美色视频一区二区三区在线观看| 欧美片第1页综合| 奇米4444一区二区三区| 国产又粗又大又黄| 97se亚洲国产综合在线| 在线成人性视频| 涩涩涩在线视频| 欧美一级在线免费| 自拍偷拍视频亚洲| 精品999网站| 国产欧美一区二区三区视频| 人妻少妇精品无码专区| 国产精品久久久久久亚洲毛片| 欧美成人精品免费| 欧美亚洲综合视频| 亚洲另类图片色| 欧美国产日韩综合| 日本亚洲欧美天堂免费| 国产精品对白刺激久久久| eeuss影院www在线播放| 午夜在线成人av| 亚洲av无一区二区三区久久| 国产精品一国产精品| 久久久久五月天| 一级全黄裸体免费视频| 久久网站最新地址| 国产玉足脚交久久欧美| 99精品美女视频在线观看热舞| 亚洲乱码国产乱码精品精天堂| 免费日韩在线视频| 麻豆国产精品777777在线| 久久综合一区| hd国产人妖ts另类视频| 欧美一级高清大全免费观看| 国产欧美一区二区三区在线观看视频| 国产日韩亚洲| 国产精品一国产精品最新章节| 美女隐私在线观看| 欧美视频在线播放| 在线免费观看视频| 欧美综合二区| 玛丽玛丽电影原版免费观看1977 | 久久国产亚洲精品无码| 欧美在线在线| 久久99视频精品| 精品人妻一区二区三区三区四区| 国产精品久久久久久久久晋中 | 国产美女亚洲精品7777| 在线日韩中文字幕| wwwwww在线观看| 国产日韩视频一区二区三区| 国产最新免费视频| 亚洲第一二三区| 国产成+人+综合+亚洲欧洲| 香蕉视频国产在线| 欧美日韩亚洲91| asian性开放少妇pics| 国产日韩欧美在线播放不卡| 久久久久se| 久久人体大尺度| 亚洲午夜久久久影院| 中文字幕日本视频| 国产精品日日摸夜夜摸av| 向日葵污视频在线观看| 国产韩日影视精品| 95av在线视频| 黄色影院在线看| 亚洲精品视频免费在线观看| 91视频在线视频| 国产精品毛片无遮挡高清| 伊人网在线综合| 欧美三级网页| 麻豆成人av| 精品裸体bbb| 久久久国产一区| 日日躁夜夜躁白天躁晚上躁91| 五月婷婷激情综合网| www在线观看免费视频| 久久精品国产精品亚洲综合| 亚洲色图都市激情| 免费看久久久| 国产精品久久婷婷六月丁香| 男人影院在线观看| 精品久久久久久久久久久院品网 | 少妇视频在线播放| 国产一区二区三区四| 成人午夜视频在线观看免费| 竹菊久久久久久久| 91久久久久久久一区二区 | 国产精品69久久久久| 欧美性天天影视| 亚洲国产三级网| 最好看的日本字幕mv视频大全| 亚洲人成人一区二区在线观看 | 中文字幕视频在线免费观看| 亚洲一区色图| 欧美裸体网站| 日韩中文在线| 国产精品wwwwww| 黄色小说在线播放| 日韩在线观看免费全集电视剧网站 | 久久精品系列| 熟妇熟女乱妇乱女网站| 神马香蕉久久| 亚洲xxxx做受欧美| 88xx成人网| 欧美亚洲另类制服自拍| mm1313亚洲国产精品美女| 亚洲国产精品悠悠久久琪琪| 一级黄色大毛片| 欧美性猛交xxx| 九九热精品免费视频| 国产目拍亚洲精品99久久精品| www日本在线观看| 青青草伊人久久| 婷婷无套内射影院| 97精品在线| 精品无人区一区二区三区| 激情五月综合婷婷| 欧洲精品久久久| 色综合999| 国产午夜精品全部视频播放| 天天综合在线视频| 日韩视频免费直播| 国产成人精品亚洲| 色综合色综合色综合色综合色综合| 日本少妇aaa| 久久午夜免费电影| 天堂一区在线观看| 日韩黄色在线观看| 91精品国产91久久久久麻豆 主演| 波多野结衣在线观看一区二区三区| 久久福利电影| 一区二区免费| 成人午夜在线观看| 91tv亚洲精品香蕉国产一区| 日本高清不卡在线| 狼人综合视频| 色综合老司机第九色激情| 国产三级在线| 日韩电视剧免费观看网站| 午夜精品久久久久久久第一页按摩| 91黄色免费看| 国产精华7777777| 欧美日韩在线看| 欧美久久久久久久久久久久| 2023国产精品视频| 天天插天天射天天干| 国产91精品一区二区| 亚洲成人手机在线观看| 国产一区日韩二区欧美三区| 亚洲国产精品三区| 日本中文在线一区| 131美女爱做视频| 一本一本久久| 久久久999免费视频| 亚洲二区视频| 日韩在线视频在线观看| 亚洲综合99| 欧美 激情 在线| 免费在线观看成人av| 欧美三级在线观看视频| 亚洲黄色一区| 国产午夜福利100集发布| 亚洲欧美春色| 农村妇女精品一二区| 老鸭窝亚洲一区二区三区| 亚洲激情在线观看视频| 免费成人av在线播放| 日本久久精品一区二区| 经典一区二区三区| 久久久福利影院| 国产福利一区二区三区视频 | 九九久久精品视频| www.午夜av| 国产盗摄视频一区二区三区| 亚洲美女精品视频| 国产精品18久久久久久久久久久久 | 国产福利小视频在线观看| 在线日韩日本国产亚洲| 91麻豆一二三四在线| 欧美黑人巨大xxx极品| 91九色美女在线视频| 国产精品av免费在线观看| 日韩制服诱惑| 91精品在线看| 久久久久久久久久久久久久久久久久久久| 另类欧美小说| 久久中文字幕av| 日本黄网站色大片免费观看| 欧美亚洲一区二区三区| 国产一二三区av| 国产成人综合精品三级| 国产精品无码网站| 国产精品卡一卡二卡三| 麻豆一区产品精品蜜桃的特点| 日韩欧美高清在线视频| 怡红院成永久免费人全部视频| 欧美一级一区二区| 欧美一级片免费| 在线播放日韩专区| av黄色在线| 国内精品久久久久伊人av| 成人精品一区二区三区电影| 51国产成人精品午夜福中文下载| 女同一区二区三区| 特级黄色录像片| 校园春色综合网| 能看毛片的网站| 中文字幕不卡在线播放| 国产性70yerg老太| 欧美在线观看一二区| 免费国产精品视频| www亚洲欧美| 美女的胸无遮挡在线观看| 国产精品美女免费看| 国内精品国产成人国产三级粉色| 四虎永久在线精品免费一区二区| 亚洲精品欧洲| 91小视频在线播放| 91老师片黄在线观看| 精品视频一区二区在线观看| 在线精品视频免费观看| 免费国产黄色片| 色综合91久久精品中文字幕| 日韩国产大片| 欧美一区二区视频17c| av成人国产| 一区二区三区四区影院| 中文字幕一区二区三区在线播放| 色老头一区二区| 亚洲国产又黄又爽女人高潮的| 日本最黄一级片免费在线| 国产精品成久久久久三级| 久久97精品| 路边理发店露脸熟妇泻火| 久草中文综合在线| 亚洲日本精品视频| 狠狠色狠色综合曰曰| 国产综合在线播放| 欧美成人三级视频网站| 91九色综合| 日韩视频在线播放| 国产免费成人| 成人在线视频免费播放| 亚洲国产精品一区二区www| av手机免费看| 国产丝袜精品视频| 欧美理论影院| 欧美二区三区| 亚洲国产专区| 老司机免费视频| 亚洲成人免费看| 亚欧在线观看视频| 777777777亚洲妇女| 欧美一区二区三区红桃小说| 久久久久免费看黄a片app| av网站免费线看精品| 精品视频久久久久| 精品亚洲一区二区三区在线播放 | 成人黄色av片| 成人福利在线看| 狠狠躁夜夜躁人人爽天天高潮| 日韩精品在线看片z| 午夜小视频在线观看| 91在线看网站| 亚洲最黄网站| 黄色录像a级片| 欧美日韩一区二区三区在线免费观看| 神马久久久久久久久久| 久久久久久久久久亚洲| 色88888久久久久久影院| 久久久久久久久久久免费视频| jvid福利写真一区二区三区| www.国产高清| 亚洲天堂第二页| jizz欧美| 青草全福视在线| av在线一区二区| 久久久久女人精品毛片九一| 日韩中文字幕免费| 青草伊人久久| 欧美a级免费视频| 久久久不卡网国产精品一区| 欧美高清69hd| 欧美—级高清免费播放| 奇米影视777在线欧美电影观看| 2022亚洲天堂| 1000部国产精品成人观看| 亚洲av无码乱码在线观看性色| 欧美日本高清视频| 丝袜久久网站| 在线观看日本一区二区| 国产精品久久久一本精品| 国产又粗又猛视频| 欧美夫妻性生活视频| 国产精品嫩草影院在线看| 99re6在线观看| 亚洲成人一区在线| 视频免费一区| 国产免费一区二区三区| 久久99精品久久久久久| 青青操免费在线视频| 色婷婷综合久久久久| 亚洲调教一区|