2011年9月1日 星期四

MSPGCC-免費的MSP430編譯工具

其實這東西就是GCC版本的MSP430編譯軟體
官方網站在:http://mspgcc.sourceforge.net/
就首頁所述,它是個純C語音的編譯器,只支援到ANSI C89,簡單地說就是舊版的語法
內有msp430-ld與msp430-objcopy可以產生.hex檔,方便經燒錄軟體上傳到CPU上
對於常年使用GCC來開玩OGRE3D的我來說,算是十分熟悉的環境
不過使用上還是遇到了些麻煩

編譯器有了,我們還是需要GUI環境的程式碼編寫軟體
這時我當然是選擇了已經使用超過4年的Code::Blocks來搭配
因為裡面的編譯器選項也有MSPGCC這一項
但沒想到,這其實是個有問題的選項

我使用的這版Code::Blocks是10.05帶MinGW的版本
當我在Setting裡設定完成GNU GCC Compiler for MSP430的實際位置後
理論上,Compiler Setting裡那些Compiler Flag與#define應該要有作用
但實際上,沒有!不知為何完全失效
所以一開始我編譯出來的東西看似成功,但卻都是沒有用的東西
因為少了-Os與_MSP430x2231_的CPU定義(#define)
搞到後來,只好在程式碼上的Properties...→Advanced裡去設定custom build功能
然後把-Os與-D_MSP430x2231_加進去

不過這樣還是會失敗的,因為缺少了兩個檔案給msp430-ld
那就是memory.x與periph.x這兩個檔案
它們是放在..\Msp430\Msp430\lib\ldscripts裡面的msp430g2231中
也就是依上面的CPU定義下去對應的
那看是要加入這個目錄到編譯的參數中
還是像我直接把這兩個檔案跟要編譯的程式碼放在同一個目錄中都行

再來,編譯時使用的最後輸出
請選擇Commands only(在專案的Properties...→Build Target裡Type:)
這樣才會只有.o的檔案,不會產生失敗
最後再執行msp430-objcopy並下執行參數 -ihex 轉成 Intel Hex檔案格式
這邊是參考http://www.mikrocontroller.net/en/mspgcc

這樣描述似乎有點亂,我整理一下,以編譯的程式為main.c為例
需要執行這兩行程式來產生.hex檔
msp430-gcc.exe -Os -D_MSP430x2231_ -o main.o main.c
msp430-objcopy -O ihex main.o msp430.hex

然後來再的上傳咧?
找了好一陣子,從旺陽電討論區找到了Lite FET-Pro 430
http://www.vp-ic.com/phpBB/viewtopic.php?f=3&t=230
經過很簡單的設定,由LaunchPad的UART上傳至MSP430裡
當然我因為裝了IAR的軟體,所以有了LaunchPad的驅動程式
要不然,從我所購買的網站[玩USB互動裝置]開發日誌中
https://sites.google.com/site/msp430launchpaddiy/fu-lu/load-hex-file-to-launchpad
也有命令例的工具可以使用

幾乎備齊了軟體與基本的硬體
接下來就是驗證這個點子OK不OK啦

沒有留言: