91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

OpenHarmony HDF HDI的IPC模式具體實(shí)現(xiàn)方法和驅(qū)動(dòng)框架能力

電子發(fā)燒友開(kāi)源社區(qū) ? 來(lái)源:OpenAtom OpenHarmony ? 作者:OAOH ? 2021-09-22 14:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

HDI接口概述

回顧之前的文章,HDF 驅(qū)動(dòng)框架的一個(gè)重要功能是為系統(tǒng)提供穩(wěn)定的統(tǒng)一的硬件接口,這樣才能保證系統(tǒng)服務(wù)可以運(yùn)行在不同硬件上而不需要額外的適配工作,HDI(Hardware Device Interfaces)正是為了實(shí)現(xiàn)該目的而設(shè)計(jì)。

HDI 是對(duì)硬件功能的較高層次抽象接口,各類(lèi)外設(shè)完成 HDI 接口定義后便只會(huì)在 HDI 的兼容性規(guī)則下進(jìn)行變更,從而保證接口的穩(wěn)定性。具體的驅(qū)動(dòng)實(shí)現(xiàn)不需要再重復(fù)定義 HDI 接口,只需要按需實(shí)現(xiàn)即可接入系統(tǒng)功能。

在不同量級(jí)的 OpenHarmony 系統(tǒng)上,HDI 存在兩種部署形態(tài),IPC 模式和直通模式。

在輕量級(jí) OpenHarmony 系統(tǒng)上,出于減小系統(tǒng)性能負(fù)載考慮,HDI 實(shí)現(xiàn)為用戶(hù)態(tài)共享庫(kù),由系統(tǒng)服務(wù)直接加載 HDI 實(shí)現(xiàn)到自己進(jìn)程中函數(shù)調(diào)用使用。HDI 實(shí)現(xiàn)封裝具體的用戶(hù)態(tài)-內(nèi)核態(tài)交互過(guò)程,當(dāng)需要訪(fǎng)問(wèn)驅(qū)動(dòng)程序時(shí)使用 IO Service 請(qǐng)求將消息通過(guò) system call 方式調(diào)用到內(nèi)核驅(qū)動(dòng)實(shí)現(xiàn)。

在標(biāo)準(zhǔn) OpenHarmony 系統(tǒng)上,HDI 以獨(dú)立服務(wù)進(jìn)程方式部署,系統(tǒng)服務(wù)只加載 HDI 客戶(hù)端實(shí)現(xiàn)到自己進(jìn)程中,實(shí)際業(yè)務(wù)運(yùn)行在獨(dú)立進(jìn)程中,客戶(hù)端通過(guò) IPC 與服務(wù)端交互,便于架構(gòu)解耦、權(quán)限管理。

HDI接口實(shí)現(xiàn)

直通模式為函數(shù)實(shí)現(xiàn)方式,無(wú)論調(diào)用還是實(shí)現(xiàn)都不需要其他組件支持即可實(shí)現(xiàn),這里將重點(diǎn)分析 IPC 模式的實(shí)現(xiàn)。

HDI發(fā)布

HDI IPC 模式基于 OpenHarmony 系統(tǒng)通信框架的通用模型,但是因?yàn)轵?qū)動(dòng)很多時(shí)候涉及到底層操作和多系統(tǒng)遷移的場(chǎng)景而使用C語(yǔ)言編寫(xiě),所以驅(qū)動(dòng)框架還提供了 HDI 服務(wù)的 C 語(yǔ)言實(shí)現(xiàn)的基礎(chǔ)組件,C++實(shí)現(xiàn)則主要使用系統(tǒng)通信框架組件。

HDI 服務(wù)發(fā)布基于 UHDF(用戶(hù)態(tài) HDF 驅(qū)動(dòng)框架)實(shí)現(xiàn),通用的服務(wù)發(fā)布實(shí)現(xiàn)如下。

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

