99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

英創(chuàng)信息技術(shù)精簡ISA總線Linux編程–Part1

英創(chuàng)信息技術(shù) ? 來源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-02-07 11:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

精簡ISA總線接口是一種8-bit寬度的雙向并行擴展總線,其特點是地址數(shù)據(jù)分時復(fù)用8-bit總線,加上4條總線控制信號,即可實現(xiàn)對外部數(shù)據(jù)的快速讀寫。若再使能一條總線時鐘信號(共13條信號),就可實現(xiàn)高達10MB/s的數(shù)據(jù)傳輸。精簡ISA總線作為英創(chuàng)主板的特色功能之一,在ESM6802、ESM7000、ESM7100、ESM335x等多款型號中均有配置。

對精簡ISA總線接口的應(yīng)用編程,將通過3個部分分別加以介紹。本文是第一部分,主要介紹ISA總線的訪問模式,以及最基本的總線數(shù)據(jù)讀寫。第二部分介紹由應(yīng)用程序啟動基于DMA的數(shù)據(jù)塊讀寫。采用DMA方式實現(xiàn)數(shù)據(jù)庫讀寫,可有效降低CPU的負載率。第三部分介紹ISA擴展硬件觸發(fā)DMA數(shù)據(jù)傳輸?shù)姆椒ǎ摲椒ㄖ饕嫦?a target="_blank">工業(yè)控制領(lǐng)域的高速數(shù)據(jù)采集。由于采用硬件觸發(fā)的DMA傳輸機制,使得前端的高速AD單元不再采用昂貴的高速SRAM做數(shù)據(jù)緩沖,從而使采集單元的成本大幅度下降。該方法可實現(xiàn)高達5MB/s(每秒5兆字節(jié))以上的數(shù)據(jù)采集率。

ISA總線信號定義如下:

信號及說明 PIN# 信號及說明
RESET_B,硬件復(fù)位 1 2 ISA_ADVn,地址鎖存控制信號
ISA_AD0,地址數(shù)據(jù)總線,LSB 3 4 ISA_AD4,地址數(shù)據(jù)總線
ISA_AD1,地址數(shù)據(jù)總線 5 6 ISA_AD5,地址數(shù)據(jù)總線
ISA_AD2,地址數(shù)據(jù)總線 7 8 ISA_AD6,地址數(shù)據(jù)總線
ISA_AD3,地址數(shù)據(jù)總線 9 10 ISA_AD7,地址數(shù)據(jù)總線,MSB
MSLn,支持多模塊掛接總線 11 12 ISA_WEn,數(shù)據(jù)寫控制信號
GPIO9,可選作為IRQ 13 14 ISA_RDn,數(shù)據(jù)讀控制信號
GPIO8,可選作為IRQ 15 16 ISA_CSn,片選控制信號
GPIO25,可選作為IRQ 17 18 VDD_5V0,+5V供電
GPIO24 / ISA_BCLK,同步時鐘ISA_BCLK 19 20 GND,電源信號地

本文以下部分,將以ESM7000 Linux平臺為例,介紹具體的編程方法。

ISA總線操作模式

精簡ISA總線的寬度只有8-bit,因此它的地址尋址范圍也只有8-bit,即0x00 – 0xFF。ISA總線的驅(qū)動程序支持應(yīng)用程序使用不同的地址范圍,來區(qū)別不同的訪問類型。根據(jù)ISA地址可有如下6種類型:

模式 offset ISA總線操作
0 0x0000 … 0x00FF 異步總線周期,CPU操作
1 0x1000 … 0x10FF 異步總線周期,MemCpy方式DMA,固定端口地址
2 0x2000 … 0x20FF 異步總線周期,外部信號觸發(fā)方式DMA,固定端口地址
3 0x3000 … 0x30FF 同步總線周期,CPU操作,要求ISA端口地址16字節(jié)對齊
4 0x4000 … 0x40FF 同步總線周期,MemCpy方式DMA,同步譯碼端口
5 0x5000 … 0x50FF 同步總線周期,外部信號觸發(fā)方式DMA,同步譯碼端口

