當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]Qt/Embedded在嵌入式Linux系統(tǒng)中的應(yīng)用

    摘要:分析和討論Qt/Embedded的主流版本3.x系列的底層實(shí)現(xiàn)技術(shù);結(jié)合2.x版本系列和3.x版本系列,在兩種不同的硬件平臺(Intel PXA255開發(fā)系統(tǒng)與筆者自行設(shè)計的Motorola MC9328 MX1開發(fā)系統(tǒng))上的移植過程,討論Qt/Embedded的底層設(shè)備接口與應(yīng)用移植技術(shù)。

    關(guān)鍵詞:Qt/Embedded嵌入式Linux framebuffer 驅(qū)動接口

引言

隨著嵌入式Linux應(yīng)用的不斷發(fā)展,嵌入式處理器運(yùn)算能力的不斷增強(qiáng),越來越多的嵌入式設(shè)備開始采用較為復(fù)雜的GUI系統(tǒng),手持設(shè)備中的GUI系統(tǒng)發(fā)展得非常迅速。傳統(tǒng)的GUI系統(tǒng),如Microwindows等,由于項(xiàng)目規(guī)模較小、功能較為薄弱,缺乏等三方軟件開發(fā)的支持等諸多原因,在比較高級的手持或移動終端設(shè)備(如PDA、Smart-Phone、車載導(dǎo)航系統(tǒng))中應(yīng)用較少。

Qt/Embedded是著名的Qt庫開發(fā)商Trolltech公司開發(fā)的面向嵌入式系統(tǒng)的Qt版本,開發(fā)人員多為KDE項(xiàng)目的核心開發(fā)人員。許多基于Qt的X Window程序可以非常方便地移植到Qt/Embedded上,與X11版本的Qt在最大程度上接口兼容,延續(xù)了在X上的強(qiáng)大功能,在底層徹底摒棄了X lib,僅采用framebuffer作為底層圖形接口。Qt/Embedded類庫完全采用C++封裝。豐富的控件資源和較好的可移植性是Qt/Embedded最為優(yōu)秀的一方面,使用X下的開發(fā)工具Qt Designer可以直接開發(fā)基于Qt/Embedded的UI(用戶操作接口)界面。越來越多的第三方軟件公司也開始采用Qt/Embedded開發(fā)嵌入式Linux下的應(yīng)用軟件。其中非常著名的Qt Palmtop Environment(Qtopia)早期是一個第三方的開源項(xiàng)目,并已經(jīng)成功應(yīng)用于多款高檔PDA。Trolltech公司針對Smart-Phone中的應(yīng)用需求,于2004年5月底發(fā)布了Qtopia的Phone版本。

1 Qt/Embedded的實(shí)現(xiàn)技術(shù)基礎(chǔ)分析

橫向來看,由于發(fā)布的版權(quán)問題,Qt/Embedded采用兩種方式進(jìn)行發(fā)布:在GPL協(xié)議下發(fā)布的free版與專門針對商業(yè)應(yīng)用的commercial版本。二者除了發(fā)布方式外,在源碼上沒有任何區(qū)別??v向看來,當(dāng)前主流的版本為Qtopia的2.x系列與最新的3.0x系列。其中2.0版本系統(tǒng)較多地應(yīng)用于采用Qtopia作為高檔PDA主界面的應(yīng)用中;3.x版本系列則應(yīng)用于功能相對單一,但需要高級GUI圖形支持的場合,如Volvo公司的遠(yuǎn)程公交信息系統(tǒng)。圖1為Qt/Embedded的實(shí)現(xiàn)結(jié)構(gòu)。

3.x版本系列的Qt/Embedded相對于2.x版本系統(tǒng)增加了許多新的模塊,如SQL數(shù)據(jù)庫查詢模塊等。幾乎所有2.x版本中原有的類庫,在3.x版本中都得到極大程度的增強(qiáng)。這就極大地縮短了應(yīng)用軟件的開發(fā)時間,擴(kuò)大了Qt/Embedded的應(yīng)用范圍。

    在代碼設(shè)計上,Qt/Embedded巧妙地利用了C++獨(dú)有的機(jī)制,如繼承、多態(tài)、模板等,具體實(shí)現(xiàn)非常靈活。但其底層代碼由于追求與多種系統(tǒng)、多種硬件的兼容,代碼補(bǔ)丁較多,風(fēng)格稍顯混亂。

1.1 Qt/Embedded的圖形引擎實(shí)現(xiàn)基礎(chǔ)

