當(dāng)前位置:首頁 > 電源 > 電源
[導(dǎo)讀]引言 網(wǎng)絡(luò)技術(shù)應(yīng)用日益普及的今天,工業(yè)現(xiàn)場(chǎng)的儀器儀表、數(shù)據(jù)采集和控制設(shè)備也日趨網(wǎng)絡(luò)化,工業(yè)自動(dòng)化和網(wǎng)絡(luò)的結(jié)合越來越密切。而將以太網(wǎng)和嵌入式系統(tǒng)相結(jié)合應(yīng)用于工業(yè)

引言

網(wǎng)絡(luò)技術(shù)應(yīng)用日益普及的今天,工業(yè)現(xiàn)場(chǎng)的儀器儀表、數(shù)據(jù)采集和控制設(shè)備也日趨網(wǎng)絡(luò)化,工業(yè)自動(dòng)化和網(wǎng)絡(luò)的結(jié)合越來越密切。而將以太網(wǎng)和嵌入式系統(tǒng)相結(jié)合應(yīng)用于工業(yè)控制中已成為趨勢(shì)。

AX88796B是Asix公司推出的一款為嵌入式和工業(yè)以太網(wǎng)應(yīng)用而設(shè)計(jì)的低引腳數(shù)以太網(wǎng)控制芯片。其內(nèi)部集成10/100Mb/s自適應(yīng)的介質(zhì)訪問層MAC和物理層收發(fā)器PHY以及8K×16位的SRAM。AX88796B可應(yīng)用于商業(yè)級(jí)0~70C和工業(yè)級(jí)-40C~85C的溫度范圍。AX88796B支持MCS-51系列、80186系列、ISA總線和SRAM-like接口類型。執(zhí)行基于IEEE802.3/IEEE802.3u局域網(wǎng)標(biāo)準(zhǔn)的10Mb/s和100Mb/s以太網(wǎng)控制功能,并且提供發(fā)送隊(duì)列功能來增強(qiáng)標(biāo)準(zhǔn)NE2000的發(fā)送性能。

AT91R40008微控制器是基于ARM7TDMI核的32位RISC結(jié)構(gòu)的嵌入式微控制器,非常適于工業(yè)實(shí)時(shí)控制應(yīng)用。AX88796B引腳的LQFP封裝減少了PCB空間并且和NE2000兼容,編程簡(jiǎn)單,其驅(qū)動(dòng)可以容易快速的移植到許多嵌入式系統(tǒng)中。因此,綜合上述兩種芯片的優(yōu)點(diǎn),我們選擇AX88796B和AT91R40008作為工業(yè)實(shí)時(shí)控制中嵌入式網(wǎng)絡(luò)應(yīng)用的解決方案,具有很好的工業(yè)應(yīng)用價(jià)值和前景。


AX88796B內(nèi)部結(jié)構(gòu)及工作原理

1 AX88796B的內(nèi)部結(jié)構(gòu)

網(wǎng)卡上電復(fù)位時(shí)EEPROM接口能夠通過CSR中偏移為14H的SMI/EEPROM寄存器來存取數(shù)據(jù),MAC地址由EEPROM中讀取,并被自動(dòng)載入地址為0000h~001fh和0400h~040fh的內(nèi)部存儲(chǔ)區(qū)中。如果沒有使用EEPROM,每次上電對(duì)網(wǎng)卡進(jìn)行初始化時(shí)候就手動(dòng)給它分配一個(gè)MAC地址。

AX88796B內(nèi)部有一個(gè)16KB(0x4000~0x7fff)大小的SRAM,該SRAM是雙端口SRAM,可以同時(shí)被網(wǎng)卡讀寫和用戶讀寫,這片地址空間的一部分被保留用來存放一個(gè)緩沖環(huán)結(jié)構(gòu),另一部分可以給用戶使用。在本設(shè)計(jì)中,16KB的SRAM全部被用來接收和發(fā)送數(shù)據(jù)包。本地DMA正是通過這個(gè)緩沖環(huán)結(jié)構(gòu)來接收?qǐng)?bào)文的。這個(gè)結(jié)構(gòu)由一連串相鄰的固定長(zhǎng)度為256B的緩沖區(qū)構(gòu)成,每256字節(jié)稱為一頁,共有64頁。頁的地址就是地址的高8位,頁地址為0x00~0xff。其中0x40~0x4B為網(wǎng)卡的發(fā)送緩沖區(qū),共12頁,剛好可以存儲(chǔ)2個(gè)最大的以太網(wǎng)包,所以我們把發(fā)送緩沖區(qū)分成兩部分進(jìn)行輪流發(fā)送。使用0x4c~0x7f共52頁為網(wǎng)卡的接收緩沖區(qū)。AX88796B的SRAM空間結(jié)構(gòu)和收發(fā)緩沖區(qū)結(jié)構(gòu)如圖2、3所示。



