ARM處理器?的定義和起源
?ARM處理器?是一種基于精簡(jiǎn)指令集計(jì)算機(jī)(RISC)架構(gòu)的中央處理器(CPU)系列。ARM全稱為Advanced RISC Machine,意為“高級(jí)精簡(jiǎn)指令集機(jī)器”。?
ARM處理器由英國的ARM公司設(shè)計(jì),最初由Acorn計(jì)算機(jī)有限公司開發(fā),旨在解決成本高和生產(chǎn)效率低的問題。1985年,Acorn推出了世界上第一款A(yù)RM處理器——ARM1,標(biāo)志著ARM架構(gòu)的誕生。
特點(diǎn)和應(yīng)用領(lǐng)域
ARM處理器的主要特點(diǎn)包括低功耗、高性能和靈活性。由于其指令集的精簡(jiǎn),ARM處理器在同等性能下功耗遠(yuǎn)低于基于復(fù)雜指令集(CISC)架構(gòu)的處理器,特別適用于移動(dòng)設(shè)備和物聯(lián)網(wǎng)設(shè)備。此外,ARM處理器采用流水線執(zhí)行和分支預(yù)測(cè)等技術(shù),提高了運(yùn)行效率,并且提供了廣泛的可擴(kuò)展性選項(xiàng),從低功耗微控制器到高性能處理器。
與其他處理器的比較
與x86架構(gòu)相比,ARM架構(gòu)在能耗和性能上有顯著差異。x86是一種復(fù)雜指令集計(jì)算機(jī)(CISC)架構(gòu),而ARM則是RISC架構(gòu),通過精簡(jiǎn)指令集設(shè)計(jì)實(shí)現(xiàn)低功耗。盡管x86處理器在原始計(jì)算吞吐量上可能優(yōu)于ARM,但在某些特定用例中,ARM處理器的性能可能超過x86處理器。
ARM處理器是英國Acorn有限公司設(shè)計(jì)的低功耗成本的第一款RISC微處理器。全稱為Advanced RISC Machine。ARM處理器本身是32位設(shè)計(jì),但也配備16位指令集,一般來講比等價(jià)32位代碼節(jié)省達(dá)35%,卻能保留32位系統(tǒng)的所有優(yōu)勢(shì)。ARM的Jazelle技術(shù)使Java加速得到比基于軟件的Java虛擬機(jī)(JVM)高得多的性能,和同等的非Java加速核相比功耗降低80%。CPU功能上增加DSP指令集提供增強(qiáng)的16位和32位算術(shù)運(yùn)算能力,提高了性能和靈活性。ARM還提供兩個(gè)前沿特性來輔助帶深嵌入處理器的高集成SoC器件的調(diào)試,它們是嵌入式ICE-RT邏輯和嵌入式跟蹤宏核(ETMS)系列。
隨著物聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,許多嵌入式系統(tǒng)具備了聯(lián)網(wǎng)功能,為方便系統(tǒng)開發(fā)者集中監(jiān)控和管理遠(yuǎn)程嵌入式系統(tǒng),同時(shí)方便其他PC網(wǎng)上用戶或智能手機(jī)App能夠獲取嵌入式系統(tǒng)數(shù)據(jù),實(shí)現(xiàn)遠(yuǎn)程讀數(shù)與控制[13],本文提出了以STM32F103RC處理器為核心,結(jié)合WIZnet公司的W5500以太網(wǎng)接口芯片,利用新浪微博的二次開發(fā)接口[4],設(shè)計(jì)了嵌入式新浪微博客戶端,從而實(shí)現(xiàn)社交網(wǎng)絡(luò)與嵌入式硬件系統(tǒng)的互動(dòng),可以把人與人的關(guān)系拓展到人與物的關(guān)系、物與物的關(guān)系。本系統(tǒng)結(jié)構(gòu)如圖1所示。

