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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenHarmony HDF Input驅動模型分析與使用

電子工程師 ? 來源:OpenAtom OpenHarmony ? 作者:OAOH ? 2021-09-02 11:28 ? 次閱讀

概述

輸入設備是用戶與計算機系統進行人機交互的主要裝置之一,是用戶與計算機或者其他設備通信的橋梁。常見的輸入設備有鍵盤、鼠標、游戲桿、觸摸屏等。本文檔將介紹如何使用 Hi3516DV300 開發板完成基于 HDF_Input 模型的觸摸屏(Touch Screen)器件驅動開發,從而使開發者快速入門。

硬件資源簡介

Touch 設備與主機通訊一般采用 I2C 總線完成數據的交互,為了提高觸屏數據的實時性,觸屏 IC 都會提供中斷支持。當有觸屏事件發生時,會觸發主機中斷管腳完成一次中斷響應。中斷處理函數中主機通過 I2C 總線讀取觸屏 IC 寄存器完成一次數據采集。

Hi3516DV300 開發板套件所提供的觸摸屏器件 IC 為 GT911,該器件采用標準 I2C 與主機通信,通過 6pin 軟排線與主板連接。6pin 分布以及實物連接圖如下圖所示:

Input模型簡介

Input 驅動模型核心部分由設備管理層、公共驅動層、器件驅動層組成。器件產生的數據借助平臺數據通道能力從內核傳遞到用戶態,驅動模型通過配置文件適配不同器件及硬件平臺,提高開發者的器件驅動開發效率。如下部分為模型各部分的說明:

(1)input 設備管理:為各類輸入設備驅動提供 input 設備的注冊、注銷接口,同時統一管理 input 設備列表;

(2)input 平臺驅動:指各類 input 設備的公共抽象驅動(例如觸摸屏的公共驅動),負責對板級硬件進行初始化、硬件中斷處理、向 manager 注冊 input 設備等;

(3)input 器件驅動:指各器件廠家的差異化驅動,通過適配平臺驅動預留的差異化接口,實現器件驅動開發量最小化;

(4)input 數據通道:提供一套通用的數據上報通道,各類別的 input 設備驅動均可用此通道上報 input 事件;

(5)input 配置解析:負責對 input 設備的板級配置及器件私有配置進行解析及管理。

Input模型工作流程解析

為了讓開發者更清晰的了解 Input 模型工作流程,本節將對 input 模型加載的關鍵流程代碼進行說明。

本章節為 Input 模型工作流程說明,開發者無需進行開發。

私有配置信息解析示例代碼路徑:

。/drivers/framework/model/input/driver/input_config_parser.c

根據 OSAL 提供的配置解析函數,可以將 hcs 文件中各字段含義進行解析,具體請參考 input_config_parser.c 中各函數的實現。如果提供的模板不能滿足需求,在 hcs 文件中添加相應信息后,需要根據添加的字段開發相應的解析函數。

