前回の投稿では MCU + CPLD の PSoC をかる~く触れてみました。個人的にとてもアツいチップであり、今後も触れていきたいのですが...
実は同日に、MSP430 というマイコンを買っていました。秋月で以下の様なものを買ったんです。
MSP430 とは Texas Instruments のマイコンであり、超低消費電力であることが特徴の8bitマイコンです。動作電圧もなんと1.8Vから3.6Vという低電圧で動作し、消費電流も少ないということです。こちらのサイトではなんとレモン電池でこのマイコンを動かそうという実験がされています。
この特徴を持つマイコン、個人的にはあまり興味はないのですが面白そうだと思い試してみます。
開発環境 on Mac
マイコンを買うと毎回問題になるのですが、大抵のマイコンは Mac や Linux での開発を前提にしていないという感じになっています。このマイコンもそれに当てはまります。ですので自力で環境を整えていくことにします。
gcc
グーグル先生に聞いた所、Google Code Archive - Long-term storage for Google Code Project Hosting.というサイトで MSP マイコン用のコンパイル済み Intel x64 向けの gcc やらを配布しているとわかりました。それでは早速 pkg の入った zip ファイルを落としてインストールします。すると /usr/local/msp430-toolchain/
にインストール(シンボリックリンク)されると思います。ですのでシェルのパスを /usr/local/msp430-toolchain/bin
に通しておきます。これでひとまず gcc
のインストールは出来ました。
書き込み環境 - mspdebug
例によって最強のFT232RLで書き込みをします。調べていくとなんか「そんなの無理だよ。素直に専用のJTAGライタ使えよ」とか書かれた英語のコミュニティサイトや BBS がちらほらと出てくるのですが、そんなもの無視してガッツで書き込みをしてしまいます。
調査を続けていくと、どうやら mspdebug
というソフトを使えば良いとわかりました。実際にシリアル通信で書き込めるかというと...ありました。↓
MSP430 プログラム書き込みツールとインターフェイス [msp430info index-3.4] - 超低消費電力マイコン(MSP430) - Japanese E2E (日本語コミュニティ) - TI E2E Community
この公式サイトによるとBSL書き込みがあって、これでなんとUARTで出来る的なことが書いてあります。希望の光です。ってかなんでこんな変な名前にしてるのかねぇ。わかりにくいわ。
んじゃ配線はどうすんのよと思っていましたが、platformioでmsp430 - Qiitaに書いてありましたのでそちらに従います。ピンの対応ですが、TXD と RXD が逆なようでしたので(それともデバイス自体のHW的な違いか)、修正して以下に掲載します。
MSP430のピン名 | MSP430のピン番号 | FT232RLのピン |
---|---|---|
VCC | 1 | 3.3V |
P1.1 | 3 | RXD |
P1.5 | 7 | TXD |
RST | 16 | DTR |
TEST | 17 | RTS |
GND | 20 | GND |
ご注意:
僕がテキトー選んで買ったチップではこの BSL 書き込みが出来るようですが(データシートによる)、出来ないものもあるようです。ご購入の際は、BSL 書き込みをされる方は事前にお調べください。
例によって Homebrew から brew install mspdebug
として試してみましたが、なんかまぁ出来ない。やや萎えましたが、おそらく書き込み用ドライバで対応しているものがないのだろうなと思ったので、ダメ元で以下の GitHub リポジトリから自前で make してみました。
そして make
をして出来たバイナリをパスの通ったお好きな場所へコピー。
さて、実際にプログラムを書いてみますかね。ユーザーガイドを参考に簡易的に作った LED チカチカプログラムは以下です。
レジスタ・マクロは特にビットフィールド構造体で定義されているわけではなく、個々のレジスタ名・ビット名で定義されているようです。今回はこれを main.c という名前で保存しました。
そしてビルドです。付けるべきオプションはそれ程複雑ではないのでまあ良かった。
$ msp430-gcc -Os -Wall -g -mmcu=msp430g2553 -o main{.elf,.c} -std=gnu99 2>&1 | nkf
後の 2>&1 | nkf
が気になりますが、これは一部エラーメッセージが日本語で出てくる時に文字化けをすることがあるのでそれを直すための対症療法です。とりあえずストレスを感じないために付けておきましょうか。
ちなみに実際に文字化けが起こった時の表示はこんな感じです。
nkf
を通すとこんな感じだとわかります。
エラー無くビルドできたでしょうかね。出来たらこんな感じで叩いてください。このコマンドは上の Qiita の記事を参考にしました。
$ mspdebug rom-bsl -d /dev/cu.usbserial-AI0454E0 "prog main.elf"
上の ID 的なところはご自身がお使いのものに合わせてください。これで書けるはずです。かなり高速に LED がチカチカしていると思います。
〆
まあなんか STM32 の記事が停滞しているような気がしますが、とりあえず割り込みとかやって次に(次とは言っていない)続きを公開したいと思います。