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

【FFH】小熊派驅動調用流程(以調用LED燈驅動為例)

原創
系統 OpenHarmony
驅動調用的流程和純代碼開發的流程十分相似,本文著重點在于驅動調用的邏輯。

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

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

??https://harmonyos.51cto.com??

一、流程總覽

驅動調用的流程和純代碼開發的流程十分相似,本文著重點在于驅動調用的邏輯。

創建目錄及相應源碼文件–>編寫驅動調用代碼–>編寫編譯構建文件BUILD.gn–>編譯燒錄運行

二、源碼目錄結構

在./applications/BearPi/BearPi-HM_Micro/samples/目錄下創建

my_led_app 源碼目錄

*my_led_app.c 驅動調用源碼

*BUILD.gn 源碼編譯腳本

如圖所示

三、編寫驅動調用代碼

在my_led_app.c中編寫如下代碼

#include <fcntl.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <stdio.h>
#include "hdf_sbuf.h"
#include "hdf_io_service_if.h"

#define LED_WRITE_READ 1
#define LED_SERVICE "hdf_led"

static int SendEvent(struct HdfIoService *serv, uint8_t eventData)
{
int ret = 0;
struct HdfSBuf *data = HdfSBufObtainDefaultSize();
if (data == NULL)
{
printf("fail to obtain sbuf data!\r\n");
return 1;
}

struct HdfSBuf *reply = HdfSBufObtainDefaultSize();
if (reply == NULL)
{
printf("fail to obtain sbuf reply!\r\n");
ret = HDF_DEV_ERR_NO_MEMORY;
goto out;
}
/* 寫入數據 */
if (!HdfSbufWriteUint8(data, eventData))
{
printf("fail to write sbuf!\r\n");
ret = HDF_FAILURE;
goto out;
}
/* 通過Dispatch發送到驅動 */
ret = serv->dispatcher->Dispatch(&serv->object, LED_WRITE_READ, data, reply);
if (ret != HDF_SUCCESS)
{
printf("fail to send service call!\r\n");
goto out;
}

int replyData = 0;
/* 讀取驅動的回復數據 */
if (!HdfSbufReadInt32(reply, &replyData))
{
printf("fail to get service call reply!\r\n");
ret = HDF_ERR_INVALID_OBJECT;
goto out;
}
printf("\r\nGet reply is: %d\r\n", replyData);
out:
HdfSBufRecycle(data);
HdfSBufRecycle(reply);
return ret;
}

int main(int argc, char **argv)
{
int i;

/* 獲取服務 */
struct HdfIoService *serv = HdfIoServiceBind(LED_SERVICE);
if (serv == NULL)
{
printf("fail to get service %s!\r\n", LED_SERVICE);
return HDF_FAILURE;
}

for (i=0; i < argc; i++)
{
printf("\r\nArgument %d is %s.\r\n", i, argv[i]);
}

SendEvent(serv, atoi(argv[1]));

HdfIoServiceRecycle(serv);
printf("exit");

return HDF_SUCCESS;
}

這一部分是本文的重點部分

OpenHarmony的設備開發中的驅動調用與單片機的驅動開發不太相同,以往單片機的驅動調用往往是采用庫函數調用的方式,但OpenHarmony的驅動調用采用的是驅動程序暴露出一個server,程序通過Dispatch發送指令的方式。有點類似與ROS的消息通信機制中的話題發布和訂閱。在OpenHarmony中驅動調用的這部分程序屬于用戶程序,是用戶態的內容,而驅動是內核態的內容。所以用戶程序無法直接訪問驅動,上面代碼通過Dispatch向驅動程序發送指令從而實現LED燈的亮滅。

3.1 發送指令到驅動程序

我們看下my_led_app.c中SendEvent函數中通過Dispatch發送到驅動的代碼

/* 通過Dispatch發送到驅動 */
ret = serv->dispatcher->Dispatch(&serv->object, LED_WRITE_READ, data, reply);
if (ret != HDF_SUCCESS)
{
printf("fail to send service call!\r\n");
goto out;
}

int replyData = 0;

這段代碼實現將指令發送到驅動程序

驅動程序指令接受的的代碼在上一篇文章中的led.c驅動代碼中的LedDriverDispatch函數

