《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 成功的嵌入式設(shè)計(jì)需要指令集之外的諸多因素
成功的嵌入式設(shè)計(jì)需要指令集之外的諸多因素
摘要: 當(dāng)談到32 位微控制器時(shí),基于ARM 的產(chǎn)品已經(jīng)占據(jù)重要地位。那么,這會(huì)是故事的全部嗎?不見得,行業(yè)內(nèi)最重要的公司之一,Microchip Technology,正全力推動(dòng)其基于MIPS 架構(gòu)的芯片。他們最新推出的產(chǎn)品在提醒我們,成功的嵌入式設(shè)計(jì)需要指令集之外的諸多因素。
關(guān)鍵詞: 軟件 嵌入式 指令集 RISC MIPS
Abstract:
Key words :

 當(dāng)談到32 位微控制器時(shí),基于ARM 的產(chǎn)品已經(jīng)占據(jù)重要地位。那么,這會(huì)是故事的全部嗎?不見得,行業(yè)內(nèi)最重要的公司之一,Microchip Technology,正全力推動(dòng)其基于MIPS 架構(gòu)的芯片。他們最新推出的產(chǎn)品在提醒我們,成功的嵌入式設(shè)計(jì)需要指令集之外的諸多因素。

在計(jì)算機(jī)歷史上,從實(shí)驗(yàn)室走出過多少種不同的指令集架構(gòu)?可能曾經(jīng)有數(shù)百種架構(gòu)取得過一些商業(yè)上的成功; 如果算上諸多博士論文中出現(xiàn)過的,數(shù)目可能會(huì)多達(dá)幾千種。拿流行時(shí)尚做比喻,計(jì)算機(jī)體系結(jié)構(gòu)發(fā)展就好似女生裙擺的高度一般,經(jīng)常來回變化。

曾經(jīng)有一段時(shí)間它非常要緊—— 比如在匯編語(yǔ)言編程的時(shí)期。至于兼容性,至少在表面上它依舊是件重要的事情,特別是在電腦或視頻游戲方面(例如,有一些需要執(zhí)行以前的二進(jìn)制文件)。但實(shí)際上,嚴(yán)格的目標(biāo)代碼兼容性對(duì)多數(shù)嵌入式設(shè)計(jì)來說已經(jīng)不再是一個(gè)大問題。更多的問題是關(guān)于工具鏈的兼容性和代碼模塊的可用性,指令集本身已經(jīng)不是問題之一。

隨著芯片不斷地集成系統(tǒng)功能,設(shè)計(jì)人員需要的是一個(gè)擁有全部所需存儲(chǔ)器、外設(shè)和膠合邏輯的芯片。并且這個(gè)芯片必須省電、有良好的工具和支持,以及合適的價(jià)格。

這并不是說在特定的應(yīng)用當(dāng)中,體系結(jié)構(gòu)并沒有優(yōu)劣之分。事實(shí)上,這個(gè)問題很有趣,看看那些當(dāng)初為“計(jì)算機(jī)”設(shè)計(jì)的架構(gòu)—— 如 ARM 和MIPS,不斷下沉,以更好地適應(yīng)嵌入式“控制器”應(yīng)用的需求。這些“計(jì)算機(jī)”架構(gòu)最后都終于認(rèn)識(shí)到要在嵌入式應(yīng)用里面解決諸如代碼密度、低功耗、快速并確定的中斷響應(yīng)等問題。

認(rèn)識(shí) PIC32

在 MCU 領(lǐng)域的競(jìng)爭(zhēng)里,無(wú)疑MIPS 是在追趕ARM。但是,擁有像Microchip 這樣的重量級(jí)選手支持,差距正在縮小。看看新的PIC32 5XX/6XX/7xx 系列產(chǎn)品,高度集成了以太網(wǎng)、USB 和CAN 應(yīng)用。

我在以前的文章中(“MIPS for the Masses”,Circuit cellar 216 期,2008)介紹過PIC32的內(nèi)核。擁有5 級(jí)流水線,性能相對(duì)較高(比如與ARM Cortex - M3 相比)。不過,這只是處理器內(nèi)核級(jí)別的性能差異。比如Microchip PIC32 的性能為1.5 DMIPS / MHz,而Cortex - M3是1.25 DMIPS / MHz 的。在實(shí)際中,32 位微控制器的flash 存儲(chǔ)器訪問時(shí)間是性能瓶頸。如以80MHz 運(yùn)行的PIC32 可能需要2 個(gè)等待周期。通常采用寬總線(128 位)、高速緩存和預(yù)取等技術(shù)來減輕flash 訪問的瓶頸問題。

