當(dāng)前位置:首頁 > 智能硬件 > 智能硬件
[導(dǎo)讀]采用微控制器的大多數(shù)設(shè)備還需要某種機(jī)制來存儲(chǔ)在斷電時(shí)仍要被記住的那些設(shè)置數(shù)據(jù)。

采用微控制器的大多數(shù)設(shè)備還需要某種機(jī)制來存儲(chǔ)在斷電時(shí)仍要被記住的那些設(shè)置數(shù)據(jù)。例如,在更換電池后記不住預(yù)設(shè)電臺(tái)的收音機(jī)肯定不會(huì)在市場(chǎng)上取得很大的成功。用戶希望喜愛的電臺(tái)、預(yù)設(shè)溫度、參數(shù)選擇和其他永久性信息能長(zhǎng)久保存下來供每次開機(jī)時(shí)直接取用。

為了滿足這種用戶需求,設(shè)計(jì)師一般使用串行EEPROM。這些器件又小又便宜,具有很長(zhǎng)的歷史,設(shè)計(jì)工程師用起來得心應(yīng)手。但在今天對(duì)成本極其敏感的市場(chǎng)下,即使這樣一個(gè)廉價(jià)的器件也可能突破成本預(yù)算。因此許多設(shè)計(jì)師試圖尋求并利用已經(jīng)包含在微控制器芯片中的資源:程序閃存中剩余的空間。

過去,許多微控制器使用ROM或可紫外線擦除的EPROM來存儲(chǔ)程序指令。但現(xiàn)在越來越多的微控制器轉(zhuǎn)用閃存技術(shù)存儲(chǔ)代碼。選擇閃存的主要理由是,如果在程序代碼中發(fā)現(xiàn)錯(cuò)誤,閃存數(shù)據(jù)很容易被擦除和更新。

大多數(shù)微控制器具有讀取程序空間中存儲(chǔ)數(shù)據(jù)的機(jī)制?;隈T·諾伊曼架構(gòu)的處理器,如TI MSP430,可以使用任何尋址模式讀取程序閃存。哈佛架構(gòu)處理器一般利用特殊的機(jī)制將數(shù)據(jù)從程序空間傳送到數(shù)據(jù)空間。具有閃存管理功能的其他MCU包括:

1. 包含MOVEC(移動(dòng)常數(shù))指令的非常流行的8051處理器系列;

2. 包含TBLRD和TBLWR(表讀和表寫)指令的Microchip PIC18系列;

3. 具有偽馮·諾伊曼架構(gòu)的美信MAXQ微控制器系列,它們?cè)试S通過簡(jiǎn)單的MOVE指令訪問閃存程序存儲(chǔ)空間(見圖1)。

圖1:在像美信MAXQ2000這樣的偽馮·諾伊曼MCU中采用的數(shù)據(jù)交換允許任何存儲(chǔ)器塊被用作代碼或<strong數(shù)據(jù)存儲(chǔ)器。 src="/upload/2008_06/080604165898381.jpg" border=0>
圖1:在像美信MAXQ2000這樣的偽馮·諾伊曼MCU中采用的數(shù)據(jù)交換允許任何存儲(chǔ)器塊被用作代碼或數(shù)據(jù)存儲(chǔ)器。

但即使能夠從隨機(jī)閃存位置讀取數(shù)據(jù),完整的非易失性存儲(chǔ)器子系統(tǒng)也必須能夠隨機(jī)修改閃存中的數(shù)據(jù)。這意味著需要解決兩個(gè)問題:首先,一旦某個(gè)閃存位置被寫入,那個(gè)位置的數(shù)據(jù)只能通過擦除整個(gè)閃存塊(通常128字節(jié)或以上)進(jìn)行修改;其次,閃存的讀寫次數(shù)非常有限。

本文將介紹如何構(gòu)建一個(gè)能夠解決這些問題、并使用閃存塊模擬隨機(jī)寫入的機(jī)制。雖然本文的用例是MAX2000,但原理適用于支持讀寫和擦除閃存的用戶代碼的任何處理器。本文討論的方案已經(jīng)被用于采用MAXQ3180三相模擬前端和MAXQ2000的三相電表參考設(shè)計(jì)。

閃存管理的基本知識(shí)