// Dispatch是用來處理用戶態發下來的消息
int32_t LedDriverDispatch(struct HdfDeviceIoClient *client, int cmdCode, struct HdfSBuf *data, struct HdfSBuf *reply)
{
uint8_t contrl;
HDF_LOGE("Led driver dispatch");
if (client == NULL || client->device == NULL)
{
HDF_LOGE("Led driver device is NULL");
return HDF_ERR_INVALID_OBJECT;
}

switch (cmdCode)
{
/* 接收到用戶態發來的LED_WRITE_READ命令 */
case LED_WRITE_READ:
/* 讀取data里的數據,賦值給contrl */
HdfSbufReadUint8(data,&contrl);
switch (contrl)
{
/* 開燈 */
case LED_ON:
GpioWrite(g_Stm32Mp1ILed.gpioNum, GPIO_VAL_LOW);
status = 1;
break;
/* 關燈 */
case LED_OFF:
GpioWrite(g_Stm32Mp1ILed.gpioNum, GPIO_VAL_HIGH);
status = 0;
break;
/* 狀態翻轉 */
case LED_TOGGLE:
if(status == 0)
{
GpioWrite(g_Stm32Mp1ILed.gpioNum, GPIO_VAL_LOW);
status = 1;
}
else
{
GpioWrite(g_Stm32Mp1ILed.gpioNum, GPIO_VAL_HIGH);
status = 0;
}
break;
default:
break;
}
/* 把LED的狀態值寫入reply, 可被帶至用戶程序 */
if (!HdfSbufWriteInt32(reply, status))
{
HDF_LOGE("replay is fail");
return HDF_FAILURE;
}
break;
default:
break;
}
return HDF_SUCCESS;
}

3.2 從驅動程序接受數據

剛剛實現了用戶態向內核態發送指令,同理,內核態也可以向用戶態發送數據。

讓我們看看驅動代碼中向用戶發送LED狀態信息的代碼(在led.c中LedDriverDispatch函數的一部分)

/* 把LED的狀態值寫入reply, 可被帶至用戶程序 */
if (!HdfSbufWriteInt32(reply, status))
{
HDF_LOGE("replay is fail");
return HDF_FAILURE;
}

下面是用戶程序接收的部分

/* 讀取驅動的回復數據 */
if (!HdfSbufReadInt32(reply, &replyData))
{
printf("fail to get service call reply!\r\n");
ret = HDF_ERR_INVALID_OBJECT;
goto out;
}
printf("\r\nGet reply is: %d\r\n", replyData);

四、編寫編譯構建文件BUILD.gn

在BUILD.gn中添加以下代碼

import("http://build/lite/config/component/lite_component.gni")

HDF_FRAMEWORKS = "http://drivers/framework"

executable("led_lib") {
output_name = "my_led"
sources = [
"my_led_app.c",
]

include_dirs = [
"$HDF_FRAMEWORKS/ability/sbuf/include",
"$HDF_FRAMEWORKS/core/shared/include",
"$HDF_FRAMEWORKS/core/host/include",
"$HDF_FRAMEWORKS/core/master/include",
"$HDF_FRAMEWORKS/include/core",
"$HDF_FRAMEWORKS/include/utils",
"$HDF_FRAMEWORKS/utils/include",
"$HDF_FRAMEWORKS/include/osal",
"http://drivers/adapter/uhdf/posix/include",
"http://third_party/bounds_checking_function/include",
"http://base/hiviewdfx/hilog_lite/interfaces/native/innerkits",
]

deps = [
"http://base/hiviewdfx/hilog_lite/frameworks/featured:hilog_shared",
"http://drivers/adapter/uhdf/manager:hdf_core",
"http://drivers/adapter/uhdf/posix:hdf_posix_osal",
]
}

lite_component("my_led_app") {
features = [
":led_lib",
]
}

五、編譯燒錄

參考之前文章Linux下配置小熊派-鴻蒙·叔設備開發(南向)的開發環境

六、運行

串口連接小熊派終端

./bin/my_led 0 #關閉LED
./bin/my_led 1 #開啟LED
./bin/my_led 2 #翻轉LED

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

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

??https://harmonyos.51cto.com??

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

2022-02-14 14:28:57

驅動開發鴻蒙系統

2022-02-25 14:33:03

JS接口鴻蒙應用開發

2022-02-17 19:59:10

LED燈開發鴻蒙

2023-09-06 15:35:14

2022-02-11 13:49:42

Linux系統鴻蒙

2023-03-20 16:21:26

ADC數字轉換器

2016-12-20 12:34:46