或者,可以使用片內(nèi)的RAM來達(dá)到0 等待周期。’5xx 系列包含64KB 的RAM,’6xx’和7xx 系列中的部分型號(hào)有多達(dá)128KB 的RAM。不過要記住,代碼和數(shù)據(jù)訪問之間的爭(zhēng)搶可能導(dǎo)致一些延遲。此外,256KB 或512KB 的flash 空間足夠用來放置你的代碼(加上額外12 KB 的啟動(dòng)代碼空間)。

外設(shè)方面,這些新產(chǎn)品提供了完整的I/O(見圖1)。 ‘5xx/6xx/7xx 編號(hào)代表了大的接口功能:USB、CAN 和以太網(wǎng)。‘5xx 系列包含一個(gè)USB 2.0 和一個(gè)CAN(2.0b)模塊;‘6xx系列包含USB 模塊與一個(gè)10/100 以太網(wǎng)MAC。而‘7xx 系列集成了所有這些,包含USB、以太網(wǎng)和兩個(gè)CAN 模塊。

普通 I/O 方面,這些產(chǎn)品遵循了不同應(yīng)用需求的趨勢(shì)。我們看到5 個(gè)16 位計(jì)數(shù)器/定時(shí)器,其中任何兩對(duì)可以組合成為32 位單元。由于封裝尺寸(有64 腳和100 腳可選)和引腳復(fù)用的限制,你能得到最多六個(gè)UART、四個(gè)SPI 以及五個(gè)I2C 接口。在模擬方面,有一個(gè)16通道多路復(fù)用器連接一個(gè)10 位1 MSPS 的ADC 和兩個(gè)模擬比較器。除了這些MCU 能力,另外還有8/16 位數(shù)據(jù)總線和16 位地址總線擴(kuò)展功能,外加兩個(gè)片選。所有的數(shù)據(jù)流可以通過8個(gè)通用DMA通道控制,輔以4個(gè)專用DMA通道(''5XX 和''6XX 系列)或8個(gè)專用DMA通道(''7XX 系列)。

源自上世紀(jì)80 年代的MIPS 是RISC 方面“精簡(jiǎn)”特性的杰出代表。當(dāng)響應(yīng)中斷時(shí),它們可以要對(duì)PC 和狀態(tài)寄存器壓棧,不然的話就轉(zhuǎn)由軟件去處理。對(duì)這種極端簡(jiǎn)約存在一些爭(zhēng)議,可能少了一些有用的東西。考慮到這一點(diǎn),PIC32 系列包括一個(gè)全功能優(yōu)先級(jí)/向量可編程的中斷控制器;以及一組替代寄存器組用于快速中斷響應(yīng)和上下文切換。

另外,不要忽視那些可能導(dǎo)致嚴(yán)重預(yù)算問題的膠合邏輯,如看門狗定時(shí)器、低電壓檢測(cè)、電壓整流器、主時(shí)鐘/外設(shè)時(shí)鐘/實(shí)時(shí)時(shí)鐘等。這些功能的集成,使PIC32 系列成為真正適用于“控制”應(yīng)用的芯片,有別于“計(jì)算機(jī)”芯片。

入門

跟以前一樣,Microchip 的芯片評(píng)估很容易,而且便宜。PIC32 以太網(wǎng)入門套件(見照片1)定價(jià)$72,提供一切你需要的部件。雖然名字為“以太網(wǎng)”入門套件,該套件配備了高端的''795 型號(hào)MCU,同時(shí)支持USB 功能。

該套件還包括配有一個(gè)“輕量級(jí)”GCC 編譯器的Microchip MPLAB IDE。文檔中關(guān)于“輕量級(jí)”編譯器的說明有點(diǎn)矛盾。“輕量級(jí)”版本編譯器暗示不支持先進(jìn)的代碼優(yōu)化,但是我拿到的版本顯然不是這樣,在下一節(jié)你將看到這一點(diǎn)。或許實(shí)際上該工具包是所謂的“評(píng)估”版本,支持所有功能,但只有60 天有效期。

PIC32 采用的架構(gòu)來源于“計(jì)算”,因此它非常適合管理面向PC 的以太網(wǎng)和USB 接口。讓我們看一些演示程序,你就會(huì)明白我的意思。