Qt/Embedded的底層圖形引擎基于framebuffer。Framebuffer是在Linux內(nèi)核架構(gòu)版本2.2以后推出的標(biāo)準(zhǔn)顯示設(shè)備驅(qū)動接口。采用mmap系統(tǒng)調(diào)用,可以將framebuffer的顯示緩存映射為可連續(xù)訪問的一段內(nèi)存儲針。由于目前比較高級的ARM體系的嵌入式CPU中大多集成了LCD控制模塊,LCD控制模塊一般采用雙DMA控制器組成的專用DMA通道。其中一個DMA可以自動從一個數(shù)據(jù)結(jié)構(gòu)隊(duì)列中取出并裝入新的參數(shù),直到整個隊(duì)列中的DMA操作都已完成為止。另外一個DMA與畫面緩沖區(qū)相關(guān),這部分由兩個DMA控制器交替執(zhí)行,并每次都自動按照預(yù)定的規(guī)則改變參數(shù)。雖然使用了雙DMA,但這兩個DMA控制器的交替使用對于CPU來說是不可見的。CPU所獲得的只是由兩個DMA組成的一個“通道”而已。

Framebuffer驅(qū)動程序的實(shí)現(xiàn)分為兩個方面:一方面是對LCD及其相關(guān)部分的初始化,包括畫在緩沖區(qū)的創(chuàng)建和對DMA通道的設(shè)置;另外一方面是對畫面緩沖區(qū)的讀寫,具體到代碼為read、write、lseek等系統(tǒng)調(diào)用接口。至于將畫面緩沖區(qū)的內(nèi)容輸出到LCD顯示屏上,則由硬件自動完成。對于軟件來說是透明的。當(dāng)對于DMA通道和畫面緩沖區(qū)設(shè)置完成后,DMA開始正常工作,并將緩沖區(qū)中的內(nèi)容不斷發(fā)送到LCD上。這個過程是基于DMA對于LCD的不斷刷新的。基于該特性,framebuffer驅(qū)動程序必須將畫面緩沖區(qū)的存儲空間(物理空間)重新映射到一個不加高緩存和寫緩存的虛擬地址區(qū)間中,這樣能才保證應(yīng)用程序通過mmap將該緩存映射到用戶空間后,對于該畫面緩存的寫操作能夠?qū)崟r的體現(xiàn)在LCD上。

在Qt/Embedded中,Qscreen類為抽象出的底層顯示設(shè)備基類,其中聲明了對于顯示設(shè)備的基本描述和操作方式,如打開、關(guān)閉、獲得顯示能力、創(chuàng)建GFX操作對象等。另外一個重要的基類是QGfx類。該類抽象出對于顯示設(shè)備的具體操作接口(圖形設(shè)備環(huán)境),如選擇畫刷、畫線、畫矩形、alpha操作等。以上兩個基類是Qt/Embedded圖形引擎的底層抽象。其中所有具體函數(shù)基本都是虛函數(shù),Qt/Embedded對于具體的顯示設(shè)備,如Linux的framebuffer、Qt Virtual Framebuffer做的抽象接口類全都由此繼承并重載基類中的虛函數(shù)實(shí)現(xiàn)。圖2為Qt/Embedded中底層圖形引擎實(shí)現(xiàn)結(jié)構(gòu)。

圖2

    在圖2中,對于基本的framebuffer設(shè)備,Qt/Embedded用QlinuxFbScreen來處理。針對具體顯示硬件(如Mach卡、Voodoo卡)的加速特性,Qt/Embedded從QlinuxFbScreen和圖形設(shè)備環(huán)境模板類QgfxRaster<depth,type>繼承出相應(yīng)子類,并針對相應(yīng)硬件重載相關(guān)虛函數(shù)。

Qt/Embedded在體系上為C/S結(jié)構(gòu),任何一個Qt/Embedded程序都可以作為系統(tǒng)中唯一的一個GUI Server存在。當(dāng)應(yīng)用程序首次以系統(tǒng)GUI Server的方式加載時,將建立QWSServer實(shí)體。此時調(diào)用QWSServer::openDisplay()函數(shù)創(chuàng)建窗體,在QWSServer::openDisplay()中對QWSDisplay::Data中的init()加以調(diào)用;根據(jù)QgfxDriverFactory實(shí)體中的定義(QLinuxFbScreen)設(shè)置關(guān)鍵的Qscreen指針qt_screen并調(diào)用connect()打開顯示設(shè)備(dev/fb0)。在QWSServer中所有對于顯示設(shè)備的調(diào)用都由qt_screen發(fā)起。至此完成了Qt/Embedded中QWSServer的圖形發(fā)生引擎的創(chuàng)建。當(dāng)系統(tǒng)中建立好GUI Server后,其它需要運(yùn)行的Qt/Embedded程序在加載后采用共享內(nèi)存及有名管道的進(jìn)程通信方式,以同步訪問模式獲得對共享資源framebuffer設(shè)備的訪問權(quán)。

