さて、先週ターゲットにロードできずに首をかしげたTOPPERS/JSPのADSP-BF592ですが、同じ環境でGDBのシミュレータをターゲット環境に選ぶ(target sim)と、あっさりロードできました。
また、ベアメタル・アプリケーションであればターゲットがsimであろうとgdbserverであろうと正しくロードできます。
今のところ、整理するとこんな感じです。環境はUbuntu 10.04 LTSでツールチェーン 2011R4、ICEは刺身包丁です。また、以下のsample1とは、TOPPERS/JSPの試験アプリケーションです。
ターゲットがKobanzame 基板(ADSP-BF533)
- sample1 (BF592ターゲット)をロードすると、start:以下におかしなプログラムが現れる。
- sample1 (BF533ターゲットのメモリ配置をBF592風に小変更した物)をロードすると、start:以下におかしなプログラムが現れる。
- ベアメタル・アプリケーションをロードすると、正しくロードできる。
ターゲットがACB-BF592基板のとき
- sample1 (BF592ターゲットのメモリ配置をBF533風に小変更した物)をロードすると、正しくロードできる。
- sample1 (BF533ターゲット)をロードすると、正しくロードできる。
- ベアメタル・アプリケーションをロードすると、正しくロードできる。
ターゲットがシミュレータのとき
- sample1 (BF592ターゲット)をロードすると、正しくロードできる。
- sample1 (BF533ターゲット)をロードすると、正しくロードできる。
- ベアメタル・アプリケーションをロードすると、正しくロードできる。
考えられること
BF592ターゲットのsample1とベアメタル・アプリケーションはLDFにわずかに違いがあります。そのうち、ロード時に問題を起こしそうな部分は、メモリ・セグメントの定義部です。ベアメタル・アプリはコードメモリをSRAMとキャッシュに分けていますが、TOPPERS/JSPのBF実装では、32kB全部がSRAMであると仮定しています。この辺があやしいかもしれません。
追記
問題解決しました。ツールチェーン2011Rでは動作します。詳細はこちら。