多年來Microchip 一直在為其小型的PIC 芯片提供部分網(wǎng)絡(luò)軟件棧,PIC32 做得更多,它提供了全功能、免費(fèi)的BSD TCP/IP 網(wǎng)絡(luò)堆棧。包含所有的網(wǎng)絡(luò)服務(wù)、套接字等,以及這些常用的協(xié)議:DHCP、UDP、ICMP、ARR 等。''795 型芯片中有512KB 的片上flash,有充足的空間存儲(chǔ)一些漂亮的演示程序,讓我們?yōu)g覽一下入門電路板(見照片2)。

USB 支持不錯(cuò),。OTG功能允許一個(gè)設(shè)備在USB 主、從設(shè)備之間動(dòng)態(tài)切換。一個(gè)典型的應(yīng)用案例是打印機(jī),當(dāng)連接到PC 時(shí)它是一個(gè)從設(shè)備,而當(dāng)連接到相機(jī)時(shí)它成為主設(shè)備。現(xiàn)在所有的USB 芯片似乎都有OTG 了,不過我自己從沒有遇到過需要以這種方式切換的情況。

不管 OTG 是否真正有用,它使得PIC32 能在更多的傳統(tǒng)領(lǐng)域中得到應(yīng)用,無(wú)論是作為主設(shè)備或從設(shè)備。USB“嵌入式主設(shè)備”在使用中有一些限制,不像“標(biāo)準(zhǔn)主設(shè)備”如電腦,舉例來說PIC32 不提供VBUS 電源(100-500 mA),但是你可以在個(gè)人電腦的USB接口上找到這種電源——當(dāng)然這完全可以理解。另外,速度限制也需要注意,,作為從設(shè)備時(shí)能夠“全速”(12 Mbps),而作為主設(shè)備時(shí)只能提供“低速”(1.5 Mbps)。

這個(gè)套件包含了一些實(shí)用的演示。其中一個(gè)演示讓該板子成為一個(gè)標(biāo)準(zhǔn)人機(jī)接口設(shè)備(HID)——比如鼠標(biāo)。因?yàn)镠ID 驅(qū)動(dòng)已經(jīng)是標(biāo)準(zhǔn),你可以把它直接插入PC 使用。另外,你可以把這個(gè)套件配置成USB 主設(shè)備,從而利用PIC32 不斷完善的FAT 文件管理軟件庫(kù),有一些演示展示了如何訪問廣泛使用的USB 存儲(chǔ)器(見照片3)。

不過需要指出的是這個(gè)套件中沒有包含CAN 演示。因?yàn)槲也欢矝]有實(shí)驗(yàn)條件進(jìn)行有意義的CAN 測(cè)試,如果你需要該功能,你需要自己來評(píng)估和結(jié)論。

優(yōu)化的迷宮

結(jié)構(gòu)體系進(jìn)化的重要標(biāo)志之一,曾經(jīng)是編譯器的優(yōu)化。您可能還記得有些人把“RISC”縮寫調(diào)侃為“Relegate the Impossible Stuff to the Compiler”,即“把不可能完成的任務(wù)丟給編譯器”。然而,在調(diào)試時(shí),一個(gè)太過自我聰明的編譯器其問題也是顯而易見的。比如PIC32 的“C”編譯手冊(cè)有提到說,當(dāng)調(diào)試經(jīng)過優(yōu)化的代碼時(shí)“可能偶爾會(huì)碰到令人驚訝的結(jié)果。”

例如,有些變量和代碼會(huì)消失,如果編譯器認(rèn)為你其實(shí)并不需要它們。舉例說你聲明了一個(gè)變量,然后給它賦值一個(gè)常數(shù),接著在某個(gè)計(jì)算時(shí)調(diào)用了這個(gè)變量。不要為找不到那個(gè)變量和賦值語(yǔ)句而抓狂,編譯器只是比你更聰明一點(diǎn),它在計(jì)算中直接調(diào)用了常數(shù)。

當(dāng)你在一個(gè)條件分支指令處點(diǎn)擊了單步執(zhí)行,然后看到光標(biāo)移動(dòng)到了下一條指令處,這是否意味該條件分支的條件未被滿足呢?未必,請(qǐng)注意這是MIPS 架構(gòu)的一個(gè)特性,即分支指令的下一條指令總是會(huì)被執(zhí)行,當(dāng)編譯器找不到合適的指令時(shí)會(huì)填充一條NOP 指令。你必須再執(zhí)行一次單步操作,才能確認(rèn)分支條件是否被滿足(在這種情況下,你會(huì)看到光標(biāo)跳到分支目標(biāo)處)或不滿足(光標(biāo)跳轉(zhuǎn)到下一條順序指令)。更先進(jìn)的“代碼移動(dòng)”優(yōu)化能夠?qū)е赂嗟膬?yōu)化干預(yù)。請(qǐng)記住,有時(shí)指令可以被挪動(dòng)很遠(yuǎn)的距離,甚至超出你認(rèn)為應(yīng)在的循環(huán)之外。