2 AX88796B的工作原理

由四個(gè)寄存器來控制接收緩沖區(qū)的操作。Page Start Address Register (PSTART)和Page Stop Address Register(PSTOP)定義了接收緩沖區(qū)的起始和終止頁號(hào),形成一個(gè)接收緩沖環(huán)。當(dāng)前頁地址寄存器(Current Page Register)指向第一個(gè)用于存儲(chǔ)數(shù)據(jù)包的緩沖區(qū)。邊界指針寄存器(Boundary Pointer Register)指向在緩沖環(huán)中第一個(gè)未被主機(jī)讀取的數(shù)據(jù)包。如果本地DMA地址與Boundary Pointer Register的值相等,則接收過程中止。邊界指針也被用來初始化遠(yuǎn)端DMA來移動(dòng)一個(gè)數(shù)據(jù)包,當(dāng)數(shù)據(jù)包被移走后,邊界指針也向前增長(zhǎng)。這樣,Current Page Register如同一個(gè)寫指針,Boundary Pointer如同一個(gè)讀指針。接收到一個(gè)數(shù)據(jù)包時(shí),從PSR中指定的頁號(hào)開始存儲(chǔ),如果一個(gè)256B的緩沖區(qū)不夠,DMA會(huì)執(zhí)行一個(gè)前向連接來連接下一個(gè)緩沖區(qū)以存儲(chǔ)這個(gè)數(shù)據(jù)包的剩余部分。連接的時(shí)候緩沖區(qū)必須是連續(xù)的,一個(gè)數(shù)據(jù)包總是會(huì)被存儲(chǔ)在相鄰的緩沖區(qū)里。在連接下一個(gè)緩沖區(qū)前,緩沖管理邏輯會(huì)執(zhí)行兩個(gè)比較,首先比較下一個(gè)緩沖區(qū)的DMA地址是否和page Stop Register相等,若相等,則DMA地址被恢復(fù)為page start address register中保存的地址。其次和boundary pointer register比較,如果相等,則接收?qǐng)?bào)文過程終止。Boundary Pointer Register能夠防止緩沖區(qū)里的數(shù)據(jù)還沒有讀出就被重寫。

要發(fā)送和接收數(shù)據(jù)包就必須通過DMA讀寫AX88796B內(nèi)部的SRAM。DMA分為遠(yuǎn)程DMA(Remote DMA)和本地DMA(Local DMA)。CPU從網(wǎng)卡的SRAM讀寫數(shù)據(jù)稱為遠(yuǎn)端DMA。AX88796B讀寫SRAM稱為本地DMA。數(shù)據(jù)包的接收過程:當(dāng)數(shù)據(jù)包到達(dá)網(wǎng)卡的MAC層后,本地DMA先將到達(dá)MAC層的報(bào)文傳送到網(wǎng)卡的內(nèi)存中,主機(jī)CPU再通過遠(yuǎn)端DMA通道從網(wǎng)卡內(nèi)存中讀取數(shù)據(jù)包。數(shù)據(jù)包的發(fā)送過程:主機(jī)CPU通過遠(yuǎn)端DMA把要發(fā)送的數(shù)據(jù)包送到網(wǎng)卡的內(nèi)存中,本地的DMA將該數(shù)據(jù)包傳送到MAC層,再經(jīng)由內(nèi)部的PHY層發(fā)送至網(wǎng)絡(luò)。

網(wǎng)絡(luò)接口硬件設(shè)計(jì)

1 AX88796B的引腳配置