static int32_t ParseAttr(struct DeviceResourceIface *parser, const struct DeviceResourceNode *attrNode, BoardAttrCfg *attr){int32_t ret;// 獲取inputType字段信息,保存在BoardAttrCfg結構體中 ret = parser->GetUint8(attrNode, “inputType”, &attr->devType, 0); CHECK_PARSER_RET(ret, “GetUint8”); ...return HDF_SUCCESS;}

管理驅動層初始化及注冊驅動至HDF框架示例代碼路徑:

。/drivers/framework/model/input/driver/hdf_input_device_manager.cstatic int32_t HdfInputManagerInit(struct HdfDeviceObject *device){ /* 分配內存給manager,manager中將存放所有input設備 */ g_inputManager = InputManagerInstance();

...}struct HdfDriverEntry g_hdfInputEntry = { .moduleVersion = 1, .moduleName = “HDF_INPUT_MANAGER”, .Bind = HdfInputManagerBind, .Init = HdfInputManagerInit, .Release = HdfInputManagerRelease,};HDF_INIT(g_hdfInputEntry); //驅動注冊入口

公共驅動層初始化及注冊驅動至HDF框架示例代碼路徑:

。/drivers/framework/model/input/driver/hdf_touch.cstatic int32_t HdfTouchDriverProbe(struct HdfDeviceObject *device)

{ .../* 板級信息結構體內存申請及hcs配置信息解析 */ boardCfg = BoardConfigInstance(device); .../* 公共驅動結構體內存申請 */ touchDriver = TouchDriverInstance(); .../* 依據解析出的板級信息進行公共資源初始化,如IIC初始化 */ ret = TouchDriverInit(touchDriver, boardCfg); if (ret == HDF_SUCCESS)

{ .../* 添加驅動至公共驅動層驅動管理鏈表,當設備與驅動進行綁定時使用該鏈表進行查詢 */ AddTouchDriver(touchDriver); ...} ...}struct HdfDriverEntry g_hdfTouchEntry = { .moduleVersion = 1, .moduleName = “HDF_TOUCH”, .Bind = HdfTouchDriverBind, .Init = HdfTouchDriverProbe, .Release = HdfTouchDriverRelease,}; HDF_INIT(g_hdfTouchEntry); //驅動注冊入口

器件驅動層初始化及注冊驅動至HDF框架具體請參考適配器件私有驅動器件層驅動初始化及注冊驅動至 HDF 框架部分。

具體調用邏輯串聯函數Input 模型管理層驅動 init 函數初始化了設備管理鏈表,公共驅動層初始化函數完成了相關結構體的內存申請。器件驅動相關信息通過 RegisterChipDevice 函數對公共驅動層相關結構體進行信息填充,同時完成了相關硬件信息的初始化(如中斷注冊等),綁定設備與驅動組成 inputDev 通過 RegisterInputDevice 函數向驅動管理層進行注冊,在 RegisterInputDevice 函數中主要實現了將 inputDev 向設備管理鏈表的添加等功能。如下所示為兩個函數的實現部分:

函數具體實現代碼位置

。/drivers/framework/model/input/driver/hdf_touch.cint32_t RegisterChipDevice(ChipDevice *chipDev){…/* 綁定設備與驅動,從而通過InputDeviceInstance函數創建inputDev */ DeviceBindDriver(chipDev);…/* 主要包含器件中斷注冊及中斷處理函數,處理函數中有數據上報用戶態的數據通道 */ChipDriverInit(chipDev);

… /* 申請內存實例化InputDev */inputDev = InputDeviceInstance(chipDev); … /* 將InputDev設備注冊至input驅動管理層 */RegisterInputDevice(inputDev);…}

函數具體實現代碼位置

。/drivers/framework/model/input/driver/hdf_input_device_manager.cint32_t RegisterInputDevice(InputDevice *inputDev){… /* 申請ID,該ID對于不同input設備唯一 */ ret = AllocDeviceID(inputDev);…/* 該函數包含了對hid類設備的特殊處理,對于觸摸屏驅動,該函數無實質操作; */ CreateDeviceNode(inputDev); /* 內核態數據傳送至用戶態需使用IOService能力,需要申請buffer */ AllocPackageBuffer(inputDev); /* 將input設備添加進設備全局管理鏈表 */ AddInputDevice(inputDev); ···}

TouchScreen器件驅動開發

基于 Input 模型適配一款觸摸屏 IC 需要完成的具體工作見下。

配置設備描述信息

驅動注冊到 HDF 框架所需要的設備驅動描述信息,如驅動是否加載以及加載次序等。

配置文件路徑:

。/drivers/adapter/khdf/linux/hcs/device_info/device_info.hcs

device_info.hcs 中的信息主要提供給 HDF 框架使用,包含了 Input 模型各層驅動注冊到 HDF 框架所必需的信息,開發者無特殊場景需求無需改動。各驅動層私有配置信息通過“deviceMatchAttr”字段與 input_config.hcs 中的“match_attr”相關內容進行匹配。

配置文件中與 input 模塊相關的內容如下所示

input :: host {hostName = “input_host”;priority = 100;device_input_manager :: device { // Input管理層設備描述信息device0 :: deviceNode {policy = 2; // 向內核用戶態均發布服務

priority = 100; // input管理層驅動優先級默認為100preload = 0; // 加載該驅動permission = 0660; // 驅動創建設備節點權限moduleName = “HDF_INPUT_MANAGER”; // 與驅動入口moduleName匹配serviceName = “hdf_input_host”; // HDF框架生成的節點名deviceMatchAttr = “”; // manager目前不需要私有配置,因此為空

}}device_hdf_touch :: device { // Input公共驅動層設備描述信息device0 :: deviceNode { policy = 2; // 向內核用戶態均發布服務 priority = 120; // input公共驅動優先級默認為120 preload = 0; // 加載該驅動 permission = 0660; // 驅動創建設備節點權限

moduleName = “HDF_TOUCH”; // 與驅動入口的moduleName匹配 serviceName = “hdf_input_event1”; // HDF框架生成的節點名 deviceMatchAttr = “touch_device1”; // 與 “match_attr”字段一致 }}device_touch_chip :: device { // Input器件驅動層信息

device0 :: deviceNode { policy = 0; // 向內核用戶態均不發布服務 priority = 130; // input器件驅動優先級默認為130 preload = 0; // 加載該驅動 permission = 0660; // 驅動創建設備節點權限 moduleName = “HDF_TOUCH_GT911”; // 與moduleName匹配 serviceName = “hdf_touch_gt911_service”; // HDF框架節點名 deviceMatchAttr = “zsj_gt911_5p5”; // 與“match_attr”字段一致 }}}

該配置文件中需要重點關注的字段有:

“priority”決定驅動加載順序;

“preload”決定驅動是否加載;

“moduleName ”需要與驅動注冊入口處的“moduleName ”字段保持一致;

“serviceName ”HDF 框架依據該字段創建節點名;

“deviceMatchAttr ”需要與私有配置信息中的“match_attr”字段保持一致。

通過配置設備描述信息,使得 HDF 框架通過 moduleName 與注冊至驅動入口的代碼相匹配,保證了驅動的正常加載,通過 priority 字段保證了各驅動的加載順序。

配置Touchscreen器件信息

器件私有信息包括上下電時序等,平臺硬件信息包括器件連接主板的 GPIO 端口信息等。

配置文件路徑:

。/drivers/adapter/khdf/linux/hcs/input/input_config.hcs

input_config.hcs 中的信息由驅動代碼進行讀取解析,主要由公共驅動層的私有配置信息及器件驅動層的私有配置信息組成。文件中的配置包含板級硬件信息及器件私有配置信息,實際業務開發時,可根據具體需求增刪及修改對應內容。

pinConfig { rstGpio = 3; // 復位管腳連接主機芯片的3號管腳

intGpio = 4; // 中斷管腳連接主機芯片的4號管腳 rstRegCfg = [0x112f0094, 0x400]; // 復位管腳配置信息

intRegCfg = [0x112f0098, 0x400]; // 中斷管腳配置信息 } powerConfig { /* 0:unused 1:ldo 2:gpio 3:pmic */ vccType = 2; // GPIO供電 vccNum = 20; // gpio20 vccValue = 1800; // 電壓幅值為1800mV vciType = 1; // LDO供電 vciNum = 12; // ldo12 vciValue = 3300; // 電壓幅值為3300mV }featureConfig { capacitanceTest = 0; // 容值測試 gestureMode = 0; // 手勢模式 gloverMode = 0; // 手套模式

coverMode = 0; // 皮套模式

chargerMode = 0; // 充電模式 knuckleMode = 0; // 指關節模式 } } chipConfig { // 器件私有信息配置

template touchChip { // 模板 match_attr = “”; chipName = “gt911”; // 觸摸屏IC型號 vendorName = “zsj”; // 供應商 chipInfo = “AAAA11222”; /*1~4字符代表產品名,5~6字符代表IC型號,7~9字符代表模型型號*/ busType = 0; // 0代表I2C,1代表SPI deviceAddr = 0x5D; // 器件IC通信地址/* 1代表上升沿觸發,2代表下降沿觸發,4代表高電平觸發,8代表低電平觸發*/ irqFlag = 2; maxSpeed = 400; // 最大通信速率為400Hz chipVersion = 0; // 觸摸屏IC版本號

powerSequence {/* 上電時序的配置含義說明: [類型, 狀態, 方向 , 延時] 0代表空,1代表vcc電源1.8V,2代表VCI電源3.3V,3代表復位管腳,4代表中斷管腳 0代表下電或拉低,1代表上電或拉高,2代表無操作

代表延時多少毫秒, 例如20代表延時20ms */powerOnSeq = [4, 0, 1, 0, // 中斷管腳配置為輸出,且進行拉低 3, 0, 1, 10, // 復位管腳配置為輸出,且進行拉低,延時10ms 3, 1, 2, 60, // 復位管腳無操作,且進行拉高,延時60ms 4, 2, 0, 0];

// 中斷管腳配置為輸入suspendSeq = [3, 0, 2, 10]; // 復位管腳無操作,且進行拉低,延時10msresumeSeq = [3, 1, 2, 10]; // 復位管腳無操作,且進行拉高,延時10mspowerOffSeq = [3, 0, 2, 10, // 復位管腳無操作,且進行拉低,延時10ms 1, 0, 2, 20];

// 電源正極管腳無操作,且進行拉低,延時20ms}}chip0 :: touchChip {/* 與設備描述配置信息中器件私有配置信息的“match_attr”字段保持一致 */ match_attr = “zsj_gt911_5p5”; /* 產品名+模組編號+芯片編號的組合信息 用于給用戶態區分當前器件 */ chipInfo = “ZIDN45100”; /* IC型號的版本 */ chipVersion = 0; } } } }}}

示例中“touchConfig”包含了“touch0”,“touch0”包含了“boardConfig”與“chipConfig”;“boardConfig”字段包含了 Hi3516DV300 板級硬件信息,“chipConfig”包含了觸摸屏器件的私有信息,如果需要替換觸摸屏器件,重新配置“chipConfig”對應的字段信息即可。同時產品可以配置多款觸摸屏,示例中用“touch0”代表了套件中默認的觸摸屏的硬件接口以及器件的配置信息,如產品需要配置副屏,可在與“touch0”并列的位置配置“touch1”的信息。

適配器件私有驅動

Input 模型對 Input 設備開發流程進行了抽象,開發者只需要適配器件驅動層,無需改動管理驅動層以及公共驅動層。

Input 模型由三層驅動組成,開發者適配一款全新觸摸屏驅動只需要適配器件驅動層即可,重點實現差異化接口,本小節以代碼示例的形式展示開發者需要重點完成的工作。

觸摸屏器件差異化接口適配

示例代碼路徑

。/drivers/framework/model/input/driver/touchscreen/touch_gt911.cstatic struct TouchChipOps g_gt911ChipOps =

{ // 器件IC接口.Init = ChipInit, // 初始化.Detect = ChipDetect, // 器件檢測.Resume = ChipResume, // 喚醒.Suspend = ChipSuspend, // 休眠.DataHandle = ChipDataHandle, // 器件數據讀取.UpdateFirmware = UpdateFirmware, // 固件升級};

/* 不同觸摸屏廠家使用的IC不一樣,對應的寄存器操作也不一樣,因此器件驅動層代碼重點適配差異化接口部分,如下示例代碼展示了GT911的數據解析*/

static int32_t ChipDataHandle(ChipDevice *device){.../* GT911獲取坐標之前需先讀取狀態寄存器 */reg[0] = (GT_BUF_STATE_ADDR >> ONE_BYTE_OFFSET) & ONE_BYTE_MASK; reg[1] = GT_BUF_STATE_ADDR & ONE_BYTE_MASK;ret = InputI2cRead(i2cClient, reg, GT_ADDR_LEN, &touchStatus, 1);

if (ret < 0 || touchStatus == GT_EVENT_INVALID) {return HDF_FAILURE;}.../* 根據狀態寄存器的值讀取數據寄存器數據 */

reg[0] = (GT_X_LOW_BYTE_BASE >> ONE_BYTE_OFFSET) & ONE_BYTE_MASK;reg[1] = GT_X_LOW_BYTE_BASE & ONE_BYTE_MASK;pointNum = touchStatus & GT_FINGER_NUM_MASK;if (pointNum == 0 || pointNum > MAX_SUPPORT_POINT) {HDF_LOGE(“%s: pointNum is invalid, %u”, __func__, pointNum); (void)ChipCleanBuffer(i2cClient);OsalMutexUnlock(&device->driver->mutex);return HDF_FAILURE;}frame->realPointNum = pointNum;frame->definedEvent = TOUCH_DOWN;(void)InputI2cRead(i2cClient, reg, GT_ADDR_LEN, buf, GT_POINT_SIZE * pointNum);/* 對獲取的數據進行解析 */ParsePointData(device, frame, buf, pointNum);...}

static void ParsePointData(ChipDevice *device, FrameData *frame, uint8_t *buf, uint8_t pointNum){

.../* 每個坐標值由兩個字節組成,對獲取的單字節數據進行拼接得到最終的坐標值 */for (i = 0; i

< pointNum; i++) {frame->fingers[i].trackId = buf[GT_POINT_SIZE * i + GT_TRACK_ID];frame->

fingers[i].y = (buf[GT_POINT_SIZE * i + GT_X_LOW] & ONE_BYTE_MASK) | ((buf

[GT_POINT_SIZE * i + GT_X_HIGH] & ONE_BYTE_MASK) << ONE_BYTE_OFFSET); frame->fingers[i].x = (buf[GT_POINT_SIZE * i + GT_Y_LOW] & ONE_BYTE_MASK) | ((buf[GT_POINT_SIZE * i + GT_Y_HIGH] & ONE_BYTE_MASK) << ONE_BYTE_OFFSET);/* 對解析出來的坐標值進行打印 */

HDF_LOGD(“%s: x = %d, y = %d”, __func__, frame->fingers[i].x,frame->fingers[i].y);}}

器件層驅動初始化及注冊驅動至HDF框架

示例代碼路徑

。/drivers/framework/model/input/driver/touchscreen/touch_gt911.cstatic int32_t HdfGoodixChipInit(struct HdfDeviceObject *device){

.../* 器件配置結構體內存申請、配置信息解析及掛載 */ chipCfg = ChipConfigInstance(device);

.../* 器件實例化 */ chipDev = ChipDeviceInstance();

.../* 器件信息掛載及器件私有操作掛載 */ chipDev->chipCfg = chipCfg; chipDev->ops = &g_gt911ChipOps;

.../* 注冊器件驅動至平臺驅動 */ RegisterChipDevice(chipDev);

...}

struct HdfDriverEntry g_touchGoodixChipEntry = {.moduleVersion = 1,/* 該moduleName與device_info.hcs文件中器件驅動層的moduleName信息相匹配*/.moduleName = “HDF_TOUCH_GT911”,

.Init = HdfGoodixChipInit, // 器件驅動初始化函數};HDF_INIT(g_touchGoodixChipEntry); // 注冊器件驅動至HDF框架

器件私有驅動層主要實現了各器件廠商差異較大的部分,如器件休眠喚醒、數據解析以及固件升級等。

編譯入口添加

編輯 Makefile 文件,添加本示例中的內容:

文件路徑:

。/drivers/adapter/khdf/linux/model/input/Makefile

添加內容如下:

obj-$(CONFIG_DRIVERS_HDF_TP_5P5_GT911) += $(INPUT_ROOT_DIR)/touchscreen/touch_gt911.o

其中 touch_gt911.o 為本示例中追加的內容

至此,基于 HDF 框架及 Input 模型的觸摸屏驅動適配完成。

總結

本文梳理了 HDF_Input 模型工作流程,重點介紹了器件驅動適配,以 Hi3516dv300 開發板觸屏為例進行了詳細的代碼說明,希望通過本文檔您能初步掌握基于 HDF 框架的 Input 設備的開發步驟與流程。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 驅動
    +關注

    關注

    12

    文章

    1855

    瀏覽量

    85756
  • 計算機
    +關注

    關注

    19

    文章

    7559

    瀏覽量

    88822
  • HarmonyOS
    +關注

    關注

    79

    文章

    1985

    瀏覽量

    30735
  • OpenHarmony
    +關注

    關注

    25

    文章

    3754

    瀏覽量

    16744

原文標題:OpenHarmony HDF Input驅動模型分析與使用

文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏

    評論

    相關推薦

    迅為RK3568開發板篇OpenHarmony實操HDF驅動配置LED-編譯源碼

    重新編譯 Openharmony4.1 源碼,如下所示: ./build.sh --product-name rk3568 --ccache 或者單獨編譯部件 ./build.sh
    發表于 02-10 10:23

    迅為RK3568開發板篇OpenHarmony實操HDF驅動控制LED-編寫應用APP

    HdfIoServiceBind 綁定 LED燈的 HDF 服務,獲取 HDF 空間緩存區,并向該緩沖區寫入控制數據。然后,通過 LED_WRITE 命令將數據發送到 HDF 驅動
    發表于 02-06 10:27

    迅為RK3568開發板篇OpenHarmony實操HDF驅動控制LED-添加內核編譯

    編譯內核時將該 HDF 驅動編譯到鏡像中,接下來編寫驅動編譯腳本 Makefile,代碼如下所示: 加入編譯體系,填加模塊目錄到 drivers/hdf_core/adapter/kh
    發表于 01-22 10:35

    迅為RK3568開發板篇OpenHarmony實操HDF驅動控制LED-接口函數

    在一小節的代碼中實現了一個簡單的 LED 驅動,下面是對代碼的詳細解釋: 包含的頭文件如下所示: 宏定義如下所示: 數據結構如下所示: g_LedDriverEntry 結構體是驅動入口結構體,如下
    發表于 01-20 10:36

    迅為RK3568開發板篇OpenHarmony實操HDF驅動控制LED-編寫內核 LED HDF 驅動程序

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

    迅為RK3568開發板篇OpenHarmony配置HDF驅動控制LED-新增 topeet子系統-編寫 bundle.json文件

    OpenHarmony OS)生態系統下的一個名為\"demos\"的組件。 description: \"topeet demos\" -它描述了組件的簡短說明
    發表于 01-15 15:59

    迅為RK3568開發板篇OpenHarmony配置HDF驅動控制LED-新增 topeet子系統

    程序目錄 ├── led_driver.c:內核 LED HDF 驅動程序 └── Makefile:內核 LED HDF 驅動編譯腳本 更多內容可以關注:迅為RK3568開發板篇
    發表于 01-13 15:59

    迅為RK3568開發板篇OpenHarmony配置HDF驅動控制LED-配置創建私有配置文件

    接 下 來 新 建 vendor/hihope/rk3568/hdf_config/khdf/topeet/topeet_config.hcs 文 件 ,topeet_config.hcs 為驅動
    發表于 01-10 11:13

    迅為RK3568開發板篇OpenHarmony配置HDF驅動控制LED-修改HCS硬件配置

    驅動的設備描述修改/vendor/hihope/rk3568/hdf_config/khdf/device_info/device_info.hcs 文件,添加如下代碼,如下所示: 接下來解釋一下
    發表于 01-08 15:25

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

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

    AI模型托管原理分析

    AI模型托管是指將訓練好的AI模型部署在云端或邊緣服務器上,由第三方平臺提供模型運行、管理和優化等服務。以下,AI部落小編將對AI模型托管的原理進行詳細
    的頭像 發表于 11-07 09:33 ?289次閱讀

    Openharmony軟件評估指南-米爾瑞芯微RK3568開發板

    :Openharmony與Linux使用相同的uboot,可以在Linux源碼獲取- Kernel:RK3568 Openharmony 的內核目前采用社區維護板,可以理解為上游Linux + HDF
    發表于 09-06 20:06

    首批!數勢科技SwiftAgent完成中國信通院大模型驅動的智能數據分析工具專項測試

    2024年5月15日,在中國信通院組織的首批大模型驅動的智能數據分析工具專項測試中,數勢科技大模型智能分析助手SwiftAgent順利完成了
    的頭像 發表于 05-24 19:04 ?433次閱讀
    首批!數勢科技SwiftAgent完成中國信通院大<b class='flag-5'>模型</b><b class='flag-5'>驅動</b>的智能數據<b class='flag-5'>分析</b>工具專項測試

    鴻蒙開發:【OpenHarmony 4.0 Release指導】

    OpenHarmony 4.0版本如期而至,開發套件同步升級到API 10。相比3.2 Release版本,新增4000多個API,應用開發能力更加豐富;HDF新增200多個HDI接口,硬件適配更加便捷;我們持續優化圖形框架和方舟編譯器(ArkCompiler)
    的頭像 發表于 05-14 09:59 ?1708次閱讀
    鴻蒙開發:【<b class='flag-5'>OpenHarmony</b> 4.0 Release指導】

    鴻蒙開發實戰:【Hdf Framework】

    該倉主要存放OpenHarmony驅動子系統核心源碼信息(包括驅動框架、配置管理、配置解析、驅動通用框架模型、硬件通用平臺能力接口等),旨在
    的頭像 發表于 03-21 20:29 ?618次閱讀
    鴻蒙開發實戰:【<b class='flag-5'>Hdf</b> Framework】

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品
    主站蜘蛛池模板: 久久精品看片 | 大黄网站在线观看 | 国产毛片农村妇女系列 | 久久久久88色偷偷 | 国产久爱青草视频在线观看 | 777丰满影院 | 国产三区视频 | 性欧美黑人xxxx | 特毛片| 五月天男人的天堂 | 小毛片在线观看 | 四虎美女 | 999影院成 人在线影院 | 国产激情在线观看 | 亚洲欧美成人综合久久久 | 欧美成人精品一级高清片 | 精品在线一区二区 | 国产欧美精品午夜在线播放 | 手机看片日韩福利 | 天堂网www | 婷婷六月天激情 | 天堂资源最新版在线官网 | 国产三a级日本三级日产三级 | 在线播放91灌醉迷j高跟美女 | 最近2018中文字幕免费视频 | 鲁久久| 91精品国产色综合久久不卡蜜 | 中文免费观看视频网站 | 黄色录像大全 | 成人欧美精品一区二区不卡 | 亚1州区2区三区4区产品 | 日日干视频 | bt种子天堂 | 久久影视免费体验区午夜啪啪 | 日韩1 | 成人欧美一区二区三区小说 | 国产在线观看福利 | 天天干天天拍天天操 | 69xxxxxxxxxhd日本| 男女交性拍拍拍高清视频 | 九九99久久精品午夜剧场免费 |