當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于DM6446的Windows CE顯示驅(qū)動(dòng)設(shè)計(jì)實(shí)現(xiàn)

摘 要: DM6446是一款有著豐富外設(shè)資源和強(qiáng)大計(jì)算能力的多媒體處理芯片,一般需要通過(guò)操作系統(tǒng)對(duì)其復(fù)雜資源進(jìn)行有效管理。由于多數(shù)多媒體應(yīng)用需要有圖形界面,但現(xiàn)有平臺(tái)操作系統(tǒng)Linux 其內(nèi)核和圖形界面是分離的,需要另外移植,相比之下WINCE本身自帶了較為優(yōu)秀的圖形界面,只需對(duì)其進(jìn)行顯示驅(qū)動(dòng)的開(kāi)發(fā)就能擁有一個(gè)優(yōu)秀的圖形界面。詳細(xì)闡述了WINCE顯示驅(qū)動(dòng)原理和在DM6446上的設(shè)計(jì)與實(shí)現(xiàn)。系統(tǒng)啟動(dòng)后WINCE圖形界面運(yùn)行穩(wěn)定,表明驅(qū)動(dòng)程序?qū)崿F(xiàn)良好。

  作為一款多媒體處理芯片,TI公司推出的DM6446 采用ARM+DSP 的雙內(nèi)核架構(gòu),有著豐富的外設(shè)資源和強(qiáng)大的計(jì)算能力,因此一般通過(guò)操作系統(tǒng)對(duì)其復(fù)雜資源進(jìn)行有效管理。DM6446現(xiàn)有平臺(tái)操作系統(tǒng)主要基于嵌入式linux 系統(tǒng),但同時(shí)也有支持其他主流嵌入式操作系統(tǒng)的能力。

  由于多媒體應(yīng)用常常需要有圖形界面,而現(xiàn)有平臺(tái)操作系統(tǒng)Linux其內(nèi)核和圖形界面是分離的,需要進(jìn)行另外移植,相比之下Windows CE本身自帶了較為優(yōu)秀的圖形界面,只需對(duì)其進(jìn)行顯示驅(qū)動(dòng)的開(kāi)發(fā)就能擁有一個(gè)優(yōu)秀的圖形界面。因此選擇在DM6446進(jìn)行其他系統(tǒng)的移植開(kāi)發(fā)無(wú)疑能使該平臺(tái)程序開(kāi)發(fā)具有更多的選擇余地和更高的性價(jià)比。

  Windows CE是Microsoft公司專(zhuān)門(mén)針對(duì)嵌入式產(chǎn)品領(lǐng)域開(kāi)發(fā)的嵌入式操作系統(tǒng),具有圖形用戶界面出色、多任務(wù)處理能力、可裁剪性和可移植性、應(yīng)用軟件支持豐富、實(shí)時(shí)性良好等特點(diǎn)。本文選用的Windows CE版本為Windows CE.NET 5.0,以下簡(jiǎn)稱(chēng)為WINCE.

  1 DM6446芯片及其顯示模塊介紹

  1.1 DM6446芯片簡(jiǎn)介

  DM6446 芯片,如下圖1所示,由ARM子系統(tǒng)、DSP子系統(tǒng)、VICP協(xié)處理器、視頻處理子系統(tǒng)和眾多的芯片外設(shè)組成。其中ARM 核用作整個(gè)系統(tǒng)的控制功能,DSP 子系統(tǒng)用于復(fù)雜的數(shù)據(jù)和圖像處理功能,視頻處理子系統(tǒng)用于和圖像輸入和輸出。這些模塊的聯(lián)系通過(guò)中心資源交換通道(Switch CentralResources,SCR) 進(jìn)行管理。

圖1 DM6446 芯片總體架構(gòu)

  1.2 芯片顯示模塊功能介紹

  DM6446 顯示模塊又稱(chēng)為視頻處理后端(VPBE,Video Processing Back End),為芯片視頻處理子系統(tǒng)的一部分。VPBE 總體結(jié)構(gòu)如圖2 所示。由圖2 可以看出,VPBE主要由1 個(gè)OSD (On Screen Display)引擎和1 個(gè)視頻編碼器(VENC,Video ENCoder)組成。OSD引擎可以處理2個(gè)獨(dú)立的視頻窗口和兩個(gè)獨(dú)立的OSD窗口,VENC視頻編碼器則能提供四路視頻數(shù)據(jù)轉(zhuǎn)換,工作頻率高達(dá)54MHz,兼容NTSC/PAL制式視頻和S-Video.

