chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

一文解析鴻蒙系統(tǒng)中的HDF架構(gòu)

鴻蒙系統(tǒng)HarmonyOS ? 來源:CSDN博主 ? 作者:悠然紅茶 ? 2021-03-25 16:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1 鋪墊一下

鴻蒙系統(tǒng)終于公開源代碼了,正可謂“千呼萬喚始出來”。筆者也手癢下載了一套代碼,并研讀了一二。這里就先編寫一篇關(guān)于HDF的文檔。

其實(shí),不同讀碼人都會(huì)有各自讀代碼的習(xí)慣和切入點(diǎn),我之所以從HDF入手,完全是出于偶然。因?yàn)樵谝婚_始讀官方文檔時(shí),看到說一部機(jī)器可以操作另一部機(jī)器的設(shè)備,為此,設(shè)備需要有一個(gè)重要的PublishService()函數(shù)。這種跨設(shè)備操作的能力也是鴻蒙的一大特色,應(yīng)該比較有趣,于是就以這個(gè)PublishService()為切入點(diǎn),開始研讀代碼,慢慢就涉及了HDF的更多知識(shí),現(xiàn)在是時(shí)候整理出來了。

所謂HDF,應(yīng)該是Harmony Driver Fundation的縮寫,說到底是鴻蒙形成的一套管理設(shè)備驅(qū)動(dòng)的框架模型,也被稱為“驅(qū)動(dòng)子系統(tǒng)”。在官網(wǎng)的文檔里介紹說這個(gè)驅(qū)動(dòng)子系統(tǒng)具有以下重要能力:

彈性化的框架能力

規(guī)范化的驅(qū)動(dòng)接口

組件化的驅(qū)動(dòng)模型

歸一化的配置界面

讀完這四句話,不免讓人覺得好像明白了什么,又好像什么都沒明白。好吧,我還是按自己的習(xí)慣直接讀代碼吧。

為了便于理解代碼,我習(xí)慣于把軟件圖形化。為此,我介紹一點(diǎn)我的圖形表達(dá)方法。在我讀Java代碼時(shí),如果要表達(dá)A類對(duì)象的某個(gè)成員引用了另一個(gè)B類對(duì)象,我常常會(huì)這樣繪制:

但是HDF的代碼是用C寫的,所以對(duì)應(yīng)的圖形表達(dá)法也要有所變化。我們要區(qū)分一下:

1)A結(jié)構(gòu)以某成員組合了另一個(gè)B結(jié)構(gòu);

2)A結(jié)構(gòu)某成員是個(gè)指向B的指針;

這兩種情況可以分別表示為:

另外,有時(shí)候HDF會(huì)使用C語言的一些技巧進(jìn)行鏈表表達(dá)或基類轉(zhuǎn)換,那么上面的圖形畫出來就會(huì)很累贅,針對(duì)這種情況,我有時(shí)候會(huì)這樣表達(dá)(以DevmgrService結(jié)構(gòu)為例):

可以看出,DevmgrService繼承于IDevmgrService,而IDevmgrService又在起始處組合了一個(gè)HdfDeviceObject(有時(shí)候也可以說是繼承于HdfDeviceObject)。也就是說:

1)DevmgrService的起始地址;

2)DevmgrService內(nèi)部IDevmgrService部分的起始地址;

3)IDevmgrService內(nèi)部HdfDeviceObject部分的起始地址;

這3個(gè)起始地址其實(shí)是同一處。用這種表達(dá)法,我們就不必畫出3個(gè)分離的框圖了。

好了,鋪墊部分就先寫這么多,下面我們來看HDF的實(shí)際內(nèi)容。

2 DevmgrService和Dev Host

我們以hi3516 dv300為例,其系統(tǒng)一啟動(dòng),會(huì)運(yùn)行到SystemInit(),其中會(huì)調(diào)用DeviceManagerStart()啟動(dòng)與HDF相關(guān)的部分:

【vendor/hisi/hi35xx/hi3516dv300/module_init/src/System_init.c】

void SystemInit(void)

{

. . . . . .

#ifdef LOSCFG_DRIVERS_HDF

if (DeviceManagerStart()) {

PRINT_WARN("No drivers need load by hdf manager!");

}

#endif

. . . . . .

}

