精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

精品黑人一区二区三区国语馆| 青青草视频播放| 91亚洲欧美| 美腿丝袜在线亚洲一区 | 国产裸体无遮挡| 中文无码久久精品| 欧美大片一区二区| 大陆极品少妇内射aaaaa| 人成在线免费视频| 麻豆精品国产91久久久久久 | 黄色av免费观看| 在线一区免费观看| 亚洲精品一区在线观看| 黄色免费视频大全| 尤物视频在线免费观看| 国产成人综合精品三级| 88xx成人精品| jizz日本在线播放| 一区二区三区免费在线看| 欧美色视频日本高清在线观看| 日韩资源av在线| 国产精品无码一区二区桃花视频 | 亚洲视频在线观看免费| 911福利视频| av电影免费在线看| 中文在线免费一区三区高中清不卡| 亚洲伊人一本大道中文字幕| 91精品国产高潮对白| 国产精品一在线观看| 欧美www视频| 高清av免费看| 国产在线美女| 一区二区三区免费观看| 日韩精品一线二线三线| 91国内精品久久久| 亚洲黄色精品| 久久精品亚洲94久久精品| jlzzjizz在线播放观看| 亚洲福利影视| 91久久久免费一区二区| 韩日视频在线观看| 视频三区在线| 久久久久久久精| 高清免费日韩| 一区二区三区午夜| 久久美女性网| 午夜精品在线观看| 手机免费观看av| 亚洲国产合集| 精品av久久707| 一级做a免费视频| а√天堂8资源中文在线| 亚洲日本青草视频在线怡红院| 成人在线视频电影| 国产精品热久久| 美国毛片一区二区三区| 亚洲精品人人| 日韩精品在线观| 伊人精品视频在线观看| 69堂精品视频在线播放| 精品久久香蕉国产线看观看亚洲 | 8x海外华人永久免费日韩内陆视频| 国产又色又爽又高潮免费| 免费欧美激情| 亚洲第一页中文字幕| 奇米777在线视频| 亚洲综合资源| 在线播放中文字幕一区| 国产日韩一区二区在线| 国产资源在线观看入口av| 亚洲综合色自拍一区| 日韩中文字幕亚洲精品欧美| 麻豆免费在线视频| 中文字幕在线播放不卡一区| 亚洲一区影院| 欧美r级在线| 亚洲国产岛国毛片在线| 欧美一区二视频在线免费观看| 天堂成人在线| 91丨porny丨首页| 久久精品国产精品青草色艺| 日本黄色大片视频| 白白色 亚洲乱淫| 国产伦精品一区二区三区免 | 久久精品国产亚洲av麻豆| 日本一区福利在线| 亚洲成avwww人| xxx中文字幕| 一区二区免费| 日韩第一页在线| 国产美女免费无遮挡| 欧美日韩伦理在线免费| 日韩在线免费高清视频| 欧美午夜激情影院| 天堂美国久久| 欧美激情精品在线| 国产精品xxxx喷水欧美| 老司机久久99久久精品播放免费| 国产精品麻豆va在线播放| 一级黄色a视频| 国产a精品视频| 精品免费视频123区| 亚洲日本在线播放| 国产精品午夜久久| 黄色一级片国产| 欧美久久天堂| 欧美日韩成人综合天天影院| 18深夜在线观看免费视频| 日本成人精品| 亚洲欧美精品中文字幕在线| 日韩一区二区三区四区视频| 国产精品v日韩精品v欧美精品网站 | ,一级淫片a看免费| 国内精品写真在线观看| 国产日韩一区二区| 淫片在线观看| 午夜亚洲国产au精品一区二区| 青青青国产在线视频| 国色天香久久精品国产一区| 日韩电影免费观看在线观看| 黄色国产在线播放| 99riav1国产精品视频| 国产精品久久久久一区二区| 亚洲AV无码国产精品午夜字幕| 国产视频911| av之家在线观看| 亚洲3区在线| www.色综合| 成人黄色片在线观看| caoporm超碰国产精品| 亚洲一区 在线播放| 亚洲精品三区| 综合136福利视频在线| 国产精品久久久久久人| 91视频国产资源| 欧美 丝袜 自拍 制服 另类| 99re热精品视频| 精品中文字幕乱| 国产露脸91国语对白| 国产精品亲子乱子伦xxxx裸| 免费男同深夜夜行网站| 国产精品嫩草影院在线看| 2020久久国产精品| 熟妇人妻系列aⅴ无码专区友真希| 亚洲欧美日韩在线不卡| av噜噜在线观看| 国产精品国产三级国产在线观看| 国产精品福利片| 国产永久免费高清在线观看视频| 色综合久久久久综合| 激情综合丁香五月| 久久久久国产精品一区三寸| 欧美国产一二三区| 欧美色网在线| 在线观看亚洲区| 91九色蝌蚪91por成人| 国产精品毛片无遮挡高清| 亚洲成人天堂网| 亚洲影视一区| 成人自拍偷拍| 国产伦理精品| 亚洲男女性事视频| 亚洲综合成人av| 国产精品伦一区| 日韩不卡的av| 亚洲高清激情| 麻豆一区区三区四区产品精品蜜桃| 综合久久2023| 国产一区二区三区在线观看视频| 亚洲香蕉在线视频| 亚洲麻豆国产自偷在线| 91成人在线观看喷潮蘑菇| 亚洲人成免费| 日韩中文字幕一区二区| 国产在线一区不卡| 韩国v欧美v日本v亚洲| 五月婷婷在线播放| 欧美日韩一本到| 一区视频免费观看| 97se亚洲国产综合自在线观| 日韩无套无码精品| 伊人色**天天综合婷婷| 国产欧美欧洲| 91成人抖音| 欧美区在线播放| 久青青在线观看视频国产| 欧美日韩精品一区二区天天拍小说| 中文字幕人妻一区二| 成人国产亚洲欧美成人综合网 | 老色鬼在线视频| 亚洲欧美国产一区二区三区| 一本到在线视频| 午夜激情久久久| 99久久久无码国产精品不卡| 成熟亚洲日本毛茸茸凸凹| 99久久久无码国产精品6| 91精品一区二区三区综合| 精品视频免费观看| 四虎影视成人精品国库在线观看| 欧美国产激情18| 超碰在线影院| 亚洲精品mp4| 精品免费久久久| 欧美午夜一区二区三区免费大片| a级片在线观看免费| 国产日韩成人精品| 国产艳妇疯狂做爰视频| 日韩二区三区在线观看| 亚洲人成无码网站久久99热国产| av中文字幕一区二区| 51国偷自产一区二区三区 | 天堂中文8资源在线8| 日韩高清a**址| www.国产三级| 欧美区在线观看| 亚洲综合图片网| 午夜一区二区三区视频| 91日韩中文字幕| 国产欧美日本一区视频| 欧美夫妇交换xxx| 国产老女人精品毛片久久| 天天爱天天操天天干| 蜜桃久久av| 国产一二三在线视频| 日韩精品一区二区三区免费观看 | 神宫寺奈绪一区二区三区| 欧美日韩国产精品成人| aaaaaa毛片| 无码av免费一区二区三区试看| 欧美三级日本三级| 国产精品少妇自拍| 精品国产aaa| 久久久噜噜噜久久人人看| 国产中文字幕一区二区| 成人免费毛片a| 久久av一区二区三| 国产盗摄精品一区二区三区在线| 男人的天堂最新网址| 日韩av一二三| 欧美自拍小视频| 视频一区在线播放| 亚洲熟妇av一区二区三区| 午夜影院日韩| 欧美日韩久久久| 国产又粗又长又黄的视频| 欧美国产亚洲另类动漫| 亚洲精品一区二区三区影院忠贞| 91丝袜美腿高跟国产极品老师| 久久久久成人精品无码中文字幕| 成人毛片视频在线观看| 无码任你躁久久久久久老妇| 成人亚洲精品久久久久软件| 成人区人妻精品一区二| av一区二区三区| 亚洲调教欧美在线| 91一区二区在线| 亚洲精品乱码久久久久久久| 91免费观看国产| 亚洲av综合一区二区| 国产亚洲一区二区三区在线观看| 亚洲黄色小说视频| 国产精品狼人久久影院观看方式| 九九热视频在线免费观看| 日韩美女啊v在线免费观看| 黑鬼狂亚洲人videos| 亚洲午夜精品17c| 久久精品视频5| 欧美日韩在线播放一区| 国产毛片毛片毛片毛片| 欧美本精品男人aⅴ天堂| 天堂影院在线| 日韩亚洲综合在线| 欧美videosex性欧美黑吊| 26uuu国产精品视频| 国产日本久久| 成人xxxxx色| 久久99影视| 亚洲人成网站在线观看播放| 欧美精品日韩| 日本免费黄视频| 韩国精品久久久| 国产精品手机在线观看| 欧美国产丝袜视频| 国产一级特黄毛片| 欧美午夜一区二区三区免费大片| 国产chinasex对白videos麻豆| 欧美精品一区二区在线观看| 国产高清免费在线播放| 欧美大胆在线视频| 欧洲av一区二区| 91传媒视频在线观看| 九九精品久久| 91视频 - 88av| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产精品二区视频| 国产日韩精品一区二区三区在线| 久久久国产精华液| 在线观看av不卡| 少妇av在线播放| 日韩中文字幕第一页| 咪咪网在线视频| 91在线观看免费高清| 九一精品国产| 日韩精品一区二区在线视频| 日本在线观看不卡视频| 亚洲麻豆一区二区三区| 综合av第一页| 在线观看 亚洲| 精品国产一区a| 日本在线观看www| 日本精品视频在线播放| 中文字幕日韩在线| 一区二区三区四区在线视频| 亚洲永久免费精品| 折磨小男生性器羞耻的故事| 国产精品不卡视频| 波多野结衣在线观看视频| 亚洲国产成人久久综合| 色呦呦在线视频| 成人性生交大片免费看视频直播 | 亚洲高清一二三区| 二区在线播放| 国产精品专区第二| 国产中文字幕一区二区三区| 成年人午夜视频在线观看| 国产盗摄视频一区二区三区| 神马久久精品综合| 欧美亚洲精品一区| 国产视频二区在线观看| 91av在线影院| 偷拍亚洲色图| 亚洲中文字幕无码专区| 成人午夜在线视频| 久久久久久久久久久网| 欧美一区二区三区男人的天堂| 午夜视频在线观看网站| 国产美女被下药99| 日本欧美国产| 波多结衣在线观看| 国产日产精品1区| 五月天婷婷导航| 亚洲人成欧美中文字幕| 亚洲深夜视频| 免费亚洲精品视频| 日韩精品电影在线| 亚洲最大成人综合网| 欧美亚日韩国产aⅴ精品中极品| 精品视频一二三| 国产精品第三页| 国产探花在线精品| 男女男精品视频站| 国产精品国产三级国产aⅴ原创| 亚洲天堂手机在线| 久久精品美女视频网站| 日韩在线电影| 国产一区二区片| 99久久免费国产| 国产污视频网站| 中文在线不卡视频| 国产精品3区| 免费看欧美一级片| 91视视频在线观看入口直接观看www | 视频二区在线观看| 日韩免费在线视频| 色97色成人| 一区二区在线免费观看视频| 亚洲成a人片综合在线| 亚洲欧美一区二区三| 国产精品欧美亚洲777777| 91tv精品福利国产在线观看| 中文字幕乱码在线人视频| 午夜视频在线观看一区二区 | 日本一区影院| 可以看毛片的网址| 国产日韩精品一区二区浪潮av| 91亚洲精品国偷拍自产在线观看| 欧美刺激性大交免费视频| 久久夜色精品国产噜噜av小说| 日韩 欧美 高清| 综合分类小说区另类春色亚洲小说欧美| 高潮毛片7777777毛片| 26uuu国产精品视频| 国产精品麻豆久久| 熟妇人妻久久中文字幕| 欧美天堂一区二区三区| 欧美bbbxxxxx| 日韩视频精品| 粉嫩在线一区二区三区视频| 国产女主播喷水视频在线观看| 精品久久久av| 台湾亚洲精品一区二区tv| 天堂中文av在线| 欧美日韩亚洲视频一区| 精品欧美色视频网站在线观看| 精品国产乱码久久久久久久软件 | 999久久久91| aa一级黄色片| 日韩一区二区三区在线视频| 欧美精品日日操| 国产精品videossex国产高清 |