圖2 DM6446 顯示模塊總體架構(gòu)。

  DM6446 視頻編碼器還能夠向RGB888 的顯示設(shè)備提供24 bit的數(shù)字視頻輸出接口,支持8/16為的BT.656 輸出和垂直/水平同步分離的CCIR.601.

  OSD 模塊的視頻信號(hào)在輸出之前會(huì)經(jīng)過(guò)合成然后送到VENC最終轉(zhuǎn)變成YCbCr格式輸出。視頻數(shù)據(jù)是建立在外部存儲(chǔ)器DDR2的,并直接送到顯示設(shè)備作顯示。從DAC出來(lái)就可以通過(guò)RCA端子接上LCD液晶電視。更詳細(xì)的硬件說(shuō)明可參考TI 的官方數(shù)據(jù)手冊(cè)TMS320DM644x DMSoC Video Processing BackEnd (VPBE) User‘s Guide.pdf.

2 WINCE驅(qū)動(dòng)架構(gòu)分析

  將WINCE 移植到DM6446 上面除了需要進(jìn)行OAL層的代碼和源碼配置文件的編寫(xiě)以外,還需進(jìn)行大量的設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)。

  2.1 WINCE驅(qū)動(dòng)原理

  設(shè)備驅(qū)動(dòng)程序作為一個(gè)抽象物理設(shè)備或虛擬設(shè)備的功能程序,它管理設(shè)備的操作,并將設(shè)備的功能導(dǎo)出給應(yīng)用程序和操作系統(tǒng)。因此用戶程序訪問(wèn)這些硬件設(shè)備只需要通過(guò)調(diào)用驅(qū)動(dòng)程序提供的接口函數(shù)。

  WINCE 的所有設(shè)備驅(qū)動(dòng)程序都是以用戶態(tài)下動(dòng)態(tài)鏈接庫(kù)(Dynamic Linkable Library,DLL)文件形式存在的。像所有的Windows DLL一樣,DLL是無(wú)法單獨(dú)被加載和運(yùn)行的。如果要運(yùn)行DLL 中的代碼,必須有一個(gè)EXE 進(jìn)程首先把該 DLL 加載到自己的地址空間內(nèi),然后才可以執(zhí)行DLL 中的代碼。WINCE 下的驅(qū)動(dòng)程序也必須被其他EXE加載。

  2.2 WINCE驅(qū)動(dòng)分類(lèi)

  基于WINCE的驅(qū)動(dòng)程序有兩種模型:本地設(shè)備驅(qū)動(dòng)程序(Native Device Driver) 和流接口驅(qū)動(dòng)( Streams Device Driver) 程序。本機(jī)設(shè)備驅(qū)動(dòng)程序適用于集成到WINCE平臺(tái)的設(shè)備,總是在WINCE的平臺(tái)啟動(dòng)時(shí)被加載;流接口驅(qū)動(dòng)程序也稱(chēng)為可安裝的驅(qū)動(dòng)程序,它們使用流接口驅(qū)動(dòng)并借助于文件系統(tǒng)調(diào)用(如Createfile,DeviceIoControl等)從設(shè)備管理器或應(yīng)用程序獲得命令。本文討論的顯示驅(qū)動(dòng)屬于本地設(shè)備驅(qū)動(dòng)程序。

  而從驅(qū)動(dòng)實(shí)現(xiàn)方式來(lái)區(qū)分,無(wú)論流接口驅(qū)動(dòng)還是本地驅(qū)動(dòng)設(shè)備驅(qū)動(dòng),都可以采用兩種實(shí)現(xiàn)方式:?jiǎn)误w結(jié)構(gòu)方式和分層結(jié)構(gòu)方式,它們都向上提供DDI (Device Driver Interface)調(diào)用,供其他模塊或應(yīng)用程序調(diào)用。無(wú)論采用哪種結(jié)構(gòu),驅(qū)動(dòng)程序都必須與其控制設(shè)備的DDI 相一致。DDI是與WINCE 系統(tǒng)的接口,流接口設(shè)備的DDI 都是流接口函數(shù)。

  3 顯示驅(qū)動(dòng)的實(shí)現(xiàn)

  3.1 顯示驅(qū)動(dòng)的加載管理

