FRK-FM3 (4) LED を点滅させてみる2012年04月28日 09時47分06秒

FRK-FM3
やっぱり最初は LED の点滅だ。
使用するプロジェクトは以前作成したものでよいだろう。
というわけで富士通の template の main.c を以下のように変更する。

 

そうそう、もう一つ変更がある Options for Target の設定の中で Linker タブの Do not use Standard System Startup Files のチェックを外すこと。

そして FUJITSU USB DIRECT Programmer で書き込み。
書き込み時間を計測してみる。
65.08秒(ストップウォッチ)
遅すぎる。何か設定があるのだろうか?

JPP1 を外して Reset (JPP2)
LED が点滅している。
とりあえず問題なかったということか?

環境:Keil µVision3 + GCC

FRK-FM3 (3) Raisonance Ride7 & ARM Tools の準備 (2)2012年04月22日 21時05分56秒

この辺でひとまずコンパイルしてみよう。
まず、リンカースクリプト。
リンカースクリプトは4つに分かれている。これは Ride7 のスクリプトにしたがって一部の値を変更するためだ。

MB9B61x_1000K_128K_FLASH.ld

 



MB9B61x_1000K_128K_DEF.ld

 



MB9B61x_COMMON.ld

 



sections_FLASH.ld
これは Raisonance オリジナルと同じなので省略。


これらのリンカースクリプトと、先日作成した crt0_MB9B61x.s を富士通のサンプルプログラムに組み込んでコンパイルしてみる。
特に問題は無いようだ。


残っているのは ARM.config と GNUtools.js の修正。


環境:Ride7 version 7.30.10.0169
    RKit-ARM version 1.30.10.0356

外国為替取引終了間際2012年04月22日 07時05分08秒

ニューヨーク時間終了間際 AUD/JPY(2012/4/21 05:59)
ニューヨーク時間終了間際、何これ。


何気なく外国為替取引業者のページを見ていた。
するとニューヨーク時間終了間際に長いひげが出ている。
どの通貨ペアも下げているようだ。
どこかのヘッジファンドが仕掛けたのだろうか?
だとすると月曜日は大暴落という事になるかも知れない。


要らぬ心配だろうか?

FRK-FM3 (3) Raisonance Ride7 & ARM Tools の準備 (1)2012年04月21日 14時24分02秒

New Project MB9BF618T
Raisonance の Ride7 & RKit-ARM に MB9BF618T を追加してみよう。
さて、まずはヘッダーファイルをコピー
system_mb9bf61x.h mb9b610t.h どこにコピーするかというと、ここ。
Raisonance\Ride\lib\ARM\include
そのつど用意してもよいがここに入れておくとパスの指定をしなくてよいもので...


次に、新規作成するもの
●crt0_MB9B61x.s
 これは crt0_LPC17x.s をベースにして作成する。
 簡単にできるがつまづくのはいつもここ。

 



●MB9BF618T.reg
 レジストリデータ、書き終えたら実行する。
 もちろんレジストリエディタを使って直接入力してもよい。

 



●MB9BF618T.sim
 Simulator data、必要な項目のみ記述する。

 



●HFARM.XML に MB9BF618T を追加
 SubFamily を追加し、そこに MB9BF618T を登録する。

 



●GNUtools.js と ARM.config については後日検討しよう。

今現在私が持っている ARM は LPC2388、STM32F103VB LPC1114/301 と FRK-FM3 (予定)だけなので当面この環境も継続してみる。


しかし、こんな事をしなくても富士通をサポートするというアナウンスが出ているので、次の次のバージョンあたりでは MB9BFx も正式にサポートされているだろう。
そうそう、私が使っているフリーのバージョン(下記の環境)はダウンロードメニューからなくなっていた。


環境:Ride7 version 7.30.10.0169
    RKit-ARM version 1.30.10.0356

フリーの ARM 開発環境2012年04月14日 07時46分19秒