閃存是一種電可擦除的存儲(chǔ)器,通常主要用于讀操作,也就是說,雖然是可寫的,但它不希望很頻繁地更新數(shù)據(jù),因此對(duì)這種存儲(chǔ)器的操作大部分是讀操作。大多數(shù)閃存器件是以字(word)為單位寫入數(shù)據(jù)的,但一次只能擦除整個(gè)塊。這使得它們不適用于頻繁變化的存儲(chǔ)應(yīng)用,只適合存儲(chǔ)那些永遠(yuǎn)不變的常數(shù)表。

一共有兩種閃存:NAND閃存和NOR閃存。NAND閃存經(jīng)常用于存儲(chǔ)卡和閃盤。一般來說,從NAND器件讀取數(shù)據(jù)需要幾個(gè)周期,并且大部分是用串行方式完成的。

因此NAND閃存不適于存儲(chǔ)程序代碼,因?yàn)榇嫒r(shí)間太長(zhǎng)。而NOR閃存更像是傳統(tǒng)的字節(jié)或字寬的存儲(chǔ)器??梢韵褡xROM器件那樣讀NOR閃存中的數(shù)據(jù):使片選和地址線有效,然后等待一段訪問時(shí)間后從總線上讀取數(shù)據(jù)。

閃存塊通常被擦除到“1”狀態(tài),因此經(jīng)過擦除后,塊中的每個(gè)位置都是0xFFFF?!熬幊獭币粋€(gè)閃存位置是把某些位從“1”狀態(tài)改變?yōu)椤?”狀態(tài)。為了使編程過的位返回到“1”狀態(tài),整個(gè)塊必須被擦除。

任何電可擦除的存儲(chǔ)器件都面臨壽命的問題。根據(jù)所用技術(shù)的不同,一個(gè)閃存單元在永久失效以前可以承受的擦除-編程次數(shù)少則1000次,多則100萬次。使用閃存存儲(chǔ)數(shù)據(jù)的任何方案都必須確保寫入次數(shù)在整個(gè)單元陣列上獲得均勻分布,沒有一個(gè)位置會(huì)出現(xiàn)太多的擦除和編程次數(shù)。

大多數(shù)閃存器件都允許將前次編程中那些未被編程的位從“1”改為“0”狀態(tài)。例如,大多數(shù)器件允許用0xFFFE編程過的那個(gè)位置再用0x7FFE進(jìn)行編程,因?yàn)檫@種操作不會(huì)將任何位從“0”改變到“1”。然而如圖1所示的處理器架構(gòu)中使用的閃存不允許這樣做。這種寫入操作的結(jié)果是失敗,內(nèi)存中的數(shù)據(jù)仍然是0xFFFE。

理由很簡(jiǎn)單:因?yàn)橐痪幊痰拇鎯?chǔ)塊主要用作代碼空間,通常禁止對(duì)前面寫過的位置作任何寫操作。因?yàn)橹噶?xFFFF代表的是無效的源子譯碼(source sub-decode),不可能出現(xiàn)在有效的代碼塊中。這樣,阻止向以前編過程的位置寫入數(shù)據(jù)有助于保持代碼塊的完整性。

提供非易失性存儲(chǔ)器服務(wù)

以下是提供非易失性存儲(chǔ)器服務(wù)的兩種方案。第一種方案?jìng)?cè)重于簡(jiǎn)單性,第二種方案比較靈活,但代價(jià)是較復(fù)雜。

方案1

問題:校準(zhǔn)信息、MAC地址或制造數(shù)據(jù)等配置數(shù)據(jù)必須要存儲(chǔ)在產(chǎn)品中。雖然這些通常是固定不變的信息,但在整個(gè)產(chǎn)品生命周期內(nèi)配置數(shù)據(jù)需要多次更新的可能性還是存在的。

解決方案:下面是實(shí)際中最容易想到的例子。有兩個(gè)塊,一個(gè)塊在字地址0x7E00處,另一個(gè)在0x7F00處,都用于數(shù)據(jù)存儲(chǔ)。在第一次收到保存配置數(shù)據(jù)的命令時(shí),處理器會(huì)檢查這兩個(gè)塊,在發(fā)現(xiàn)它們都是空塊后,配置數(shù)據(jù)被就存入第一個(gè)塊。

保存配置數(shù)據(jù)的第二條命令同樣會(huì)使處理器再一次檢查這兩個(gè)塊。當(dāng)發(fā)現(xiàn)塊0已經(jīng)有數(shù)據(jù)后,它就將配置數(shù)據(jù)拷貝到塊1,然后擦除塊0中的數(shù)據(jù)。