AX88796B與CPU的連接方式有MCS51模式、ISA模式、186模式,此方案使用了ISA 8bit模式。片選引腳CSn,讀寫信號(hào)RDn、WRn、RSTn都是低電平有效,分別和AT91r40008相應(yīng)引腳相連即可。AX88796B的數(shù)據(jù)線SD0~SD15和AT91r40008的DATA[0:15]相連,可通過軟件配置為16位或8位DMA數(shù)據(jù)傳輸方式。AX88796B的IRQ是可編程的,中斷請(qǐng)求信號(hào)可以通過配置BTCR或EEPROM來選擇其觸發(fā)方式和中斷I/O緩沖類型,AT91r40008中斷觸發(fā)方式應(yīng)該和BTCR的配置相一致。其他重要引腳如IOIS16、PME、EECE、EECK在本設(shè)計(jì)中懸空處理。引腳配置應(yīng)根據(jù)網(wǎng)卡芯片手冊(cè)說明和設(shè)計(jì)方案而定。

對(duì)AX88796B控制狀態(tài)寄存器(CSR)的操作,需要確定其基地址,基地址的選擇應(yīng)根據(jù)AT91r40008的可編程外部總線EBI的地址和片選信號(hào)來確定。AT91r40008的EBI處理位于地址空間0x00400000~0xFFC00000的訪問操作,在訪問過程中,它將產(chǎn)生外部器件的控制訪問信號(hào)。當(dāng)把網(wǎng)卡寄存器地址空間映射進(jìn)EBI后,直接對(duì)EBI地址空間操作即可控制網(wǎng)卡的寄存器讀寫。對(duì)每個(gè)映射進(jìn)EBI接口的外圍器件,可以編程等待周期數(shù)、數(shù)據(jù)浮空時(shí)間、數(shù)據(jù)總線寬度(8位或16位)等。

電路如圖4所示


AX88796B的驅(qū)動(dòng)程序設(shè)計(jì)

AX88796B的網(wǎng)卡驅(qū)動(dòng)程序是處理器CPU和網(wǎng)卡硬件的接口,網(wǎng)卡驅(qū)動(dòng)程序主要包括以下幾部分:網(wǎng)卡的初始化;數(shù)據(jù)包的接收和發(fā)送;中斷處理子程序。

1 網(wǎng)卡初始化

在網(wǎng)卡的初始化過程中除了完成對(duì)相關(guān)寄存器的定義與賦值外,還要完成對(duì)接收緩沖環(huán)的構(gòu)造。AX88796B的所有寄存器除了數(shù)據(jù)端口寄存器外都是8位數(shù)據(jù)寬度。數(shù)據(jù)端口寄存器可以通過配置DCR寄存器中的WTS設(shè)置成8位或16位寬。AX88796B將偏移量為01h~0fh的寄存器分為4頁(Page0~Page3)進(jìn)行操作。與NE2000兼容的寄存器只有3頁(Page0~Page2)。初始化需要設(shè)置頁0與頁1的相關(guān)寄存器,頁2的寄存器是只讀的,不可以設(shè)置,頁3的寄存器不是NE2000兼容的,不用設(shè)置。初始化函數(shù)主要要完成以下諸項(xiàng)工作。

/*AX88796B_init*/
/*調(diào)用復(fù)位子程序?qū)X88796B進(jìn)行復(fù)位。有兩種復(fù)位方式:一是硬件復(fù)位,通過拉高拉低RESET引腳達(dá)到復(fù)位AX88796B的目的;二是軟件復(fù)位,從0x1f端口讀數(shù)據(jù)使AX88796B復(fù)位。*/