圖3 WINCE顯示驅(qū)動(dòng)主體架構(gòu)示意圖。

  WINCE下的驅(qū)動(dòng)程序必須被其他EXE加載,顯示驅(qū)動(dòng)也不例外。WINCE 顯示驅(qū)動(dòng)在系統(tǒng)啟動(dòng)時(shí)由GWES.exe 加載和管理,并駐留在GWES 的進(jìn)程地址空間內(nèi)。如圖3 所示,GWES 子系統(tǒng),由GDI 和DirectDraw兩部分組成,為運(yùn)行在操作系統(tǒng)之上的應(yīng)用程序提供圖形功能的系統(tǒng)調(diào)用,例如CreateDC,ReleaseDC等等。GWES加載顯示驅(qū)動(dòng)的具體過(guò)程如下:GWES啟動(dòng)時(shí)將去訪問(wèn)候選顯示設(shè)備列表(該列表在注冊(cè)表HKEY_LOCAL_MACHINESystemGDIDisplayCandidates下面),看看是否有驅(qū)動(dòng)程序已經(jīng)在本機(jī)上實(shí)例化,如果有的話GWES 會(huì)使用它找到的第一個(gè)已經(jīng)實(shí)例化的驅(qū)動(dòng);如果驅(qū)動(dòng)程序沒(méi)有在本機(jī)上實(shí)例話或者找不到合適的驅(qū)動(dòng)程序,接下來(lái)GWES嘗試加載Ddi.dll.默認(rèn)情況下加載的是Ddi.dll,但如果存在KEY_LOCAL_MACHINESystemGDIDriversDisplay項(xiàng),GWES會(huì)加載此注冊(cè)表項(xiàng)所指定的顯示驅(qū)動(dòng)。[!--empirenews.page--]

  3.2 顯示驅(qū)動(dòng)主要組成部分

  WINCE 的顯示驅(qū)動(dòng)程序如圖3 所示,由DDI(Display Device Interface) 和HAL(Hardware Abstraction Layer)兩部分組成。

  HAL 主要為DirectDraw 服務(wù),只需要在驅(qū)動(dòng)中向GDI 導(dǎo)出HALinit()即可,因此本文研究的重點(diǎn)是DDI 部分,即通常的顯示驅(qū)動(dòng)部分。由于在顯示中存在大量硬件無(wú)關(guān)操作,顯示驅(qū)動(dòng)通常采用分層結(jié)構(gòu),采用分層結(jié)構(gòu)有助于降低代碼復(fù)雜度提高代碼效率,其中MDD 層實(shí)現(xiàn)缺省的繪圖功能,由微軟提供的圖形原語(yǔ)引擎模塊(GPE , GraphicsPrimitive Engine)組成,如果要支持Directdraw,則要使用DDGPE模塊;而PDD層與硬件具體相關(guān),則是顯示驅(qū)動(dòng)的主要內(nèi)容,一般由OEM 廠商或獨(dú)立硬件商實(shí)現(xiàn)。

  WINCE 上層程序通過(guò)一組(約20 多個(gè))顯示驅(qū)動(dòng)接口函數(shù)同顯示驅(qū)動(dòng)打交道,因此顯示設(shè)備驅(qū)動(dòng)程序必須實(shí)現(xiàn)這些顯示驅(qū)動(dòng)接口函數(shù),GDI 通過(guò)調(diào)用這組函數(shù)初始化顯示設(shè)備驅(qū)動(dòng)程序和將圖形輸出到顯示設(shè)備上。由于采用分層結(jié)構(gòu),顯示驅(qū)動(dòng)由MDD 層負(fù)責(zé)對(duì)上層的GWES模塊提供函數(shù)接口,但是這些函數(shù)并不是直接提供出來(lái)的,實(shí)際上只是通過(guò)一個(gè)DrvEnabLEDriver( )函數(shù)來(lái)完成的。作為DDI部分的一個(gè)導(dǎo)出函數(shù),DrvEnableDriver會(huì)在GDI初始化時(shí)被調(diào)用。

  DrvEnableDriver 在MDD 層中沒(méi)有實(shí)現(xiàn),所以需要在PDD層中定義,主要代碼如下:

  BOOL APIENTRY DrvEnableDriver

 ?。║LONG engineVersion,ULONG cj,DRVENABLEDATA *data,PENGCALLBACKS engineCallbacks)

  {

  BOOL fOk = FALSE;

  if(gszBaseInstance[0] != 0)

  {

  fOk =

  GPEEnableDriver(engineVersion, cj, data,engineCallbacks);

  }

  return fOk;

  }

  這里GPEEnableDriver 是微軟預(yù)先編寫(xiě)的一個(gè)MDD層函數(shù)。該函數(shù)位于源文件ddi_if.cpp里, 因此我們只需簡(jiǎn)單調(diào)用就可以了。