2.1 啟動(dòng)DeviceManager

【drivers/hdf/lite/manager/src/Devmgr_service_start.c】

int DeviceManagerStart()

{

struct IDevmgrService *instance = DevmgrServiceGetInstance();

if (instance == NULL || instance->StartService == NULL) {

HDF_LOGE("Device manager start failed, service instance is null!");

return HDF_FAILURE;

}

struct HdfIoService *ioService = HdfIoServiceBind(DEV_MGR_NODE, DEV_MGR_NODE_PERM);

if (ioService != NULL) {

static struct HdfIoDispatcher dispatcher = {

.Dispatch = DeviceManagerDispatch,

};

ioService->dispatcher = &dispatcher;

ioService->target = (struct HdfObject *)&instance->object;

}

return instance->StartService(instance);

}

簡(jiǎn)單地說,要啟動(dòng)DeviceManager服務(wù),就得先獲取一個(gè)DevmgrService實(shí)例,然后調(diào)用它的StartService(),又因?yàn)镈evmgrService繼承于IDevmgrService,所以可以強(qiáng)制轉(zhuǎn)換成IDevmgrService*。

2.1.1 獲取DevmgrService單例

獲取實(shí)例時(shí),其實(shí)用到了HDF機(jī)制提供的一個(gè)對(duì)象管理器,相關(guān)代碼如下:

【drivers/hdf/frameworks/core/manager/src/Devmgr_service.c】

struct IDevmgrService *DevmgrServiceGetInstance()

{

static struct IDevmgrService *instance = NULL; // 注意是static的,表示是個(gè)靜態(tài)單例

if (instance == NULL) {

instance = (struct IDevmgrService *)

HdfObjectManagerGetObject(HDF_OBJECT_ID_DEVMGR_SERVICE);

}

return instance;

}

以后我們會(huì)看到,這個(gè)HdfObjectManagerGetObject()會(huì)在多個(gè)地方調(diào)用,以便獲取不同的HDF對(duì)象。說起來也簡(jiǎn)單,HDF機(jī)制里有一張表,記錄著該如何創(chuàng)建、釋放一些重要的HDF對(duì)象,該表格為g_liteObjectCreators:

【drivers/hdf/lite/manager/src/Devlite_object_config.c】

static const struct HdfObjectCreator g_liteObjectCreators[]

基于讀到的代碼,我們可以畫出這個(gè)表格:

概念還是比較簡(jiǎn)單的,如果系統(tǒng)中的DevmgrService單例對(duì)象已經(jīng)存在,就使用之。否則就利用HDF對(duì)象管理器創(chuàng)建一個(gè)DevmgrService對(duì)象。對(duì)于HDF對(duì)象管理器而言,不同類型的HDF對(duì)象,需要用到不同的創(chuàng)建函數(shù),所以要查一下上表。比如DevmgrService對(duì)應(yīng)的創(chuàng)建函數(shù)就是DevmgrServiceCreate(),該函數(shù)代碼如下:

【drivers/hdf/frameworks/core/manager/src/Devmgr_service.c】

struct HdfObject *DevmgrServiceCreate()

{

static bool isDevMgrServiceInit = false;

static struct DevmgrService devmgrServiceInstance;

if (!isDevMgrServiceInit) {

if (!DevmgrServiceConstruct(&devmgrServiceInstance)) {

return NULL;

}

isDevMgrServiceInit = true;

}

return (struct HdfObject *)&devmgrServiceInstance; // ???HdfObject,有小問題!

}

在“創(chuàng)建”時(shí),如果發(fā)現(xiàn)是首次創(chuàng)建,則調(diào)用一個(gè)類似構(gòu)造函數(shù)的DevmgrServiceConstruct()函數(shù),來初始化對(duì)象里的函數(shù)表。這種做法是用C語言實(shí)現(xiàn)面向?qū)ο蟾拍畹某S米龇?。不過,此處的代碼有一個(gè)小bug,即最后那個(gè)強(qiáng)制轉(zhuǎn)換,從目前看到的代碼來說,DevmgrService間接繼承于HdfDeviceObject,而HdfDeviceObject并不繼承于HdfObject,所以是不應(yīng)該這樣強(qiáng)制轉(zhuǎn)換的,除非HdfDeviceObject的第一個(gè)成員從“IDeviceIoService*”改為“IDeviceIoService”,我估計(jì)最早的代碼就是IDeviceIoService,后來因?yàn)槟承┰?,變成了指針形式,至于以后具體該怎么修正,這個(gè)就讓鴻蒙的工程師去費(fèi)腦筋吧。DevmgrService的構(gòu)造函數(shù)如下:

【drivers/hdf/frameworks/core/manager/src/Devmgr_service.c】

static bool DevmgrServiceConstruct(struct DevmgrService *inst)

{

if (OsalMutexInit(&inst->devMgrMutex) != HDF_SUCCESS) {

HDF_LOGE("%s mutex init failed", __func__);

return false;

}

struct IDevmgrService *devMgrSvcIf = (struct IDevmgrService *)inst;

if (devMgrSvcIf != NULL) {

devMgrSvcIf->AttachDevice = DevmgrServiceAttachDevice;

devMgrSvcIf->AttachDeviceHost = DevmgrServiceAttachDeviceHost;

devMgrSvcIf->StartService = DevmgrServiceStartService;

devMgrSvcIf->AcquireWakeLock = DevmgrServiceAcquireWakeLock;

devMgrSvcIf->ReleaseWakeLock = DevmgrServiceReleaseWakeLock;

HdfSListInit(&inst->hosts);

}

return true;

}

2.1.2 HdfIoServiceBind()

啟動(dòng)DeviceManager時(shí),第二個(gè)重要的動(dòng)作是調(diào)用HdfIoServiceBind():

struct HdfIoService *ioService = HdfIoServiceBind(DEV_MGR_NODE, DEV_MGR_NODE_PERM);

這一步在做什么呢?我們可以這樣理解,DevmgrService作為一個(gè)核心的系統(tǒng)服務(wù),我們希望能像訪問虛文件系統(tǒng)的文件那樣打開它,并進(jìn)一步向它傳遞諸如AttachDevice、StartServie......這樣的語義。這些語義最終會(huì)執(zhí)行到上面列舉的DevmgrServiceAttachDevice、DevmgrServiceStartService等函數(shù)。

我們不必列舉太多代碼,下面是我繪制的一張關(guān)于DeviceManagerStart()的調(diào)用關(guān)系示意圖,可供參考:

圖中已經(jīng)明確注明,DevmgrService在虛文件系統(tǒng)里對(duì)應(yīng)的路徑應(yīng)該是“/dev/dev_mgr”,而上面調(diào)用HdfIoServiceBind()后,實(shí)際上建立了一個(gè)文件系統(tǒng)的inode節(jié)點(diǎn),示意圖如下:

HdfVNodeAdapter的target在最后賦值為(struct HdfObject*)&instance->object,說到底其實(shí)就是指向了DevmgrService。

2.1.3 執(zhí)行DevmgrService的StartService

接下來是啟動(dòng)DeviceManager的第三步,調(diào)用instance->StartService(),這一步其實(shí)是在調(diào)用DevmgreviceStartService()函數(shù)。

【drivers/hdf/frameworks/core/manager/src/Devmgr_service.c】

int DevmgrServiceStartService(struct IDevmgrService *inst)

{

struct DevmgrService *dmService = (struct DevmgrService *)inst;

if (dmService == NULL) {

HDF_LOGE("Start device manager service failed, dmService is null");

return HDF_FAILURE;

}

return DevmgrServiceStartDeviceHosts(dmService);

}

主要就是在調(diào)用一個(gè)DevmgrServiceStartDeviceHosts()函數(shù)。這個(gè)函數(shù)應(yīng)該算是個(gè)重量級(jí)函數(shù),它會(huì)負(fù)責(zé)建立起DevmgrService內(nèi)部主要的數(shù)據(jù)結(jié)構(gòu)。我們先繪制一下該函數(shù)第一層次的調(diào)用關(guān)系,如下圖:

在進(jìn)一步深入代碼細(xì)節(jié)之前,我們最好先大概說明一下。在鴻蒙HDF架構(gòu)里,有一個(gè)“設(shè)備Host”的概念,根據(jù)官方的文檔,我們大概可以知道,一個(gè)Host用于整合若干業(yè)務(wù)相近的設(shè)備,這個(gè)原則被稱為相似相容原則。為了實(shí)現(xiàn)這個(gè)原則,HDF構(gòu)造了一系列數(shù)據(jù)結(jié)構(gòu),我們列舉一下:

1)HdfHostInfo

2)DevHostServiceClnt

3)DevHostService

4)HdfDevice

5)HdfDeviceNode

. . . . . .

我們當(dāng)然沒必要在一篇文檔里列出所有的數(shù)據(jù)結(jié)構(gòu),只需先明白:

1)設(shè)備管理服務(wù)(DevmgrService)內(nèi)部可以管理若干Host;

2)每個(gè)Host內(nèi)部可以整合若干業(yè)務(wù)相近的設(shè)備;

3)每個(gè)Host可以拆分成兩個(gè)部分:DevHostServiceClnt 和 DevHostService;

4)每個(gè)DevHostService可以添加多個(gè)設(shè)備;

從上面的調(diào)用關(guān)系圖中,我們可以看到DevmgrServiceStartDeviceHosts()函數(shù)的主要行為是:

1)先獲取一個(gè)驅(qū)動(dòng)安裝器(單例)對(duì)象;

2)解析系統(tǒng)配置信息,將其轉(zhuǎn)換成一個(gè)以HdfHostInfo為表項(xiàng)的列表,這個(gè)就對(duì)應(yīng)著系統(tǒng)里所有的host;

3)遍歷這張HdfHostInfo列表,為每個(gè)HdfHostInfo節(jié)點(diǎn)創(chuàng)建一個(gè)對(duì)應(yīng)的DevHostServiceClnt對(duì)象;

4)新創(chuàng)建的DevHostServiceClnt節(jié)點(diǎn)會(huì)被插入DevmgrService的hosts列表中;

5)針對(duì)每個(gè)HdfHostInfo節(jié)點(diǎn),利用剛剛獲取的驅(qū)動(dòng)安裝器具體啟動(dòng)該host。

2.1.3.1獲取驅(qū)動(dòng)安裝器

現(xiàn)在我們?cè)敿?xì)看上圖中調(diào)用的關(guān)鍵函數(shù)。

installer = DriverInstallerGetInstance();

先拿到一個(gè)驅(qū)動(dòng)安裝器。

struct IDriverInstaller *DriverInstallerGetInstance()

{

static struct IDriverInstaller *installer = NULL;

if (installer == NULL) {

installer = (struct IDriverInstaller *)HdfObjectManagerGetObject(HDF_OBJECT_ID_DRIVER_INSTALLER);

}

return installer;

}

又看到HdfObjectManagerGetObject(),于是我們查前文那張表,可以找到驅(qū)動(dòng)安裝器對(duì)應(yīng)的創(chuàng)建函數(shù)是DriverInstallerCreate():

【drivers/hdf/frameworks/core/manager/src/Hdf_driver_installer.c】

struct HdfObject *DriverInstallerCreate(void)

{

static bool isDriverInstInit = false;

static struct DriverInstaller driverInstaller;

if (!isDriverInstInit) {

DriverInstallerConstruct(&driverInstaller);

isDriverInstInit = true;

}

return (struct HdfObject *)&driverInstaller;

}

用的是一個(gè)單例的DriverInstaller對(duì)象。

2.1.3.2 獲取HdfHostInfo列表

啟動(dòng)所有hosts的第二步,是獲取一個(gè)HdfHostInfo列表:

HdfAttributeManagerGetHostList(&hostList)

我們摘選該函數(shù)的主要句子,如下:

【drivers/hdf/lite/manager/src/Hdf_attribute_manager.c】

bool HdfAttributeManagerGetHostList(struct HdfSList *hostList)

{

. . . . . .

hdfManagerNode = GetHdfManagerNode(HcsGetRootNode());

. . . . . .

hostNode = hdfManagerNode->child;

while (hostNode != NULL) {

struct HdfHostInfo *hostInfo = HdfHostInfoNewInstance();

. . . . . .

if (!GetHostInfo(hostNode, hostInfo)) {

HdfHostInfoFreeInstance(hostInfo);

hostInfo = NULL;

hostNode = hostNode->sibling;

continue;

}

hostInfo->hostId = hostId;

if (!HdfSListAddOrder(hostList, &hostInfo->node, HdfHostListCompare)) {

HdfHostInfoFreeInstance(hostInfo);

hostInfo = NULL;

hostNode = hostNode->sibling;

continue;

}

hostId++;

hostNode = hostNode->sibling;

}

return true;

}

