當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]嵌入式操作系統(tǒng)uCLinux

作者Email: cuiwj181@sohu.com

    摘要:  本文將分析嵌入式操作系統(tǒng)uClinux的內(nèi)核結(jié)構(gòu)、、內(nèi)存管理、多進(jìn)程處理、針對(duì)實(shí)時(shí)性的解決方案和開(kāi)發(fā)環(huán)境,先對(duì)uCLinux有一個(gè)深刻的認(rèn)識(shí),將有利于今后進(jìn)一步研究開(kāi)發(fā)。

    關(guān)鍵詞: uCLinux,內(nèi)存管理,多進(jìn)程處理,RTLinux,開(kāi)發(fā)環(huán)境

    1  引言

    嵌入式操作系統(tǒng)是嵌入式系統(tǒng)的靈魂,而且在同一個(gè)硬件平臺(tái)上可以嵌入不同的嵌入式操作系統(tǒng)。比如ARM7TDMI內(nèi)核,可以嵌入Nucleus、VxWorks、uClinux等操作系統(tǒng)。在此主要對(duì)uClinux的進(jìn)行介紹,嵌入式uClinux操作系統(tǒng)主要有三個(gè)基本部分組成:引導(dǎo)程序、uClinux內(nèi)核(由內(nèi)存管理、進(jìn)程管理和中斷處理等構(gòu)成)和文件系統(tǒng)。uClinux可以通過(guò)定制使內(nèi)核小型化,還可以加上GUI(圖形用戶(hù)界面)和定制應(yīng)用程序,并將其放在ROM、RAM、FLASH或Disk On Chip中啟動(dòng)。由于嵌入式uClinux操作系統(tǒng)的內(nèi)核定制高度靈活性,開(kāi)發(fā)者可以很容易地對(duì)其進(jìn)行按需配置,來(lái)滿(mǎn)足實(shí)際應(yīng)用需要。又由于uClinux是源代碼公開(kāi),因此開(kāi)發(fā)人員只有了解內(nèi)核原理就可以自己開(kāi)發(fā)部分軟件,例如增加各類(lèi)驅(qū)動(dòng)程序。下面將詳細(xì)分析嵌入式操作系統(tǒng)uClinux。

    2 嵌入式uCinux內(nèi)核結(jié)構(gòu)

    uClinux內(nèi)核結(jié)構(gòu)如圖1所示:

   

    圖1代表了內(nèi)核的功能結(jié)構(gòu),與Linux基本相同,不同的只是對(duì)內(nèi)存管理和進(jìn)程管理進(jìn)行改寫(xiě),以滿(mǎn)足無(wú)MMU處理器的要求。uClinux是Linux 操作系統(tǒng)的一種,是由Linux2.0內(nèi)核發(fā)展來(lái)的,是專(zhuān)為沒(méi)有MMU的微處理器(如ARM7TDMI、Coldfire 等)設(shè)計(jì)的嵌入式Linux操作系統(tǒng)。另外,由于大多數(shù)內(nèi)核源代碼都被重寫(xiě),uClinux的內(nèi)核要比原Linux 2.0內(nèi)核小的多, 但保留了Linux 操作系統(tǒng)的主要優(yōu)點(diǎn):穩(wěn)定性,優(yōu)異的網(wǎng)絡(luò)能力以及優(yōu)秀的文件系統(tǒng)支持。

    3 uClinux的內(nèi)存管理

    uClinux同標(biāo)準(zhǔn)Linux的最大區(qū)別就在于內(nèi)存管理。標(biāo)準(zhǔn)Linux是針對(duì)有MMU的處理器設(shè)計(jì)的。在這種處理器上,虛擬地址被送到MMU,MMU把虛擬地址映射為物理地址。通過(guò)賦予每個(gè)任務(wù)不同的虛擬—物理地址轉(zhuǎn)換映射,支持不同任務(wù)之間的保護(hù)。對(duì)于uCLinux來(lái)說(shuō),其設(shè)計(jì)針對(duì)沒(méi)有MMU的處理器,不能使用處理器的虛擬內(nèi)存管理技術(shù)。

    uClinux不能使用處理器的虛擬內(nèi)存管理技術(shù)(應(yīng)該說(shuō)這種不帶有MMU的處理器在嵌入式設(shè)備中相當(dāng)普遍)。

    uClinux仍采用存儲(chǔ)器的分頁(yè)管理,系統(tǒng)在啟動(dòng)時(shí)把實(shí)際存儲(chǔ)器進(jìn)行分頁(yè)。在加載應(yīng)用程序時(shí)程序分頁(yè)加載。但是由于沒(méi)有MMU管理,所以實(shí)際上uClinux采用實(shí)存儲(chǔ)器管理策略(real memeory management)。這一點(diǎn)影響了系統(tǒng)工作的很多方面。

    uClinux系統(tǒng)對(duì)于內(nèi)存的訪問(wèn)是直接的,(它對(duì)地址的訪問(wèn)不需要經(jīng)過(guò)MMU,而是直接送到地址線上輸出),所有程序中訪問(wèn)的地址都是實(shí)際的物理地址。操作系統(tǒng)對(duì)內(nèi)存空間沒(méi)有保護(hù)(這實(shí)際上是很多嵌入式系統(tǒng)的特點(diǎn)),各個(gè)進(jìn)程實(shí)際上共享一個(gè)運(yùn)行空間(沒(méi)有獨(dú)立的地址轉(zhuǎn)換表)。

    一個(gè)進(jìn)程在執(zhí)行前,系統(tǒng)必須為進(jìn)程分配足夠的連續(xù)地址空間,然后全部載入主存儲(chǔ)器的連續(xù)空間中。與之相對(duì)應(yīng)的是標(biāo)準(zhǔn)Linux系統(tǒng)在分配內(nèi)存時(shí)沒(méi)有必要保證實(shí)際物理存儲(chǔ)空間是連續(xù)的,而只要保證虛存地址空間連續(xù)就可以了。此外磁盤(pán)交換空間也是無(wú)法使用的,系統(tǒng)執(zhí)行時(shí)如果缺少內(nèi)存將無(wú)法通過(guò)磁盤(pán)交換來(lái)得到改善。

    uClinux對(duì)內(nèi)存的管理減少同時(shí)就給開(kāi)發(fā)人員提出了更高的要求。如果從易用性這一點(diǎn)來(lái)說(shuō),uClinux的內(nèi)存管理是一種倒退,退回了到了UNIX早期或是Dos系統(tǒng)時(shí)代。開(kāi)發(fā)人員不得不參與系統(tǒng)的內(nèi)存管理。從編譯內(nèi)核開(kāi)始,開(kāi)發(fā)人員必須告訴系統(tǒng)這塊開(kāi)發(fā)板到底擁有多少的內(nèi)存(假如你欺騙了系統(tǒng),那將在后面運(yùn)行程序時(shí)受到懲罰),從而系統(tǒng)將在啟動(dòng)的初始化階段對(duì)內(nèi)存進(jìn)行分頁(yè),并且標(biāo)記已使用的和未使用的內(nèi)存。系統(tǒng)將在運(yùn)行應(yīng)用時(shí)使用這些分頁(yè)內(nèi)存。

    由于應(yīng)用程序加載時(shí)必須分配連續(xù)的地址空間,而針對(duì)不同硬件平臺(tái)的可一次成塊(連續(xù)地址)分配內(nèi)存大小限制是不同(目前針對(duì)EZ328處理器的uClinux是128k,而針對(duì)Coldfire處理器的系統(tǒng)內(nèi)存則無(wú)此限制),所以開(kāi)發(fā)人員在開(kāi)發(fā)應(yīng)用程序時(shí)必須考慮內(nèi)存的分配情況并關(guān)注應(yīng)用程序需要運(yùn)行空間的大小。另外由于采用實(shí)存儲(chǔ)器管理策略,用戶(hù)程序同內(nèi)核以及其它用戶(hù)程序在一個(gè)地址空間,程序開(kāi)發(fā)時(shí)要保證不侵犯其它程序的地址空間,以使得程序不至于破壞系統(tǒng)的正常工作,或?qū)е缕渌绦虻倪\(yùn)行異常。

    從內(nèi)存的訪問(wèn)角度來(lái)看,開(kāi)發(fā)人員的權(quán)利增大了(開(kāi)發(fā)人員在編程時(shí)可以訪問(wèn)任意的地址空間),但與此同時(shí)系統(tǒng)的安全性也大為下降。此外,系統(tǒng)對(duì)多進(jìn)程的管理將有很大的變化,這一點(diǎn)將在uClinux的多進(jìn)程管理中說(shuō)明。

    4 uClinux的多進(jìn)程處理

    uClinux沒(méi)有MMU管理存儲(chǔ)器,在實(shí)現(xiàn)多個(gè)進(jìn)程時(shí)(fork調(diào)用生成子進(jìn)程)需要實(shí)現(xiàn)數(shù)據(jù)保護(hù)。由于uClinux的多進(jìn)程管理是通過(guò)vfork來(lái)實(shí)現(xiàn),因此fork等于vfork。這意味著uClinux系統(tǒng)fork調(diào)用完成后,要么子進(jìn)程代替父進(jìn)程執(zhí)行(此時(shí)父進(jìn)程已經(jīng)sleep)直到子進(jìn)程調(diào)用exit退出;要么調(diào)用exec執(zhí)行一個(gè)新的進(jìn)程,這個(gè)時(shí)候?qū)a(chǎn)生可執(zhí)行文件的加載,即使這個(gè)進(jìn)程只是父進(jìn)程的拷貝,這個(gè)過(guò)程也不能避免。當(dāng)子進(jìn)程執(zhí)行exit或exec后,子進(jìn)程使用wakeup把父進(jìn)程喚醒,使父進(jìn)程繼續(xù)往下執(zhí)行。

    uClinux的這種多進(jìn)程實(shí)現(xiàn)機(jī)制同它的內(nèi)存管理緊密相關(guān)。uClinux針對(duì)沒(méi)有mmu處理器開(kāi)發(fā),所以被迫使用一種flat方式的內(nèi)存管理模式,啟動(dòng)新的應(yīng)用程序時(shí)系統(tǒng)必須為應(yīng)用程序分配存儲(chǔ)空間,并立即把應(yīng)用程序加載到內(nèi)存。缺少了MMU的內(nèi)存重映射機(jī)制,uClinux必須在可執(zhí)行文件加載階段對(duì)可執(zhí)行文件reloc處理,使得程序執(zhí)行時(shí)能夠直接使用物理內(nèi)存。

    5   uCLinux針對(duì)實(shí)時(shí)性的解決方案

    uClinux本身并沒(méi)有關(guān)注實(shí)時(shí)問(wèn)題,它并不是為了Linux的實(shí)時(shí)性而提出的。另外有一種Linux:RT-Linux關(guān)注實(shí)時(shí)問(wèn)題。RT-Linux執(zhí)行管理器把普通Linux的內(nèi)核當(dāng)成一個(gè)任務(wù)運(yùn)行,同時(shí)還管理了實(shí)時(shí)進(jìn)程。而非實(shí)時(shí)進(jìn)程則交給普通Linux內(nèi)核處理。這種方法已經(jīng)應(yīng)用于很多的操作系統(tǒng)用于增強(qiáng)操作系統(tǒng)的實(shí)時(shí)性,包括一些商用版UNIX系統(tǒng),Windows NT等等。這種方法優(yōu)點(diǎn)之一是實(shí)現(xiàn)簡(jiǎn)單,且實(shí)時(shí)性能容易檢驗(yàn)。優(yōu)點(diǎn)之二是由于非實(shí)時(shí)進(jìn)程運(yùn)行于標(biāo)準(zhǔn)Linux系統(tǒng),同其它Linux商用版本之間保持了很大的兼容性。優(yōu)點(diǎn)之三是可以支持硬實(shí)時(shí)時(shí)鐘的應(yīng)用。uClinux可以使用RT-Linux的patch,從而增強(qiáng)uClinux的實(shí)時(shí)性,使得uClinux可以應(yīng)用于工業(yè)控制、進(jìn)程控制等一些實(shí)時(shí)要求較高的應(yīng)用。

    6   uClinux的開(kāi)發(fā)環(huán)境

    1,GNU開(kāi)發(fā)套件

    GNU開(kāi)發(fā)套件作為通用的Linux開(kāi)放套件,包括一系列的開(kāi)發(fā)調(diào)試工具。主要組件:
    Gcc: 編譯器,可以做成交叉編譯的形式,即在宿主機(jī)上開(kāi)發(fā)編譯目標(biāo)上可運(yùn)行的二進(jìn)制文件。
    Binutils:一些輔助工具,包括objdump(可以反編譯二進(jìn)制文件),as(匯編編譯器),ld(連接器)等等。
    Gdb:調(diào)試器,可使用多種交叉調(diào)試方式,gdb-bdm(背景調(diào)試工具),gdbserver(使用以太網(wǎng)絡(luò)調(diào)試)。

    2, Clinux的打印終端

    通常情況下,uClinux的默認(rèn)終端是串口,內(nèi)核在啟動(dòng)時(shí)所有的信息都打印到串口終端(使用printk函數(shù)打?。?,同時(shí)也可以通過(guò)串口終端與系統(tǒng)交互。

    uClinux在啟動(dòng)時(shí)啟動(dòng)了telnetd(遠(yuǎn)程登錄服務(wù)),操作者可以遠(yuǎn)程登錄上系統(tǒng),從而控制系統(tǒng)的運(yùn)行。至于是否允許遠(yuǎn)程登錄可以通過(guò)燒寫(xiě)romfs文件系統(tǒng)時(shí)由用戶(hù)決定是否啟動(dòng)遠(yuǎn)程登錄服務(wù)。

    3, 交叉編譯調(diào)試工具

    支持一種新的處理器,必須具備一些編譯,匯編工具,使用這些工具可以形成可運(yùn)行于這種處理器的二進(jìn)制文件。對(duì)于內(nèi)核使用的編譯工具同應(yīng)用程序使用的有所不同。在解釋不同點(diǎn)之前,需要對(duì)gcc連接做一些說(shuō)明:
ld(link description)文件:ld文件是指出連接時(shí)內(nèi)存映象格式的文件。

crt0.S:應(yīng)用程序編譯連接時(shí)需要的啟動(dòng)文件,主要是初始化應(yīng)用程序棧。

pic:position independence code ,與位置無(wú)關(guān)的二進(jìn)制格式文件,在程序段中必須包括reloc段,從而使的代碼加載時(shí)可以進(jìn)行重新定位。

    內(nèi)核編譯連接時(shí),使用ucsimm.ld文件,形成可執(zhí)行文件映象,所形成的代碼段既可以使用間接尋址方式(即使用reloc段進(jìn)行尋址),也可以使用絕對(duì)尋址方式。這樣可以給編譯器更多的優(yōu)化空間。因?yàn)閮?nèi)核可能使用絕對(duì)尋址,所以?xún)?nèi)核加載到的內(nèi)存地址空間必須與ld文件中給定的內(nèi)存空間完全相同。

    應(yīng)用程序的連接與內(nèi)核連接方式不同。應(yīng)用程序由內(nèi)核加載(可執(zhí)行文件加載器將在后面討論),由于應(yīng)用程序的ld文件給出的內(nèi)存空間與應(yīng)用程序?qū)嶋H被加載的內(nèi)存位置可能不同,這樣在應(yīng)用程序加載的過(guò)程中需要一個(gè)重新地位的過(guò)程,即對(duì)reloc段進(jìn)行修正,使得程序進(jìn)行間接尋址時(shí)不至于出錯(cuò)。(這個(gè)問(wèn)題在i386等高級(jí)處理器上方法有所不同)。

    由上述討論,至少需要兩套編譯連接工具:

    1) 二進(jìn)制工具(Binutils)

    GNU binutils包包括了匯編工具、鏈接器和基本的目標(biāo)文件處理工具。對(duì)binutils包的設(shè)置定義了所需的目標(biāo)文件的格式和字節(jié)順序。Binutils包種的工具都使用了二進(jìn)制文件描述符(BFD)庫(kù)來(lái)交換數(shù)據(jù)。通過(guò)設(shè)置文件config.bfd,可以指定默認(rèn)的二進(jìn)制文件格式(例如elf little endian)和任何工具可用的格式,見(jiàn)例1。

    例1 在config.bfd中添加的用來(lái)指定目標(biāo)二進(jìn)制格式的代碼

