ARM開発環境まとめ

# ARM開発環境まとめ

ARM(特にSTM32)の開発環境をまとめてみました。
対象コアは大雑把なので、実際に対応しているかどうかは、公式サイトを参照してください。
またボードが対応しているかどうかも重要です。
サンプルやテンプレート、スタートアップコードやリンカスクリプトなどが提供されていれば、開発環境の構築がだいぶ楽になります。

<br />

## IDE(有償)
有償の開発環境となります。
たいてい無償版が用意されていますが、機能が制限されています。
有償版のお試し版(期限付)もあるので、紛らわしいです。

### Keil MDK-ARM - Microcontroller Development Kit for ARM
提供: ARM
対象: Cortex-R4, Cortex-M, ARM9, ARM7
IDE: Eclipseベース
CC: armcc
ARM公式の開発環境。
ARMがKeil(カイル)を買収して公式開発環境となった。
μVisionとはコレのこと。
DS-5がLinuxOS向けに対して、MDKはベアメタル(Non-OS)向け。
MDK-Liteという32KB制限となる無償バージョンがある。

### DS-5 - ARM Development Studio 5
提供: ARM
対象: Cortex-A, Cortex-R, Cortex-M, ARM11, ARM9, ARM7
IDE: Eclipseベース
CC: armcc, armclang, Linaro GCC
RealViewの後継。
ARM公式の開発環境。
MDKがベアメタル向けなのに対して、DS-5はLinuxOS向けの開発環境。
Ultimate EditionだとARMコンパイラv6(armclang)が付属。
Professional EditionはARMコンパイラv5(armcc)が付属。
無償のCE(Community Edition)だとARMコンパイラは付属せず。
代わりに全てのEditionでLinux用Linaro GCCが付属。

### RVDS - RealView Development Suite
提供: ARM
CC: armcc
ADSの後継。
古い開発環境。

### ADS - ARM Developer Suite
提供: ARM
CC: armcc
SDTの後継。
古い古い開発環境。
公式でダウンロードできる場所を発見できず。
CodeWarriorとはコレのこと。

### SDT - ARM Software Development Toolkit
提供: ARM
古い古い開発環境。
古すぎて情報がない。

### EWARM - Embedded Workbench for ARM
提供: IAR SYSTEMS
対象: ARMコア全般
言わずと知れたIAR。
対応アーキテクチャが多いので、どのような開発でもIARを使用できる。

### TrueStudio
提供: Atllic
対象: ARM7, ARM9, Cortex-M, Cortex-R, Cortex-A
IDE: Eclipseベース
ごちゃごちゃとインストールされてしまう。
IDEをダウンロードしたくて登録したが、忘れた頃に返信が来た。

### CrossWorks for ARM
提供: Rowley Associates
パッケージが用意されているが内容が貧弱。
ボードによるのかもしれないが、スタートアップコードくらいしかなかった。

### Ride 7 - Raisonance Integrated Development Environment
提供: Raisonance
CC: GCC
昔はやったっぽい。

### SES - SEGGER Embedded Studio
提供: SEGGER
IDE: Rowley CrossWorks Professionalベース
対象: ARM7/9, Cortex-A5/7/8/9/12/15/17, Cortex-M0/0+/1/3/4/7, Cortex-R4/5
CC: GCC, LLVM
J-Linkを使ってデバッグする場合は選択肢の一つになる。
評価用は32KB制限。

### CCSudio - Code Composer Studio
提供: TI
IDE: Eclipseベース
CCSv4以降はEclipseベースとなる。

### LPCXpresso
提供: NXP
LPCXpressoボード向け。
無償版でも256KBまで対応。

<br />

## IDE(無償)
制限なしで使えるのが嬉しい無償の開発環境。