我們稍微擴(kuò)展一點(diǎn)知識(shí)來說明一下。在鴻蒙系統(tǒng)中,有一些系統(tǒng)級(jí)的配置文件,叫做HCS文件。系統(tǒng)可以利用類似hc-gen這樣的工具,根據(jù)配置文件生成二進(jìn)制碼。當(dāng)HDF啟動(dòng)時(shí),它會(huì)將二進(jìn)制信息傳給DriverConfig模塊。該模塊會(huì)將二進(jìn)制碼轉(zhuǎn)換成配置樹,并向開發(fā)者提供API去查詢這棵樹。

配置樹的根節(jié)點(diǎn)是g_hcsTreeRoot,節(jié)點(diǎn)類型為DeviceResourceNode。這棵配置樹里有一個(gè)特殊的節(jié)點(diǎn),具有“hdf_manager”屬性,上面代碼中調(diào)用GetHdfManagerNode()一句,就是在獲取這個(gè)特殊節(jié)點(diǎn)。接著,上面的代碼里會(huì)嘗試遍歷該節(jié)點(diǎn)的所有child,并將每個(gè)child的信息整理進(jìn)一個(gè)HdfHostInfo對(duì)象里。注意此時(shí)就會(huì)給HdfHostInfo分派一個(gè)hostId了,這個(gè)hostId后續(xù)還會(huì)用到。所有讀出的HdfHostInfo節(jié)點(diǎn)會(huì)按照其內(nèi)記錄的優(yōu)先級(jí)進(jìn)行排序,并連成一個(gè)列表,優(yōu)先級(jí)越高越靠近表頭。

2.1.3.3 遍歷HdfHostInfo列表

得到HdfHostInfo列表后,緊接著就會(huì)嘗試遍歷這張表。因?yàn)槊總€(gè)HdfHostInfo節(jié)點(diǎn)代表的就是一個(gè)host,所以每讀取一個(gè)HdfHostInfo,就會(huì)對(duì)應(yīng)地生成一個(gè)DevHostServiceClnt對(duì)象。這些生成的DevHostServiceClnt都會(huì)插入到DevmgrService的hosts列表中。

每讀取一個(gè)HdfHostInfo信息后,就會(huì)利用驅(qū)動(dòng)安裝器,啟動(dòng)對(duì)應(yīng)的host。

2.1.3.4啟動(dòng)host

啟動(dòng)host的動(dòng)作是installer->StartDeviceHost()一步,它的調(diào)用關(guān)系如下:

大家還記得前文我說過,每個(gè)Host可以拆分成兩個(gè)部分:DevHostServiceClnt 和 DevHostService。這個(gè)就體現(xiàn)在上面的調(diào)用關(guān)系里。

StartDeviceHost一開始就會(huì)創(chuàng)建一個(gè)DevHostService對(duì)象,

【drivers/hdf/frameworks/core/manager/src/Hdf_driver_installer.c】

static int DriverInstallerStartDeviceHost(uint32_t devHostId, const char *devHostName)

{

struct IDevHostService *hostServiceIf = DevHostServiceNewInstance(devHostId, devHostName);

if ((hostServiceIf == NULL) || (hostServiceIf->StartService == NULL)) {

HDF_LOGE("hostServiceIf or hostServiceIf->StartService is null");

return HDF_FAILURE;

}

int ret = hostServiceIf->StartService(hostServiceIf);

if (ret != HDF_SUCCESS) {

HDF_LOGE("Start host service failed, ret is: %d", ret);

DevHostServiceFreeInstance(hostServiceIf);

}

return ret;

}

隨后調(diào)用的StartService,實(shí)際上對(duì)應(yīng)DevHostServiceStartService()函數(shù):

【drivers/hdf/frameworks/core/host/src/Devhost_service.c】

static int DevHostServiceStartService(struct IDevHostService *service)