GPEEnableDriver 函數(shù)通過(guò)執(zhí)行語(yǔ)句memcpy(pded, &pDrvFn, cj) 將一個(gè)預(yù)先定義好的DRVENABLEDATA 結(jié)構(gòu)體變量pDrvFn 的地址傳給一個(gè)上層結(jié)構(gòu)體指針pded.而在結(jié)構(gòu)體變量pDrvFn 中預(yù)先已包含了20 多個(gè)底層顯示驅(qū)動(dòng)函數(shù)指針,這樣GWES 就可以通過(guò)這些指針操縱底層顯示硬件了。例如應(yīng)用程序想創(chuàng)建一個(gè)到圖形設(shè)備的連接時(shí)可以通過(guò)GWES.exe 調(diào)用CreateDC(),而該函數(shù)會(huì)調(diào)用DrvEnablePDEV()函數(shù),當(dāng)應(yīng)用程序需要從顯示設(shè)備上斷開(kāi)時(shí)則會(huì)調(diào)用DeleteDC() , DeleteDC() 則會(huì)調(diào)用DrvDisablePDEV() .DrvEnablePDEV() 和DrvDisablePDEV()就屬于這20 多個(gè)被GWES 調(diào)用的底層顯示驅(qū)動(dòng)函數(shù)。

  以上這些底層顯示驅(qū)動(dòng)函數(shù)大部分跟硬件密切相關(guān),因此需要進(jìn)一步調(diào)用PDD層函數(shù)。由于不同的顯示硬件特點(diǎn)都不盡相同,因此勢(shì)必造成PDD層暴露給MDD層的接口函數(shù)各不相同,這樣勢(shì)必會(huì)增加代碼的復(fù)雜性。為此微軟設(shè)計(jì)了一個(gè)GPE類(lèi),一個(gè)GPE類(lèi)實(shí)例代表一個(gè)顯示設(shè)備硬件,其所有數(shù)據(jù)成員都對(duì)應(yīng)于一個(gè)顯示設(shè)備的屬性數(shù)據(jù),并設(shè)計(jì)了多個(gè)成員函數(shù)用以操縱這些數(shù)據(jù)成員??紤]到硬件的多樣性,GPE 類(lèi)的有些函數(shù)并為全部實(shí)現(xiàn),或?yàn)榭蘸瘮?shù)或者虛函數(shù),需要其子類(lèi)實(shí)現(xiàn)或者覆蓋。因此不能直接定義GPE類(lèi)型的變量,只能以先構(gòu)造GPE類(lèi)為父類(lèi)的繼承類(lèi),然后才能定義實(shí)例。

  MDD 層的底層顯示驅(qū)動(dòng)函數(shù)通過(guò)實(shí)例化一個(gè)GPE 繼承類(lèi)的實(shí)例就可以直接調(diào)用PDD 層代碼了,這一般是通過(guò)SafeGetGPE 函數(shù)來(lái)實(shí)現(xiàn)的。

  SafeGetGPE 由微軟設(shè)計(jì)實(shí)現(xiàn),位于MDD 層的ddi_if.cpp,一般無(wú)須改動(dòng)。在SafeGetGPE 函數(shù)中調(diào)用了GetGPE 函數(shù),這個(gè)函數(shù)MDD 層沒(méi)有,需要我們?cè)赑DD 層實(shí)現(xiàn)。GetGPE 函數(shù)可以簡(jiǎn)單實(shí)現(xiàn)如下:

  這里代碼利用了C++的多態(tài)性和繼承性。在C++中父類(lèi)或更上一級(jí)的類(lèi)的指針可以引用繼承類(lèi)中相同的變量,并且對(duì)數(shù)據(jù)成員和成員函數(shù)的引用以繼承類(lèi)的實(shí)現(xiàn)或定義優(yōu)先。這樣在MDD 中使用指針gGPE 所指向的數(shù)據(jù)或函數(shù)時(shí)得到的都是類(lèi)DM6446VPBE 的成員變量和成員函數(shù)。由此可以看出GetGPE 函數(shù)是顯示驅(qū)動(dòng)中聯(lián)系MDD和PDD 的橋梁,通過(guò)它MDD 可以直接調(diào)用PDD的代碼。

  3.3 GPE繼承類(lèi)的實(shí)現(xiàn)

  通過(guò)上面的分析可以看出,WINCE 的顯示驅(qū)動(dòng)主要部分在于PDD 層,而PDD 層除了向MDD導(dǎo)出一些接口函數(shù)外如DrvEnableDriver,其余主要是構(gòu)建一個(gè)GPE 或是DDGPE 的子類(lèi)(如果要實(shí)現(xiàn)DirectDraw)。由于DDGPE 的父類(lèi)是GPE,因此無(wú)論是DDGPE 還是GPE 的子類(lèi)差別并不大。

  構(gòu)建一個(gè)GPE 的子類(lèi)其實(shí)就是實(shí)現(xiàn)一個(gè)有具體數(shù)據(jù)和函數(shù)并且具體準(zhǔn)確的反映了特定顯示設(shè)備硬件屬性的GPE 類(lèi)的子類(lèi),并通過(guò)該子類(lèi)去實(shí)例化一個(gè)對(duì)象。

  一個(gè)GPE 子類(lèi)通常需要重載GPE 類(lèi)中的同名函數(shù)和實(shí)現(xiàn)GPE中的虛函數(shù)以及子類(lèi)獨(dú)有的一些函數(shù)如初始化構(gòu)造函數(shù)[3].子類(lèi)構(gòu)造函數(shù)主要是初始化硬件和子類(lèi)成員變量,譬如視頻處理時(shí)鐘寄存器設(shè)置,OSD Window 的大小和坐標(biāo),VENC 的輸出模式,以及子類(lèi)的成員變量如顯示寬度m_nScreenWidth 和顯示高度m_nScreenHeight 等等。子類(lèi)要GPE 類(lèi)中的函數(shù)包括GPE 的空函數(shù)和虛函數(shù),這些函數(shù)實(shí)際上就是MDD 調(diào)用PDD 層驅(qū)動(dòng)中需要實(shí)現(xiàn)的函數(shù),主要函數(shù)包括:SetMode(),用于設(shè)置一個(gè)顯示設(shè)備能夠支持的顯示模式;GetPhysicalVideoMemory(),用于獲取顯示設(shè)備內(nèi)存的系統(tǒng)基地址和內(nèi)存大?。?以及AllocSurface() SetPointerShape()BltComplete() SetPalette()等。這些函數(shù)具體可以參考微軟提供的驅(qū)動(dòng)示例代碼,它們位于Public CommonOAKDriversDisplay 目錄下[ 1].除了這些函數(shù)外PDD 還需實(shí)現(xiàn)一個(gè)MDD 層函數(shù)DrvGetMask,但比較簡(jiǎn)單,只需要定義一個(gè)全局?jǐn)?shù)組gBitMasks,該數(shù)組內(nèi)容是代表RGB 的所占的位域,與具體的顯示硬件有關(guān)。

  3.4 驅(qū)動(dòng)程序與應(yīng)用程序的通信

  不同于其他流式驅(qū)動(dòng)可以由應(yīng)用程序直接調(diào)用,顯示驅(qū)動(dòng)由操作系統(tǒng)調(diào)用,應(yīng)用程序不能直接訪問(wèn)。具體來(lái)說(shuō),應(yīng)用程序不是通過(guò)CreateFile等這些文件系統(tǒng)API接口來(lái)訪問(wèn),而是通過(guò)GDI接口間接訪問(wèn)。對(duì)于GDI調(diào)用而言,對(duì)應(yīng)的后臺(tái)服務(wù)進(jìn)程是GWES.exe,然后GWES.exe再進(jìn)一步調(diào)用MDD和PDD函數(shù),即WINCE底層顯示驅(qū)動(dòng)。例如如果要畫(huà)一個(gè)矩形,則可以調(diào)用SetRect、GetDC和FillRect等函數(shù)在圖形界面上面進(jìn)行顯示,而要在圖形界面上輸出一段文字只需調(diào)用DrawText函數(shù)就可以了,至于顯示驅(qū)動(dòng)調(diào)用就可以交給GDI就可以了。

  4 結(jié)束語(yǔ)

  本文闡述和分析了DM6446 顯示硬件原理和Windows CE驅(qū)動(dòng)模型,剖析了顯示驅(qū)動(dòng)程序的工作原理和顯示工作流程。本文的創(chuàng)新點(diǎn)在于完整的闡述了WINCE顯示驅(qū)動(dòng)程序在DM6446上的設(shè)計(jì)實(shí)現(xiàn),而以往WINCE 的顯示驅(qū)動(dòng)都是基于LCD,因此本文對(duì)編寫(xiě)同類(lèi)驅(qū)動(dòng)程序的開(kāi)發(fā)人員將有一定的參考價(jià)值。WINCE啟動(dòng)運(yùn)行后,圖形界面運(yùn)行穩(wěn)定,并可支持Windows CE下的應(yīng)用軟件運(yùn)行,表明驅(qū)動(dòng)程序設(shè)計(jì)良好。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