msp430幾種不同開(kāi)發(fā)平臺(tái)的對(duì)比
1. 正版。無(wú)限制。
GPL,天下皆知
2. 與gcc系出同源,使用方式極像。
如果用過(guò)gcc
查看mspgcc對(duì)gcc的擴(kuò)展
如果沒(méi)有用過(guò)gcc
先了解一下gcc的基本用法,比如
gcc -o hello hell.c
gcc -S hell.c
等
然后,mspgcc
其它
goto error;
3. 針對(duì)430擴(kuò)展C語(yǔ)言,匯編能做的,他幾乎都能做。
僅在此列出我認(rèn)為有趣的幾個(gè),詳情,查手冊(cè)。
(1)堆棧
mspgcc對(duì)堆棧的設(shè)置很靈活。你可以為自己保留一定字節(jié)的RAM不被C占用。如下聲明
int RESERVE_RAM(10) main()
你保留的10字節(jié)RAM。
你也可以自己寫(xiě)啟動(dòng)文件,代替標(biāo)準(zhǔn)的啟動(dòng)文件,自己控制進(jìn)入C語(yǔ)言時(shí)的環(huán)境。
(2)頭文件
在嵌入式開(kāi)發(fā)中,一般會(huì)有針對(duì)硬件的頭文件。其中為特殊功能寄存器定義等。不同的硬件環(huán)境,當(dāng)然需要不同的定義。在mspgcc的開(kāi)發(fā)環(huán)境中只需增加
#include
即可。
不同的硬件如何區(qū)別?在Makefile文件中或者在編譯時(shí)說(shuō)明是哪種430芯片就可以了。這一點(diǎn),和winavr相同。
(3)中斷
中斷是硬件的珍貴資源。標(biāo)準(zhǔn)C中似乎沒(méi)有中斷的定義,所以一般采用擴(kuò)展。mspgcc提供了interrupt關(guān)鍵字,以及控制進(jìn)入中斷方式的選項(xiàng)。比如,下面的中斷程序中沒(méi)有用到諸如R4,R5等其它寄存器,卻仍將其在堆棧中保護(hù)。
interrupt (ADC_VECTOR) ADC12ISR(void)
{
ADCresult = ADC12MEM0; // Move results, IFG is cleared
}
屬性naked修飾后,裸奔。不做任何事情,甚至reti都不執(zhí)行,所以,得自己控制返回。
interrupt (ADC_VECTOR) __attribute__ ((naked)) ADC12ISR(void)
{
ADCresult = ADC12MEM0; // Move results, IFG is cleared
asm("reti");
}
mspgcc中擴(kuò)展了下面這些屬性(參考mspgcc手冊(cè))。
reserve(x) When applied to main(), this reserves "x" bytes of RAM above the stack. This cannot be used with C++ (if C++ is supported later on).
interrupt(x) Make the function an interrupt service routine for interrupt "x".
signal Make an interrupt service routine allow further nested interrupts.
wakeup When applied to an interrupt service routine, wake the processor from any low power state as the routine exits. When applied to other routines, this attribute is silently ignored.
naked Do not generate a prologue or epilogue for the function.
critical Disable interrupts on entry, and restore the previous interrupt state on exit.
reentrant Disable interrupts on entry, and always enable them on exit.
saveprologue Use a subroutine for the function prologue, to save memory.
noint_hwmul Supress the generation of disable and enable interrupt instructions around hardware multiplier code.
(4)匯編
mapgcc支持行間匯編。只是,gcc的匯編語(yǔ)言似乎與TI的不盡相同。
4. 燒寫(xiě)
有三種方式
(1) gdb
(2) msp430-downloader.exe
(3) msp430-jtag.exe
5. 調(diào)試
當(dāng)前,最新版mspgcc沒(méi)有insight,只有g(shù)db。個(gè)人感覺(jué)不如IAR直觀
前些天接了個(gè)任務(wù),要把原來(lái)在MCU430x149里面的程序移植并燒寫(xiě)到MCU430x1611里面去,以前沒(méi)用過(guò)430,但它的鼎鼎大名早有耳聞,許多論文、報(bào)告上都提到過(guò)430。大概的搜了些資料,覺(jué)得它最突出的地方莫過(guò)于功耗小、速度快,據(jù)說(shuō)以前RAM有點(diǎn)小,現(xiàn)在出了16xx,應(yīng)該是可以滿(mǎn)足一些需求了。雖說(shuō)430聲名在外,可上網(wǎng)搜了一通,卻發(fā)現(xiàn)有用的資料不多,其實(shí)我主要是想找一下開(kāi)發(fā)環(huán)境,至少程序方面并沒(méi)有什么太
大的期望,一來(lái)有源代碼,二來(lái)有手冊(cè)和用戶(hù)指南,所以在代碼上問(wèn)題應(yīng)該不大。
430的開(kāi)發(fā)工具一般都是用的IAR,我問(wèn)了周?chē)耐?,也都這么說(shuō),于是就上網(wǎng)費(fèi)了n大的勁下了一個(gè)IAR For 430 3.41A版的,然后破解、建工程、編譯代碼,誰(shuí)知道這時(shí)候出問(wèn)題了,原來(lái)代碼是用MSPGCC環(huán)境編譯的,在IAR下錯(cuò)誤一大堆。于是就又放棄了IAR,開(kāi)始搜索MSPGCC,誰(shuí)知道這個(gè)東西的資料少的可憐,按理說(shuō)是開(kāi)源軟件,用戶(hù)應(yīng)該多些,可情景正好相反,鮮有詳細(xì)的資料,只在利達(dá)爾的論壇上有些資料,還都是一兩年前的,可能是考慮到開(kāi)發(fā)環(huán)境的兼容性,用IAR的占了絕大多數(shù),反正國(guó)內(nèi)用MSPGCC的不多。在摸索了幾天,查了n多資料,上了n多網(wǎng)站后(基本上是E文的),終于建立了MSPGCC的編譯與仿真環(huán)境,下面就是小弟的搭建過(guò)程,希望對(duì)像我這樣的初學(xué)者或者對(duì)MSPGCC感興趣的朋友有點(diǎn)用處。
1、從網(wǎng)上下載MSPGCC的安裝包(For Windows),可以從這兒下載最新版:http://mspgcc.sourceforge.net/
然后再下載20030506版本:
http://prdownloads.sourceforge.net/mspgcc/mspgcc-20030506.exe
因?yàn)樾掳嬷袥](méi)有insight 工具。
2、下載一個(gè)WinAVR,主要是為了在Windows下建立一個(gè)Linux環(huán)境,然后就不用怎么修改Makefile文件了,因?yàn)樵瓉?lái)程序的環(huán)境就是這樣建的,所以我也就裝了一個(gè),其實(shí)WinAVR對(duì)MSPGCC來(lái)說(shuō)不是必須的,不過(guò)用了它的話會(huì)方便一些,并且從AVR上移植程序也方便。
3、先看一下網(wǎng)上的資料,像Asnake兄的Mspgccgo、yfzhcn的MSPGCC學(xué)習(xí)筆記、finewei的博客,利爾達(dá)論壇上都有,看了這些就會(huì)有個(gè)大概的了解。
4、把MSPGCC和WinAVR都裝上,注意MSPGCC要先裝老版本的,再裝新版,這樣就可以支持新MCU,比如說(shuō)1611,網(wǎng)上也有說(shuō)先裝新版再裝舊版的,但我裝了之后就識(shí)別不了新的MCU,但如果要想用Insight的話,舊版的是一定要裝的,只有舊版的才有,新版的沒(méi)有GUI的調(diào)試程序。我在裝了舊版的以后,就不再支持1611,如果不裝的話沒(méi)有問(wèn)題,后來(lái)不得不一個(gè)一個(gè)文件的對(duì)比,然后用新版的覆蓋。還有就是在裝完MSPGCC和WinAVR以后,一定要把cygwin1.dll版本統(tǒng)一,直接用新的覆蓋舊的就行了。
5、這些完成之后,打開(kāi)WinAVR安裝時(shí)自帶的Programmer Notepad 2,然后打開(kāi)原來(lái)的工程,也不用配置(我沒(méi)有配置,就用的默認(rèn)菜單配置),然后Makeall就可以了,但我在用MSPGCC的make.exe替換掉WinAVR里的make.exe以后,或者修改菜單配置以后就再也通不過(guò)編譯,不知道為什么,或者是我那樣做根本就不對(duì),還請(qǐng)用過(guò)的前輩指點(diǎn)一下。
6、程序make成功以后,就可以下載或者調(diào)試了,這個(gè)可以參考Asnake兄的Mspgccgo,里面說(shuō)的很詳細(xì),也有圖片,我想說(shuō)的就是在點(diǎn)擊了Run 或下載以后,下載的過(guò)程很慢,并且Insight看起來(lái)像是沒(méi)有響應(yīng)一樣,但在右上角會(huì)有一個(gè)綠色的下載進(jìn)度條,這些都是正常的,千萬(wàn)不要以為程序死掉了。
啰唆了這么久,其實(shí)過(guò)程也很簡(jiǎn)單的,只是一個(gè)人摸索的話費(fèi)點(diǎn)時(shí)間罷了,感覺(jué)MSPGCC還是很好用的,用過(guò)Linux或用慣了命令行的會(huì)覺(jué)得很方便的,上手也很容易,并且是免費(fèi)的,最重要的是現(xiàn)在已經(jīng)有了AVRGCC、ARMGCC和MSPGCC,程序程序移植起來(lái)很方便,呵呵,各位如果感興趣的話,不妨也試一下,大家也可以相互交流,共同學(xué)習(xí)。
MSP430單片機(jī)問(wèn)答
Q 1: 如何將msp430與5v 的系統(tǒng)作連結(jié)?
A 1: 可以參考我們的一份Application note:slaa148。
Q 2: 除了使用于pda 或smart phone 外,430可否使用在其它的應(yīng)用中?
A 2: msp430 是一顆混合信號(hào)處理能力相當(dāng)優(yōu)秀的mcu,為16bit、flash架構(gòu),超低功耗的特性使其非常適合用于可攜式外圍,另外在于一般的meter、傳感器應(yīng)用及低耗電量的應(yīng)用也非常合適。
Q 3: 在目前的430于數(shù)字相機(jī)及pda 中,430的主要功能為何?使用到哪些模塊?
A 3: 主要使用的是timer_a 及i/o,另外隨著功能的強(qiáng)化您可以使用adc及比較器及其它相關(guān)模塊。
Q 4: 在中國(guó)是否有經(jīng)銷(xiāo)點(diǎn)及技術(shù)支持人員?
A 4: 有的,您可以與我們蘇子杰先生聯(lián)絡(luò)。電話是:21-58369345。
Q 5: 我想要學(xué)習(xí)msp430,請(qǐng)問(wèn)在軟件及硬件設(shè)計(jì)上有沒(méi)有更完整的范例?
A 5: 可以與我們聯(lián)絡(luò)或是至ti 網(wǎng)站:http://www.ti.com/msp430。
訪問(wèn)網(wǎng)址超出本站范圍,不能確定是否安全
繼續(xù)訪問(wèn) 取消訪問(wèn)www.ti.com/msp430。
Q 6: 我能夠使用msp430 中的adc做為voice 的codec 嗎?
A 6: 有的,我們有些范例就是實(shí)現(xiàn)voice codec,您可以與我們聯(lián)絡(luò)取得此范例。
Q 7: 我的系統(tǒng)中有一顆dsp 作為主要的運(yùn)算核心,msp430 與它們的溝通能力好嗎?
A 7: 相當(dāng)優(yōu)秀,您可以使用i2c或spi 或uart 與dsp 溝通,我們亦用范例是利用msp430做為dsp 之boot rom 做為更安全之外部程序保護(hù)。
Q 8: 聽(tīng)說(shuō)c 語(yǔ)言的程序效能較為低落,msp430 的c compiler 的效能好嗎?如果我想使用msp43的匯編語(yǔ)言作開(kāi)發(fā)會(huì)不會(huì)很難學(xué)?可以在同一個(gè)項(xiàng)目中同時(shí)使用c 及匯編語(yǔ)言呢?
A 8: 可以在同一個(gè)項(xiàng)目中使用c及asm,其效率相當(dāng)不錯(cuò),您可以自行將c code轉(zhuǎn)換成asm code便可以發(fā)現(xiàn)其除了效率外,code size 也相當(dāng)?shù)男 ?div>
Q 9: 我對(duì)于貴公司的產(chǎn)品很感興趣,但是不知道價(jià)格及交期怎么樣?
A 9: 關(guān)于價(jià)格及其它產(chǎn)品的詢(xún)問(wèn)及技術(shù)支持,請(qǐng)直接與我們聯(lián)絡(luò)方便得到更多更好的服務(wù)。
Q 10: 我目前使用8051 作開(kāi)發(fā),不知道這個(gè)IC 會(huì)不會(huì)很少人用?會(huì)不會(huì)不好用,模擬功能會(huì)不會(huì)不強(qiáng)?還要另外增加其它的硬件及線路?
A 10: 無(wú)論是在亞洲或是歐美,430均有顯注的成長(zhǎng),另外msp430是一顆功能強(qiáng)大的soc,整合了模擬及數(shù)字的處理能力,所以您可以放心。
Q 11: 我有遙控器的案子要開(kāi)發(fā),但是不知道用哪一顆比較合適?在挑選ic上有沒(méi)有好的建議?
A 11: 我們從最低階的f1101到高階的f440 均可以完成ir 的編譯碼,另外如果您有更多需求,如adc、如lcd 您可以選擇其它的msp430 來(lái)做為您最適合的解決方案。
Q 12: 我想在儀器設(shè)計(jì)中采用mps430及有關(guān)配套組件和顯示系統(tǒng).不知道該片的更新時(shí)間大約是多少? 如果有相關(guān)的應(yīng)用資料請(qǐng)寄來(lái).謝謝北京大學(xué)姜天仕
A 12: 如果您使用MSP430F4xx 內(nèi)的LCD Driver,請(qǐng)參考data sheet,如果使用lcm,請(qǐng)參考供應(yīng)商的資料。
Q 13: 能否將此次的演示文稿給大家一份,好讓我們有時(shí)間時(shí)仔細(xì)學(xué)習(xí)一下?
A 13: 您可以于EEPlace 上取得本次投影片,如果需要進(jìn)一步的支持,請(qǐng)與我們聯(lián)絡(luò)。
Q 14: 我們一直使用PC104 嵌入式PC 或DIMM 式PC,以及單片機(jī)等開(kāi)發(fā)產(chǎn)品。我們想用DSP來(lái)作產(chǎn)品。請(qǐng)問(wèn)用DSP 來(lái)作(或開(kāi)發(fā))產(chǎn)品,首先需要作哪些準(zhǔn)備工作(例如開(kāi)發(fā)平臺(tái)所需的軟件和硬件等),大約需要多少資金。能否提供這方面的建議和方案。并提供幫助。謝謝!易碧金呈上2003.6.24
A 14: 關(guān)于DSP 的部份,歡迎您直接與我們聯(lián)絡(luò)。
Q 15: MSP430 可能支持MP3解碼?
A 15: 目前不能,需另外搭配dsp。
Q 16: 支持的操作系統(tǒng)有哪些?
A 16: 目前您可以在Windows 及Linux 下開(kāi)發(fā),至于MSP430您可以使用在各種手持設(shè)備中。
Q 17: How many the most uart can be used by MSP430? How much one piece?
A 17: 硬件uart 最高到2組,另外亦可使用sw uart。
Q 18: IAR 4k c-compiler 是表示不能compiler 超過(guò)4k 的C code 嗎?
A 18: 是指linker 最大只會(huì)link 4k的c source code,而在assembler 中并無(wú)此限,另外,尚有全功能的30天試用版,如果您有需要請(qǐng)與我們聯(lián)絡(luò)。
Q 19: 我在使用TI 的產(chǎn)品(msp-us-trf6900)遇到了一個(gè)問(wèn)題。
A 19: 這蠻奇怪的,也許與您的硬件有關(guān),請(qǐng)直接與我們聯(lián)絡(luò)來(lái)共同研究解決。
Q 20: 我無(wú)法將寫(xiě)好的程序重新download到msp430 上。
A 20: 這蠻奇怪的,也許與您的硬件有關(guān),請(qǐng)直接與我們聯(lián)絡(luò)來(lái)共同研究解決。
Q 21: 我想請(qǐng)問(wèn)一下MSP430 是否可以用軟件規(guī)劃呢?
A 21: 新版的iar有提供此功能。
Q 22: 請(qǐng)問(wèn)msp430F149 的復(fù)位電路如何解決?
A 22: 使用svs ic或是直接將您的電路與我們工程師一起來(lái)研究,蠻多的情況均
是reset 電路設(shè)計(jì)不良造成reset 失效。
Q 23: msp430 與sygnal 的性能方面的對(duì)比如何?您用什么打動(dòng)我放棄sygnal,使
用msp430?
A 23: MSP430 為16bit CPU核心,F(xiàn)lash base 的mcu,整合了數(shù)字及模擬信號(hào)的
處理能力,在強(qiáng)大的功能下,又具備了超低功耗的特性。所以您可以從耗電量、
數(shù)字模擬整合能力、Signal chain/SoC、Total cost 等各方向來(lái)評(píng)估MSP430 對(duì)于
您目前的設(shè)計(jì)上的幫助了。
Q 24: 我有一電路需求要偵測(cè)一電壓5v~20v 及溫度并記錄數(shù)據(jù)且與pc 連
線監(jiān)看.請(qǐng)問(wèn)msp 430 可適用否? msp430 單價(jià)大約多少錢(qián)?
A 24: 沒(méi)有問(wèn)題,您可以使用MSP430 內(nèi)部的ADC12 或是ADC10或是SlopeADC 搭配硬件或軟件UART,MSP430 的價(jià)格從0.49 美金開(kāi)始,針對(duì)您所需求
的。
Q 25: 1)Is there MMU can provide? 2) Can it support OS? 3) How to program the internel Flash? 4) Have a large code space to store datas?
A 25: 1) Please discuss with us 2) Yes,you can program it as an OS 3) very
easy, NO special instruction ,we can give you some examples for your reference.
4)Yes,Up to 60K.
Q 26: 可以問(wèn)您一下關(guān)于TI的其它芯片的信息嗎?
A 26: 請(qǐng)隨時(shí)與我們聯(lián)絡(luò),我們將會(huì)提供最好的支持及服務(wù)給您。
Q 27: 我同事設(shè)計(jì)的一個(gè)MSP430F1121電路上電復(fù)位不可靠, 麻煩講述一下430
系列上電復(fù)位硬件設(shè)計(jì)注意事項(xiàng)。
A 27: 在F1121 上并沒(méi)有SVS 的功能(在4XX系列及新推出的1XX 系列具有),
所以您可以使用具Power good 的LDO或SVS IC 以增加Reset 電位的可靠。一
般說(shuō)來(lái)使用外部的RC即可,當(dāng)然也可以利用簡(jiǎn)單的電路就可增加此部份的可靠
度,如果您需要此部份線路,請(qǐng)與我們聯(lián)絡(luò)。
Q 28: 低功耗是否用在工業(yè)控制場(chǎng)合有致命的問(wèn)題,如強(qiáng)電磁干擾,應(yīng)如何處
理? 謝謝。
A 28: 除了msp430 本身的抗ESD能力外,您亦可利用外部的線路來(lái)將外部干擾
信號(hào)濾除,如果您有需要這些線路的協(xié)助,請(qǐng)與我們聯(lián)絡(luò)。
Q 29: 請(qǐng)問(wèn)msp430 Flash系列仿真器在原理上有什么不同嗎?有沒(méi)有能仿真全系
列的?
A 29: 我們MSP430 內(nèi)部具有JTAG Interface,透過(guò)這個(gè)接口,您可以直接的去
access ram/rom/register 等,所以您看到的是真實(shí)的msp430 狀況,包含有ADC、
Timer等。所以對(duì)430 而言,您使用的是Emulator而非Simulator,另外在MSP430
flash 家族中均具有此一功能。
Q 30: 請(qǐng)問(wèn)FET IDE的c-complier只能complier4K嗎?會(huì)不會(huì)太小呢?
A 30: 另外亦有30 天全功能的試用版本可以提供給使用者使用。您可以與我們
聯(lián)系以取得更完整的數(shù)據(jù)。
Q 31: 使用C 語(yǔ)言超過(guò)4kb 怎么辦?
A 31: 購(gòu)買(mǎi)正式版本的C Compiler或使用免費(fèi)的GCC for MSP430
http://mspgcc.sourceforge.net。
訪問(wèn)網(wǎng)址超出本站范圍,不能確定是否安全
繼續(xù)訪問(wèn) 取消訪問(wèn)http://mspgcc.sourceforge.net。
Q 32: 請(qǐng)問(wèn)在使用430 時(shí),特別要注意哪些問(wèn)題?
A 32: MSP430 是一個(gè)模塊化的16 bit CPU 核心、Flash 的SoC,實(shí)現(xiàn)了Signal Chain on Chip,也就是說(shuō)與過(guò)去其它的8bit MCU相比,您不再需要使用許多外部零件、不再需要許多額外的指令周期、不再需要外掛eeprom或占用許多的code size。所以建議您能夠以設(shè)計(jì)系統(tǒng)的概念來(lái)使用MSP430,我想這是最重要的。
Q 33: 請(qǐng)告訴我,編譯器的網(wǎng)址,我的Email:bird_mc958@163.com, 謝謝!
A 33: http://www.quadravox.com
訪問(wèn)網(wǎng)址超出本站范圍,不能確定是否安全
繼續(xù)訪問(wèn) 取消訪問(wèn)http://www.quadravox.com
Q 34: MSP430 的I/O是否帶抗靜電ESD保護(hù)功能??垢蓴_能力如何?
A 34: 有,您可以與我們聯(lián)絡(luò)取得更完整的測(cè)試報(bào)告。
Q 35: msp430 有中文資料嗎,在哪里可以得到?
A 35: 目前在中國(guó)有三本的MSP430 中文書(shū)可以購(gòu)買(mǎi)。此外如果您有需要也可以
與我們進(jìn)行在線的討論:網(wǎng)址是www.vpdsp.com,我們提供了豐富的DSP 參考資
料及TI產(chǎn)品的在線討論區(qū)。
Q 36: MSP430 I2C 接口是否可以實(shí)現(xiàn)Master 能力?
A 36: 可以。
Q 37: msp430 系列單片機(jī)目前的產(chǎn)品沒(méi)有除法功能,請(qǐng)問(wèn)以后的新產(chǎn)品,有沒(méi)有
可能集成除法的運(yùn)算功能?
A 37: 目前暫無(wú)規(guī)畫(huà),但是我們未來(lái)的產(chǎn)品會(huì)提升我們整體運(yùn)算的效能至30mips
以上。
Q 38: MSP430 可否提供多重中斷的Example code ? Web 尚未提供...
A 38: 請(qǐng)與我們直接聯(lián)絡(luò),我們可以提供范例程序給您作參考。
Q 39: 430 該如何連接802.11A/B 做數(shù)據(jù)收集?
A 39: 在ti 的網(wǎng)站上,我們有提供一個(gè)關(guān)于MSP430 于internet 應(yīng)用的范例,或
許您可以參考它并應(yīng)用于您的案子上。該文件編號(hào)為:slaa137。
Q 40: 內(nèi)建DAC 的MSP430 什么時(shí)候可以量產(chǎn)?
A 40: 2003 年第3Q。
Q 41: MSP430F1122 有否計(jì)劃出mask type?
A 41: 目前沒(méi)有,如果您有此方面的需求請(qǐng)與我們聯(lián)絡(luò),我們可以給您相關(guān)的解
決方案。
Q 42: 有沒(méi)有背板開(kāi)發(fā)包(for VxWorks)或者是嵌入式LINUX的編譯器提供?
A 42: MSP430GCC 有提供Linux 的編譯器,http://mspgcc.sourceforge.net,您可以自行參考研究。
Q 43: 可以應(yīng)用在有USB的產(chǎn)品嗎? 如何應(yīng)用Thanks?
A 43: 在20004 年我們會(huì)有關(guān)于MSP430 5xx 系列更完整的數(shù)據(jù),希望您能與我
們保持聯(lián)絡(luò)。
Q 44: 請(qǐng)問(wèn)現(xiàn)在有支持C 語(yǔ)言的MSP430 編程調(diào)試環(huán)境嗎?