不過,調(diào)試優(yōu)化過的代碼也是可能的,尤其是你喜歡頭腦風(fēng)暴的話(例如,在分支指令后跟一個(gè)分支指令會(huì)發(fā)生什么?)。通常缺省的編譯器優(yōu)化只生成簡(jiǎn)單的代碼,會(huì)完整保留你的意圖即使可能它效率底下。當(dāng)調(diào)試時(shí)在斷點(diǎn)觸發(fā)處,,你可以放心地修改某個(gè)變量的值,而不用擔(dān)心編譯器會(huì)搗什么鬼(比如雖然你從源代碼中看不到,但一些賦值語(yǔ)句已經(jīng)被挪動(dòng)并執(zhí)行了)。

需要緊記的是,編譯器優(yōu)化設(shè)置(見照片4)能夠產(chǎn)生很大影響。我試著跑過一個(gè)USB主機(jī)演示程序,采用了如表1 所示的不同編譯器設(shè)置,你可以看到,不同設(shè)置下(速度/大小取向、循環(huán)展開,采取MIPS-16 的16 位代碼優(yōu)化選項(xiàng))生成的代碼大小相差能夠高達(dá)2倍。


保持簡(jiǎn)潔

PIC32 在精簡(jiǎn)MIPS 架構(gòu)使其服務(wù)于嵌入式應(yīng)用方面做得很好。比如,全部的活動(dòng)功耗只有1mA/MHz 水平,從它提供的性能來看這是非常難得的。它們的批量?jī)r(jià)格也比較合理,特別考慮到那些完整的外設(shè)和存儲(chǔ)器配備。