int SampleDriverBind(struct HdfDeviceObject *deviceObject){    HDF_LOGE("SampleDriverBind enter!");    static struct IDeviceIoService testService = {        .Dispatch = SampleServiceDispatch, // 服務(wù)回調(diào)接口    };    deviceObject->service = &testService;    return HDF_SUCCESS;} int SampleDriverInit(struct HdfDeviceObject *deviceObject){    HDF_LOGE("SampleDriverInit enter");     return HDF_SUCCESS;} void SampleDriverRelease(struct HdfDeviceObject *deviceObject){    HDF_LOGE("SampleDriverRelease enter");    return;} struct HdfDriverEntry g_sampleDriverEntry = {    .moduleVersion = 1,    .moduleName = "sample_driver",    .Bind = SampleDriverBind,    .Init = SampleDriverInit,    .Release = SampleDriverRelease,};
HDF_INIT(g_sampleDriverEntry);

首先要添加一個(gè) UHDF 驅(qū)動(dòng)用于發(fā)布 IoService 服務(wù),IoService 設(shè)備服務(wù)即為 HDI 服務(wù)實(shí)體。實(shí)現(xiàn)方式與 KHDF 驅(qū)動(dòng)一致。

2. 實(shí)現(xiàn)服務(wù)響應(yīng)接口

int32_t SampleServiceOnRemoteRequest(struct HdfDeviceIoClient *client, int cmdId,    struct HdfSBuf *data, struct HdfSBuf *reply){    switch (cmdId) {        case SAMPLE_SERVICE_PING:            return SampleServiceStubPing(client, data, reply);        … …        default:            HDF_LOGE("SampleServiceDispatch: not support cmd %d", cmdId);            return HDF_ERR_INVALID_PARAM;    }}static int32_t SampleServiceDispatch(struct HdfDeviceIoClient *client, int cmdId,    struct HdfSBuf *data, struct HdfSBuf *reply){    return SampleServiceOnRemoteRequest(client, cmdId, data, reply);}

當(dāng)收到 HDI 調(diào)用時(shí),服務(wù)響應(yīng)接口"SampleServiceDispatch"將會(huì)被調(diào)用。

  • client 調(diào)用者對(duì)象,在用戶(hù)態(tài)驅(qū)動(dòng)中暫時(shí)未支持
  • cmdId 調(diào)用命令字,用于區(qū)分調(diào)用的 API
  • data 調(diào)用入?yún)⑿蛄谢瘜?duì)象,在 IPC 調(diào)用場(chǎng)景為 parcel 對(duì)象的 C 語(yǔ)言封裝,入?yún)⑿枰褂眯蛄谢涌趶?data 對(duì)象中獲取后再使用
  • reply 調(diào)用出參對(duì)象,需要返回給調(diào)用的信息寫(xiě)入該序列化對(duì)象

如果 C++實(shí)現(xiàn)客戶(hù)端可以使用下面接口將 sbuf 對(duì)象轉(zhuǎn)換為 parcel 對(duì)象后操作:

int32_t SbufToParcel(struct HdfSBuf *sbuf, OHOS::MessageParcel **parcel);
3. UHDF 驅(qū)動(dòng)配置
platform :: host {    hostName = "sample_host";    priority = 50;    sample_device :: device {        device0 :: deviceNode {            policy = 2;            priority = 100;            moduleName = "libsample_driver.z.so";            serviceName = "sample_driver_service";        }    }}

參數(shù)說(shuō)明:

  • host 一個(gè) host 節(jié)點(diǎn)即為一個(gè)獨(dú)立進(jìn)程,如果需要獨(dú)立進(jìn)程,新增屬于自己的 host 節(jié)點(diǎn)
  • policy 服務(wù)發(fā)布策略,HDI 服務(wù)設(shè)置為 2
  • moduleName 驅(qū)動(dòng)實(shí)現(xiàn)庫(kù)名
  • serviceName 服務(wù)名稱(chēng),請(qǐng)保持全局唯一性

因?yàn)?HDI 服務(wù) C 和 C++實(shí)現(xiàn)使用的 IPC 組件不一樣,面向?qū)ο髮?shí)現(xiàn)也不一致,所以在具體實(shí)現(xiàn)上存在一些差異。

HDI基礎(chǔ)組件UHDF 框架為了支持 HDI 實(shí)現(xiàn),提供了以下基礎(chǔ)組件(僅用于 C 語(yǔ)言 HDI 實(shí)現(xiàn)):
  • SBuf