arm-*-uClinux* | armel-*-uClinux*
tag_defvec=bfd_elf32_littlearm_vec
targ_selvecs=”bfd_elf32_bigarm_vec armcoff_little_vec armcoff_big_vec”

    2) C編譯器

    GNU編譯器集GCC是通過(guò)使用一種叫做“寄存器轉(zhuǎn)換語(yǔ)言”(RTL)的方式實(shí)現(xiàn)的。假定現(xiàn)在有一種基本的機(jī)器描述性文件,它已經(jīng)能滿(mǎn)足大家的需要?,F(xiàn)在要做的僅僅是設(shè)置默認(rèn)情況下使用的參數(shù)和如何將文件組合成可執(zhí)行文件的方式。GNU的文檔提供了所有必需的資料,使得用戶(hù)可以為新型的處理器的指令集合提供支持。如果要針對(duì)體系的機(jī)器建立一個(gè)新的目標(biāo)機(jī)器,那么就必須指定默認(rèn)編譯參數(shù)和定制系統(tǒng)的特定參數(shù),見(jiàn)例2。對(duì)于特定的目標(biāo)系統(tǒng),可以使用TARGET_DEFAULT宏來(lái)在target.h文件中定義編譯器的開(kāi)關(guān)。目標(biāo)t-makefile段指定了應(yīng)該構(gòu)建哪一個(gè)額外的例程和其編譯的方式。

    例2 使用uClinux-arm.h來(lái)指定默認(rèn)的編譯參數(shù)

