www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]本文介紹OMAP-L138_FlashAndBootUtils工具包基本框架和串口燒寫工具sfh_OMAP-L138.exe工作原理,使用方法,以及針對(duì)客戶的硬件如何修改代碼,搭建編譯環(huán)境并重新編譯,并總結(jié)了使用該工具的常見問題。

簡(jiǎn)介

OMAP-L138支持多種啟動(dòng)模式,包括 SPI,NAND,NOR等。TI為用戶提供了兩套 flash燒寫工具:

(1) 使用 TI 在 PSP 包或 OMAP-L138_FlashAndBootUtils 包中提供的 flash writer 的 CCS工程,通過仿真器連接硬件板,按照提示步驟燒寫 flash。

(2) 使用 OMAP-L138_FlashAndBootUtils工具包中的串口燒寫工具(如 sfh_OMAP-L138.exe),通過串口連接,進(jìn)行命令行燒寫。

本文接下來將針對(duì)第二種方式進(jìn)行詳細(xì)介紹。

用戶可以從開源網(wǎng)站上下載最新的 OMAP-L138_FlashAndBootUtils版本[1]。最新的版本為 OMAPL138_FlashAndBootUtils_2_40,本文以此版本展開討論。

OMAP-L138_FlashAndBootUtils_2_40工具包支持 TI公司的多種芯片平臺(tái)的 flash燒寫,包括 OMAPL138,AM1808,C6748等。工具包內(nèi)的代碼是對(duì)應(yīng) LogicPD的 OMAL138/AM1808 EVM板的。如果用于用戶自己的硬件板,可能需要修改工具包中相應(yīng)代碼并重新編譯。

該工具包中包括多種 flash工具及代碼。主要目錄如表 1所示。

表 1 OMAP-L138_FlashAndBootUtils_2_40工具包目錄結(jié)構(gòu)

1. 串口燒寫工具 sfh_OMAP-L138.exe的工作原理

sfh_OMAP-L138是 OMAP-L138_FlashAndBootUtils包中用于實(shí)現(xiàn)串口燒寫 flash的應(yīng)用程序。與UartHost.exe[3]工具不同,UartHost.exe是 UART啟動(dòng)工具,不能燒寫 flash。

運(yùn)行 sfh_OMAP-L138.exe時(shí),通過 UART啟動(dòng)方式下載并運(yùn)行 OMAPL138/GNU/sft目錄下的 AIS格式 bin文件,完成芯片的初始化操作。然后通過 UART與 sfh進(jìn)行命令交換,實(shí)現(xiàn) flash的擦除和燒寫工作。

從 OMAP-L138/GNU/sft/build目錄中的 makefile文件可知,編譯 sft目錄內(nèi)各 bin文件時(shí)需要 sft.c,device.c,uart.c以及針對(duì)不同 flash對(duì)應(yīng)的 flash初始化文件。

例如 sft_OMAPL138_SPI_MEM.bin是由 sft.c,device.c,uart.c等文件與 spi.c,spi_mem.c,device_spi.c一起編譯,并通過 OMAP-L138/GNU/AISUtils目錄下的 HexAIS_OMAP-L138.exe,根據(jù) sft目錄下的配置文件sft_hexais.ini內(nèi)的配置信息,將.out文件轉(zhuǎn)換成 AIS格式的.bin文件。

2. 命令格式介紹

在命令行下輸入 sfh_OMAP-L138.exe –help輸出命令格式說明如下:

sfh_OMAP-L138 <Command> [-targetType <Target>] [-flashType <FlashType>] [<Options>] [<InputFiles]各參數(shù)說明如下表所示,targetType默認(rèn)為 OMAP-L138,F(xiàn)lashType默認(rèn)為 SPI_MEM。使用默認(rèn)選項(xiàng)時(shí)相應(yīng)參數(shù)可以不輸入。

3. sfh_OMAPL138.exe常用命令的使用

sfh_OMAPL138.exe常用命令如表 2所示。

表 2 sfh_OMAPL138.exe常用命令表

以 SPI flash啟動(dòng)為例,準(zhǔn)備如下文件:

sfh_OMAPL138.exe,來源于 OMAP-L138_FlashAndBootUtils_2_40工具包。ubl-spi_ais.bin,來源于 OMAP-L138_FlashAndBootUtils_2_40工具包。u-boot.bin,來源于 SDK PSP目錄下的 UBoot。u-boot-ais.bin,由 UBoot編譯出的 elf格式文件 u-boot,通過 AIS轉(zhuǎn)換工具生成。

首先將 OMAL138/AM1808 EVM板設(shè)置為 UART2啟動(dòng)模式,S7開關(guān)設(shè)置如圖 1所示。 用直連串口線連接 PC與EVM板,打開 EVM板電源。在命令行模式下進(jìn)入目錄:OMAP-L138_FlashAndBootUtils_2_40OMAPL138GNU。

圖 1 S7開關(guān)設(shè)置

3.1全局擦除 flash命令

sfh_OMAPL138.exe –targetType OMAP-L138 –flashType SPI_MEM –erase

圖 2 sfh_OMAPL138.exe –erase命令運(yùn)行界面

運(yùn)行結(jié)果如圖 2所示,如果是先上電,后執(zhí)行該命令,則需要按下板子上的 reset鍵輸出 “BOOTME”給上位機(jī)的sfh。

3.2燒寫單個(gè) AIS格式的應(yīng)用程序

sfh_OMAP-L138.exe –targetType OMAP-L138 –flashType SPI_MEM -flash_noubl u-boot-ais.bin

OMAP-L138的 RBL支持 AIS格式,可以在啟動(dòng)過程中通過 AIS格式文件中的配置信息初始化芯片,如 PLL,DDR等。這樣就可以直接將程序加載到片外內(nèi)存,而不受片上內(nèi)存大小限制,省略二級(jí) Boot。

編譯 UBoot時(shí),在 UBoot根目錄下會(huì)生成一個(gè) elf格式的 u-boot文件,如圖 3所示,在 AISgen.exe工具里添加 PLL,DDR等配置參數(shù),將此文件轉(zhuǎn)換成 AIS格式的 bin文件,可以直接燒寫并啟動(dòng)。

圖 3 AISgen 配置界面

該命令將 AIS格式的 UBoot文件寫到 flash的起始地址。命令執(zhí)行顯示結(jié)果如圖 4所示:重新上電,從圖 5啟動(dòng)信息可見沒有 UBL的運(yùn)行信息,是直接從 UBoot運(yùn)行的。

圖 4 sfh_OMAPL138.exe –flash_noubl命令運(yùn)行界面

重新上電,從圖 5啟動(dòng)信息可見沒有 UBL的運(yùn)行信息,是直接從 UBoot運(yùn)行的。

圖 5 從 UBoot直接運(yùn)行界面

3.3燒寫 UBL和 UBoot

sfh_OMAP-L138.exe –targetType OMAP-L138 –flashType SPI_MEM -flash ubl-spi-ais.bin u-boot.bin命令執(zhí)行結(jié)果顯示如圖 5所示。該命令將 ubl-spi-ais.bin寫到 flash的起始地址,u-boot.bin寫到 flash的0x10000的偏移地址。

圖 6 sfh_OMAPL138.exe –flash命令運(yùn)行界面

UBL和 UBoot燒寫完后,關(guān)閉 EVM板電源,按圖 6所示,將 EVM板的 S7開關(guān)設(shè)為 SPI flash啟動(dòng)。

圖 7 S7開關(guān)設(shè)置為 SPI Flash啟動(dòng)

打開串口終端如 Hyper terminal,打開 EVM板電源,串口終端輸出信息如圖 7所示,表示 UBL和 UBoot成功燒寫,并成功從 SPI flash啟動(dòng)

圖 8 終端調(diào)試信息輸出

使用 sfh_OMAP-L138.exe燒寫 UBL和 UBoot時(shí),建議使用工具包自帶的 UBL。因?yàn)?UBoot的燒寫地址,要與 UBL的讀取地址一致,這樣 UBL運(yùn)行時(shí),才能正確的讀取 UBoot。工具包自帶的 UBL與燒寫工具保證了這一點(diǎn)。其它版本的 UBL需要用戶自行確認(rèn)。

4. 根據(jù)硬件改動(dòng)修改 serial flash utility