SBuf 是同時(shí)支持 KHDF 和 UHDF 驅(qū)動(dòng) IoService 消息序列化的工具對(duì)象。在 UHDF IPC 通信場(chǎng)景中,SBuf 可以與系統(tǒng) IPC 框架序列化對(duì)象 MessageParcel 對(duì)象(僅支持 C++)相互轉(zhuǎn)換,從而實(shí)現(xiàn) C 和 C++實(shí)現(xiàn)的 IPC 互通。

常用 API 如下:

struct HdfSBuf;struct HdfSbufImpl;struct HdfRemoteService;
/** * @brief HdfSBuf類(lèi)型定義。 * * @since 1.0 */enum HdfSbufType {    SBUF_RAW = 0,   /* 用于用戶(hù)態(tài)內(nèi)核態(tài)通信的sbuf類(lèi)型 */    SBUF_IPC,       /* 用于跨進(jìn)程通信的sbuf類(lèi)型 */    SBUF_IPC_HW,    /* 用于擴(kuò)展的預(yù)留類(lèi)型 */    SBUF_TYPE_MAX,  /* sbuf類(lèi)型最大值 */};

bede5c9e-0b50-11ec-8fb8-12bb97331649.png

上述接口均有對(duì)應(yīng)的寫(xiě)入接口,不再一一列舉,可查閱官網(wǎng)API參考文檔。

  • RemoteService

