1 引言
目前,嵌入式系統(tǒng)已經(jīng)廣泛應(yīng)用到人們的工作、生活中,2003年我國嵌入式系統(tǒng)應(yīng)用產(chǎn)品經(jīng)濟總量達(dá)l 000億元。隨著技術(shù)的發(fā)展,8位MCU市場已逐步趨向穩(wěn)定,32位MPU代表著嵌入式技術(shù)的發(fā)展方向,正在加速發(fā)長。在32位嵌入式微處理器市場上,基于ARM內(nèi)核的微處理器處于絕對的領(lǐng)導(dǎo)地位。
嵌入式系統(tǒng)是以應(yīng)用為中心,以計算機技術(shù)為基礎(chǔ),軟、硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計算機系統(tǒng)。嵌入式系統(tǒng)除了具有高效、穩(wěn)定、性能專一等優(yōu)點外,還具有實時性較高的操作系統(tǒng)。嵌入式系統(tǒng)與通信、網(wǎng)絡(luò)技術(shù)的結(jié)合可以極大增強網(wǎng)絡(luò)的智能化與靈話性,拓展通信功能,從而實現(xiàn)各種通信系統(tǒng)之間的互聯(lián)互通。本文給出了一種適合于中/低端應(yīng)用的通信平臺設(shè)計方案,它可支持以太網(wǎng)之間的數(shù)據(jù)傳輸,并且具有RS232、RS485、USB等接口。文中圍繞嵌入式Linux環(huán)境設(shè)計了基于MC9328MXl(ARM920T)最小系統(tǒng)的硬件通信平臺,從而實現(xiàn)了嵌入式Socket通信。
2 最小系統(tǒng)分析
Motorola公司的MC9328MXl是以ARM920T為內(nèi)核的高性價比16/32位RISC微控制器,內(nèi)含一個ARM公司設(shè)計的16/32位ARM920T RISC處理器核,ARM920T為低功耗,高性能16/32位核,最適合于對價格及功耗敏感的應(yīng)用場合。除了ARM920T核以外,MC9328MXl還包含了許多外圍功能模塊。處理器和這些模塊都集成在核心板上,其具體結(jié)構(gòu)如圖1所示。
由圖1可見,除了ARM920TDMI內(nèi)核外,MC9328MXl還集成了多個外圍功能模塊:一個LCD控制器、一個脈沖調(diào)制控制器、一個USB控制器及多個擴展通道,但是沒有集成用于網(wǎng)絡(luò)通信的以太網(wǎng)控制器。所以,需要設(shè)計包含合適的以太網(wǎng)控制器的外圍電路。
3 外圍電路設(shè)計
本系統(tǒng)選用與MC9328MXl相匹配的CS8900A作為以太網(wǎng)控制器。CS8900A是Cirrus Logic公司生產(chǎn)的低功耗16位以太網(wǎng)控制器,功能強大。該器件的突出特點是使用靈活,其物理層接口、數(shù)據(jù)傳輸模式和工作模式等都能根據(jù)需要動態(tài)調(diào)整,通過內(nèi)部寄存器的設(shè)置來適應(yīng)不同的應(yīng)用環(huán)境。
CS8900A內(nèi)部結(jié)構(gòu)框圖如圖2所示,內(nèi)部功能模塊主要是802.3介質(zhì)訪問控制塊(MAC)。802.3介質(zhì)訪問控制塊支持全雙工工作模式,完全依照IEEE802.3以太網(wǎng)標(biāo)準(zhǔn),采用100引腳TQFP封裝,負(fù)責(zé)處理有關(guān)以太網(wǎng)數(shù)據(jù)幀的發(fā)送和接收,包括:沖突檢測、幀頭的產(chǎn)生和檢測、CRC校驗碼的生成和驗證。通過對發(fā)送控制寄存器(TxCMD)的初始化配置,MAC能自動完成幀的沖突后重傳。如果幀的數(shù)據(jù)部分少于46個字節(jié),它能生成填充字段使數(shù)據(jù)幀達(dá)到802.3所要求的最短長度。
CS8900A的主要特點如下:
符合IEEE802.3以太網(wǎng)標(biāo)準(zhǔn),并帶有ISA接口;
片內(nèi)4KB RAM;
適用于I/O工作模式、存儲器工作模式和DMA工作模式;
帶有傳送、接收低通濾波的lOBase2T連接端口;
支持lOBase2,lOBase5和lOBase2F的AUI接口;
自動生成報頭,自動進行CRC檢驗,沖突后自動重發(fā);
最大電流消耗為55mA(5 V電源);
全雙工工作模式;
支持外部EEPROM。
另外,要實現(xiàn)CS8900A與主機之間的數(shù)據(jù)通訊,在電路設(shè)計時可根據(jù)具體情況靈活選擇合適的數(shù)據(jù)傳輸模式。CS8900A支持的傳輸模式有:I/O模式和Memory模式,另外還有DMA模式。其中,I/O模式是訪問CS8900A存儲區(qū)的缺省模式,簡單易用。
由MC9328MXl的引腳描述可以看出,MCU的數(shù)據(jù)是通過D[3l:0]傳輸?shù)模蕴W(wǎng)控制器CS8900A最多使用16位傳輸模式,所以MC9328MXl的數(shù)據(jù)總線前16位(D[15:0])應(yīng)與CS8900A的SD[O:15]相連,為解決速度不匹配的問題,需使用具有緩沖功能的總線收發(fā)器。從成本考慮,該系統(tǒng)采用兩個8位的74LS245。地址信息通過MC9328MXI地址總線接口的A[DO:03]與CS8900A的SA[00:03]通過緩沖器74HC244相連,A[04:19]與SA[04:19]直接相連用于設(shè)置網(wǎng)卡的初始基址。另外,CS8900A通過一個帶扼流線圈的隔離變壓器20F001N將CPU發(fā)送的數(shù)據(jù)(變比為l:1.414)發(fā)送到網(wǎng)絡(luò)上;接收數(shù)據(jù)時,網(wǎng)絡(luò)傳送的數(shù)據(jù)經(jīng)過隔離變壓器(變比為1:1)。隔離變壓器的作用主要是將外部線路與CS8900A隔開,防止干擾和燒壞元件,實現(xiàn)帶電的插拔功能。XTALl與XTAL2之間的晶振為CS8900A提供穩(wěn)定的時鐘脈沖。其電路圖如圖3所示。
4 基于嵌入式Linux的Socket通信
基于嵌入式Linux的開發(fā)環(huán)境一般由裝有交叉編譯器的PC機和硬件開發(fā)板組成。本設(shè)計以PC宿主機作為客戶端,以MC9328MXl的開發(fā)板作為服務(wù)器實現(xiàn)通信。先由PC機將客戶機程序(server)編譯好后,通過串口寫入開發(fā)板,然后將開發(fā)板與PC機通過以太網(wǎng)口建立連接。
Socket(套接字)是通過標(biāo)準(zhǔn)UNIX文件描述符和其他程序通訊的一個方法,其實質(zhì)是提供了進程通信的端點,可以看作是一種特殊的管道。通過Sock-et編程可以實現(xiàn)網(wǎng)絡(luò)通信。一個完整的套接字有一個相關(guān)的描述:協(xié)議、本地地址、本地端口、遠(yuǎn)程地址、遠(yuǎn)程端口。
通用套接口地址結(jié)構(gòu)struct sockaddr的定義如下:
套接字操作函數(shù)主要有:
(1)創(chuàng)建一個Sockets
sockfd=socket (family,type,protocol)
其中由地址類(family)參數(shù)指定該Socket使用的地址類。由類型(type)參數(shù)規(guī)定所請求的通信類型。協(xié)議(protocol)參數(shù)一般為零,使得默認(rèn)的協(xié)議將自動被選取。
(2)連接本地地址
本函數(shù)的主要功能是將一個規(guī)定的地址與一個Sockets結(jié)合,一個服務(wù)進程要使用如下函數(shù):bind(sockfd,address,addrlen)其中,sockfd參數(shù)是由socket()調(diào)用返回的sockets描述符。address指向一個地址結(jié)構(gòu),addrlen參數(shù)規(guī)定了地址的字節(jié)長度。
(3)客戶進程連接到服務(wù)進程
用此函數(shù)實現(xiàn)客戶進程對服務(wù)進程連接的初始化。此系統(tǒng)調(diào)用是:
connect(sockfd,address,addrlen)
其中,sockfd是本地Sockets的Sockets描述符。address規(guī)定目的機上服務(wù)進程正在使用的地址,addrlen規(guī)定了地址的字節(jié)長度。
當(dāng)connect()函數(shù)被調(diào)用時,如果客戶的Sockets還沒有結(jié)合到一個本地地址,則系統(tǒng)自動選擇一個本地地址和一個適當(dāng)?shù)亩丝谔枺⑶野阉鼈兒驮摽蛻舻腟ockets相結(jié)合。
(4)網(wǎng)絡(luò)監(jiān)聽
int listen(int sockfd,int backlog);
sockfd是Socket系統(tǒng)調(diào)用返回的Socket描述符;backlog指定在請求隊列中允許的最大請求數(shù),進入的連接請求將在隊列中等待accept ()(參考下文)。backlog對隊列中等待服務(wù)的請求的數(shù)目進行了限制,大多數(shù)系統(tǒng)缺省值為20。如果一個服務(wù)請求到來時,輸入隊列已滿,該Socket將拒絕連接請求,客戶將收到一個出錯信息。當(dāng)出現(xiàn)錯誤時listen函數(shù)返回-l,并置相應(yīng)的errno錯誤碼。
(5)接收請求函數(shù)
accept()函數(shù)讓服務(wù)器接收客戶的連接請求。在建立好輸入隊列后,服務(wù)器就調(diào)用accept函數(shù),然后睡眠并等待客戶的連接請求。
int accept(int sockfd,void*addr,int*addrlen);
sockfd是被監(jiān)聽的Socket描述符,addr通常是一個指向sockaddr_in變量的指針,該變量用來存放提出連接請求服務(wù)的主機的信息;addrlen通常為一個指向值為sizeof(struct sockaddr_in)的整型指針變量。
(6)數(shù)據(jù)傳輸
Send()和Recv()這兩個函數(shù)應(yīng)用于面向連接的Socket上進行數(shù)據(jù)傳輸。
Send()函數(shù)原型為:int send(int sockfd,const void*msg,int len,int flags);sockfd是用來傳輸數(shù)據(jù)的socket描述符;msg是一個指向要發(fā)送數(shù)據(jù)的指針;len是以字節(jié)為單位的數(shù)據(jù)長度;flags一般情況下置為0。
Recv ()函數(shù)原型為:int Recv(int sockfd,void*buf int len,unsigned int flags);sockfd是接受數(shù)據(jù)的Socket描述符;buf是存放接收數(shù)據(jù)的緩沖區(qū);len是緩沖的長度。flags也被置為O。Recv()返回實際上接收的字節(jié)數(shù),當(dāng)出現(xiàn)錯誤時,返回-1并置相應(yīng)的errno值。
本部分設(shè)計的目的是通過分析Socket的編程方法,編寫一個服務(wù)器程序server,用arm-linux-gcc編譯后運行在ARM開發(fā)板上,一個客戶端程序client用gcc編譯后在PC上運行。
總體編程模型即客戶機與服務(wù)器的通信過程見圖4。
4.1 服務(wù)器端
(1)初始化
4.2 客戶機端
(1)通過服務(wù)器域名獲得服務(wù)器的IP地址
(2)創(chuàng)建一個Socket(實現(xiàn)方法與服務(wù)器端相同)
(3)與服務(wù)器建立連接
這樣,給ARM開發(fā)板CS8900A網(wǎng)卡分配地址,并且編譯server和client程序后,可以將開發(fā)板用作服務(wù)器,PC用作客戶端,實現(xiàn)兩者的通信。
5 結(jié)束語
本文設(shè)計開發(fā)了基于MC9328MXl的以太網(wǎng)通信系統(tǒng),并利用嵌入式linux操作系統(tǒng)強大的網(wǎng)絡(luò)功能實現(xiàn)了Socket通信。文中的客戶端應(yīng)用程序已經(jīng)在基于ARM9TDMI核的MC9328MXl處理器的嵌入式開發(fā)平臺上成功運行,應(yīng)用宿主PC機的服務(wù)器端應(yīng)用程序成功實現(xiàn)了Socket通信。當(dāng)然,也可以把目標(biāo)硬件開發(fā)平臺當(dāng)作服務(wù)器端,而把宿主PC機當(dāng)作客戶端來進行雙向文件傳輸。
上一篇:基于ARM44B0x的信號發(fā)射機控制器設(shè)計與實現(xiàn)
下一篇:最小化ARM Cortex-M CPU功耗的方法
推薦閱讀
史海拾趣
在快速發(fā)展的同時,Altmustech始終不忘履行社會責(zé)任。公司積極參與公益事業(yè),支持教育、環(huán)保等領(lǐng)域的發(fā)展。此外,公司還注重環(huán)境保護和可持續(xù)發(fā)展,致力于研發(fā)更加環(huán)保、節(jié)能的產(chǎn)品和解決方案。這些舉措不僅提升了公司的社會形象,也為企業(yè)的長遠(yuǎn)發(fā)展奠定了良好的社會基礎(chǔ)。
以上五個故事分別從不同角度展現(xiàn)了Altmustech公司在電子行業(yè)中的發(fā)展歷程和成就。這些故事旨在客觀描述事實,未加入任何主觀評價或情感色彩。
為了進一步提升競爭力,Blue Sky Research開始尋求產(chǎn)業(yè)鏈整合的機會。公司與上下游企業(yè)建立緊密的合作關(guān)系,共同推動激光技術(shù)產(chǎn)業(yè)的發(fā)展。通過整合產(chǎn)業(yè)鏈資源,Blue Sky Research實現(xiàn)了從原材料采購到產(chǎn)品銷售的全流程控制,提高了生產(chǎn)效率和產(chǎn)品質(zhì)量。同時,公司還積極參與行業(yè)標(biāo)準(zhǔn)的制定和推廣,推動整個行業(yè)的健康發(fā)展。
隨著國內(nèi)市場的飽和,巨盛電子(Chesen)開始尋求國際化發(fā)展。公司制定了一系列國際化戰(zhàn)略,包括拓展海外市場、建立海外生產(chǎn)基地、與國際品牌合作等。通過這些努力,巨盛電子成功進入了歐美、東南亞等市場,實現(xiàn)了品牌的全球化布局。同時,公司還積極與國際品牌合作,共同開發(fā)新產(chǎn)品,提高了品牌知名度和市場份額。
啟英泰倫(Chiplntelli)公司成立于2015年,專注于人工智能語音芯片及配套應(yīng)用解決方案的研發(fā)。在公司創(chuàng)立初期,團隊面臨了眾多技術(shù)挑戰(zhàn)和市場競爭。然而,他們憑借對技術(shù)的深刻理解和不懈追求,成功推出了第一代深度神經(jīng)網(wǎng)絡(luò)語音AI芯片CI1006,這款芯片在行業(yè)內(nèi)被認(rèn)定為首創(chuàng)。這一重要里程碑為啟英泰倫的發(fā)展奠定了堅實的基礎(chǔ),也標(biāo)志著公司在人工智能語音芯片領(lǐng)域的正式起步。
隨著新能源汽車市場的快速發(fā)展,世紀(jì)金光敏銳地捕捉到了這一領(lǐng)域的巨大潛力。公司迅速組建專項研發(fā)團隊,基于碳化硅技術(shù)開展新能源汽車電機驅(qū)動系統(tǒng)的研發(fā)工作。經(jīng)過不懈努力,世紀(jì)金光成功開發(fā)出基于碳化硅技術(shù)的新能源汽車電機驅(qū)動系統(tǒng),并在技術(shù)上取得了重要進展。這一成果不僅提升了新能源汽車的性能和效率,也為公司打開了新的市場空間。
CDIL采用無晶圓廠模式生產(chǎn)分立半導(dǎo)體器件,專注于功率半導(dǎo)體和高可靠性組件的研發(fā)與生產(chǎn)。這一模式使CDIL能夠更加靈活地應(yīng)對市場變化,降低生產(chǎn)成本,提高產(chǎn)品競爭力。同時,公司還采用自己的封裝技術(shù),確保產(chǎn)品能夠滿足太空應(yīng)用等嚴(yán)苛環(huán)境的嚴(yán)格標(biāo)準(zhǔn)。
DS1820測溫原理如圖3所示。圖中低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號送給計數(shù)器1。高溫度系數(shù)晶振隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號作為計數(shù)器2的脈沖輸入。計數(shù)器1和溫度寄存器被預(yù)置在-55℃所對應(yīng)的一個基 ...… 查看全部問答∨ |
|
請教熟悉ARM平臺下藍(lán)牙開發(fā)的朋友: 最近將bluez移植到了ARM開發(fā)板上,現(xiàn)在要實現(xiàn)手機和帶USB藍(lán)牙適配器的開發(fā)板之間的通信,由于小弟沒有接觸過linux下的應(yīng)用程序開發(fā),想請教下具體的開發(fā)流程,比如如何寫通信的程序,如何將編寫 ...… 查看全部問答∨ |
|
固件庫3.5 完全一模一樣的程序 提示這句TIM_ICInitStructure沒定義 這樣的,最近在配置一個PWM輸入捕獲程序,一直不能通過,說是TIM_ICInitStructure這個沒定義,可是我完全是按照固件庫里的來寫的 怎么會這樣呢? 求教!… 查看全部問答∨ |
|
msp430頭文件structure.h中一些變量前面加點是什么意思啊? const struct Element down = { .inputPxselRegister = (uint8_t *)&P1SEL, .inputPxsel2Register = (uin ...… 查看全部問答∨ |
小伙伴們年底啦,該干什么呢,是不是該把資料整理整理呢 年底啦,該是匯報情況的時候啦,誰先上傳資料呢,嘿嘿,肯定是樓主我啦,2樓見… 查看全部問答∨ |
畢業(yè)設(shè)計做的LTE下行鏈路信道估計算法研究 本人表示,確實不怎么會。有什么簡單一點求自相關(guān)矩陣的方法嗎以下是代碼,是用訓(xùn)練序列做的,不知道答辯的時候老師會怎么說 真心跪求了 clear all; %Generation of a naive training sequence.. 一個本地訓(xùn)練序列的生成 %Assuming ...… 查看全部問答∨ |
當(dāng)設(shè)計時候,可能你過于苛刻,這個時候,你所給的參數(shù),是不嗯那個實現(xiàn)的,于是就有了下面的結(jié)果 … 查看全部問答∨ |
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 嵌入式學(xué)習(xí)篇丨迅為4412開發(fā)板Android4.4系統(tǒng)編譯
- Linux系統(tǒng)編程篇丨迅為IMX6ULL-對應(yīng)視頻講解
- 嵌入式學(xué)習(xí)丨4412開發(fā)板-uboot源碼-匯編-源碼分析(一)嵌入式學(xué)習(xí)丨4412開發(fā)板-uboot源碼-匯
- 迅為IMX6ULL開發(fā)板-主頻和時鐘配置例程(二)
- 迅為IMX6ULL開發(fā)板-主頻和時鐘配置例程
- 迅為IMX6ULL開發(fā)板安裝VMware Tool工具
- i.MX6ULL終結(jié)者Debian文件系統(tǒng)的構(gòu)建i.MX6ULL 移植Debian文件系統(tǒng)
- 迅為i.MX6ULL開發(fā)板按鍵例程編譯及運行
- 迅為-i.MX6開發(fā)板手冊更新-非設(shè)備樹uboot-修改默認(rèn)環(huán)境變量
- 北京、上海、深圳自動駕駛領(lǐng)跑全國!
- 基于智能網(wǎng)聯(lián)汽車質(zhì)量與安全要求的全融合研發(fā)體系研究
- 全球首個人形機器人半馬將舉行,機器人在北京街頭開啟首次路測
- 高標(biāo)準(zhǔn)提升智能網(wǎng)聯(lián)汽車安全 SGS為杰發(fā)科技頒發(fā)ISO/SAE 21434認(rèn)證證書
- 元戎啟行聯(lián)合高通基于驍龍智駕平臺發(fā)布高階智駕解決方案
- 動力電池迎“新大考”① | 超快充爆發(fā)元年,安全標(biāo)準(zhǔn)何時升級
- 五菱發(fā)布神煉電池4.0,全球首款6C高錳電池M亮相
- 各車企智駕技術(shù)方案盤點
- 更強、更可靠的ESD方案
- 25億美元!英飛凌收購Marvell汽車以太網(wǎng)業(yè)務(wù)
- 英特爾領(lǐng)先技術(shù)助力工業(yè)企業(yè)邁入智能制造新時代
- 投18億新臺幣擴產(chǎn)!光學(xué)鏡頭廠玉晶光分食大立光
- 比特幣暴漲超20%突破5000大關(guān) 區(qū)塊鏈板塊騰飛
- 蘋果iPhone X要在印度富士康生產(chǎn)
- 無償開放混合動力技術(shù)專利,豐田真有那么傻?
- 創(chuàng)新技術(shù)+市場驅(qū)動,廈門云天半導(dǎo)體完成超過億元A輪融資
- Imagination用于數(shù)據(jù)渲染的AI芯片揭秘
- 5G 基礎(chǔ)設(shè)施需芯片!
- 加速拓展創(chuàng)新業(yè)務(wù),紫光國微前三季度凈利潤同比增88%
- iPhone12支持北斗背后:芯片廠商“三國殺”