1.2 Qt/Embedded的事件驅(qū)動基礎(chǔ)

Qt/Embedded中與用戶輸入事件相關(guān)的信號,是建立在對底層輸入設(shè)備的接口調(diào)用之上的。Qt/Embedded中的輸入設(shè)備,分為鼠標(biāo)類與鍵盤類。以3.x版本系列為例,其中鼠標(biāo)設(shè)備的抽象基類為QWSMouse Handler,從該類又重新派生出一些具體的鼠標(biāo)類設(shè)備的實(shí)現(xiàn)類。該版本系列的Qt/Embedded中,鼠標(biāo)類設(shè)備的派生結(jié)構(gòu)如圖3所示。

與圖形發(fā)生引擎加載方式類似的,在系統(tǒng)加載構(gòu)造QWSServer時,調(diào)用QWSServer::openMouse與QWSServer::openKeyboard函數(shù)。這兩個函數(shù)分別調(diào)用QmouseDriverFactory::create()與QkbdDriverFactory::create()函數(shù)。這時會根據(jù)Linux系統(tǒng)的環(huán)境變量QWS_MOUSE_PROTO與QWS_KEYBOARD獲得鼠標(biāo)類設(shè)備和鍵盤類設(shè)備的設(shè)備類型和設(shè)備節(jié)點(diǎn)。打開相應(yīng)設(shè)備并返回相應(yīng)設(shè)備的基類句柄指針給系統(tǒng),系統(tǒng)通過將該基類指令強(qiáng)制轉(zhuǎn)換為對應(yīng)的具體子類設(shè)備指針,獲得對具體鼠標(biāo)類設(shè)備和鍵盤類設(shè)備的調(diào)用操作。

值得注意的是,雖然幾乎鼠標(biāo)類設(shè)備的功能上基本一致,但由于觸摸屏和鼠標(biāo)底層接口并不一樣,會造成對上層接口的不一致。舉例來講,從鼠標(biāo)驅(qū)動接口中幾乎不會得到絕對位置信息,一般只會讀到相對移動量。另外,鼠標(biāo)的移動速度也需要考慮在內(nèi),而觸摸屏接口則幾乎是清一色的絕對位置信息和壓力信息。針對此類差別,Qt/Embedded將同一類設(shè)備的接口部分也給予區(qū)別和抽象,具體實(shí)現(xiàn)在QmouseDriverInterface類中。鍵盤類設(shè)備也存在類似問題,同樣引入了QkbdDriver Inteface來解決。具體實(shí)現(xiàn)此處暫不多述。

2 Qt/Embedded的移植與應(yīng)用

針對Qt/Embedded的實(shí)現(xiàn)特點(diǎn),移植該嵌入式GUI系統(tǒng)一般分為以下幾個步驟:

①設(shè)計硬件開發(fā)平臺,并移植Linux操作系統(tǒng);

②采用靜態(tài)鏈接進(jìn)Linux內(nèi)核的方式,根據(jù)該平臺顯示設(shè)備的顯示能力,開發(fā)framebuffer驅(qū)動程序;

③開發(fā)針對該平臺的鼠標(biāo)類設(shè)備驅(qū)動程序,一般為觸摸屏或USB鼠標(biāo);

④開發(fā)針對該平臺的鍵盤類設(shè)備驅(qū)動程序,一般為板載按鈕或USB鍵盤(該部分可選);

⑤根據(jù)framebuffer驅(qū)動程序接口,選擇并修改Qt/Embedded中的QlinuxFbScreen和QgfxRaster類;

⑥根據(jù)鼠標(biāo)類設(shè)備驅(qū)動程序,實(shí)現(xiàn)該類設(shè)備在Qt/Embedded中的操作接口;

⑦根據(jù)鍵盤類設(shè)備驅(qū)動程序,實(shí)現(xiàn)該類設(shè)備在Qt/Embedded中的操作接口(該部分可選);

