スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

OpenOCD MB9BF121対応版

久しぶりのblog更新となります。なんか、制欲(制作意欲)が湧かなくてアニメを見たり、小説を読んだりとフラフラとしておりました。

ずいぶん前になりますが、Cypress(Spansion)からFM3の32pinパッケージ品が出ていました。一般に手に入るようになったのは昨年末くらいだったでしょうか(Digi-Key)。少ピン品が欲しかったのでサクッと買ってしまったのが冒険の始まりに……まっ、いつものOpenOCDへ対応させる事になってしまったのです。

MB9BF121は少ピンになったので、JTAGではなくSWDで繋ぐ必要があります。OpenOCDではFDTIを使ったドングルでSWD接続できるようになったので、JTAGkey cloneで試してみました。JTAGkeyのコネクタ変換基板とMB9BF121の変換基板を作成しています。

RIMG0631.jpg RIMG0630.jpg
RIMG0629.jpg

MB9BF121に搭載されているFlashは今までのと書き込みシーケンスが異なっていたのと、CRトリミングデータが消されてしまう現象(仕様)となっていたのでチョイ変どころではない変更になってしまいました。

mb9bf121_flash_size.png

MB9BF121のFlashは上図の様に1セクタ=8Kbyteです。4byte毎にセクタが入れ替わるというヘンテコな仕様では無くなってます。また、最終セクタ(SA7)が4byte分少ないです。この4byteはというと…CRトリミングデータ用の領域に使われちゃってるんですね。それも、SA7をセクタイレースしたり、FlashをチップイレースするとCRトリミングデータも消えてくれるというステキな仕様です。なのでこのケースではイレース前にCRトリミングデータを読み出し、イレース後に書き込む処理を追加しました。

Flashへのデータ書き込みのシーケンスが大幅に変わったのでこれにも対応しました。FM3、FM4、FM0+シリーズは全てFlash書き込み時は2byteアクセスする必要があり、OpenOCDからは直接2byteアクセスが出来ない(1byteアクセスを2回行う)仕様なので、従来からFlash書き込みシーケンスはアドレス依存しないように記載したソースコードから機械語を生成してRAMに展開して書き込んでいるのですよね。なので今回同様に対応しました。この時、FM4対応で入った方法を参考にインプリしています。

これらの対応で、OpenOCDからの書き込みではCRトリミングデータを消すことなしにFlashへプログラムを書き込む事ができます。

openocd_mb9bf121_fll_write_cr.png

対応したOpenOCDとMB9BF121のプロトタイプは【物置】に置きました。
これでようやくスタートラインに立つことが出来ました。
スポンサーサイト

tag : OpenOCD

OpenOCDのFM4対応

先日、秋葉原の某所で Spansion のマイコンである FM4 の評価ボード SK-FM4-U120-9B560 が先行発売されました。私がその情報を知ったのが発売日の1週間前で超焦りましたが、無事(?)半休を取ってGetしてきました(午後休がとれればそのまま秋葉原を散策できたのに…)。

RIMG0591.jpg

RIMG0594.jpg RIMG0595.jpg

乗ってるマイコンは MB9BF568R です。ES品ですが、そこは仕方がないでしょう。でもでも Flash:1024kbyte品です。Spansion さん奮発しましたね。それと、CMSIS-DAPに対応しているという触れ込み上それを実現するためのマイコンとしてUSB-STICK(SK-FM3-48PMC-USBSTICK)にも使われている Cortex-M3 の MB9AF312K が乗ってます。正直、CMSIS-DAP には興味ないのでこのチップいらないのですが…。何故興味ないかは……JTAGコネクタが付いてればそっち使った方が手っ取り早いからですね。ハイ。でもでも、評価ボードのユーザーズガイドにはCMSIS-DAP経由の接続方法しか書かれてないのです。JTAGは勝手に使って状態。

CMSIS-DAP, JTAG のどちらで繋ぐにも自分の土俵に持ってくるには OpenOCD で使える様にしないと駄目です。といっても OpenOCD は Cortex-M4F には既に対応しているので、追加対応するのは内蔵Flashの読み書き部分です。