フリーの ARM 開発環境の選択肢が少なくなってきた。
私が知っているのは以下のとおりだが µVision はstartup と リンカースクリプトを自前で用意しなければならないし、Ride7 はフリーで使えなくなったし、CoIDE は Cortex-M0 and M3 のみだし、TrueSTUDIO と CodeBench はまだ触っていないが、それ以外のものは最近全く更新されていない。
といったところだろうか。Kpit のようにすぐに使える環境でないのが一番頭の痛いところだ。
Keil	µVision + GCC
	Supported processors:ARM7/ARM9/Cortex-M0-M4

Raisonance	Ride7 + RKit-ARM
	Supported processors:ARM7/ARM9/Cortex-M0-M4

CooCox	CoIDE
	Supported processors:Cortex-M0 and M3

Atollic	TrueSTUDIO Lite
	Supported processors:ARM7/ARM9/Cortex-M0-M4

Mentor Graphics	Sourcery CodeBench Lite
	Supported processors:ARM7/ARM9/Cortex-M0-M4

Amontec	sdk4arm
	Supported processors:ARM7 / ARM9

BiPOM	ARM Development System
	Supported processors:ARM7

Anglia	IDEaliST
	Supported processors:STR7/STR9/STM32
という訳で手を加えなければならないならどれか一つにしようと考えている。
候補として、
Keil	µVision
Raisonance	Ride7
を考えている。
µVision は環境の変更ができないのが難点だ、一方、Ride7 はスクリプトの変更でいかようにもなるがその分手間がかかる。


Fujitsu お勧めの環境は?と調べてみると
Setup of FM3 GNU tool chain with Eclipse
Sourcery CodeBench Support for Fujitsu FM3
ヨーロッパ富士通が YAGARTO で日本富士通が Sourcery ということなのだろうか?

FRK-FM3 (2) Keil µVision3 + GCC の準備 (4)2012年04月09日 22時49分16秒

startup_mb9bf61x.s
今回はFRK-FM3 (2) Keil µVision3 + GCC の準備 (1)で作成した startup を新規プロジェクト作成時にプロジェクトに読み込むようにしてみる。

RealView を使う場合はすでに C:\Keil\ARM\Startup\Fujitsu\MB9BF610 の中に startup_mb9bf61x.s があるので問題ない。
一方 GNU-Tool を使う場合は先日作成した startup_mb9bf61x.s を C:\Keil\ARM\GNU\Startup\Fujitsu\MB9BF610 の中にコピーする。
この情報はもちろん DeviceDatabase の中に記述してある。
SFILE という項目名がそれで MB9BF618T の場合
SFILE="Startup\Fujitsu\MB9BF610\startup_mb9bf61x.s"
と書かれている。
RealView では C:\Keil\ARM\
GNU-Tool では C:\Keil\ARM\GNU\ が基準ディレクトリという事になる。
もう一つよく使うのはフラッシュライタの設定で、項目名は FLASH
FLASH="C:\Program Files\Fujitsu\FUJITSU USB DIRECT Programmer\flash.exe"()
Arguments は使えないようなのでブランクにしておこう。


環境:Keil µVision3 + GCC
参照:
Device Database Parametersデバイスデータベースのパラメータ
Customize or Add Devicesカスタムデバイスと新規デバイス
Flash Download Configurationフラッシュメニューの設定
Key Sequence for Tool Parametersツールパラメータ用キーシーケンス

FRK-FM3 (2) Keil µVision3 + GCC の準備 (3)2012年03月24日 09時36分58秒

私の記憶によれば startup.s からライブラリを呼び出し、ライブラリの中でスタックポインタの設定、RAMの初期化などを行い、そこから main() を呼び出す。という手順だったはずだ。

ところが __libc_init_array() から _init() を呼び出したが見つからないというエラーで困っているわけだ。このあたりの詳細は知らないので別の方法を考える事にする。
しかし、以前はコンパイルが通っていたのになぜこんな事になってしまったの?

別の方法とは、 startup.s の中で RAM の初期化を行い、直接 main を呼び出すやり方。

いまいちすっきりしないがここはこれで逃げておこう。
もしかするとダミーの _init() 追加でもいけるのか?

環境:Keil µVision3 + GCC

FRK-FM3 (2) Keil µVision3 + GCC の準備 (2)2012年03月04日 19時34分43秒

MB9BF618T Template
さて、project を作成してコンパイルしてみよう。