#undef TARGET_DEFAULT
#define TARGET_DEFAULT(ARM_FLAG_APCS_32|ARM_FLAG_NO_GOT)

    4 可執(zhí)行文件格式

    先對(duì)一些名詞作一些說(shuō)明:

    coff(common object file format):一種通用的對(duì)象文件格式
    elf(excutive linked file):一種為L(zhǎng)inux系統(tǒng)所采用的通用文件格式,支持動(dòng)態(tài)連接
    flat:elf格式有很大的文件頭,flat文件對(duì)文件頭和一些段信息做了簡(jiǎn)化

    uClinux系統(tǒng)使用flat可執(zhí)行文件格式,gcc的編譯器不能直接形成這種文件格式,但是可以形成coff或elf格式的可執(zhí)行文件,這兩種文件需要coff2flt或elf2flt工具進(jìn)行格式轉(zhuǎn)化,形成flat文件。當(dāng)用戶(hù)執(zhí)行一個(gè)應(yīng)用時(shí),內(nèi)核的執(zhí)行文件加載器將對(duì)flat文件進(jìn)行進(jìn)一步處理,主要是對(duì)reloc段進(jìn)行修正。以下對(duì)reloc段進(jìn)一步討論。

    需要reloc段的根本原因是,程序在連接時(shí)連接器所假定的程序運(yùn)行空間與實(shí)際程序加載到的內(nèi)存空間不同。假如有這樣一條指令:

jsr app_start;

    這一條指令采用直接尋址,跳轉(zhuǎn)到app_start地址處執(zhí)行,連接程序?qū)⒃诰幾g完成是計(jì)算出app_start的實(shí)際地址(設(shè)若實(shí)際地址為0x10000),這個(gè)實(shí)際地址是根據(jù)ld文件計(jì)算出來(lái)(因?yàn)檫B接器假定該程序?qū)⒈患虞d到由ld文件指明的內(nèi)存空間)。但實(shí)際上由于內(nèi)存分配的關(guān)系,操作系統(tǒng)在加載時(shí)無(wú)法保證程序?qū)磍d文件加載。這時(shí)如果程序仍然跳轉(zhuǎn)到絕對(duì)地址0x10000處執(zhí)行,通常情況這是不正確的。一個(gè)解決辦法是增加一個(gè)存儲(chǔ)空間,用于存儲(chǔ)app_start的實(shí)際地址,設(shè)若使用變量addr表示這個(gè)存儲(chǔ)空間。則以上這句程序?qū)⒏臑椋?BR>movl addr, a0;
jsr (a0);

    增加的變量addr將在數(shù)據(jù)段中占用一個(gè)4字節(jié)的空間,連接器將app_start的絕對(duì)地址存儲(chǔ)到該變量。在可執(zhí)行文件加載時(shí),可執(zhí)行文件加載器根據(jù)程序?qū)⒁虞d的內(nèi)存空間計(jì)算出app_start在內(nèi)存中的實(shí)際位置,寫(xiě)入addr變量。系統(tǒng)在實(shí)際處理時(shí)不需要知道這個(gè)變量的確切存儲(chǔ)位置(也不可能知道),系統(tǒng)只要對(duì)整個(gè)reloc段進(jìn)行處理就可以了(reloc段有標(biāo)識(shí),系統(tǒng)可以讀出來(lái))。處理很簡(jiǎn)單,只需要對(duì)reloc段中存儲(chǔ)的值統(tǒng)一加上一個(gè)偏置(如果加載的空間比預(yù)想的要靠前,實(shí)際上是減去一個(gè)偏移量)。偏置由實(shí)際的物理地址起始值同ld文件指定的地址起始值相減計(jì)算出。這種reloc的方式部分是由uClinux的內(nèi)存分配問(wèn)題引起的。

    7 總結(jié)

    以上主要闡述了嵌入式操作系統(tǒng)uClinux的內(nèi)核結(jié)構(gòu)、、內(nèi)存管理、多進(jìn)程處理、針對(duì)實(shí)時(shí)性的解決方案和開(kāi)發(fā)環(huán)境,先對(duì)uCLinux有一個(gè)深刻的認(rèn)識(shí),將有利于今后進(jìn)一步研究開(kāi)發(fā)。

本站聲明: 本文章由作者或相關(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)越多用戶(hù)希望企業(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ù)字世界的話(huà)語(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)閉