フリーの ARM 開発環境 (2)2012年07月02日 23時57分30秒

私は統合開発環境が好きだ。というわけで Keil µVision や Raisonance Ride7 を使っている。Raisonance の場合 IDE と共に コンパイラも手に入るが Keil の場合は必要に応じて自分で手に入れなければならない。 そこで、フリーのコンパイラをメモしておくことにする。


Sourcery CodeBench Lite Edition
GNU-Tool-Prefix:arm-none-eabi-
GNU-Tool-Folder:C:\Program Files\CodeSourcery\Sourcery_CodeBench_Lite_for_ARM_EABI
PATH=C:\Program Files\CodeSourcery\Sourcery_CodeBench_Lite_for_ARM_EABI\bin
 世の中に一番出回っているのではないかと思う。


Yet another GNU ARM toolchain
GNU-Tool-Prefix:arm-none-eabi-
GNU-Tool-Folder:C:\Program Files\yagarto
PATH=C:\Program Files\yagarto\bin
 時々耳にする。


GNU Tools for ARM Embedded Processors
GNU-Tool-Prefix:arm-none-eabi-
GNU-Tool-Folder:C:\Program Files\GNU Tools ARM Embedded\4.6 2012q2
PATH=C:\Program Files\GNU Tools ARM Embedded\4.6 2012q2\bin
 Keil µVision4 環境のデフォルト。(以前は CodeSourcery が推奨されていた。)


devkitPro
GNU-Tool-Prefix:arm-none-eabi-
GNU-Tool-Folder:C:\Program Files\devkitARM
PATH=C:\Program Files\devkitARM\bin
 時々耳にする。


netx-arm-elf-gcc
GNU-Tool-Prefix:arm-none-eabi-
GNU-Tool-Folder:C:\Program Files\arm-none-eabi-gcc-4.7.1
PATH=C:\Program Files\arm-none-eabi-gcc-4.7.1\bin
 あまり聞いたことが無い。


こんなところだろうか。

フリーの ARM 開発環境 (3)2012年07月05日 22時53分43秒

時間をもてあましていたので各コンパイラのコード効率を見てみることにした。
使う環境は
IDE		Keil µVision4
Source		ARM DSP_Lib V1.1.0
Optimize	Level3
テストするコンパイラは
arm	Keil MDKARM
	MDK-ARM 4.53

devkitarm	devkitPro 
	devkitARM_r41-win32

G++	Sourcery CodeBench Lite
	arm-2012.03-56-arm-none-eabi

GCC	GNU Tools for ARM Embedded Processors
	gcc-arm-none-eabi-4_6-2012q2-20120614

yagarto		Yet another GNU ARM toolchain
	yagarto-bu-2.22_gcc-4.7.1-c-c++_nl-1.20.0_gdb-7.4.1_eabi_20120616
順調にテストは進んでいったが、yagarto でだけコンパイルできない。
以前使ったときは何の問題もなかった気がする。
今のところ原因不明。
というわけで、結果は
Library Name		ARM		devkitarm	G++		GCC		yagarto
arm_cortexM0l_math	10,611,910	2,259,692	2,056,388	2,034,376	2,237,856
arm_cortexM3l_math	10,911,354	2,737,124	2,622,680	2,603,324	2,715,036
arm_cortexM4l_math	11,080,918	2,696,036	2,634,504	2,595,522	2,674,284
arm_cortexM4lf_math	11,165,886	2,642,920	2,580,528	2,541,592	2,621,156
しかし、ARM はなぜこんなに大きいのだろう?それ以外はすべてGCCなのだが微妙にサイズが異なっている。一番コンパクトに収まっているのは GNU Tools for ARM Embedded Processors 。結果から GCC バージョンの古いほうがサイズが小さい。たいした差ではないので好みで選べばよいだろう。