ISA總線的異步總線周期是指每個總線周期讀寫一個字節(jié),只需用到ISA最基本的12條信號線;而同步總線周期則需要使用總線時鐘信號(共13條信號線),可實現(xiàn)一個總線周期讀寫4個字節(jié)。在《在英創(chuàng)工控主板上實現(xiàn)高速工控數(shù)據(jù)采集》一文中有對異步總線周期時序和同步總線周期時序較詳細的介紹。

由iMX7DSDMA(Smart DMA)控制器特性決定,ESM7000可支持的ISA總線操作類型如下:

模式 offset ISA總線讀操作
0 0x0000 … 0x00FF 異步總線周期,CPU讀,inc僅對本模式有效
3 0x3000 … 0x30FF 同步總線周期,CPU讀,要求ISA端口地址16字節(jié)對齊
4 0x4000 … 0x40FF 同步總線周期,MemCpy方式DMA讀,同步譯碼端口
5 0x5000 … 0x50FF 同步總線周期,外部信號觸發(fā)方式DMA讀,同步譯碼端口
模式 offset ISA總線寫操作
0 0x0000 … 0x00FF 異步總線周期,CPU寫,inc僅對本模式有效
3 0x3000 … 0x30FF 同步總線周期,CPU寫,要求ISA端口地址16字節(jié)對齊
4 0x4000 … 0x40FF 同步總線周期,MemCpy方式DMA寫,同步譯碼端口

同步總線周期主要用于數(shù)據(jù)的高速傳送,因此采用固定數(shù)據(jù)端口。數(shù)據(jù)端口的譯碼則采用直接識別同步總線周期的方法,而不再采用對總線地址譯碼的方法。異步總線周期則主要用于擴展電路單元內(nèi)各寄存器的控制。

采用DMA進行ISA總線數(shù)據(jù)傳送的目的,是為了降低高速傳送大量數(shù)據(jù)時的CPU開銷,使系統(tǒng)在進行高速數(shù)據(jù)采集的同時,還能進行其他的必要操作。MemCpy方式的DMA是指軟件線程啟動DMA,然后該線程掛起等待DMA操作完成。在多線程環(huán)境中,其他線程即可在DMA執(zhí)行過程中得以并行運行。MemCpy方式DMA的具體情況將在《精簡ISA總線編程– Part 2》中介紹。硬件觸發(fā)DMA,為低成本實現(xiàn)高速數(shù)據(jù)采集提供了技術(shù)手段,將在《精簡ISA總線編程– Part 3》中介紹相關(guān)的采集時序和程序?qū)崿F(xiàn)。

表格中的offset項,是指在程序設(shè)計中使用的數(shù)據(jù)結(jié)構(gòu)struct isa_transfer的成員,其結(jié)構(gòu)如下:

structisa_transfer
{
void *rx_buf; /* != NULL: buffer for bus read */
void *tx_buf; /* != NULL: buffer for bus write */
unsigned len; /* buffer length in byte */
unsigned offset; /* offset,port address on isa bus */
unsigned inc; /* = 0: fixed offset, = 1: offset+1 after r/w */
};

每一個總線周期的操作只能是讀或?qū)?,因此在isa_transfer結(jié)構(gòu)中只能有一個buffer指針不為NULL。

ISA總線訪問API

對ISA總線硬件端口的基本訪問方法,包含在isa_api_v3.cpp文件中,如下所示:

#include
#include
#include
#include
#include
#include
#include"em335x_drivers.h"
unsignedchar *isa_base = NULL;
unsignedintmap_size = 4096;
// return >= 0: return file handle
// return < 0: return failed code
intisa_open()
{
intfd;
fd = open("/dev/em_isa", O_RDWR);
if(fd< 0)
{
returnfd;
}
isa_base = (unsignedchar*)mmap(0,map_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
if (isa_base == MAP_FAILED) {
printf("%s mmap failed\n", __func__);
isa_base = NULL;
close(fd);
return -1;
}
returnfd;
}
intisa_close(intfd)
{
if(isa_base != NULL) {
munmap(isa_base, map_size);
isa_base = NULL;
}
returnclose(fd);
}
// offset: port address in isa bus
unsignedcharisa_read(intfd, unsignedint offset)
{
unsignedcharval_b;
int rc;
offset&= 0xff;
if(isa_base != NULL) {
unsignedshortintval_w;
val_w = *((unsignedshortint*)(isa_base + (offset << 1)));
val_b = (unsignedchar)(val_w& 0xff);
returnval_b;
}
val_b = offset;
rc = read(fd, &val_b, sizeof(unsignedchar));
if(rc< 0)
{
// read error
printf("%s failed %d\n", __func__, rc);
}
returnval_b;
}
// offset: port address in isa bus
voidisa_write(intfd, unsignedint offset, unsignedcharval_b)
{
unsignedshortintval_w;
int rc;
offset&= 0xff;
if(isa_base != NULL) {
val_w = val_b;
*((unsignedshortint*)(isa_base + (offset << 1))) = val_w;
return;
}
val_w = ((offset & 0xff) << 8) | val_b;
rc = write(fd, &val_w, sizeof(unsignedshortint));
if(rc< 0)
{
// read error
printf("%s failed %d\n", __func__, rc);
}
}
// offset: port address in isa bus
unsignedshortintisa_read16(intfd, unsignedint offset)
{
unsignedshortintval_w;
int rc;
// 2-byte alignment is required for offset
offset&= 0xfe;
if(isa_base != NULL) {
unsignedintval;
val = *((unsignedint*)(isa_base + (offset << 1)));
val_w = (unsignedshortint)((val>> 8) | (val& 0x00ff));
returnval_w;
}
val_w = (unsignedshortint)offset;
rc = read(fd, &val_w, sizeof(unsignedshortint));
if(rc< 0)
{
// read error
printf("%s failed %d\n", __func__, rc);
}
returnval_w;
}
// offset: port address in isa bus
voidisa_write16(intfd, unsignedint offset, unsignedshortintval_w)
{
unsignedintval;
intrc;
// 2-byte alignment is required for offset
offset&= 0xfe;
if(isa_base != NULL) {
val = val_w;
val = ((val<< 8) & 0x00ff0000) | (val& 0x000000ff);
*((unsignedint*)(isa_base + (offset << 1))) = val;
return;
}
val = (offset << 16) | val_w;
rc = write(fd, &val, sizeof(unsignedint));
if(rc< 0)
{
// read error
printf("%s failed %d\n", __func__, rc);
}
}
intisa_read_buf(intfd, structisa_transfer *tp)
{
int rc;
rc = read(fd, tp, sizeof(structisa_transfer));
if(rc< 0)
{
// read error
printf("%s failed %d\n", __func__, rc);
}
returnrc;
}
intisa_write_buf(intfd, structisa_transfer *tp)
{
int rc;
rc = write(fd, tp, sizeof(structisa_transfer));
if(rc< 0)
{
// read error
printf("%s failed %d\n", __func__, rc);
}
returnrc;
}

函數(shù)isa_open(..)和isa_close(..)是打開關(guān)閉ISA驅(qū)動的設(shè)備節(jié)點。為了提高應(yīng)用程序訪問ISA硬件寄存器的速度,ISA驅(qū)動實現(xiàn)了mmap功能,使isa_read(..)、isa_write(..)、isa_read16(..)和isa_write16(..)這4個函數(shù)可在用戶空間直接操作ISA總線上的硬件寄存器,大大提高了代碼的執(zhí)行速度。注意若在多個線程中均有調(diào)用isa_api_v3.cpp的函數(shù)時,需要加互斥鎖,保證對硬件資源操作的完整性。

CPU字節(jié)/字讀寫

函數(shù)isa_write(fd, 0x40, 0x55)是向地址為0x40的寄存器寫入單個字節(jié)0x55,對應(yīng)的總線時序為:

時序圖顯示了8位總線的地址/數(shù)據(jù)復(fù)用,地址需利用ADV#信號鎖存。

函數(shù)isa_read(fd, 0x40)是從地址為0x40的寄存器讀取單個字節(jié),對應(yīng)的總線時序為:

在上述時序中,ISA總線懸空,沒有接具體的外圍設(shè)備,因此由于分布電容的作用,在數(shù)據(jù)時段總線繼續(xù)保持前面輸出的地址0x40,讀取的數(shù)據(jù)也會是0x40。若此時有外圍設(shè)備輸出數(shù)據(jù)至總線上,該數(shù)據(jù)則會被系統(tǒng)讀取。

函數(shù)isa_write16(fd, 0x40, 0xaa55)是向地址為0x40的字寄存器寫入16-bit字0xaa55,對應(yīng)的總線時序為:

從時序圖可見,16-bit數(shù)據(jù)寫被分成兩個連續(xù)的總線周期,其中低位字節(jié)0x55寫入地址0x40寄存器,高位字節(jié)0xaa寫入地址0x41寄存器。為了盡可能縮短2個周期的間隔,要求地址必須是偶對齊。

函數(shù)isa_read16(fd, 0x40)是從地址為0x40的字寄存器讀取16-bit字,對應(yīng)的總線時序為:

同樣由于懸空總線的分布電容的作用,讀取的數(shù)據(jù)會是0x4140。

CPU數(shù)據(jù)塊讀寫

為了提高數(shù)據(jù)傳輸速度,對數(shù)據(jù)塊操作,推薦采用同步總線周期。在ESM7000 Linux版本中,每個同步總線周期可傳送4個字節(jié)。為了進一步加快數(shù)據(jù)塊的傳送,在驅(qū)動中使用了ARMv7的匯編塊指令來支持16字節(jié)以上的數(shù)據(jù)傳輸。因此強烈建議數(shù)據(jù)塊傳輸長度選擇為16字節(jié)的整倍數(shù),其數(shù)據(jù)端口占用16個ISA地址,即只對高4位地址譯碼。

進行數(shù)據(jù)塊讀寫需要用到structisa_transfer傳遞相關(guān)參數(shù)。以下是執(zhí)行32字節(jié)數(shù)據(jù)塊寫的代碼,寫入地址為0x3040。順序的數(shù)據(jù)可方便時序的觀察。

unsignedchargbuf[64 * 1024];
unsignedint i, value;
structisa_transfer t;
unsignedchar *pBuf8;
// write data block
memset(&t, 0, sizeof(structisa_transfer));
t.offset = 0x3040;
t.len = 32;
t.tx_buf = gbuf;
// fill data
value = 0x55; // initial value
pBuf8 = (unsignedchar*)t.tx_buf;
for(i = 0; i
*pBuf8 = (unsignedchar)(value + i);
pBuf8++;
}
isa_write_buf(fd, &t);

對應(yīng)的總線時序說明如下:

上圖可見,32個字節(jié)分成了8個總線周期完成,大致的總線速率為13MB/s。展開上述時序可看到:

總線上的數(shù)據(jù)0x55、0x59、…... 0x6D、0x71是每個總線周期CPU送出的第一個數(shù)據(jù),保持3個時鐘節(jié)拍,所以可在示波器中顯示出來。進一步展開可看到:

ISA擴展單元可根據(jù)上述時序來支持高速的同步總線周期讀寫邏輯電路,其要點包括:

●每個周期的第一個BCLK下降沿ADV#有效,標志同步周期的開始,之后連續(xù)7個BCLK下降沿后同步周期結(jié)束。

●第一個總線周期地址為輸入地址,之后每個總線周期的地址+4,按16模循環(huán)。因此要求數(shù)據(jù)端口占用16個ISA地址。

●BCLK頻率30MHz,從第5個上升沿開始鎖存數(shù)據(jù),連續(xù)4個數(shù)據(jù)。沒有BCLK時輸出的數(shù)據(jù)沒有意義,不影響正常的數(shù)據(jù)傳輸。

以上是對精簡ISA總線基本讀寫的介紹,有興趣的客戶可與英創(chuàng)公司技術(shù)聯(lián)系,索取測試代碼源碼。技術(shù)支持郵箱:support@emtronix.com。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11509

    瀏覽量

    213726
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6100

    瀏覽量

    36300
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    DEKRA德凱成為沙特通信和信息技術(shù)設(shè)備技術(shù)法規(guī)認證機構(gòu)

    近日,DEKRA德凱成功獲得沙特標準、計量和質(zhì)量組織(SASO)認可,正式成為沙特通信和信息技術(shù)設(shè)備技術(shù)法規(guī)(Technical Regulation for Communications
    的頭像 發(fā)表于 07-15 14:27 ?146次閱讀

    科普|信創(chuàng)是什么?一文讀懂“信息技術(shù)應(yīng)用創(chuàng)新”戰(zhàn)略

    什么是信創(chuàng)?信創(chuàng),即“信息技術(shù)應(yīng)用創(chuàng)新”,是國家推動IT系統(tǒng)自主可控、安全可控的重要戰(zhàn)略工程。它不僅是技術(shù)層面的創(chuàng)新,更承載著保障國家網(wǎng)絡(luò)安全、推動產(chǎn)業(yè)升級和實現(xiàn)數(shù)字主權(quán)的重任。簡單來
    的頭像 發(fā)表于 06-13 10:06 ?1938次閱讀
    科普|信<b class='flag-5'>創(chuàng)</b>是什么?一文讀懂“<b class='flag-5'>信息技術(shù)</b>應(yīng)用創(chuàng)新”戰(zhàn)略

    2025第二屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽正式開賽

    為進一步落實建設(shè)網(wǎng)絡(luò)強國和教育強國的戰(zhàn)略部署,推動各級教育行政部門及高校信息技術(shù)應(yīng)用創(chuàng)新能力提升,培養(yǎng)實戰(zhàn)型創(chuàng)新人才。龍芯中科聯(lián)合太初元碁、誠邁科技在2025第二屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽共同發(fā)布信息技術(shù)應(yīng)用創(chuàng)新人工智能方向(賽
    的頭像 發(fā)表于 05-13 16:21 ?520次閱讀

    Linux的作用

    學(xué)校和教育機構(gòu)使用Linux來教授計算機科學(xué)和信息技術(shù)相關(guān)的課程。 總之,Linux是一個功能強大、靈活且廣泛應(yīng)用的操作系統(tǒng),適用于各種不同的用途和場景。
    發(fā)表于 04-04 01:57

    龍芯中科榮獲2024年度信息技術(shù)應(yīng)用創(chuàng)新工作委員會卓越貢獻成員單位

    近日,中國電子工業(yè)標準化技術(shù)協(xié)會信息技術(shù)應(yīng)用創(chuàng)新工作委員會(以下簡稱“信創(chuàng)工委會”)在北京召開2024年度工作總結(jié)座談會暨信創(chuàng)“大比武”總結(jié)大會。中國工程院院士、信
    的頭像 發(fā)表于 01-23 10:50 ?696次閱讀

    芯盛智能榮獲2024年信息技術(shù)應(yīng)用創(chuàng)新工作委員會卓越貢獻成員單位

    日前,中國電子工業(yè)標準化技術(shù)協(xié)會信息技術(shù)應(yīng)用創(chuàng)新工作委員會(以下簡稱 “信創(chuàng)工委會”)2024 年度總結(jié)座談會于北京隆重舉行。此次會議對在信創(chuàng)工作中作出突出貢獻的成員單位予以表彰。江蘇
    的頭像 發(fā)表于 01-20 09:56 ?634次閱讀

    不同類型的總線技術(shù)對比

    總線技術(shù)是計算機系統(tǒng)中用于連接各個組件(如CPU、內(nèi)存、硬盤等)的關(guān)鍵技術(shù),它們負責(zé)數(shù)據(jù)傳輸和通信。以下是一些常見的總線技術(shù)及其對比:
    的頭像 發(fā)表于 12-31 09:40 ?1262次閱讀

    飛騰助力首屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽圓滿落幕

    近日,由中國教育技術(shù)協(xié)會主辦,教育部教育管理信息中心教育信創(chuàng)實驗室、公安部第三研究所、中國電子工業(yè)標準化技術(shù)協(xié)會信創(chuàng)工委會支持,北京航空航天
    的頭像 發(fā)表于 12-24 09:57 ?512次閱讀

    有方科技參編的信息技術(shù)團體標準發(fā)布

    近日,有方科技參編的《信息技術(shù)產(chǎn)品供應(yīng)鏈成熟度 共性指標 第1部分:企業(yè)背景評價》《信息技術(shù)產(chǎn)品供應(yīng)鏈成熟度 共性指標 第2部分:技術(shù)掌控評價》《
    的頭像 發(fā)表于 12-23 10:44 ?601次閱讀

    龍芯中科助力2024首屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽成功舉辦

    近日,2024首屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽在北京航空航天大學(xué)成功舉辦。本次大賽由中國教育技術(shù)協(xié)會主辦,教育信創(chuàng)實驗室、公安部第三研究所、中國電子工業(yè)標準化技術(shù)協(xié)會信
    的頭像 發(fā)表于 12-19 17:02 ?570次閱讀

    拓維信息參與牽頭組建!長沙新一代信息技術(shù)產(chǎn)教聯(lián)合體正式獲批

    的長沙新一代信息技術(shù)產(chǎn)教聯(lián)合體成功獲批,為長沙市信息技術(shù)產(chǎn)業(yè)發(fā)展注入了新的活力。圖/《2024年長沙市市級市域產(chǎn)教聯(lián)合體名單》長沙新一代信息技術(shù)產(chǎn)教聯(lián)合體將依托龍頭企
    的頭像 發(fā)表于 12-07 01:06 ?894次閱讀
    拓維<b class='flag-5'>信息</b>參與牽頭組建!長沙新一代<b class='flag-5'>信息技術(shù)</b>產(chǎn)教聯(lián)合體正式獲批

    中科創(chuàng)達榮獲2024年軟件和信息技術(shù)服務(wù)優(yōu)秀企業(yè)

    及前百家企業(yè)”名單。中科創(chuàng)達憑借非凡的技術(shù)實力與持續(xù)的創(chuàng)新能力,成功入選“2024年度軟件和信息技術(shù)服務(wù)競爭力百強企業(yè)”以及“2024年軟件和信息技術(shù)服務(wù)優(yōu)秀企業(yè)”。
    的頭像 發(fā)表于 10-30 11:44 ?959次閱讀

    Linux應(yīng)用編程的基本概念

    Linux應(yīng)用編程涉及到在Linux環(huán)境下開發(fā)和運行應(yīng)用程序的一系列概念。以下是一些涵蓋Linux應(yīng)用編程的基本概念。
    的頭像 發(fā)表于 10-24 17:19 ?645次閱讀

    創(chuàng)國產(chǎn)化背景下的工控主板發(fā)展現(xiàn)狀

    創(chuàng),是信息技術(shù)應(yīng)用創(chuàng)新產(chǎn)業(yè)的簡稱,于2016年“信創(chuàng)工委會”(信息技術(shù)應(yīng)用創(chuàng)新工作委員會)提出,目的就是要推動我們國內(nèi)軟硬件關(guān)鍵技術(shù)的研發(fā)
    的頭像 發(fā)表于 09-21 16:15 ?877次閱讀

    梯度科技入選2023年信息技術(shù)應(yīng)用創(chuàng)新解決方案名單

    日前,工業(yè)和信息化部網(wǎng)絡(luò)安全產(chǎn)業(yè)發(fā)展中心(工業(yè)和信息化部信息中心)在天津舉辦2024信息技術(shù)應(yīng)用創(chuàng)新發(fā)展大會暨解決方案應(yīng)用推廣大會。會上正式公布了2023年
    的頭像 發(fā)表于 09-09 16:29 ?759次閱讀