ReadByte(RESET);
WriteByte(RESET,0xff);
delay(3000);
WriteByte(IMR,0);/*初始化中斷屏蔽寄存器IMR,寫入0x00,禁止所有中斷請(qǐng)求。*/
WriteByte(CR,0x61);/*選中頁1,停止AX88796B。*/
delay(1000);
WriteByte(CPR,0x4C);/*初始化接收緩沖環(huán)寫頁指針CPR=PSTART*/
WriteByte(PAR0~PAR5,MAC);/*設(shè)置網(wǎng)卡芯片MAC地址,清除多播地址寄存器。*/
WriteByte(MAR0~MAR7,0);
WriteByte(CR,0x21);/*停止網(wǎng)卡,切換到頁0。*/
delay(1000);
WriteByte(BNRY,0x79);/*寫邊界指針寄存器(BNRY)為0x79;*/
WriteByte(PSTART,0x4c);/*設(shè)置接收緩沖區(qū)的起始頁地址0x4c;*/
WriteByte(PSTOP,0x80);/*PSTOP接收緩沖區(qū)的結(jié)束頁地址0x80;*/
WriteByte(TPSR,0x40);/*TPSR發(fā)送頁的起始地址0x40;*/
WriteByte(DCR,0x80);/*設(shè)置數(shù)據(jù)配置寄存器為8位數(shù)據(jù)傳輸模式。*/
/*設(shè)置接收配置寄存器為0x4C,使接收緩沖區(qū)僅接收廣播地址數(shù)據(jù)包和多點(diǎn)播送地址包。*/
WriteByte(RCR,0x4C);
/*設(shè)置TCR發(fā)送配置寄存器為0x80,采用全雙工模式,當(dāng)數(shù)據(jù)包長(zhǎng)度小于60字節(jié)時(shí)自動(dòng)填充,發(fā)送時(shí)附加CRC校驗(yàn)。*/
WriteByte(TCR,0x80);
WriteByte(ISR,0xFF);/*清除中斷狀態(tài)寄存器。*/
WriteByte(IMR,0x11);/*允許覆寫中斷和數(shù)據(jù)包接收中斷。*/
WriteByte(BTCR,0x30);/*中斷觸發(fā)方式為高電平有效,IRQ輸出為推挽驅(qū)動(dòng)方式*/
WriteByte(CR,0x22);/*啟動(dòng)芯片,AX88796B初始化完成。*/
delay(1000);
wrcurpge=read(CPR);
rdnxtpge=wrcurpge;

2 數(shù)據(jù)包的發(fā)送和接收

判斷AX88796B是否接收到新的數(shù)據(jù)包有兩種方式:輪循和中斷。單片機(jī)用輪循方式較多。為了提高CPU性能和實(shí)時(shí)性要求,這里采用中斷方式。當(dāng)網(wǎng)卡接收到新數(shù)據(jù)包時(shí)進(jìn)入中斷,首先判斷CPR是否等于BNRY,若相等,則表示接收緩沖區(qū)已被存滿,則停止接收數(shù)據(jù)包,而不會(huì)覆蓋舊的數(shù)據(jù);若不等,則將接收緩沖區(qū)中待讀取的數(shù)據(jù)包的起始地址寫入RSAR[0,1]寄存器,數(shù)據(jù)包的開始4字節(jié)寫入RBCR[0,1]寄存器,并啟動(dòng)遠(yuǎn)端DMA讀命令,通過讀取4個(gè)信息字節(jié)得到待讀取數(shù)據(jù)包的長(zhǎng)度、接收狀態(tài)和下一個(gè)將被讀的頁的指針信息。然后通過遠(yuǎn)端DMA讀命令,將數(shù)據(jù)包從網(wǎng)卡SRAM中讀入CPU內(nèi)存中,并更新讀頁指針寄存器BNRY,CPU每從網(wǎng)卡內(nèi)存中讀走一頁數(shù)據(jù),BNRY便加一,這需要通過程序?qū)崿F(xiàn)。網(wǎng)卡通過CPR將接收到的數(shù)據(jù)包寫入接收緩沖區(qū),每寫完一頁,CPR將自動(dòng)加一,當(dāng)加到最后的空頁(這里是PSTOP=0x80)時(shí),CPR將自動(dòng)恢復(fù)為接收緩沖區(qū)的首頁(PSTART=0x4c)。網(wǎng)卡接收關(guān)鍵性代碼如下:

/*AX88796B_receive*/
uint8 rcvinfo[4],i;
uint16 pktlength,index;
/*得到待讀取數(shù)據(jù)包的信息,并將其保存在rcvinfo數(shù)組中*/

WriteByte(RSAR0,0x00);
WriteByte(idx,RSAR1,rdnxtpge);
WriteByte(RBCR0,0x04);
WriteByte(RBCR1,0x00);
WriteByte(CR,0x0A);
for(i=0;i<4;i++)
rcvinfo[i]=*((uint8*)(DP_PORT+Base_addr));
pktlength=rcvinfo[2]+(rcvinfo[3]*256)-4;
/*根據(jù)得到的待讀取數(shù)據(jù)包的長(zhǎng)度pktlength,將數(shù)據(jù)包讀入CPU內(nèi)存Buf*/