プロジェクト名は mb9bf61xt_template オリジナルのままでよいだろう。
いつものようにデバイスを選択して(MB9BF618T)プロジェクトにファイルを追加する。
追加するファイルは
startup_mb9bf61x.s
main.c
system_mb9bf61x.c
次に Options for Target の設定、先ずは出力ディレクトリを指定する。
Options for Target Output


続いて CCタブ、注意する点は Include Paths に
C:/Keil/ARM/CMSIS/Include/
を追加する事、 µVision4 では必要ないが µVision3 には必要だ。
Options for Target CC


同様にアセンブラでも CMSIS ディレクトリを Include Paths に含める。
Options for Target Assembler


最後はリンカーの設定
Options for Target Linker


そしてコンパイル。
あれ、エラーが出てリンクできない。
Build target 'MB9BF618T_Release'
compiling system_mb9bf61x.c...
compiling main.c...
../source/main.c(44): warning: return type of 'main' is not 'int'
assembling startup_mb9bf61x.s...
linking...
c:/program files/raisonance/ride/arm-gcc/bin/../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-init.o): In function `__libc_init_array':
init.c:(.text+0x38): undefined reference to `_init'
collect2: ld returned 1 exit status
Target not created
それではと 以前コンパイル動作確認済みのプロジェクト(LPC1114用)をコンパイルしてみる。
同じエラーだ。
はて...

なぜ??

環境:Keil µVision3 + GCC

FRK-FM3 (2) Keil µVision3 + GCC の準備 (1)2012年03月01日 22時24分16秒

Keil µVision3 Select Device MB9BF618T
さっそく準備を始めよう。
① keil の最新版 MDK-ARM V4.23 を手に入れる。
解凍して必要な物を手に入れるためだ。
必要なのは
Keil\ARM\INC の中の全て
Keil\ARM\CMSIS の中の全て
Keil\ARM\Startup の中の全て
Keil\UV4\UV4.cdb 
必要ないものもあるが細かな作業を省くため

②念のため現在インストールしてある環境の上記ディレクトリとファイルのバックアップを取っておく。
MDK-ARM V4.23 をそのまま使う場合はこのような手続きは必要ない。なぜこのような事をやるのかというと、 µVision4 が使いにくいからだ。

③①のディレクトリとファイルを現在使っている環境にコピーする。
ただし、私のように µVision3 を使っている場合は UV4.cdb を UV3.cdb にリネームしなければならない。ちなみに UV4.cdb は device databases file の事でコピーしたディレクトリは、この device database に関係するものだ。

④確認のため富士通のサンプルをコンパイルしてみよう。
うまくいかなければどこかに間違いがあるはずだ。


ここまでは問題なく進むだろう。手間がかかるのはこれからだ。


⑤startup を作成する。これは富士通のサンプルを修正して使うことにしよう。ファイル名も同じ startup_mb9bf61x.s でいいだろう。

 


⑥リンカースクリプト、ファイル名は ldscript_rom_gnu.ld にしておこう。

 


今日のところはここまでにしておく。
もちろん、gcc での確認はまだ行っていない。

FRK-FM3 (1) Interface 6月号付属基板2012年02月26日 08時49分42秒

MB9BF618Tメモリマップ
ずいぶん間が空いてしまった。
ブログは書き続けていたが、どれも半端になってしまい今だにアップできないでいる。

さて、今年もCQ出版社から付属基板が出るが今回は富士通のFM3だ。
スペックは
製品名		MB9BF618T
CPUコア		ARM社製Cortex-M3
Flash/RAM	1MB/128KB
Ether		2
USB		2
動作周波数	144MHz
パッケージ	LQFP-176
国産メーカのARMなので手に入れてみようと思っている。
開発環境は IAR と KEIL がサポートしている。サンプルプログラムがあったので見てみると、他社で見かける CMSIS は採用して無いようだ。ライブラリは簡単なものがあるが MB9BF51xT 用なので修正が必要かもしれない。
FLASH Programmer はシリアル接続の FLASH MCU Programmer と USB 接続の FLASH USB Direct Programmer が用意してある。
先ずは、µVision + GNU C で環境を作ってみよう。
Header File はこれでよいかな。

参照:富士通FM3ファミリ