然而競(jìng)爭(zhēng)也非常激烈,像Cortex - M3、瑞薩SH(現(xiàn)在叫RX)、愛特梅爾的AVR32 以及飛思卡爾的ColdFire 等。這些競(jìng)爭(zhēng)對(duì)手在行業(yè)里已經(jīng)有很長(zhǎng)的時(shí)間,它們的產(chǎn)品也具有很廣的覆蓋面,在高端產(chǎn)品上能提供跟PIC32類似的集成度和性能,同時(shí)還有許多入門級(jí)的簡(jiǎn)單產(chǎn)品。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国产精品久久久久影院亚瑟| 亚洲国产高清在线| 欧美成人蜜桃| 免费成人高清视频| 老巨人导航500精品| 久久久999| 久久久精品网| 久久久久国色av免费观看性色| 午夜一区不卡| 欧美一区二区三区免费在线看| 亚洲综合色自拍一区| 午夜精品999| 亚洲一线二线三线久久久| 亚洲天堂网站在线观看视频| 在线亚洲自拍| 亚洲欧美日韩久久精品| 欧美一区二区三区视频在线观看| 欧美亚洲免费在线| 欧美在线观看天堂一区二区三区| 久久国产婷婷国产香蕉| 久久久久久9999| 美女精品在线| 欧美片第一页| 国产精品久久久久久久久婷婷| 国产精品毛片高清在线完整版| 国产精品美女www爽爽爽| 国产精品美女久久| 国产伦精品一区二区三区视频黑人 | 一本不卡影院| 亚洲一区二区视频在线| 亚洲欧美日韩视频二区| 久久成人免费网| 91久久久久久久久| 亚洲网站在线看| 久久国产欧美日韩精品| 美女91精品| 欧美视频在线观看免费| 国产精品亚洲精品| 极品尤物av久久免费看| 亚洲日本理论电影| 亚洲性色视频| 亚洲第一页在线| 一区二区三区精品视频| 久久av红桃一区二区小说| 免费看成人av| 国产精品区一区二区三| 好看的日韩av电影| 亚洲乱码久久| 欧美一级在线亚洲天堂| 亚洲美女视频在线免费观看| 午夜精品福利在线观看| 免费在线欧美黄色| 欧美性色综合| 在线不卡中文字幕| 中文一区字幕| 最新成人av在线| 亚洲一区二区免费看| 亚洲国产精品福利| 亚洲综合三区| 女同一区二区| 国产精品美女xx| 亚洲国产精品精华液2区45| 亚洲一区二区三区高清| 亚洲人成网站777色婷婷| 午夜日韩福利| 欧美激情偷拍| 国产一区二区中文字幕免费看| 99国产精品一区| 久久国产视频网站| 亚洲伊人第一页| 欧美激情久久久久久| 国产一区二三区| 夜夜嗨av一区二区三区四季av| 久久精品国产久精国产思思| 亚洲伊人久久综合| 欧美成人在线免费视频| 国产又爽又黄的激情精品视频| 一本久久综合亚洲鲁鲁| 亚洲高清在线| 欧美有码视频| 欧美午夜一区| 亚洲精品一区二区三区福利| 久久精品国产成人| 亚洲欧美日韩一区| 欧美日韩一区二区三区| 亚洲国产成人av在线| 欧美一区二区三区的| 亚洲欧美在线一区二区| 欧美日韩亚洲一区二区三区在线观看 | 久久中文字幕导航| 国产日韩欧美在线视频观看| 中文国产成人精品久久一| 亚洲精品系列| 毛片一区二区三区| 韩国一区二区在线观看| 香蕉久久夜色精品国产使用方法| 亚洲一品av免费观看| 欧美另类在线播放| 亚洲国产精品成人久久综合一区| 亚洲高清在线观看| 鲁大师成人一区二区三区| 国产亚洲欧洲997久久综合| 亚洲综合色激情五月| 午夜精品久久99蜜桃的功能介绍| 欧美午夜精品久久久久免费视 | 亚洲一区二区三区四区视频| 欧美日韩国产成人在线免费 | 欧美一区二区视频在线| 欧美一区二区精品| 国产精品系列在线播放| 亚洲欧美久久久久一区二区三区| 亚洲一区在线播放| 国产精品久久久久久av福利软件| 国产精品99久久久久久久女警| 亚洲性感美女99在线| 欧美性生交xxxxx久久久| 在线午夜精品自拍| 亚洲欧美在线一区| 国产精品一级| 欧美一区二区在线免费播放| 久久久av毛片精品| 国内精品99| 亚洲黑丝在线| 欧美激情一区二区三区蜜桃视频| 亚洲日本免费| 亚洲午夜久久久久久久久电影院| 欧美三级网址| 亚洲一区国产| 欧美中文在线免费| 国内精品久久久久久久影视蜜臀| 亚洲国产导航| 欧美激情国产精品| av成人天堂| 欧美尤物一区| 樱桃成人精品视频在线播放| 亚洲精品久久久久中文字幕欢迎你| 欧美精品二区三区四区免费看视频| 亚洲乱码久久| 午夜日韩激情| 韩日欧美一区二区| 91久久精品美女高潮| 欧美日韩国产精品一卡| 亚洲性xxxx| 久久野战av| 亚洲人精品午夜| 亚洲欧美一区二区激情| 国产一区二区在线免费观看| 亚洲精品国产欧美| 欧美性猛交xxxx乱大交退制版| 欧美亚洲在线| 欧美大片免费看| 夜夜狂射影院欧美极品| 久久国产日本精品| 91久久精品国产91性色tv| 亚洲欧美国产77777| 极品av少妇一区二区| 一区二区三区视频在线| 国产农村妇女毛片精品久久莱园子| 亚洲国产欧美久久| 欧美视频中文一区二区三区在线观看| 亚洲欧美日韩成人| 欧美成人免费观看| 亚洲一区激情| 农村妇女精品| 亚洲一区二区三区精品在线观看| 可以免费看不卡的av网站| 99精品国产在热久久下载| 久久精品久久99精品久久| 亚洲精品国精品久久99热| 欧美在线免费视屏| 亚洲人午夜精品免费| 欧美在线网址| 亚洲日韩欧美视频一区| 久久国产精品亚洲77777| 日韩西西人体444www| 久久在线视频在线| 亚洲视频图片小说| 你懂的亚洲视频| 亚洲欧美日韩综合aⅴ视频| 欧美美女bb生活片| 欧美专区一区二区三区| 国产精品二区三区四区| 亚洲精品一级| 国产一区二区三区在线观看视频| 亚洲午夜女主播在线直播| 亚洲成人直播| 久久精品欧洲| 亚洲一二三区精品| 欧美经典一区二区| 久久精品三级| 国产日韩精品久久| 亚洲天天影视| 亚洲黄色视屏| 久久亚洲欧美| 性欧美办公室18xxxxhd| 欧美性视频网站| 99精品久久久| 亚洲电影免费| 久久夜色精品国产| 香蕉久久一区二区不卡无毒影院 |