WriteByte(RSAR0,0x4);
WriteByte(RSAR1,rdnxtpge);
WriteByte(RBCR0,(uint8)(pktlength&0x00ff));
WriteByte(RBCR1,(uint8)(pktlength>>8));
WriteByte(CR,0x0A);
ReadData(uint16*Buf,uint16 length);
/*更新BNRY指針,并返回pktlength值*/
rdnxtpge=rcvinfo[1];
if(rdnxtpge==PSTART)
WriteByte(idx,BNRY,PSTOP-1);
else
WriteByte(idx,BNRY,rdnxtpge-1);
return pktlength;

CPU通過遠(yuǎn)端DMA通道將網(wǎng)卡發(fā)送緩沖區(qū)的起始地址和要發(fā)送的字節(jié)數(shù)分別寫入RSAR[0,1]和RBCR[0,1],然后啟動(dòng)遠(yuǎn)端DMA寫命令即可將數(shù)據(jù)包寫入網(wǎng)卡內(nèi)存,此后將字節(jié)數(shù)寫入TBCR[0,1]寄存器,啟動(dòng)發(fā)送命令就可將數(shù)據(jù)包發(fā)送到網(wǎng)絡(luò)上。網(wǎng)卡發(fā)送的關(guān)鍵代碼如下:

/*AX88796B_transmit*/
/*將數(shù)據(jù)寫入網(wǎng)卡的發(fā)送緩沖區(qū)*/
WriteByte (RSAR0,0x00);
WriteByte (RSAR1,TX_BUF_Start);
WriteByte (RBCR0,(uint8)(len&0xFF));
WriteByte (RBCR1,(uint8)(len>>8));
WriteByte (CR,0x12);
WriteData((uint16*)addr,len);
WriteByte (idx,TPSR,TX_BUF_Start);
/*發(fā)送緩沖區(qū)的數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)*/
WriteByte (TBCR0,(uint8)(len&0xFF));
WriteByte (TBCR1,(uint8)(len>>8));
WriteByte (CR,0x26);

3 中斷處理

中斷的處理和CPU關(guān)聯(lián)密切,在軟件中必須先配置好網(wǎng)卡的片選線和中斷信號(hào)線。數(shù)據(jù)包到來時(shí),網(wǎng)卡將其保存在SARM中,同時(shí)觸發(fā)一個(gè)中斷。處理器接收到中斷信號(hào)后,進(jìn)入中斷處理程序。在中斷處理程序中讀AX88796B的中斷狀態(tài)寄存器ISR來判斷是什么樣類型的中斷,如果讀出的值的最低位為1,則代表是數(shù)據(jù)包接收中斷,這時(shí)需觸發(fā)一個(gè)消息,進(jìn)入到讀網(wǎng)卡函數(shù)。讀網(wǎng)卡函數(shù)的功能是將網(wǎng)絡(luò)數(shù)據(jù)包從網(wǎng)卡的內(nèi)存接收到主機(jī)中,接著向上層傳遞,進(jìn)行相應(yīng)的處理。

一個(gè)報(bào)文的發(fā)送過程就是通過調(diào)用寫網(wǎng)卡函數(shù),將報(bào)文發(fā)送到網(wǎng)卡的內(nèi)存中去。然后將AX88796的控制寄存器(CR)的發(fā)送位TXP(Transmit packet)位置1,即將報(bào)文發(fā)送。
中斷處理子程序的關(guān)鍵代碼:

/*IRQ0_handler*/
uint8 InterruptStatus;
InterruptStatus=read(ISR);//讀中斷狀態(tài)寄存器
write(IMR,0x00);//禁止中斷
write(ISR,InterruptStatus);//清除中斷狀態(tài)寄存器
if(InterruptStatus&0x01)//是否為數(shù)據(jù)包接收中斷
OSQPost(TcpIpMsgQ,&idx);//通知上位機(jī)接收到數(shù)據(jù)包
write(IMR,0x11);//使能接收中斷和覆寫中斷

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