内蔵Flashは富士通時代から受け継がれていて FM3 とほぼ同じです。古い MB9AFxxxシリーズ のコマンド形態ですね。ただ、セクタの切り方が FM3 と異なるので、このあたりはチマチマと編集するしかないです。大半が FM3 と同じ内容ですが、今後の事も考えて別ファイルを作成しました。一応、現時点で公開されている種類は全て網羅しておきましたが、試す環境がないので正常に読み書き出来るかは不明です。

FM4 に対応した OpenOCD と プロトタイププロジェクト を 【物置】 に置きました。OpenOCD は FM4 対応を優先としたので、Versaloon-SWD には対応していません。そのうち対応してやらねば…。FM4のパッチは OpenOCD の圧縮ファイル中に入れています。cfgファイルは ねむいさん の所のを少し変更して使わせてもらいました。

久しぶりに OpenOCD をコンパイルしたのですが、いつの間にか libftdi を必要としなくなってました。これにはビックリです。というか、libftdi のコンパイルが cmake を使っていて厄介だったので今後楽が出来ます。といってももうコンパイル方法は確立しているのでぶっちゃけどっちでも良いのですがね。あっ、でも未だに cygwin 環境では libftdi をコンパイル出来ていないのでそこはありがたいかもです。結局 OpenOCD 以外のソフトには必要だったりしますがね。

RIMG0596.jpg

fm4_prototype_project_v1_flash_write.png

fm4_prototype_project_v1_insight.png

JTAGkey clone で繋いで Flash へ書き込みして insight でデバッグしてみました。テスト用のコードなのでステップ実行して楽しむくらいの内容ですが。赤いジャンパはCMSIS-DAPを常にリセットするのに付けてます。本来は付ける必要ないのですが、かといって使わない物を動かしておくのも何だと思ったので止めておきました。

余談ですが、insight はいつも sourceforge に上がっているのを使ってましたが、日本語を表示してくれないのに少しというかかなり不満があったのですが、Hiroさんという方がその辺を解決させた insight をUPされているみたいです。まだ使ってないので使い心地はどうなんでしょう? arm-none-eabiに対応してなかったです。それと、sourceforgeの方でもファイルをUTF-8形式で保存すると日本語も表示してくれます。ようやくCygwin上でコンパイル出来るようになったのだけど、この事実を知って脱力しました…。

RIMG0597.jpg

この評価ボード、裏面に NAND-Flash, SRAM, SDRAM を付けることができるパターンがあります。これらを付けて遊んでみるのも面白いかもしれません。

tag : OpenOCD

tag : FM4

OpenOCD v0.8.0-dev コンパイル

--- 2013/10/20 追記 ----
pkg-configを入れ直すとconfigureが通るようになりました。
ただし、以下のWARNINGが出てFTDIデバイスのハイスピード非対応となってしまいます…。
checking for library containing ftdi_new... none required
checking for libftdi highspeed device support... no
configure: WARNING: You need a newer libftdi version (0.16 or later).
checking for libftdi FT232H device support... no
configure: WARNING: You need a newer libftdi version (0.20 or later).

------------------------

諸事情で2ヶ月半くらいOpenOCDをコンパイルしていなかった。自前でパッチを充てている部分もあるのであまり空けすぎるとパッチがあたらなくなるので、久しぶりにコンパイルしてみました。

今回は失敗(?)編です。
何がというと、妥協してコンパイル環境を変えてしまったのです。今まではCygwin(64bit版)でWindowsネイティブな実行ファイルを作る様にしていたのですが、libusbのパッケージチェックがコミットされて pkg-config が必要になったのですが、何故かCygwin上で期待した通りに動いてくれませんでした。

configureを実行すると、途中で以下のエラーを吐き出して処理が停止します。

./configure: line 4449: syntax error near unexpected token `0.23'
./configure: line 4449: `PKG_PROG_PKG_CONFIG(0.23)'