當(dāng)收到恢復(fù)配置的請(qǐng)求時(shí)(比如在上電時(shí)),處理器會(huì)同時(shí)讀取兩個(gè)塊的數(shù)據(jù)并確定哪個(gè)塊在用。只要是沒被擦除的塊就是在用塊。

這種方案的主要優(yōu)點(diǎn)是簡(jiǎn)單:如果設(shè)備在上電(或其他配置恢復(fù)事件)時(shí)需要塊中的配置數(shù)據(jù),這是很好的一種方案。讀數(shù)程序會(huì)接受一個(gè)字長(zhǎng)的指針,返回該地址的數(shù)值,寫入程序則接受一個(gè)字長(zhǎng)的指針,然后嘗試向該地址進(jìn)行寫入操作。擦除程序只是同時(shí)擦除兩個(gè)塊。

這種方案的主要缺點(diǎn)就是主要優(yōu)點(diǎn)的反面:程序的思路太過簡(jiǎn)單。沒有操作去判斷寫入數(shù)據(jù)是否成功—在發(fā)出寫入命令后,如果寫入失敗,處理器不會(huì)做任何事去解決問題。這也是為什么這個(gè)方案只是用來寫入已知是空的閃存塊的原因。

方案2

問題:要求用非易失性存儲(chǔ)技術(shù)來跟蹤用電量和其他經(jīng)常變化的數(shù)據(jù)。更新經(jīng)常是一周數(shù)次或一天數(shù)次發(fā)生。

解決方案:這是即使傳統(tǒng)EEPROM也需要尋求幫助的場(chǎng)合。問題是:更新的頻率和所有非易失性存儲(chǔ)器有限的寫入壽命這樣的事實(shí)不允許反復(fù)寫入和擦除單個(gè)EEPROM單元??紤]一個(gè)小時(shí)更新一次的情況,具有1萬次寫入-擦除次數(shù)限制的EEPROM只需一年時(shí)間就會(huì)失效,這個(gè)時(shí)間比電表所需的十年設(shè)計(jì)目標(biāo)少得太多了。

解決這個(gè)問題的方法之一是實(shí)現(xiàn)某種形式的“損耗均衡”。這意味著不會(huì)有單個(gè)位置被反復(fù)寫數(shù)據(jù)。相反,寫入操作將呈類似合理指數(shù)分布的方式分散到整個(gè)存儲(chǔ)器陣列。

損耗均衡是一種很好理解的技術(shù),在閃存器件中使用就是出于這個(gè)目的。但它的算法非常復(fù)雜和難以理解,不過對(duì)我們來說,一個(gè)更簡(jiǎn)單的原理介紹就足夠了。

存儲(chǔ)陣列中的數(shù)據(jù)項(xiàng)是由數(shù)據(jù)單元(data element)號(hào)引用的,而不是地址。

數(shù)據(jù)單元號(hào)是一個(gè)唯一識(shí)別數(shù)據(jù)單元的任意8位數(shù),因此在這種方案中,最多有255個(gè)數(shù)據(jù)單元(數(shù)據(jù)單元0是保留單元)。

每個(gè)數(shù)據(jù)單元有一個(gè)雙字節(jié)的頭部(見圖2),包含了數(shù)據(jù)單元號(hào)和數(shù)據(jù)單元長(zhǎng)度以及留給差錯(cuò)管理使用的足夠空間,其中長(zhǎng)度是一個(gè)兩位代碼,可表示1個(gè)、2個(gè)、3個(gè)或4個(gè)16位的字。

圖2:數(shù)據(jù)單元的頭部結(jié)構(gòu)。
圖2:數(shù)據(jù)單元的頭部結(jié)構(gòu)。

寫一個(gè)數(shù)據(jù)單元需要知道寫入數(shù)據(jù)的地址、寫入數(shù)據(jù)的單元號(hào)和長(zhǎng)度。寫函數(shù)先尋找陣列結(jié)尾,然后緊跟最后一個(gè)記錄之后寫入新的數(shù)據(jù)單元。

如果閃存頁中沒有足夠的空間容納指定長(zhǎng)度的記錄,一個(gè)表示結(jié)尾的頁標(biāo)記將被寫入,并會(huì)打開一個(gè)新的頁。有關(guān)典型數(shù)據(jù)頁的結(jié)構(gòu)請(qǐng)見圖3。