ここで気がついたことがひとつある。
今まで GNU-Tool-Prefix と GNU-Tool-Folder の設定だけすればよいと思っていたが、実は環境変数 PATH も設定しなければならない。もちろん PATH は GNU-Tool-Folder に \bin を付加したもの。(Sourcery CodeBench Lite 等はインストール時に環境変数 PATH に追加する。)何が動かないかというと arm-none-eabi-ar だ。こんなメッセージが出てきてはじめて気がついた。


'arm-none-eabi-ar' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。


それにしても yagarto が動かないのが悔しい。エラーメッセージは何も出てこないので厄介かもしれない。時間のあるときに調べてみよう。


追記:2012/07/07
何回か Windows のリブートを繰り返しているうちにコンパイルできるようになった。
原因不明。というわけで yagarto のデータも追加した。

追記:2012/07/08
原因がわかった。 yagarto は、環境変数 PATH に bin ディレクトリの指定が必要だった。指定後リブートしなければ有効にならないので混乱していたのだ。ただし、arm-none-eabi-ar は bat ファイルで動くので全ての gcc コンパイラに PATH の指定が必要だ。
というわけで、bin ディレクトリの指定をしておけばどのコンパイラも問題なく動くということだ。

フリーの ARM 開発環境 (4)2012年07月08日 22時16分34秒

MDK-ARM V4.53
今まで µVision3 を使い続けてきたがこのあたりで µVision4 に乗りかえることにする。
知らない間にgccに関する不具合も多少改善されており、使い勝手も次第によくなってきたからだ。それに、必要な部分のみ µVision3 にコピーするのもいい加減面倒になってきた。コンパイラを Ride7 と共有するにもちょうどいい機会だ。

インストールするのは MDK-ARM V4.53 最新版だ。GCCコンパイラは次のどちらにするか迷っている。
Sourcery G++ Lite 2011.03-42
Sourcery CodeBench Lite 2012.03-56
どちらにしてもインストールするディレクトリは
C:\Program Files\Raisonance\Ride\arm-gcc
インストールする前にバックアップを取って中身を削除しておこう。
今回は Sourcery CodeBench Lite 2012.03-56 にしてみる。

◎Ride7 はディレクトリを変更してないので ARMUtilities.js の Include PATH の一部を 4.4.1 から 4.6.3 に変更する。
◎C:\Program Files\Raisonance\Ride\lib\ARM\sections_FLASH.ld の end address of idata 計算部分に括弧をつける。(ld の仕様が変わったのだろうか。括弧がないとエラーになる。)
_eidata = _sidata + (_edata - _sdata) ;

◎µVision4 は GNU-Tool-Folder を C:\Program Files\Raisonance\Ride\arm-gcc にするだけでよい。

どちらも現在のところ問題なく動いているようだ。

環境:Raisonance Ride7 version 7.30.10.0169
    Raisonance RKit-ARM version 1.30.10.0356
    Keil MDK-ARM V4.53
    GCC Sourcery CodeBench Lite 2012.03-56

KPIT GNU Tools (19) GNUSH v1202 Windows Tool Chain (ELF) と avast (1)2012年07月19日 22時30分20秒

avast
困ったことになった。
GNUSH v1202 Windows Tool Chain (ELF) をインストールしたものの HEW からコンパイルするたびに セキュリティソフト avast が動いてしまう。

このファイルをマルウェアであると識別するのに十分な証拠は得られませんでした。

のポップアップが何十回と出てきて「実行を続ける」を押し続けなければならない。

Ride7 や µVision では起こらないので HEW 特有の何かがあるのだろう。
今のところ対処方法不明。

KPIT GNU Tools (19) GNUSH v1202 Windows Tool Chain (ELF) と avast (2)2012年07月22日 20時33分06秒

自動サンドボックスを無効にする
某bbsに「自動サンドボックスを無効にするとよい」と書いてあったので試してみる。
追加の保護
自動サンドボックス 設定
[自動サンドボックスを有効にする]のチェックを外す