README.Windowsに MSYSの場合は pkg-config-lite を入れる様にと記載があるのですが、Cygwinでの方法は記載されていません。試しに、上記内容をそれぞれのフォルダに入れて実行してみましたが、結果は同じ。Cygwinでは pkg-config をパッケージとして落としてくる事もできるので、それでも試しましたが結果は変わらずでした。ちなみにversionは 0.28 でした。

configureの上記部分をコメントアウトし、それ以降を実行しても結局以下の部分で止まってしまいました。

./configure: line 14723: syntax error near unexpected token `LIBUSB1,'
./configure: line 14723: `PKG_CHECK_MODULES(LIBUSB1, libusb-1.0,'

試しにLinux(Ubuntu 12.04)上のクロスコンパイル環境で実行してみると先に進む気配があったので今回はLinuxでコンパイルすることにしました。

Linux上のクロスコンパイル環境ではHOMEディレクトリ下に libusb, libusb-1.0, libftdi, libftdi-1.0等を置いています。個別に何がインストールされるか確認したかったのでprefixをそれぞれユニークなディレクトリにしてインストールしていて、それに対するシンボリックリンクで1箇所にまとめています。なので、パッケージの検索先を PKG_CONFIG_PATH に設定しています。i686環境とx86_64環境では参照するパッケージが異なるので、configure時に指定しました。

$ ./configure --enable-maintainer-mode --disable-werror --disable-shard --enable-ft2232_libftdi --enable-ftdi --enable-jlink --enable-vsllink --enable-stlink --enable-ti-icdi --build=x86_64-linux-gnu --host=i686-w64-mingw32 CFLAGS="-m32 -I/home/jujurou/tools/i686/include" LDFLAGS="-L/home/jujurou/tools/i686/lib -lusb-1.0" PKG_CONFIG_PATH=/home/jujurou/tools/i686/lib/pkgconfig

これで一通りはコンパイルできます。
今回は必要最小限のパッチを充てての作成にしました。


libusb-0.1 はコンパイル済みの物を使用していて、パッケージファイルは同梱されていなかったので(当たり前か)、自分で他のファイル内容をまねて以下の様な感じに作りました。

File: libusb.pc
prefix=/home/jujurou/tools/i686/temp/libusb-1.2.6.0
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: libusb-1.2.6.0
Description: C API for USB device access from Linux, Mac OS X, Windows and OpenBSD/NetBSD userspace
Version: 1.2.6.0
Libs: -L${libdir} -lusb
Libs.private:
Cflags: -I${includedir}


【注意点】
Linuxのクロスコンパイル環境で作成した openocd.exe をWindows上で動かすと、Norton先生にウィルスと間違われて削除される。といった現象に何回かぶち当たっています。コンパイル内容を少し変更すると削除されなかったりするのですが、根本原因は不明です。私の環境ではNorton先生に openocd.exe は健全ですよ宣言を追加してるので、上記現象は出ないのですが、物置に置いてあるファイルを他の方の環境で実行された場合に発生する可能性があります。

tag : OpenOCD

黒ねこ時計 くろック D02
プロフィール

jujurou

Author:jujurou
運営HP:チャコの部屋
Twitter:jujurou

カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
最新記事
最新コメント
カテゴリ
ユーザタグ

ぺるけ RaspberryPi Linux トランジスタ式ミニワッター TRminiWatterPart4 MPD OpenOCD イーサネットコンバータ FON2405E DAC buildroot FM3ペリフェラル BeagleBoneBlack FM3評価ボード library OpenGL mingw ODROID-U2 TL-WR700N Edison bitbake KiCad 計測 VMware シングル FM4 ミニワッター 6N6P プリアンプ 

月別アーカイブ
ランキング

FC2 Blog Ranking

カウンター
検索フォーム
リンク
RSSリンクの表示
QRコード
QRコード
ライセンス
クリエイティブ・コモンズ・ライセンス
Twitter
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。