⑧根據(jù)需要選擇Qt/Embedded的配置選項(xiàng),交叉編譯Qt/Embedded的動態(tài)庫;

⑨交叉編譯Qt/Embedded中的Example測試程序,在目標(biāo)平臺上運(yùn)行測試。

Framebuffer設(shè)備驅(qū)動程序提供出的接口是標(biāo)準(zhǔn)的,除了注意endian問題外,配置Qt/Embedded時選擇相應(yīng)的色彩深度支持即可,因此該部分的移植難點(diǎn)就在于framebuffer驅(qū)動程序的實(shí)現(xiàn)。Qt/Embedded部分的QWSServer打開/dev/中的framebuffer設(shè)備后讀出相應(yīng)的顯示能力(屏幕尺寸、顯示色彩深度),模板QgfxRaster<depth.type>將根據(jù)色彩深度在用戶空間設(shè)備創(chuàng)建出與顯示緩存同樣大小的緩沖作為雙緩沖,并采用正確方式進(jìn)行顯示。

    2.1 在PXA255平臺上移植和應(yīng)用

在筆者參與設(shè)計的某Smart-Phone開發(fā)平臺中,GUI系統(tǒng)實(shí)現(xiàn)方案采用了Qt/Embedded 2.3.7和Qtopia 1.7.0(基于Qt/Embedded 2.x系列的手持套件),硬件平臺采用了基于Intel XScale PXA255處理器的嵌入式開發(fā)系統(tǒng)。該開發(fā)系統(tǒng)采用640×480分辨率的TFT LCD和PXA255內(nèi)部LCD控制模塊作為顯示設(shè)備,ADS7846N作為外部電阻式觸摸屏控制器;另外,采用了五方向按鍵作為板載鍵盤。由于該系統(tǒng)采用了ISP1161作為USB Host控制器,較好地支持了USB接口的鍵盤和鼠標(biāo),操作系統(tǒng)為ARM Linux 2.4.19。參考Linux 2.4.19內(nèi)核目錄drivers/input部分,可以按照標(biāo)準(zhǔn)內(nèi)核中input device接口設(shè)計實(shí)現(xiàn)觸摸屏和鍵盤,在實(shí)現(xiàn)了基于ISP1161的EHCI驅(qū)動程序后,移植標(biāo)準(zhǔn)的USB接口的人機(jī)界面設(shè)備驅(qū)動HID和USB鍵盤、鼠標(biāo)的驅(qū)動程序后,可以獲得對于該類設(shè)備的調(diào)用接口。此過程不屬本文討論范疇,此處暫不多述。

Qt/Embedded 2.x系列對于輸入設(shè)備的底層接口與3.x系列不同,觸摸屏設(shè)備和鍵盤設(shè)備需要根據(jù)具體的驅(qū)動程序接口在Qt/Embedded中設(shè)備實(shí)現(xiàn)對應(yīng)的設(shè)備操作類。其中對應(yīng)于鼠標(biāo)類設(shè)備的實(shí)現(xiàn)位于src/kernel/qmouse_qws.cpp中。由于觸摸屏在實(shí)現(xiàn)原理上存在著A/D量化誤差的問題,因此所有的觸摸屏接口實(shí)現(xiàn)類需要從特殊的QcalibratedMouseHandler繼承,并獲得校正功能。

Qt/Embedded 2.x中對于鍵盤響應(yīng)的實(shí)現(xiàn)函數(shù)位于src/kernel/qkeyboard_qws.cpp中。在qkeyboard_qws.h中,定義了鍵盤類設(shè)備接口的基類QWSKeyboardHandler,移植時需要根據(jù)鍵盤驅(qū)動程序從該類派生出實(shí)現(xiàn)類,實(shí)現(xiàn)鍵盤事件處理函數(shù)processKeyEvent(),并在QWSServer::newKeyboardHandler函數(shù)中注冊自己的鍵盤類設(shè)備即可。其中對于點(diǎn)擊鍵的鍵碼定義在Qt/Embedded的命名空間——src/kernel/qnamespace.h中。

圖4為筆者在該Smart-Phone開發(fā)平臺上移植Qt/Embedded 2.3.7和Qtopia 1.7.0后顯示的截圖。

2.2 在MC9328平臺上移植和應(yīng)用