存儲MySQL流程

2023-03-21 18:06:49

ADC數字轉換器

2022-03-14 15:11:01

harmony鴻蒙操作系統

2022-08-10 15:58:54

LED燈鴻蒙

2021-12-30 16:12:07

鴻蒙HarmonyOS應用

2022-08-08 19:35:37

HDF驅動開發鴻蒙

2025-04-10 16:01:21

2023-03-24 14:47:24

NAPI框架HDF框架

2011-08-23 16:23:13

OracleMySQLSQL Server

2024-09-23 19:18:56

數據驅動數據收集數據分析

2017-03-23 14:58:00

互聯網

2015-02-06 13:32:57

TestinCTO徐琨

2021-08-02 09:50:47

Vetur源碼SMART
點贊
收藏

51CTO技術棧公眾號

国产精品手机在线| 日韩在线观看免费网站| 欧美aⅴ在线观看| 国际av在线| 男人操女人的视频在线观看欧美| 久久天天躁日日躁| 久久久久久婷婷| 99久久亚洲国产日韩美女| 一区二区视频免费在线观看| 鲁鲁视频www一区二区| 国产又粗又猛又黄又爽| 极品少妇一区二区三区| 中文字幕精品网| 污片免费在线观看| 国产日韩欧美中文在线| 色综合天天综合狠狠| 成人在线免费观看网址| 国产乱子伦三级在线播放| 国产成人综合视频| 国产精品久久久久久久久久久不卡 | 2019中文亚洲字幕| 欧美色欧美亚洲高清在线视频| 在线成人av电影| 免费a级毛片在线观看| 国产盗摄精品一区二区三区在线 | 少妇久久久久久久| 国产真实久久| 久久久av电影| 91视频免费看片| 你懂的一区二区三区| 精品伦理精品一区| 人妻激情偷乱视频一区二区三区| 不卡亚洲精品| 色国产综合视频| 无码人妻丰满熟妇区96| caoporn-草棚在线视频最| 国产精品免费人成网站| 欧美亚洲免费高清在线观看| 婷婷色在线视频| 精品在线观看免费| 国产美女主播一区| 亚洲黄色三级视频| 亚洲美女网站| 韩日精品中文字幕| 精品无码黑人又粗又大又长| 欧美激情亚洲| 久久99亚洲精品| 欧美日韩一级在线观看| 一区二区蜜桃| 久操成人在线视频| 久久久久久久久久久久国产| 欧美成人亚洲| 欧美国产日韩在线| 久热这里只有精品在线| 国产综合欧美| 韩剧1988在线观看免费完整版 | 欧美在线一二三| xxxx一级片| 久久国产三级| 日韩一区二区精品在线观看| 欧美人与性动交α欧美精品| 伊人www22综合色| 亚洲第一av在线| 一级做a爰片毛片| 国产欧美日韩影院| 最近2019年好看中文字幕视频| 9.1片黄在线观看| 图片区亚洲欧美小说区| 欧美黑人性猛交| 中文字幕亚洲精品在线| 久久亚洲风情| 91精品一区二区| 亚洲成人777777| 91在线视频网址| 欧美日韩一区二| 尤物视频在线免费观看| 一区二区三区丝袜| 国内性生活视频| 成人国产激情| 日韩欧美三级在线| 美女又爽又黄视频毛茸茸| 国产精选一区| 欧美日韩第一视频| www.毛片.com| 极品美女销魂一区二区三区 | 不卡一区综合视频| 精品中文字幕在线| 男人日女人网站| 韩国一区二区视频| 久久久久无码国产精品一区| 在线激情免费视频| 亚洲一区二区三区在线看| 久久久久久久久久久免费视频| 久久精品国产精品亚洲毛片| 欧美成人伊人久久综合网| 国产成人av一区二区三区不卡| 四虎成人av| 欧美亚洲伦理www| 国产精品人人妻人人爽| 99re66热这里只有精品3直播 | 日本最新在线视频| 亚洲成人激情自拍| 欧美激情国内自拍| 亚洲精品进入| 欧美日韩成人在线观看| 在线观看一二三区| 99国产欧美另类久久久精品| 日本一级淫片演员| 91久久国产综合久久91猫猫| 日韩视频免费直播| 在线免费看视频| 亚洲一级在线| 97超级碰碰| 久草中文在线观看| 色婷婷久久久久swag精品| 国模大尺度视频| 成人综合久久| 日本成人精品在线| 日韩在线视频免费| 一区二区视频在线| 亚洲涩涩在线观看| 欧美亚洲国产一区| 琪琪亚洲精品午夜在线| 熟妇人妻一区二区三区四区| 亚洲柠檬福利资源导航| 超碰在线播放91| 国产剧情一区| 国产91露脸中文字幕在线| 日韩一区免费视频| 亚洲成人自拍网| 秋霞午夜鲁丝一区二区| 在线电影一区二区| 国产美女久久精品| 在线免费观看黄色网址| 欧美日韩一区二区三区不卡 | 亚洲日本一区二区三区| 国产日韩欧美久久| japanese国产精品| 日韩av成人在线观看| 日本亚洲一区| 欧美色播在线播放| 一二三不卡视频| 亚洲一区成人| 欧洲精品国产| 国产一区二区主播在线| 中文字幕国产精品| 中文字幕久久网| 国产精品盗摄一区二区三区| 蜜臀一区二区三区精品免费视频| 狠狠色丁香婷婷综合影院| 清纯唯美亚洲综合| 国产在线观看高清视频| 欧洲亚洲国产日韩| 免费成人深夜蜜桃视频| 久久精品国产999大香线蕉| 亚洲毛片aa| vam成人资源在线观看| 久久99精品国产99久久6尤物| 国内老熟妇对白hdxxxx| 亚洲一二三四久久| 免费a在线观看播放| 毛片一区二区| 天堂av一区二区| crdy在线观看欧美| 欧美精品电影免费在线观看| 色香蕉在线视频| 色国产综合视频| www.av免费| 不卡影院免费观看| 国产裸体舞一区二区三区| 日韩不卡一区| 亚洲va国产va天堂va久久| 久草中文在线| 51午夜精品国产| 九九九免费视频| 国产精品综合网| 免费极品av一视觉盛宴| 日韩av不卡一区| 国产精品电影在线观看| 2024最新电影免费在线观看| 亚洲国产欧美一区| 国产成人精品一区二区色戒| 成人欧美一区二区三区黑人麻豆 | 欧美国产精品日韩| 免费在线黄色网址| 69av一区二区三区| 欧美三级一区二区三区| 中文成人av在线| 久久黄色一级视频| 日韩在线一二三区| 青草视频在线观看视频| 久久综合欧美| 99爱精品视频| 日韩经典一区| 久久久久久这里只有精品| 成人欧美亚洲| 精品国产91洋老外米糕| 中文字幕资源网| 亚洲成国产人片在线观看| 欧美日韩生活片| 91色乱码一区二区三区| 欧美国产日韩在线视频| 丝袜诱惑制服诱惑色一区在线观看| 99久久久无码国产精品性色戒| 思热99re视热频这里只精品| 91美女高潮出水| 婷婷激情一区| 久久男人资源视频| 1stkiss在线漫画| 在线国产精品视频| 视频二区在线观看| 日韩欧美国产午夜精品| 在线观看免费观看在线| 欧美性xxxx| 国产精品成人免费一区二区视频| 中文字幕在线观看一区| 在线国产视频一区| 91丨九色porny丨蝌蚪| 在线成人精品视频| 极品尤物av久久免费看| 免费一级特黄录像| 久久亚洲不卡| 国产亚洲天堂网| 99精品福利视频| 欧美久久在线观看| 欧美日本不卡| 日韩国产精品毛片| 在线观看免费一区二区| 影音先锋欧美在线| 欧美激情国产在线| 性欧美大战久久久久久久免费观看| 亚洲欧洲av| 久久久av水蜜桃| 天美av一区二区三区久久| 国产另类自拍| 国产精品欧美大片| 国产激情美女久久久久久吹潮| 精品国产一区二区三区2021| 国产自摸综合网| 欧美成a人片在线观看久| 久久久久久中文字幕| 懂色av一区| 国模精品视频一区二区| 草莓视频丝瓜在线观看丝瓜18| 欧美乱大交做爰xxxⅹ性3| a视频在线播放| 欧美美女操人视频| xxxcom在线观看| 性色av香蕉一区二区| 超碰在线中文字幕| 国产91精品黑色丝袜高跟鞋 | 国产欧美亚洲视频| 亚洲国产91视频| 亚洲va男人天堂| 成人福利一区| 国产精品一区二区欧美| 天天躁日日躁狠狠躁欧美| 欧美一区二区三区精美影视 | 色偷偷av一区二区三区| 麻豆tv入口在线看| 欧美丰满片xxx777| 密臀av在线播放| 国产aⅴ夜夜欢一区二区三区| 日韩经典一区| 91手机在线视频| 西瓜成人精品人成网站| 日本婷婷久久久久久久久一区二区 | 亚洲优女在线| 国产精品免费视频久久久| 91视频成人| 狠狠色综合网站久久久久久久| 综合亚洲色图| 欧美一区二区综合| 99精品视频在线观看播放| 狠狠精品干练久久久无码中文字幕 | 国产精品网站在线播放| 欧美日韩在线观看成人| 黑人与娇小精品av专区| 中文字幕在线播放av| 日韩精品一区在线| 日韩av免费观影| 精品国产一区av| 女人让男人操自己视频在线观看| 国产精品久久久久久亚洲调教| 精品视频在线观看免费观看| 狠狠色综合网站久久久久久久| 成人免费a**址| 大伊香蕉精品视频在线| 免费高清视频精品| 国产一级免费片| 国产精品乱码久久久久久| 国产精品二区一区二区aⅴ| 欧美性生交片4| 熟妇人妻系列aⅴ无码专区友真希| 中文字幕亚洲字幕| 岛国在线视频网站| 成人免费黄色网| 精品中文一区| 国产一线二线三线女| 精品亚洲成a人| 国产色视频一区二区三区qq号| 亚洲精品免费电影| 国产女优在线播放| 日韩精品久久久久| 怡红院av在线| 国产精品久久久久久久av电影| 黑人久久a级毛片免费观看| 亚洲一区不卡在线| 久久亚洲图片| 久久久国产精品无码| 亚洲三级电影网站| 一道本无吗一区| 亚洲人在线观看| aaa在线播放视频| 51蜜桃传媒精品一区二区| 欧美日一区二区| 国产成人久久婷婷精品流白浆| 高清免费成人av| 中文字幕在线有码| 欧美精品成人一区二区三区四区| 能在线看的av| 国产91精品久久久久久| 97se亚洲| 青草网在线观看| 国产精品小仙女| 91杏吧porn蝌蚪| 欧美精品免费视频| 午夜视频在线观看网站| 国产精品电影观看| av资源久久| 精品日韩久久久| 中文字幕免费不卡| 久草热在线观看| 中文字幕不卡av| 视频一区在线免费看| 日韩高清国产精品| 日韩电影在线一区二区| 无码人妻aⅴ一区二区三区69岛| 日韩欧美在线免费观看| 三级无遮挡在线观看| 欧美一区二区三区艳史| 六月丁香久久丫| 看av免费毛片手机播放| 91麻豆福利精品推荐| 一二三区免费视频| 亚洲视频专区在线| 秋霞国产精品| 亚洲一区二区在线免费观看| 精品午夜一区二区三区在线观看| 自拍偷拍第9页| 91精品国产91综合久久蜜臀| a级在线观看| 国产精品一区二区免费| 国产精品久久久久9999高清| 亚洲激情视频小说| 欧美色视频在线观看| 久久99精品久久| 国产美女99p| 美女精品在线| 国产一级淫片久久久片a级| 欧美精品一卡两卡| 欧美xxxx视频| 欧美12av| 久久精品国产99国产精品| 久久黄色小视频| 日韩av网站在线| 成人亚洲视频| 人妻激情另类乱人伦人妻| av欧美精品.com| 最近中文在线观看| 欧美不卡视频一区发布| 久久婷婷国产| 色哟哟精品视频| 夜夜嗨av一区二区三区四季av| 色香蕉在线视频| 国产精品一香蕉国产线看观看| 欧美一区久久| 午夜理伦三级做爰电影| 欧美美女一区二区| www.色在线| 亚洲一区高清| 93久久精品日日躁夜夜躁欧美| 一本到在线视频| 8090成年在线看片午夜| 欧美电影免费| www.超碰97| 欧美一区二区三区免费大片 | 国产精品亚洲网站| 欧美日韩久久| 亚洲色图 激情小说| 日韩精品一区二区三区在线| 免费观看成人性生生活片| wwwjizzjizzcom| 中文av一区特黄| 少妇高潮久久久| 亚洲精品日韩av| 日韩精品一区第一页| 精品无码一区二区三区电影桃花| 国产亚洲人成a一在线v站| 国产精品对白|