嵌入式系統(tǒng)與FPGA的最新動(dòng)向
可見(jiàn),MCU不會(huì)脫離數(shù)字設(shè)計(jì)的核心。在集成模擬/數(shù)?;旌掀骷r(shí),會(huì)對(duì)性能和制程帶來(lái)一些挑戰(zhàn)。在一些高性能或獨(dú)特應(yīng)用場(chǎng)合,獨(dú)立的模擬器件仍舉足輕重。獨(dú)立的模擬器件的發(fā)展趨勢(shì)是集成度更高,精度更高,可編程性更強(qiáng),并有自家的開(kāi)發(fā)工具支持,簡(jiǎn)單易用等。
本文引用地址:http://butianyuan.cn/article/118084.htmMIPS架構(gòu)尋機(jī)突破
如今,ARM是32位MCU架構(gòu)中增長(zhǎng)最快的部分,有專(zhuān)門(mén)為不同嵌入式處理器準(zhǔn)備的10種左右的Cortex授權(quán)。一般公認(rèn)ARM陣營(yíng)的優(yōu)勢(shì)是可利用的豐富的生態(tài)環(huán)境。
不過(guò),MIPS科技公司這幾年也在尋求突破。Microchip是MIPS架構(gòu)的積極擁躉者之一,最近,Microchip的Erlendur Kristjansson對(duì)ARM公司聲稱的32位單片機(jī)(MCU)應(yīng)用的可移植性產(chǎn)生了疑問(wèn)。
32位單片機(jī)的應(yīng)用可移植性:現(xiàn)實(shí)還是神話?
Erlendur首先介紹了事情的原委:2008 年11 月,ARM公司宣布推出Cortex微控制器軟件接口標(biāo)準(zhǔn)(Microcontroller Software Interface Standard,CMSIS)。ARM聲稱,對(duì)于新器件的軟件開(kāi)發(fā)項(xiàng)目或?qū)F(xiàn)有軟件在不同芯片廠商的基于Cortex-M 的單片機(jī)之間移植時(shí),這項(xiàng)標(biāo)準(zhǔn)可降低軟件設(shè)計(jì)成本。這聽(tīng)起來(lái)很不錯(cuò),但事實(shí)確實(shí)如此嗎?
Erlendur分析道,根據(jù)ARM 所言,CMSIS 是“適用于Cortex-M 處理器系列的與廠商無(wú)關(guān)的硬件抽象層。CMSIS為不同芯片廠商和中間件提供商的處理器提供了簡(jiǎn)單一致的軟件接口,這簡(jiǎn)化了軟件重用,縮短了開(kāi)發(fā)人員對(duì)于新單片機(jī)(MCU)的學(xué)習(xí)過(guò)程以及新器件的上市時(shí)間。CMSIS的問(wèn)世使芯片廠商可將資源集中在突出其產(chǎn)品的外設(shè)功能上,無(wú)需在對(duì)單片機(jī)進(jìn)行編程時(shí)保持各自不兼容的標(biāo)準(zhǔn)[10]。”
可移植性的可能性探討
我們已了解各個(gè)單片機(jī)制造商都能提供什么,現(xiàn)在可以看一下抽象層能為設(shè)計(jì)人員做些什么(如果有的話)。首先,我們來(lái)看CMSIS 聲稱所能提供的功能,同時(shí)應(yīng)記住前文所述的系統(tǒng)架構(gòu)、外設(shè)和固件庫(kù)。
CMSIS 版本1.3
1.內(nèi)核外設(shè)訪問(wèn)層:包含用于訪問(wèn)內(nèi)核寄存器和外設(shè)的名稱定義、地址定義和輔助函數(shù)。它還定義了一個(gè)用于RTOS 內(nèi)核的器件無(wú)關(guān)接口,其中包含調(diào)試通道定義[11]。
2. 這些軟件層由芯片合作伙伴通過(guò)以下方式進(jìn)行擴(kuò)展:
a) 器件外設(shè)訪問(wèn)層,提供所有器件外設(shè)的定義;
b) 用于外設(shè)的訪問(wèn)函數(shù)(可選):提供用于外設(shè)的附加輔助函數(shù)[11]。
仔細(xì)閱讀此說(shuō)明后,我們可以看到CMSIS 提供了一種通用語(yǔ)言,通過(guò)它可描述MCU 的不同元件。
接下來(lái),我們看一下兩個(gè)不同的“芯片合作伙伴(使用ARM Cortex-M 處理器內(nèi)核的MCU 制造商)”所生產(chǎn)的MCU 中包含的部分功能。
顯而易見(jiàn)的是,盡管這兩個(gè)32 位MCU制造商都使用Cortex-M3 內(nèi)核,但主要功能仍有區(qū)別。表1中列出的功能是單片機(jī)最標(biāo)準(zhǔn)的功能,即便如此它們?nèi)杂胁煌?。這意味著,即使這兩個(gè)制造商使用相同的內(nèi)核,也需要對(duì)軟件進(jìn)行調(diào)整才能運(yùn)行最基本的程序,例如翻轉(zhuǎn)I/O 或使用UART。如果不進(jìn)行一定程度的代碼重寫(xiě),而只是對(duì)基本參數(shù)進(jìn)行調(diào)整,則無(wú)法在A和B之間移植軟件。
另外,在表1的示例中,廠商A和B的單片機(jī)都使用了ARM Cortex-M3 內(nèi)核,并且都具有符合CMSIS 標(biāo)準(zhǔn)的固件庫(kù)。這是否意味著他們的庫(kù)(例如電機(jī)控制庫(kù))可以互相移植?
其實(shí)不見(jiàn)得。這兩個(gè)制造商對(duì)外設(shè)和固件采用了完全不同的方法。廠商A 使用專(zhuān)用算法庫(kù)(可能由多人經(jīng)過(guò)數(shù)年開(kāi)發(fā)而成)來(lái)最高效地利用其單片機(jī)上的專(zhuān)用外設(shè)。而廠商B 則專(zhuān)注于使用更通用的外設(shè)并構(gòu)建通用外設(shè)庫(kù),對(duì)于特定應(yīng)用則使用示例代碼和應(yīng)用筆記進(jìn)行說(shuō)明。
這兩種完全不同的方法使得在這兩個(gè)制造商的MCU 之間移植程序(例如電機(jī)控制子程序)非常困難,盡管它們使用了相同的內(nèi)核。此外,庫(kù)函數(shù)的命名也不相同,這意味著用戶必須重寫(xiě)代碼中的所有庫(kù)函數(shù)調(diào)用,并且要弄清將哪些變量和值提交給函數(shù)。這完全不是所謂的可移植性。
再有,設(shè)計(jì)人員關(guān)注的重點(diǎn)是開(kāi)發(fā)特定最終用途代碼時(shí)的速度、效率和可靠性。廠商A和B采用不同的方法來(lái)達(dá)到這些目標(biāo)。廠商A使用基于專(zhuān)用硬件的方法,而廠商B的法更加專(zhuān)注于通用硬件。廠商A 針對(duì)特定應(yīng)用提供了經(jīng)過(guò)潛心開(kāi)發(fā)的專(zhuān)用庫(kù),以最大限度地利用其單片機(jī)的功能。而廠商B 只提供基本構(gòu)件,讓開(kāi)發(fā)人員構(gòu)建自己的解決方案。
評(píng)論