圖3:典型的數(shù)據(jù)頁。
圖3:典型的數(shù)據(jù)頁。

在展開的數(shù)據(jù)頁中,先寫入經(jīng)常要更新的數(shù)據(jù)單元1,再寫入從不更新的數(shù)據(jù)單元4,然后寫入需要多次更新的數(shù)據(jù)單元3。最后,寫入從不更新的數(shù)據(jù)單元2。

出現(xiàn)頁的結(jié)尾標(biāo)記表明過進(jìn)行過一次數(shù)據(jù)寫入嘗試,但由于數(shù)據(jù)單元太長(zhǎng)而無法將數(shù)據(jù)單元裝進(jìn)該頁,因此打開了一個(gè)新頁來容納該數(shù)據(jù)單元。整個(gè)數(shù)據(jù)結(jié)構(gòu)的結(jié)尾設(shè)定為空白單元,這個(gè)位置有望成為單元頭部。

值得注意的是,我還沒有說明重復(fù)記錄的問題。這是因?yàn)樵谶@種方案中重復(fù)記錄不是問題。事實(shí)上,讀寫程序是完全忽略重復(fù)記錄的。

在寫數(shù)據(jù)時(shí),新的記錄會(huì)寫在陣列的最后,而不管是否有相同號(hào)碼的記錄存在。在讀數(shù)據(jù)時(shí),只有匹配請(qǐng)求記錄號(hào)的最后,也就是最近的記錄被讀出來。

從陣列中讀出一個(gè)數(shù)據(jù)單元要比寫入稍微復(fù)雜一些。讀函數(shù)首先接受應(yīng)被寫入數(shù)據(jù)單元內(nèi)容的單元號(hào)碼和地址。當(dāng)被調(diào)用時(shí),讀函數(shù)從頭開始搜索陣列。

當(dāng)它找到與請(qǐng)求數(shù)據(jù)單元相匹配的記錄時(shí),它將對(duì)應(yīng)的地址先存起來,然后繼續(xù)搜索。如果它找到另外一條匹配的記錄,它就用新的地址代替剛才存儲(chǔ)的地址。

當(dāng)?shù)竭_(dá)陣列結(jié)尾時(shí),最終存儲(chǔ)的地址將指向最近寫入拷貝的請(qǐng)求記錄。讀函數(shù)隨即在被調(diào)用時(shí)將這個(gè)數(shù)據(jù)拷貝到緩存。

復(fù)用存儲(chǔ)器空間

現(xiàn)在,我們已經(jīng)有了一種以讀取為主的可行機(jī)制用于從存儲(chǔ)陣列中存取記錄。剩下只有一個(gè)問題:我們還沒有建立起復(fù)用被廢棄的記錄拷貝占用的空間。(我們也還沒有建立刪除記錄的機(jī)制,但由于是用在嵌入式應(yīng)用中,這可能不是一個(gè)很重要的特性)

如果不恢復(fù)空間,分配的空間將很快用完。恢復(fù)空間意味著擦除整個(gè)頁,因?yàn)殚W存只能一次擦除一整頁。但閃存頁被隨意擦除時(shí)將會(huì)出現(xiàn)刪除有用信息的風(fēng)險(xiǎn)。唯一的方法是在擦除舊頁時(shí)將有效信息拷貝到新的頁。

從廢棄記錄恢復(fù)空間要分三步走:首先,打開新的閃存頁,將每個(gè)數(shù)據(jù)單元的最新版拷貝到新的頁;然后,刪除舊頁;最后,在新頁上放置頁標(biāo)記以便讀程序能找到它們。

第一步有些技巧,因此我們稍詳細(xì)地進(jìn)行介紹。執(zhí)行這一步的簡(jiǎn)單方法是將它分成兩小步:第一步,使用RAM陣列存儲(chǔ)記錄號(hào)和陣列中最新記錄的地址;第二步,穿過RAM陣列將最新的記錄拷貝到新的閃存頁。這個(gè)過程很快,相對(duì)也比較順利。

這種方案的問題是所用處理器(見圖1)的RAM為1K字。這種方案將限制可存儲(chǔ)進(jìn)RAM中的單一數(shù)據(jù)數(shù)量,因?yàn)檫@個(gè)RAM還要節(jié)省下來用作緩存。這是明顯不能接受的。