### Eclipse + α
GDBフロントエンドを持つのでデバッグが快適。
内部的にはmakeでコンパイルを行っている。
Eclipse + GNU ARM Eclipse(Plug-In, BuildTools, OpenOCD, QEMUなど) + GCC ARM Embedded(Toolchain)の組み合わせがオススメ。
参考: [EclipseとOpenOCDでSTM32(ARM)マイコン開発](http://qiita.com/Ted-HM/items/760759b6b152230b48a8)

### NetBeans + α
一応こっちでも開発できるはず。
日本語の情報は少なめかも。
参考: [Using netbeans for STM32 development with stlink (texane)](http://false.ekta.is/2012/05/using-netbeans-for-stm32-development-with-stlink-texane/)

### Qt Creator + α
linuxではQt Creator + arm-linux-gccの組み合わせが開発しやすい。
デバッガも何か用意する必要があるかも。(texane/stlink + GDBなど)

### CoIDE
提供: CooCox
対象: Cortex-M
IDE: Eclipseベース
CC: GCC
STM32ボードの偽物が流行っていた中国で開発されたFreeのIDE。
対応しているボードであれば非常に簡単に開発できる。
20015年5月くらいから更新が止まっているみたい。
公式トップのダウンロードリンクは2.0β系だが、1.x系の方がサンプルなどが充実している。

### SW4STM32 - System Workbench for STM32
提供: AC6
IDE: Eclipseベース
IDEをダウンロードしたくて登録したが、返信が来なかったので詳細不明。

### CodeLite + α
使い方がよくわからなかったが、UIは良さそうな感じ。

### EmBitz
Em::Blocksの後継。

### Em::Blocks
IDE: Code::Blocksベース
CC: GCC
EmBitzの前身。

### emIDE
Latest: V2.20(2014/05/02)
CC: GCC

### mbed
mbedに対応していたらブラウザで開発ができる。
テンプレートにはBSPライブラリも含まれているっぽくて非常に簡単。
ただし、デバッグに難があるのでホビーユース向け。
ローカル環境を構築することもできる。

<br />

## Toolchain/コンパイラ
Toolchainはコンパイラやリンカ、ライブラリをセットにしたものです。
たとえばGNU系だとgcc, binutils, newlib, gdbなどがセットになっているでしょう。
コマンドライン(make)やIDEから使用します。

### GNU Tools for ARM Embedded Processors(GCC ARM Embedded)
提供: Launchpad
CC: arm-none-eabi-gcc
とりあえずコレを使っておけば間違いない。

### Linaro
CC: arm-none-eabi-gcc
DS-5で使用されているToolchain。
LinuxOS, AndroidOS向け。
ベアメタルもいける。
参考: [Eclipse + OpenOCD + LinaroGCC on Ubuntu で STM32F4-Discovery 開発環境構築](http://ksksue.com/wiki/doku.php?id=wiki:embedded:ubuntuopenocd)

### bleeding-edge-toolchain
詳細不明。

### devkitPro
CC: arm-eabi-gcc
Homebrew toolchains for wii, gamecube, 3ds, ds, gba, gp32 and psp。
ARMコア用なので使えるはず。

### Sourcery Code Bench Lite
提供: Mentor Graphics
CC: arm-none-eabi-gcc
昔はやってたっぽい。
Mentorが買収してから登録しないといけないし、めんどくさい感じ。
Windows用バイナリの提供がなくなった？
発見できないだけかも。

### YAGARTO - Yet another GNU ARM Toolchain
CC: arm-none-eabi-gcc
昔の環境。
Launchpadに役目を譲り開発終了。

### summon-arm-toolchain
昔の環境。

### arm-linux-gcc
Linuxではコンパイラやツールチェインは他にも多数あり。
検索すれば出てくるはず。

### GCC
普通のGCCでもARMには対応している。
できればARM専用に用意されたものを使うべし。(armcc, arm-none-eabi-gccとか)
ライブラリとかオプションとかいろいろ違うはず。
参考: [ARM Options](https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html)

### clang/LLVM
clangも一部のARMコアに対応している。
ARMコンパイラv6はclangベース。
AppleもiOS用にclangを使ってたはず。
でも一筋縄ではいかなそうなのでオススメはしない。
ちゃんとARM専用に用意されたものを使うべし。(armclangとか)
参考: [[arm]Cortex-MでもLLVMを使ってみたかったが、失敗した](http://hiro99ma.blogspot.jp/2015/11/armcortex-mllvm.html)

<br />

## Debugger(Software)

### OpenOCD - Open On-Chip Debugger
単体でも使えるデバッガ。
Eclipse用のプラグインもあり。
jtag, jlink, ulink, cmsiis-dap, ftdiなど対応デバッガは多数。
JTAG接続およびSWD接続のデバッグと書き込み, SPI接続での書き込みができる。

### Zylin Embedded CDT
Eclipse用のプラグインとして提供されている。
対応デバッガなどの記述が見つけられず。
とりあえずJTAGで繋がるヤツなら何でも行けるっぽい。

<br />

## Simulator/Emulator

### QEMU
システム全体をエミュレートできる。
GNU ARM Eclipseに一部の基板に対するパッケージが配布されていた。
Androidのシミュレータとしてよく利用されていた。

### SkyEye
シミュレーション環境。
ITRONベースのRTOSであるTOPPERSのシミュレーション環境があるらしい。
参考: [SkyEye（TOPPERS版）とGDBデバッグ可能な環境の準備(CodeSourceryを使わずに)](http://nsaito-nmiri.hateblo.jp/entry/2015/05/20/191825)

<br />

## Others

### MSYS2
シェル(bash)+ターミナル(mitty)。
コマンドライン環境はあると便利。
pacmanが使えるので簡単に環境を整えることができる。
MinGW環境を揃えればgccやmakeも可能。

### Vim
GDBフロントエンドあり。
KaoriYa版のものがチュートリアル付きで覚えやすい。
組み込みLinuxやるならviの操作を覚えておいたほうがいいかも。

### GNU Emacs
言わずと知れたEmacsエディタ。
GDBフロントエンドあり。

### Programmer's Notepad
コンソール付きのエディタ。

### Insight
GDBフロントエンド。
ただし古いので環境によっては動かないかも。

### Source Navigator
簡易エディタが付いたソースコードの解析ツール。

<br />

## 参考

[ARM開発に必要な開発環境には、有償のほかにフリーのツールも存在します - EIPC](https://www.eipc.jp/embedded/arm/20140331.html)
[STM32をはじめとしたARMマイコンをGCCでビルドする環境を整える(2015年度後期版)](http://nemuisan.blog.bai.ne.jp/?eid=188089)
[mbedをなめていた](http://sunnydays-k.hatenablog.com/entry/2016/01/17/mbed%E3%82%92%E3%81%AA%E3%82%81%E3%81%A6%E3%81%84%E3%81%9F)
[横河ディジタルコンピュータ](http://www2.yokogawa-digital.com/arm_tool/development_list.html)
[開発ソフトウエア - Postive ONE](http://www.segger-pocjapan.com/#!about-3/c1pzj)