1 系統(tǒng)主要硬件介紹
1.1 STM32F103RC微控制器
STM32F103RC是基于CortexM3內(nèi)核的32位ARM處理器芯片,其工作頻率可達(dá)72 MHz;內(nèi)置高速大容量存儲(chǔ)器(512 KB Flash、64 KB RAM);豐富的增強(qiáng)I/O端口和外設(shè)資源,包括2個(gè)12通道DMA控制器、5路USART、3路SPI以及12位的ADC、DAC、FSMC、SDIO、USB、CAN總線、I2C總線等;具有標(biāo)準(zhǔn)和先進(jìn)的通信接口;提供可編程電壓檢測(cè)器(PVD),保證整個(gè)系統(tǒng)的穩(wěn)定工作,具備較強(qiáng)的抗干擾能力。STM32F103RC廣泛應(yīng)用于醫(yī)療、手持終端、智能儀器儀表、計(jì)算機(jī)測(cè)控等領(lǐng)域[5]。
1.2 W5500以太網(wǎng)控制器
W5500是一款全硬件TCP/IP嵌入式以太網(wǎng)控制器,使用硬件邏輯門電路實(shí)現(xiàn)TCP/IP協(xié)議棧的傳輸層及網(wǎng)絡(luò)層(包括TCP、UDP、ICMP、IPv4、ARP、IGMP、PPPoE等協(xié)議),并集成了數(shù)據(jù)鏈路層、物理層,以及32 KB片上RAM作為數(shù)據(jù)收發(fā)緩存器。從而把網(wǎng)絡(luò)數(shù)據(jù)流量的處理工作全部轉(zhuǎn)移到W5500集成硬件中進(jìn)行,使得嵌入式主控芯片MCU只需承擔(dān)TCP/IP應(yīng)用層控制信息的處理任務(wù),從而大幅減少了上位機(jī)對(duì)于數(shù)據(jù)復(fù)制、協(xié)議處理和中斷處理等方面的工作量,提升了系統(tǒng)利用率及可靠性。
在操作過程中,可以把W5500作為MCU的一個(gè)外設(shè)RAM來使用,操作簡(jiǎn)單方便。另外,W5500提供網(wǎng)絡(luò)喚醒及省電模式供客戶選用,從而降低系統(tǒng)功耗;還提供了SPI串行接口,能夠很容易實(shí)現(xiàn)與外設(shè)MCU的整合,為嵌入式系統(tǒng)提供了簡(jiǎn)易的互聯(lián)網(wǎng)接入方案。圖2為W5500硬件系統(tǒng)結(jié)構(gòu)[6]。

2 嵌入式微博客戶端硬件評(píng)估板
圖3為嵌入式微博客戶端硬件評(píng)估板,其系統(tǒng)結(jié)構(gòu)和主要電路原理圖分別見圖4~圖6,該系統(tǒng)主要包括以下模塊:
① USB電源、RS232通信模塊;
② RESET復(fù)位模塊,復(fù)位MCU;
③ AT24C16 EEPROM存儲(chǔ)模塊,存儲(chǔ)系統(tǒng)參數(shù)等信息;
④ W5500模塊,實(shí)現(xiàn)以太網(wǎng)接口功能;
⑤ STM32F103RC ARM處理器;
⑥ RJ45以太網(wǎng)硬件接口模塊;
⑦ JTAG程序下載接口模塊。