おお!
あの煩わしい画面が出てこない。

とは言ってもOFFにしてしまうと少々不安だ。
というわけで、「自動サンドボックスから除外されるファイル」というのを設定してみた。
コンパイルリンク・ライブラリ作成は問題ないようだ。しかし、新規プロジェクトを作った場合、一番最初に sh-elf-g++.exe と cc1plus.exe はプロジェクト中のファイルの数だけ出現する。ほかの実行ファイルとプロセスの起動方法が異なるのかもしれない。
そして、[実行を続ける]を押した回数だけ「自動サンドボックスから除外されるファイル」の数が増えていく。つまり、実行を続けるをクリックすると自動的に「自動サンドボックスから除外されるファイル」に登録されて次回から検査対象外になる仕組みなのだろう。
しかし、この機能がうまく働いてないようだ。

というわけで根本的な解決には至っていない。

KPIT GNU Tools (20) GNUSH v1202 Windows Tool Chain (ELF) に SH7450 SH7455 を追加する2012年07月29日 22時01分08秒

sh7450/sh7455
Kpit GNUSH v1202 Windows Tool Chain (ELF) に SH7450 SH7455 を追加してみよう。
まず、メモリーマップを見てみる。
	SH74504			SH74513
ROM	00000000~001FFFFF	00000000~0017FFFF
RAM	18000000~1807FFFF	18000000~1807FFFF
OL	E500E000~E5011FFF	E500E000~E5011FFF
IL	E5200000~E5201FFF	E5200000~E5201FFF

	SH74552			SH74562
ROM	00000000~000FFFFF	00000000~000FFFFF
RAM	18000000~1803FFFF	18000000~1803FFFF
OL	E500E000~E5011FFF	E500E000~E5011FFF
IL	E5200000~E5201FFF	E5200000~E5201FFF
ROM と RAM のサイズが違うので SH7450 と SH7455 の二つにする。ここでは、SH7450 についてのみ述べる。

以下に示すファイルを新規作成又は修正することにする。(ここに示すのは SH7450 の例)
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Support_3\scapp.det
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Support_3\scppapp.det
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Support_3\SH-4A\SH7450.PGD
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Generate\env\SH7450.s
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Generate\hwsetup\7450.c
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Generate\IntPRG\SH7450.c
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Generate\iodefine\7450.h
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Generate\vect\SH7450.inc
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Generate\VECTTBL\SH7450.c
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Generate\vhandler\sh7450.s
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\Hardware\SH-4A\SH7450.dat

さあ、はじめてみよう。
● scapp.det scppapp.det に SH7450 を追加
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Support_3\scapp.det
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Support_3\scppapp.det

 



●SH7450.PGD を追加
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Support_3\SH-4A\SH7450.PGD

 



●env\SH7450.s を追加
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Generate\env\SH7450.s

 



●hwsetup\7450.c を追加
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Generate\hwsetup\7450.c

 



●IntPRG\SH7450.c を追加
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Generate\IntPRG\SH7450.c

 



●iodefine\7450.h を追加
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Generate\iodefine\7450.h

 



●vect\SH7450.inc を追加
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Generate\vect\SH7450.inc

 



●VECTTBL\SH7450.c を追加
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Generate\VECTTBL\SH7450.c

 



●vhandler\sh7450.s を追加
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\GNUSH_Info\Generate\vhandler\sh7450.s

 



●Hardware\SH-4A\SH7450.dat を追加
C:\Program Files\Renesas\Hew\System\Pg\KPIT GNUSH-ELF\Hardware\SH-4A\SH7450.dat

 



うまくできているのだろうか?
プロジェクトを作ってコンパイルしてみる。
問題はなさそうだが最終は現物が手に入ってから確認することにしよう。

環境:High-performance Embedded Workshop Version 4.09.00.007
    KPIT GNUSH v12.02 Windows Tool Chain (ELF)