開發(fā)者自己的硬件板與 TI的 EVM比較,會(huì)影響工具使用的不同部分可能存在于:

(1) DDR型號(hào)

(2) FLASH型號(hào)

(3) 時(shí)鐘頻率

(4) UART配置

4.1 DDR參數(shù)修改

EVM板用的是 mDDR,大多數(shù)用戶用的是 DDR2,需要修改 OMAP-L138/Common/src/device.c文件中函數(shù)Uint32 DEVICE_ExternalMemInit( )的 5個(gè) DDR參數(shù)值。這個(gè)函數(shù)同樣被 UBL調(diào)用,如果不用 UBL,則要在AISgen界面里配置正確的 DDR參數(shù)。

可使用 TI提供的 DDR寄存器配置工具[5]。根據(jù) DDR手冊(cè)進(jìn)行 DDR參數(shù)的計(jì)算,

4.2 SPI flash

如果更改了 SPI flash的硬件連接,可在 OMAP-L138Commonincludedevice_spi.h文件中修改配置。

#define DEVICE_SPIBOOT_PERIPHNUM (1)//選擇 SPI1

#define DEVICE_SPI_UBL_HDR_OFFSET (0*1024)//ubl在 SPI flash中的偏移地址

#define DEVICE_SPI_APP_HDR_OFFSET (64*1024)//application image在 SPI flash中的偏移地址如果更換了與 EVM板不同的 SPI flash,必要時(shí)需要修改如下兩個(gè)文件:

OMAP-L138CommondriversincludeSpi_mem.h

OMAP-L138CommondriverssrcSpi_mem.c

4.3 NAND flash

NAND flash的數(shù)據(jù)位寬配置在 OMAP-L138Commonincludedevice_async_mem.h文件中定義:

#define DEVICE_ASYNC_MEM_NANDBOOT_BUSWIDTH (DEVICE_BUSWIDTH_8BIT)

如果 NAND flash更換的與 EVM上的不同,必要時(shí)需要修改如下兩個(gè)文件

OMAP-L138CommondriversincludeDevice_nand.h

OMAP-L138CommondriverssrcDevice_nand.c

4.4 NOR flash

NOR flash是標(biāo)準(zhǔn)設(shè)備,除了時(shí)序參數(shù)之外,一般不需要修改,NOR flash相關(guān)代碼文件如下:

OMAP-L138_FlashAndBootUtils_2_40Commondriverssrcnor.c

OMAP-L138_FlashAndBootUtils_2_40Commondriversincludenor.h

OMAP-L138Commonsrcdevice_async_mem.c

OMAP-L138Commonincludedevice_async_mem.h

OMAP-L138_FlashAndBootUtils_2_40Commondriverssrc async_mem.c

4.5 時(shí)鐘及 PLL

如果外部輸入時(shí)鐘頻率不是 24MHz,則需要 OMAP-L138Commonsrcdevice.c文件中函數(shù)DEVICE_PLL0Init()和 DEVICE_PLL1Init()的參數(shù)值。

函數(shù)原型 Uint32 DEVICE_PLL0Init(Uint8 clk_src, Uint8 pllm, Uint8 prediv, Uint8 postdiv, Uint8 div1 ,Uint8 div3, Uint8 div7)中 pllm是 PLL的倍頻系數(shù),主頻計(jì)算公式為:

函數(shù) DEVICE_PLL1Init()參數(shù)含義與 PLL0的類同,為 DDR提供時(shí)鐘。

4.6 UART配置

如果系統(tǒng)主頻發(fā)生變化,相應(yīng)的模塊時(shí)鐘也改變,調(diào)試串口的分頻值需要做相應(yīng)調(diào)整,否則串口輸出會(huì)因?yàn)椴ㄌ芈什徽_而出現(xiàn)亂碼。根據(jù)不同的主頻修改 OMAP-L138Commonsrcdevice_uart.c中 DEVICE_UART_config的 UART時(shí)鐘分頻系數(shù) divider的值,得到合適的 UART波特率。

如果不是用 UART2做為調(diào)試串口,修改 OMAP-L138Commoninclude device_uart.h文件中的DEVICE_UART_PERIPHNUM定義。