3 嵌入式微博客戶端軟件實(shí)現(xiàn)
3.1 ARM CPU軟件開發(fā)環(huán)境構(gòu)建
為了方便ARM Cortex系列CPU的開發(fā),本文采用了IAR Embedded Workbench for ARM, 32K Kick start Edition,它是一個(gè)針對(duì)ARM 處理器的集成開發(fā)環(huán)境,包含編輯器、項(xiàng)目管理器、C/C++編譯器和ARM 匯編器等。
3.2 W5500的配置與開發(fā)
W5500可以配置為TCP、UDP、IPRAW、PPPoE模式進(jìn)行數(shù)據(jù)的發(fā)送或接收,在本文中只介紹TCP和新浪微博服務(wù)器的通信流程。由于W5500已經(jīng)固化了TCP/IP協(xié)議棧,因此只需創(chuàng)建Socket接口即可實(shí)現(xiàn)網(wǎng)絡(luò)通信,從而大幅簡(jiǎn)化了軟件設(shè)計(jì)流程。W5500支持服務(wù)器和客戶端模式,在本系統(tǒng)中,W5500扮演了客戶端模式,其工作原理略——編者注。
3.3 嵌入式客戶端代碼
在STM32F103RC處理器中,嵌入式新浪微博客戶端與微博服務(wù)器的數(shù)據(jù)通信C語言示例代碼如下:
#include "w5500/socket.h"
#include "w5500/w5500.h"
#include
#include
#define SOCK_WEIBO5
//給新浪微博選一個(gè)Socket,可以選0~7
#define WEIBO_SERVER"61.109.255.136"http://新浪微博服務(wù)器IP地址
#define HTTP_PATH "/wiznet/"http://HTTP路徑
#define WEIBO_ID"xxxx@xxxx.xxx"http://新浪微博 ID,按實(shí)際的ID輸入
#define WEIBO_PWD"123456"http://新浪微博登錄密碼,按實(shí)際的密碼輸入
char tmp_buf[512]={0x00,};//定義臨時(shí)緩沖區(qū)用于存儲(chǔ)微博內(nèi)容和HTTP頭
unsigned char post_weibo(char* weibo){
unsigned char weibo_server_ip[4] = {61,109,255,136};//微博服務(wù)器IP地址
static unsigned int any_local_port = 1000;
//TCP Socket 本地端口號(hào),0~65 535中任取
char post_data[385]={0x00,};
unsigned char ret=0;
unsigned int len=0;
if (socket(SOCK_WEIBO,Sn_MR_TCP,any_local_port++,0)!=1){//TCP socket初始化
printf("Socket initialization failed. ");
return 0;
}
else{
ret=connect(SOCK_WEIBO,weibo_server_ip,80); //連接到服務(wù)器, 默認(rèn)TCP 端口為80
if(ret!=1){
printf("Connect Weibo server failed. ");
return 0;
}
else{
while(getSn_SR(SOCK_WEIBO)!=SOCK_ESTABLISHED);//等待TCP連接
printf("Connected with Weibo server. ");
sprintf(post_data,"id=%s&pw=%s&cmd=update&status=%s",(char*)WEIBO_ID,(char*)WEIBO_PWD,weibo);
sprintf(tmp_buf,"POST %s HTTP/1.1 Host: %s UserAgent: w5500 ContentType: application/xwwwformurlencoded;charset=gb2312 ContentLength: %d %s",(char*)HTTP_PATH,(char*)WEIBO_SERVER,strlen(post_data),post_data);
len=send(SOCK_WEIBO,(unsigned char*)tmp_buf,strlen(tmp_buf));
//把數(shù)據(jù)發(fā)送到新浪微博
while(1){
len=getSn_RX_RSR(SOCK_WEIBO);
if(len>0){
memset(tmp_buf,0x00,512);
len=recv(SOCK_WEIBO, (unsigned char*)tmp_buf, len);
//接收從微博服務(wù)器返回的結(jié)果
char* p=strstr(tmp_buf,(char*)" ")+4;
//獲得沒有http header 的http payload 的返回值
printf("%s ",p);
disconnect(SOCK_WEIBO);//與微博服務(wù)器斷開
close(SOCK_WEIBO);//關(guān)閉socket
return 1; //成功后返回1
}
}
}
}
}


4 嵌入式微博客戶端測(cè)試結(jié)果
在本系統(tǒng)測(cè)試案例中,STM32F103RC使用了SHT11數(shù)字溫濕度傳感器和BH1750光照度傳感器對(duì)客廳的溫濕度與光線亮度進(jìn)行測(cè)量采集,并通過W5500把數(shù)據(jù)發(fā)送到新浪微博。
例如在2014年5月11日15:50,客廳的溫度是25.5 ℃、濕度46%、光線亮度為431Lux,其測(cè)試結(jié)果略——編者注。
多次測(cè)試表明,以W5500為核心的嵌入式新浪微博客戶端具有功耗低、實(shí)時(shí)性好、穩(wěn)定可靠等特點(diǎn)。