私は TI Stellaris LM3S1968 を使用しています。この MCU には ARM Cortex-M3 が搭載されています。
Windows 7 を搭載したラップトップに VM をインストールし、そこにGNU Tools for ARM Embedded Processorsをインストールしました。次に、Stellaris Flash Programmer、GUI、およびコマンド ラインをインストールしました。Stellaris FTDI Driversもインストールしました。
最後に、EK-LM3S1968 Firmware Development Packageをダウンロードして解凍しました。
解凍したフォルダには、いくつかの例があります。それらの1つは点滅です。/StellarisWare/board/ek-lm3s1968/blinky/gcc/ に移動すると、blinky.bin というファイルがあります。Stellaris Flash Programmer を使用して、コンピューターに接続してフラッシュするだけで動作します。さまざまな例で試してみましたが、すべてうまくいきました。
ここでの目標は、/StellarisWare/board/ek-lm3s1968/blinky/ で提供されているサンプル コードをコンパイルし、フラッシュすることです。しかし、私は C やプログラミング マイクロコントローラーの経験があまりないので、あまり運がありませんでした。
LM3S1968 ライブラリを StellarisWare フォルダからコンパイラの include フォルダにコピーしました。次に、オンラインで見つけたいくつかの例に従いましたが、成功しませんでした。これは私が試したものです:
arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb blinky.c -nostartfile -T blinky.ld -o blinky.o
arm-none-eabi-ld -T blinky.ld -o blinky.out blinky.o
arm-none-eabi-objcopy -Obinary blinky.out blinky.bin
この .bin ファイルをフラッシュしても何もせず、LED は点灯したままです。
プログラムを実行する前にMCUの起動を処理するstartup_gcc.cファイルがあるためだと思います。しかし、私はそれをバンドルする方法がわかりません。
さまざまな IDE 用のファイルがたくさんありますが、フリーではないため、GNU ツールを使用したいと考えています。
ここで StackOverflow とググって検索してみましたが、答えが見つかりませんでした。