這種解決方案非常耗時(shí),但不管存儲(chǔ)陣列多大(在合理范圍內(nèi))都能正常工作。該方案不會(huì)在RAM中創(chuàng)建一份指針列表,而是針對(duì)每個(gè)單一條目(entry)在源陣列中作多次穿越。因此壓縮算法變?yōu)椋?

1. 從源陣列中讀一個(gè)單元;

2. 在目標(biāo)陣列中尋找該單元。如果找到了,表示這個(gè)單元已經(jīng)被寫入。增加源指針值,回到第(1)步;

3. 掃描源陣列尋找單元的最新拷貝;

4. 將數(shù)據(jù)單元的最新拷貝寫入目標(biāo)陣列;

5. 增加源指針,并回到第(1)步。

最終,在目標(biāo)陣列中每個(gè)數(shù)據(jù)單元都有一個(gè)唯一的條目。圖4描述了一個(gè)已填滿的頁。源頁現(xiàn)在可以被安全地刪除,頁的頭部被寫入到目標(biāo)陣列。

圖4:在空間恢復(fù)之后的圖2所示數(shù)據(jù)頁內(nèi)容
圖4:在空間恢復(fù)之后的圖2所示數(shù)據(jù)頁內(nèi)容

這個(gè)過程的構(gòu)建使得存儲(chǔ)的數(shù)據(jù)非常安全。在使用閃存器件時(shí)必須面對(duì)的危險(xiǎn)是寫入或擦除操作期間發(fā)生電源故障。

如果發(fā)生電源故障,則有可能一個(gè)或多個(gè)頁被破壞(在寫入時(shí)),或未被完全刪除(在刪除操作時(shí))。但上述壓縮操作本身是安全的。因?yàn)椋?

1. 如果在寫入操作期間發(fā)生電源故障,源頁是完全不受影響的。在電源恢復(fù)后,新寫的頁很容易被識(shí)別(它們沒有頁頭),將其擦除后重新開始寫入操作。

2. 如果在舊頁被擦除期間發(fā)生電源故障,它們可能包含無效的頭部。這些頁可以被刪除,然后將頭部增加到新的頁中。

3. 如果在頁頭部被寫入新頁時(shí)發(fā)生電源故障,數(shù)據(jù)是不受影響的。頁頭部的更新操作可以重新開始。

總之,應(yīng)該沒有什么情況能讓意外事件造成無可挽救地破壞陣列數(shù)據(jù)。

性能增強(qiáng)

目前的存儲(chǔ)子系統(tǒng)沒有差錯(cuò)檢測(cè)機(jī)制。在數(shù)據(jù)單元識(shí)別符中目前有6個(gè)比特是保留未用的。

設(shè)計(jì)師可以使用CRC6算法(x6+x+1)計(jì)算整個(gè)數(shù)據(jù)單元的CRC以確保不會(huì)產(chǎn)生任何讀或?qū)戝e(cuò)誤。雖然這不是一個(gè)特別可靠的算法(它會(huì)從64個(gè)多位差錯(cuò)中漏掉一個(gè)),但它能檢測(cè)實(shí)際中可能發(fā)生的大多數(shù)差錯(cuò)。

上述系統(tǒng)的另外一個(gè)限制是讀取訪問時(shí)間必需很長(zhǎng)。為了尋找最新的記錄,每一次讀取都必須讀遍陣列中的每個(gè)記錄。有三種方法可以用來改善訪問時(shí)間:

1. 在數(shù)據(jù)單元中留一個(gè)空的字用于前向指針。當(dāng)數(shù)值更新時(shí),在前向指針中填入指向新條目的內(nèi)容。這樣這個(gè)表可以當(dāng)作一個(gè)鏈接列表。

2. 向后穿越表格?,F(xiàn)在你可以簡(jiǎn)單停留在第一次出現(xiàn)的請(qǐng)求單元上。

3. 如果只有少量的單一單元,可以在上電時(shí)就創(chuàng)建一個(gè)包含單元ID和指針的RAM陣列。隨后的訪問將非常迅速—只要讀取RAM陣列就可以發(fā)現(xiàn)到哪里去獲得數(shù)據(jù)單元。

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

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

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

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

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

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(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ì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

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

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(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)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

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