在某車載導(dǎo)航輔助系統(tǒng)的開發(fā)平臺設(shè)計中,采用了Qt/Embedded 3.3.2版本作為其GUI系統(tǒng)的實(shí)現(xiàn)方案。硬件平臺采用自行設(shè)計的以Motorola MC9328 MX1為核心的開發(fā)系統(tǒng)。該系統(tǒng)采用CPU內(nèi)部LCD控制器和240×320分辨率的16 bpp TFT LCD作為顯示設(shè)備,采用I2C總線擴(kuò)展出16按鍵以及MX1集成的ASP模塊和電阻觸摸屏。操作系統(tǒng)為ARM Linux 2.4.18。

Qt/Embedded 3.x版本系統(tǒng)中與底層硬件接口相關(guān)部分的源碼位于src/embedded/目標(biāo)中。該部分包含三類設(shè)備的接口:framebufer、鼠標(biāo)與鍵盤。參照該目標(biāo)中相關(guān)設(shè)備的具體接口代碼,根據(jù)自身硬件臺增添接口即可。

由于系統(tǒng)LCD的岔道率為240×320,物理尺寸較小,在實(shí)現(xiàn)其于該系統(tǒng)的framebuffer驅(qū)動程序時并沒有將其本身與Linux字符控制臺設(shè)備掛靠,因此framebuffer并不具備TEXT模式的工作方式。在移植Qt/Embedded時,無需作framebuffer設(shè)備的工作方式轉(zhuǎn)換。正確配置色彩顯示支持后,Qt/Embedded能夠在LCD顯示出正確的圖形。由于該平臺的顯示系統(tǒng)為縱向320行,在設(shè)計時考慮到人對于非手持設(shè)備的視覺習(xí)慣為寬度大于高度的觀察方式,為了符合這種習(xí)慣性的觀察方式,在移植Qt/Embedded時采用了Transformed的旋轉(zhuǎn)圖形顯示方式在軟件上實(shí)現(xiàn)了顯示方向的轉(zhuǎn)換變化。

鼠標(biāo)設(shè)備接口這一基類QWSMouseHandler的實(shí)現(xiàn)位于src/embedded/qmouse_qws.cpp中。與2.x版本系列不同的是,3.x中所有的Linux觸摸屏示例接口代碼均實(shí)現(xiàn)在src/embedded/qmouselinuxtp_qws.cpp中的QWSLinuxTPMouseHandler類中。其中對于不同型號的觸摸屏的接口實(shí)現(xiàn)代碼,采用不同的宏定義和預(yù)編譯的方式將它們分隔開。筆者還通過從QWSLinuxTPMouseHandler中繼承自身觸摸屏接口類,替代原有的QWSLinuxTPMouseHandlerPrivate類,而在QWSLinuxTPMouseHandler生成自身觸摸屏接口對象的方式,較好地將移植部分的代碼與原有比較混亂的代碼分隔開來。

圖4

    3.x中鍵盤接口基類們于src/embedded/qkbd_qws.cpp中,為QWSKeyboardHandler。實(shí)現(xiàn)I2C總線擴(kuò)展出的16鍵鍵盤接口類方式與觸摸屏類似,此處不多述。需要注意的是,Qt/Embedded提供了事件過濾器(key event filter)的接口,在鍵盤點(diǎn)擊事件從QWSServer截獲并發(fā)送到相應(yīng)的client之前會經(jīng)過函數(shù)QWSServer::KeyboardFilter。在此函數(shù)中可以按照自身需求生成新的鍵盤點(diǎn)擊事件,而后利用QWSServer::sendKeyEvent()發(fā)送新的點(diǎn)擊事件到client中。利用該方式可以將各種鍵盤點(diǎn)擊無法輸入的unicode字符轉(zhuǎn)換出來,從而可以在較少的按鍵鍵盤上實(shí)現(xiàn)多unicode字符輸入法。Qt/Embedded 3.x鍵盤接口的移植與鼠標(biāo)設(shè)備接口類似,此處不多述。

3 總結(jié)

隨著嵌入式處理器運(yùn)算能力的不斷提高,對外設(shè)支持的不斷豐富,嵌入式Linux系統(tǒng)的應(yīng)用也逐漸增多。Qt/Embedded延續(xù)了Qt在桌面系統(tǒng)的所有功能,豐富的API接口和基于組件的編程模型使得嵌入式Linux系統(tǒng)中的應(yīng)用程序開發(fā)更加便捷。由于Qt/Embedded本身面向高端的手持設(shè)備和移動設(shè)備,將成為未來嵌入式系統(tǒng)的主要GUI。

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

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

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

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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