5. OMAP-L138_FlashAndBootUtils編譯環(huán)境搭建

在根據(jù)硬件改動(dòng),修改了代碼后,需要對(duì)工具包重新編譯,生成 UBL和 sfh_OMAP-L138.exe。如果在 Linux下使用此工具,需要在 Linux下進(jìn)行編譯(具體編譯過程參考參考文獻(xiàn) 4)。下面介紹如何在Windows環(huán)境下搭建OMAP-L138_FlashAndBootUtils的編譯環(huán)境。

編譯環(huán)境需要的幾個(gè)工具如下[6]:

(1) cygwin

(2) .NET framework

(3) ARM Compiler tools(CodeSourcery G++ Lite)

(4) C6x Compiler Tools

(5) CCSV5

5.1 Cygwin安裝

從 http:/ / www. cygwin. com/下載并運(yùn)行在線安裝工具setup.exe,注意安裝路徑中不能帶有空格。具體步驟如下:

選擇從互聯(lián)網(wǎng)安裝;也可以選擇先下載,再?gòu)谋镜匕惭b。

圖 9 cygwin安裝界面 1

選擇安裝路徑。

圖 10 cygwin安裝界面 2

可選擇直接連接或使用代理。

圖 11 cygwin安裝界面 3

選擇從哪個(gè)網(wǎng)址或者服務(wù)器上進(jìn)行下載。

圖 12 cygwin安裝界面 4

選擇安裝包

圖 13 cygwin安裝界面 4

一般選擇以下三項(xiàng),其他默認(rèn)即可。

• Devel-->make: The GNU version of the 'make' utility

• Devel-->subversion: A version control subsystem

• Editor-->vim (or similar)

安裝后要先運(yùn)行一次 cygwin 后,才會(huì)在 cygwin/home/下出現(xiàn) Administrator 目錄,進(jìn)入該目錄,修改.bashrc。

同時(shí),需要驗(yàn)證變量TMP和 TEMP是否包含/tmp。使用如下命令:

echo $TMP

echo $TEMP

如果找不到"unset TMP" and "unset TEMP",可在cygwinhome[user].bashrc 文件中添加如下命令創(chuàng)建:

export TMP=/tmp

export TEMP=/tmp

設(shè)置完后,重新打開cygwin即可。至此,cygwin安裝完成。

5.2 NET framework

從下面網(wǎng)址下載安裝最新的.NET Framework(4.0或者更高的版本)

http:/ / www. microsoft. com/downloads/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992&amp;displaylang=en

安裝默認(rèn)路徑為 C盤。然后將 C#編譯器路徑添加到 windows系統(tǒng)環(huán)境變量中。進(jìn)入目錄

C:WINDOWSMicrosoft.NETFramework查看軟件的版本號(hào)并復(fù)制,如

C:WINDOWSMicrosoft.NETFrameworkv4.0.30319。然后右鍵我的電腦->屬性->高級(jí)->環(huán)境變量,如圖 13所示,選擇系統(tǒng)變量中的 path 點(diǎn)擊編輯,在原有變量值后粘帖添加剛剛復(fù)制的內(nèi)容,路徑之間以’;’分隔。至此,Net Framework安裝結(jié)束。

圖 14 windows環(huán)境變量設(shè)置

5.3 C6x Compiler Tools

在 CCSV5安裝目錄下 ccsv5toolscompilerc6000_7.3.4即為 C6x編譯器目錄,在 CCSV3.3下的路徑為CCStudio_v3.3C6000cgtoolsbin。如果沒有安裝 CCS,從下面網(wǎng)址下載 TI的 C6x 編譯工具并安裝,如不確認(rèn)版本則下載最新版本。

https://www-a.ti.com/downloads/sds_support/TICodegenerationTools/download.htm

將C6x編譯器路徑添加到windows環(huán)境變量。

5.4 ARM Compiler tools(CodeSourcery G++ Lite)

從下面網(wǎng)址下載安裝 GCC交叉編譯器。注意交叉編譯工具的安裝目錄名不能含有空格,否則編譯時(shí)會(huì)報(bào)錯(cuò)。

https://sourcery.mentor.com/sgpp/lite/arm/portal/release858