{

struct DevHostService *hostService = (struct DevHostService*)service;

if (hostService == NULL) {

HDF_LOGE("Start device service failed, hostService is null");

return HDF_FAILURE;

}

return DevmgrServiceClntAttachDeviceHost(hostService->hostId, service);

}

此處調(diào)用的DevmgrServiceClntAttachDeviceHost()函數(shù),內(nèi)部涉及的內(nèi)容挺多,我打算在下一篇文檔里再細(xì)說?,F(xiàn)在我們已經(jīng)對(duì)“啟動(dòng)DeviceManager”的流程有了一點(diǎn)初步的認(rèn)識(shí),為了便于理解里面host的部分,我們畫一張示意圖總結(jié)一下,繪圖如下:

編輯:hfy

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

    關(guān)注

    183

    文章

    2642

    瀏覽量

    69638
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2153

    瀏覽量

    35887
  • HDF框架
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    無人機(jī)高效能動(dòng)力推進(jìn)系統(tǒng):功能特點(diǎn)與平臺(tái)架構(gòu)解析

    無人機(jī)高效能動(dòng)力推進(jìn)系統(tǒng):功能特點(diǎn)與平臺(tái)架構(gòu)解析
    的頭像 發(fā)表于 01-14 15:27 ?163次閱讀
    無人機(jī)高效能動(dòng)力推進(jìn)<b class='flag-5'>系統(tǒng)</b>:功能特點(diǎn)與平臺(tái)<b class='flag-5'>架構(gòu)</b><b class='flag-5'>解析</b>

    大模型支撐后勤保障方案生成系統(tǒng):功能特點(diǎn)與平臺(tái)架構(gòu)解析

    支撐,實(shí)現(xiàn)資源高效配置與響應(yīng)速度提升。以下從支撐作用、系統(tǒng)架構(gòu)、核心功能及應(yīng)用場(chǎng)景展開精簡(jiǎn)解析: ? ?系統(tǒng)軟件供應(yīng)可以來這里,這個(gè)首肌開始是幺伍扒,中間是幺幺叁叁,最后
    的頭像 發(fā)表于 12-17 15:49 ?264次閱讀

    軟國(guó)際攜手愛聚科技完成義烏鴻蒙生態(tài)合作簽約

    10月15日,軟國(guó)際科技服務(wù)有限公司(以下簡(jiǎn)稱“軟國(guó)際”)聯(lián)合上海愛聚網(wǎng)絡(luò)科技有限公司(以下簡(jiǎn)稱“愛聚科技”),與義烏市文化旅游發(fā)展有限公司正式簽署義烏全域鴻蒙生態(tài)智慧旅合作協(xié)議
    的頭像 發(fā)表于 10-16 11:11 ?882次閱讀

    五大電磁頻譜管理系統(tǒng):原理、架構(gòu)與應(yīng)用全景解析

    五大電磁頻譜管理系統(tǒng):原理、架構(gòu)與應(yīng)用全景解析
    的頭像 發(fā)表于 09-26 10:21 ?447次閱讀
    五大電磁頻譜管理<b class='flag-5'>系統(tǒng)</b>:原理、<b class='flag-5'>架構(gòu)</b>與應(yīng)用全景<b class='flag-5'>解析</b>

    軟國(guó)際攜手愛聚科技,與山東旅完成省級(jí)鴻蒙生態(tài)合作簽約

    ? 8月6日,軟國(guó)際科技服務(wù)有限公司(以下簡(jiǎn)稱“軟國(guó)際”)聯(lián)合上海愛聚網(wǎng)絡(luò)科技有限公司(以下簡(jiǎn)稱“愛聚科技”),與山東省文旅集團(tuán)旗下山東旅云智能科技有限公司正式簽署省級(jí)鴻蒙生態(tài)智
    的頭像 發(fā)表于 08-08 21:05 ?1819次閱讀

    軟國(guó)際助力打造甘肅省首個(gè)鴻蒙生態(tài)智慧旅平臺(tái)

    近日,軟國(guó)際科技服務(wù)有限公司(以下簡(jiǎn)稱“軟國(guó)際”)聯(lián)合上海愛聚網(wǎng)絡(luò)科技有限公司(以下簡(jiǎn)稱“愛聚科技”),與甘肅省武威市文體廣電和旅游局正式簽署華為鴻蒙生態(tài)智慧旅合作框架協(xié)議,共同
    的頭像 發(fā)表于 07-25 14:28 ?856次閱讀

    軟國(guó)際助力打造黑龍江省首個(gè)鴻蒙生態(tài)智慧旅平臺(tái)

    近日,軟國(guó)際科技服務(wù)有限公司(以下簡(jiǎn)稱“軟國(guó)際”)聯(lián)合上海愛聚網(wǎng)絡(luò)科技有限公司(以下簡(jiǎn)稱“愛聚科技”),與齊齊哈爾市文化廣電和旅游局完成「樂游鶴城」鴻蒙生態(tài)智慧旅合作框架協(xié)議簽署
    的頭像 發(fā)表于 07-14 14:51 ?1304次閱讀

    鴻蒙Stage模型與FA模型詳解

    【HarmonyOS 5】鴻蒙Stage模型與FA模型詳解 ##鴻蒙開發(fā)能力 ##HarmonyOS SDK應(yīng)用服務(wù)##鴻蒙金融類應(yīng)用 (金融理財(cái)#
    的頭像 發(fā)表于 07-07 11:50 ?827次閱讀

    鴻蒙5開發(fā)寶藏案例分享---性能優(yōu)化案例解析

    鴻蒙性能優(yōu)化寶藏指南:實(shí)戰(zhàn)工具與代碼案例解析 大家好呀!今天在翻鴻蒙開發(fā)者文檔時(shí),意外挖到個(gè) 性能優(yōu)化寶藏庫 ——原來官方早就提供了超多實(shí)用工具和案例,但很多小伙伴可能沒發(fā)現(xiàn)!這篇就
    發(fā)表于 06-12 16:36

    GPU架構(gòu)深度解析

    GPU架構(gòu)深度解析從圖形處理到通用計(jì)算的進(jìn)化之路圖形處理單元(GPU),作為現(xiàn)代計(jì)算機(jī)不可或缺的部分,已經(jīng)從最初的圖形渲染專用處理器,發(fā)展成為強(qiáng)大的并行計(jì)算引擎,廣泛應(yīng)用于人工智能
    的頭像 發(fā)表于 05-30 10:36 ?1755次閱讀
    GPU<b class='flag-5'>架構(gòu)</b>深度<b class='flag-5'>解析</b>

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

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

    北京迅為RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)內(nèi)核HDF驅(qū)動(dòng)框架架構(gòu)

    北京迅為RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)內(nèi)核HDF驅(qū)動(dòng)框架架構(gòu)
    的頭像 發(fā)表于 03-11 14:13 ?1737次閱讀
    北京迅為RK3568開發(fā)板OpenHarmony<b class='flag-5'>系統(tǒng)</b>南向驅(qū)動(dòng)開發(fā)內(nèi)核<b class='flag-5'>HDF</b>驅(qū)動(dòng)框架<b class='flag-5'>架構(gòu)</b>

    電鴻系統(tǒng)技術(shù)架構(gòu)解析,觸覺智能推出多款電鴻適配硬件方案

    電鴻系統(tǒng)技術(shù)架構(gòu)解析,觸覺智能推出多款電鴻適配硬件方案
    的頭像 發(fā)表于 02-26 16:21 ?1740次閱讀
    電鴻<b class='flag-5'>系統(tǒng)</b>技術(shù)<b class='flag-5'>架構(gòu)</b><b class='flag-5'>解析</b>,觸覺智能推出多款電鴻適配硬件方案

    【「鴻蒙操作系統(tǒng)設(shè)計(jì)原理與架構(gòu)」閱讀體驗(yàn)】02-華為鴻蒙設(shè)計(jì)理念

    HarmonyOS:開啟萬物互聯(lián)新時(shí)代的設(shè)計(jì)理念解析 在科技飛速發(fā)展的當(dāng)下,HarmonyOS(鴻蒙操作系統(tǒng))宛如顆璀璨的新星,在全球操作系統(tǒng)
    發(fā)表于 02-23 16:16

    解析工業(yè)互聯(lián)網(wǎng)

    電子發(fā)燒友網(wǎng)站提供《解析工業(yè)互聯(lián)網(wǎng).pptx》資料免費(fèi)下載
    發(fā)表于 02-20 16:42 ?1次下載