RemoteService 對(duì)象和系統(tǒng) IPC 框架中的 IRemoteObject 對(duì)象(僅支持 C++)對(duì)應(yīng)并可以相互轉(zhuǎn)換,表示一個(gè) IPC 對(duì)象。相關(guān) API 說(shuō)明:
// 消息分發(fā)器,用于服務(wù)端響應(yīng)調(diào)用或者在客戶(hù)端發(fā)起調(diào)用struct HdfRemoteDispatcher {    int (*Dispatch)(struct HdfRemoteService *, int, struct HdfSBuf *, struct HdfSBuf *);};
// RemoteService 死亡回調(diào)對(duì)象struct HdfDeathRecipient {    void (*OnRemoteDied)(struct HdfDeathRecipient *, struct HdfRemoteService *);};
struct HdfRemoteService {    struct HdfObject object_;    struct HdfObject *target;    struct HdfRemoteDispatcher *dispatcher;    bool isHw;};// 以自定義的消息分發(fā)器實(shí)例化一個(gè)RemoteServicestruct HdfRemoteService *HdfRemoteServiceObtain(    struct HdfObject *object, struct HdfRemoteDispatcher *dispatcher);
// 回收RemoteService對(duì)象void HdfRemoteServiceRecycle(struct HdfRemoteService *service);
// 添加RemoteService的死亡通知,如果對(duì)應(yīng)RemoteService的進(jìn)程異常退出,HdfDeathRecipient的回調(diào)接口將被調(diào)用voidHdfRemoteServiceAddDeathRecipient(structHdfRemoteService*service,structHdfDeathRecipient*recipient);
基于 RemoteService 實(shí)現(xiàn)一個(gè)服務(wù)端的示例:
int SampleServiceStubDispatch(    struct HdfRemoteService* service, int code, struct HdfSBuf *data, struct HdfSBuf *reply){    // IPC 調(diào)用響應(yīng)接口    int ret = HDF_FAILURE;    switch (code) {        case SAMPLE_IF_0: {            // do something            break;        }        default: {            ret = HDF_ERR_INVALID_PARAM;        }    }    return ret;}bool SampleStubConstruct(){    // 構(gòu)造消息分發(fā)器,實(shí)現(xiàn)消息處理回調(diào)    static struct HdfRemoteDispatcher dispatcher = {        .Dispatch = SampleServiceStubDispatch};// 實(shí)例化RemoteService    inst->remote = HdfRemoteServiceObtain((struct HdfObject *)inst, &dispatcher);    if (inst->remote == NULL) {        HDF_LOGE("Device service manager failed to obtain remote service");        return false;}……

直接基于 RemoteService 實(shí)現(xiàn)服務(wù)端只適用于需要實(shí)現(xiàn)匿名 IPC 服務(wù)的情況,基于 UHDF 發(fā)布 HDI 服務(wù)只需要實(shí)現(xiàn) Driver 綁定的 IoService 即可。

RemoteService 客戶(hù)端對(duì)象只能從 SBuf HdfSBufReadRemoteService 接口獲取。

HDI實(shí)現(xiàn)

  • Driver 為 HDI 服務(wù)的驅(qū)動(dòng)入口實(shí)現(xiàn)
  • IoService 為 HDI 服務(wù)的服務(wù)入口實(shí)現(xiàn),IoService 的 Dispatch 方法中調(diào)用 ServiceStub 中的真正服務(wù)響應(yīng)接口(OnRemoteRequest)
  • ServiceStub 為服務(wù)端實(shí)現(xiàn)對(duì)象,主要處理與 IPC 相關(guān)的業(yè)務(wù)邏輯,在這里完成參數(shù)反序列化后調(diào)用真正的 Service 實(shí)現(xiàn)接口,即 ServiceImpl 接口
  • ServiceImpl 為 HDI 接口的真正實(shí)現(xiàn),這里不關(guān)注 IPC 過(guò)程,只實(shí)現(xiàn)函數(shù)接口。
  • 驅(qū)動(dòng)框架提供了實(shí)現(xiàn)的樣例代碼,可參考 gitee driver 代碼倉(cāng)。

HDI接口調(diào)用

HDI驅(qū)動(dòng)框架HDI接口

HDI 服務(wù)管理功能由驅(qū)動(dòng)框架 DeviceManager 實(shí)現(xiàn),所以驅(qū)動(dòng)框架提供了 HDI 服務(wù)管理相關(guān) HDI 接口。

C++實(shí)現(xiàn):

namespace OHOS {namespace HDI {namespace ServiceManager {namespace V1_0 {
struct IServiceManager : public IRemoteBroker {public:    DECLARE_INTERFACE_DESCRIPTOR(u"HDI.IServiceManager.V1_0");    // get()靜態(tài)方法用于獲取IServiceManager對(duì)象實(shí)例    static ::sptr Get();    // GetService()接口是真正提供的HDI接口,用于查詢(xún)并獲取其他HDI服務(wù)的客戶(hù)端對(duì)象    virtual ::sptr GetService(const char* serviceName) = 0;};} // namespace V1_0} // namespace ServiceManager} // namespace HDI}//namespaceOHOS

C 實(shí)現(xiàn):

#ifdef __cplusplusextern "C" {#endif /* __cplusplus */
struct HDIServiceManager {    struct HdfRemoteService *remote;
    struct HdfRemoteService *(*GetService)(struct HDIServiceManager *self, const char* serviceName);};
struct HDIServiceManager *HDIServiceManagerGet(void);void HDIServiceManagerRelease(struct HDIServiceManager *servmgr);
#ifdef __cplusplus}#endif/*__cplusplus*/

C 語(yǔ)言因?yàn)槿鄙僭拿嫦驅(qū)ο笾С?,這里我們采用 OOC 的實(shí)現(xiàn),函數(shù)方法 HDIServiceManagerGet/Release 用于 HDIServiceManager 對(duì)象的實(shí)例化和釋放,HDI 接口關(guān)聯(lián)在接口對(duì)象內(nèi)部成員中,與 C++實(shí)現(xiàn)類(lèi)似。

HDI客戶(hù)端實(shí)現(xiàn)

HDI 客戶(hù)端同時(shí)支持 C 和 C++實(shí)現(xiàn),實(shí)現(xiàn)方法較為簡(jiǎn)單,只需 realize HDI 接口類(lèi)即可。提供 C++實(shí)現(xiàn)基于系統(tǒng) IPC 子系統(tǒng)的統(tǒng)一模型,C 語(yǔ)言基于 RemoteService 和 SBuf 組件實(shí)現(xiàn),但是有一些公共的約定:

1. 客戶(hù)端提供接口對(duì)象,接口與對(duì)象綁定且必須與 HDI 一致

2. 提供服務(wù)接口對(duì)象的實(shí)例化和釋放接口。

3. 客戶(hù)端實(shí)現(xiàn) IPC 過(guò)程,只為調(diào)用者暴露函數(shù)化接口。

HDI接口調(diào)用

HDI 客戶(hù)端接口已經(jīng)提供了服務(wù)獲取接口,調(diào)用者調(diào)用服務(wù)獲取接口后再調(diào)用服務(wù)對(duì)象方法即可完成 HDI 調(diào)用。

這里以服務(wù)管理 HDI 接口為例:

C++接口調(diào)用:

#include 
void GetTestService(){        auto servmgr = IServiceManager::Get();    if (servmgr == nullptr) {    HDF_LOGE("failed to get IServiceManager");    return;  }
    auto sampleService = servmgr->GetService(TEST_SERVICE_NAME);  if (sampleService == nullptr) {    HDF_LOGE("failed to get TEST_SERVICE");    return;  }    // do something}

C 接口調(diào)用:

#include 
void GetTestService(){        struct HDIServiceManager *servmgr = HDIServiceManagerGet();    if (servmgr == nullptr) {    HDF_LOGE("failed to get IServiceManager");    return;  }
    struct HdfRemoteService *sampleService = servmgr->GetService(servmgr, TEST_SERVICE_NAME);  if (sampleService == nullptr) {    HDF_LOGE("failed to get TEST_SERVICE");    return;  }    // do something}

總結(jié)

本文介紹了 HDI 的總體方案,重點(diǎn)介紹了 HDI 的 IPC 模式具體實(shí)現(xiàn)方法和驅(qū)動(dòng)框架能力,相信對(duì)讀者理解和使用 HDI 有所幫助。

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

    關(guān)注

    7

    文章

    225

    瀏覽量

    22723
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2124

    瀏覽量

    77163
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4970

    瀏覽量

    74018
  • OpenHarmony
    +關(guān)注

    關(guān)注

    33

    文章

    3955

    瀏覽量

    21130

原文標(biāo)題:OpenHarmony HDF HDI基礎(chǔ)能力分析與使用

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    #OpenHarmony 鏡像燒錄

    OpenHarmony
    視美泰
    發(fā)布于 :2026年01月16日 09:42:36

    #OpenHarmony 系統(tǒng)概述

    OpenHarmony
    視美泰
    發(fā)布于 :2026年01月16日 09:39:20

    嵌入式程序設(shè)計(jì)中4種常用模式

    1. 模板方法模式 模板方法模式框架中最常用的設(shè)計(jì)模式。 其根本的思路是將算法由
    發(fā)表于 12-25 07:12

    基于數(shù)據(jù)算法驅(qū)動(dòng)的配方研發(fā)新模式

    、實(shí)現(xiàn)自動(dòng)化優(yōu)化,顯著提升了研發(fā)效率、降低了成本,并推動(dòng)了產(chǎn)品創(chuàng)新。以下是該模式的核心框架、技術(shù)路徑、應(yīng)用場(chǎng)景及未來(lái)趨勢(shì)的詳細(xì)分析。 一、新模式的核心
    的頭像 發(fā)表于 08-06 17:25 ?1174次閱讀

    HDI盲埋孔PCB階數(shù)區(qū)分方法解析

    HDI盲埋孔PCB的階數(shù)是區(qū)分其結(jié)構(gòu)復(fù)雜度的關(guān)鍵指標(biāo),主要通過(guò)增層次數(shù)、鉆孔工藝及連接層數(shù)來(lái)綜合判斷,具體區(qū)分方法如下: 一、基于增層次數(shù)的階數(shù)定義 HDI板結(jié)構(gòu)通常以“a+N+a”或
    的頭像 發(fā)表于 08-05 10:34 ?3855次閱讀
    <b class='flag-5'>HDI</b>盲埋孔PCB階數(shù)區(qū)分<b class='flag-5'>方法</b>解析

    迅為RK3568開(kāi)發(fā)板實(shí)操-HDF驅(qū)動(dòng)配置UART

    對(duì)于不同的平臺(tái),需要在對(duì)應(yīng)的平臺(tái)目錄修改對(duì)應(yīng)的 hcs 文件,接下來(lái)示例為在 rk3568下新增 uart4 uart9 uart7 的修改方法。 修改 vendor/hihope/rk3568
    的頭像 發(fā)表于 06-27 15:58 ?607次閱讀

    第三屆大會(huì)回顧第3期 | FFRT并發(fā)框架OpenHarmony中的設(shè)計(jì)與實(shí)踐

    ,特別是在多核處理器上,可以顯著提高程序的運(yùn)行速度和整體性能,從而改善用戶(hù)體驗(yàn)。OpenHarmony的FFRT并發(fā)編程模型為開(kāi)發(fā)者提供了構(gòu)建異步并發(fā)任務(wù)的能力,以更高效地開(kāi)發(fā)和管理并發(fā)任務(wù)。FFRT是如何設(shè)計(jì)與實(shí)現(xiàn)的,有哪些重
    的頭像 發(fā)表于 06-21 16:53 ?1287次閱讀
    第三屆大會(huì)回顧第3期 | FFRT并發(fā)<b class='flag-5'>框架</b>在<b class='flag-5'>OpenHarmony</b>中的設(shè)計(jì)與實(shí)踐

    ArkUI-X框架LogInterface使用指南

    ArkUI-X框架支持日志攔截能力,Android側(cè)提供原生接口,用于注入LogInterface接口,框架日志及ts日志通過(guò)該接口輸出,本文的核心內(nèi)容是介紹如何在A(yíng)ndroid平臺(tái)上有效利用
    發(fā)表于 06-15 23:20

    迅為RK3568開(kāi)發(fā)板實(shí)操-HDF驅(qū)動(dòng)配置UART-修改HCS配置

    時(shí)表示向內(nèi)核態(tài)發(fā)布服務(wù), 取值為 2 時(shí)表示向內(nèi)核用戶(hù)態(tài)發(fā)布服務(wù) 3 moduleName 的值要與驅(qū)動(dòng)實(shí)現(xiàn)的 HdfDriverEntry 結(jié)構(gòu)體中的 moduleName 相同。 4
    發(fā)表于 05-22 11:32

    APP自動(dòng)化測(cè)試框架

    Server等基礎(chǔ)服務(wù) 實(shí)現(xiàn)多設(shè)備并行測(cè)試與動(dòng)態(tài)環(huán)境切換能力 元素定位體系? 采用ID/XPath/CSS選擇器/UI控件屬性等多維度定位策略 封裝頁(yè)面對(duì)象模型(POM)實(shí)現(xiàn)元素與業(yè)務(wù)邏輯分離 用例管理機(jī)制? 數(shù)據(jù)
    的頭像 發(fā)表于 05-07 07:35 ?691次閱讀
    APP自動(dòng)化測(cè)試<b class='flag-5'>框架</b>

    涂鴉打造超強(qiáng)AI IPC技術(shù)!深度融合視覺(jué)+聽(tīng)覺(jué)感知能力,顛覆傳統(tǒng)IPC交互玩法

    隨著AI大模型能力的突破與成本的下降,IPC開(kāi)始從單一的“看得見(jiàn)”向“看得懂”迭代,并進(jìn)一步向“智能交互、主動(dòng)決策”的方向升級(jí)演進(jìn)。目前主流設(shè)備已標(biāo)配三大能力:即智能識(shí)別與分析、多模態(tài)交互與自動(dòng)化管
    的頭像 發(fā)表于 04-17 18:20 ?1186次閱讀
    涂鴉打造超強(qiáng)AI <b class='flag-5'>IPC</b>技術(shù)!深度融合視覺(jué)+聽(tīng)覺(jué)感知<b class='flag-5'>能力</b>,顛覆傳統(tǒng)<b class='flag-5'>IPC</b>交互玩法

    RT-Thread PIN驅(qū)動(dòng)添加

    Pin驅(qū)動(dòng)框架以NXPMCXA153為例PIN設(shè)備驅(qū)動(dòng)層單純的提供接口給應(yīng)用層用,其中PIN設(shè)備驅(qū)動(dòng)框架接口包含rt_pin_read等,
    的頭像 發(fā)表于 03-28 18:59 ?925次閱讀
    RT-Thread PIN<b class='flag-5'>驅(qū)動(dòng)</b>添加

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

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

    迅為RK3568開(kāi)發(fā)板篇Openharmony配置HDF控制UART-實(shí)操-HDF驅(qū)動(dòng)配置UART-UART應(yīng)用開(kāi)發(fā)-UART驅(qū)動(dòng)API接口介紹

    UART 驅(qū)動(dòng) API 接口如下所示,具體的 API 詳見(jiàn) drivers/hdf_core/framework/include/platform/uart_if.h 文件。 (1
    發(fā)表于 03-24 11:19

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

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