修改 OMAP-L138_FlashAndBootUtils_2_40Commonbuild.mak文件中的 ARM_TOOLS_PATH變量為交叉編譯器的安裝路徑。例如ARM_TOOLS_PATH?=C:\CodeSourcery\arm-2009q1-203\

5.5 CCSV5

如果需要用 CCS編譯工程,則安裝 CCS。

6. 編譯 OMAP-L138_FlashAndBootUtils

6.1查看環(huán)境變量

打開 cygwin,輸入 export,查看環(huán)境變量是否設(shè)置成功。顯示如下,黑色加粗的目錄為之前添加的環(huán)境變量。

如未添加成功,可以使用如下命令添加:

export PATH=<arm-compiler-root>/bin:<MS-.NET-Root>:<C6000-Compiler-Root>/bin:$PATH

6.2 編譯工具包

cd OMAP-L138

如果只是編譯命令行工具(如 sfh_OMAP-L138),而不需要重新編譯 CCS 工程,則進(jìn)入 GNU目錄進(jìn)行編譯;如果只需要重新編譯 CCS工程,則進(jìn)入 CCS目錄進(jìn)行編譯;如果兩者都需要,則在 OMAP-L138這個(gè)目錄進(jìn)行編譯。編譯命令如下:

make clean

make

7. 使用serial flash utility常見問題及解決方法

7.1收不到“BOOTME”

在帶電情況下,復(fù)位芯片,如果還是收不到正確的“BOOTME”,檢查 BOOTMODE設(shè)置,串口終端波特率等參數(shù)設(shè)置,串口線連接方式。

7.2 停在 Waiting for SFT on the OMAP-L138…

如圖 14 所示,這種情況的原因通常有兩種:一是由于 DDR 參數(shù)配置不正確從而導(dǎo)致程序運(yùn)行異常,不能返回正確的指令給主機(jī);二是硬件原因,可能是焊接,或硬件連接上的錯(cuò)誤造成的??梢酝ㄟ^仿真器連接目標(biāo)板用 BSL庫提供的測(cè)試程序驗(yàn)證一下 DDR,和相應(yīng)的 flash。如果沒有仿真器,可以通過間接的方法,比如用 AISgen 工具包里提供的 UART 啟動(dòng)工具 UartHost.exe 來加載運(yùn)行測(cè)試程序,檢測(cè) DDR,flash 等,將測(cè)試結(jié)果通過串口回傳顯示,或者設(shè)置 GPIO的狀態(tài)來反映。

圖 15 sfh_OMAP-L138.exe命令運(yùn)行異常

7.3 燒寫中途停止

如圖 15所示,燒寫在中途停止,這種情況通常是因?yàn)?DDR工作不穩(wěn)定,原因可能是 DDR布線問題導(dǎo)致信號(hào)完整性差,可以嘗試降低 DDR時(shí)鐘,并用示波器測(cè)量信號(hào)質(zhì)量。

DDR不穩(wěn)定也可能表現(xiàn)在能成功燒寫,但運(yùn)行不正常,通常表現(xiàn)為串口打印停在解壓或啟動(dòng)內(nèi)核階段。

圖 16 sfh_OMAP-L138.exe命令運(yùn)行異常信息

7.4 啟動(dòng)后串口沒打印

燒寫成功,啟動(dòng)后串口沒打印,檢查U-boot里的調(diào)試串口配置,默認(rèn)為UART2。

參考文獻(xiàn):

(1) http://sourceforge.net/projects/dvflashutils/files/OMAP-L138/v2.40/

(2) AISgen工具下載地址:http://www-s.ti.com/sc/techlit/sprab41.zip

(3) http://www.ti.com/lit/an/spraba5b/spraba5b.pdf

(4) http://processors.wiki.ti.com/index.php/Serial_Boot_and_Flash_Loading_Utility_for_OMAP-L138

(5) http://processors.wiki.ti.com/images/d/db/MDDR_DDR2_Memory_Controller_Register_Calc_Rev4.zip

(6) http://processors.wiki.ti.com/index.php/Rebuilding_the_Flash_and_Boot_Utils_Package

本站聲明: 本文章由作者或相關(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)閉