gdb

.bss.sysmmr と .bss.coremmr

先日のやりとりの結果、Mayaさんが遭遇していた「bfin-elf-gccで作ったLDRファイルがBlackfinでロードしない」と言う問題は、Makefileの中の次のコマンドの副作用によるものでした。 $(OBJCOPY) -R .bss.sysmmr -R .bss.coremmr $(OBJFILE)このコマンドの起…

泥沼っぽい

今朝書いた「おおげさな話」 ldのスクリプトで、出力セクション名を.bss.で始まる名前にすると、NOBITSになるのでロードされないはず bfin-elf-gdbは、.bss.で始まる名前の出力セクションをロードしない。計画どおり。 しかしu-bootは、NOBITSなセクションを…

セクションをロードさせない方法

話が大げさになってきました。 u-boot BOOTELF clearing SHT_NOBITS sections このスレッドでは、「NOBITSフラグが立っているセクションを全部ゼロフィルするのは乱暴ではないか」という問いかけに対して、かなり強行に反論が出ています。自信があるのか居丈…

セクションをロードさせない方法

ELFの中の特定のセクションをローダーやgdbにロードさせない方法を探していましたが、とうとうみつけました。 ".bss."で始まる名前の出力セクションは、NOBITSになり、ロードされない。 当初、適当なセクション名にして(NOLOAD)をLDスクリプトで指定しました…

MMR宣言では不十分

gdb

gdbでMMRをアクセスできるように導入した宣言は、大変強力です。 たとえば、現在gdbによるリセット機能について調べていますが、IPENDやILATを調べるのに大変重宝しています。 一方で、問題もわかってきました。MMRは変数として宣言しています。ところが、LD…

結局MMR定義セクションは、OBJCOPYで削除する方向で

GDB

id:/suikan/20090628で検討したgdb向けのMMR定義セクションですが、いろいろ考えてもgdbでロードしない方法がわかりませんでした。仕方がないので、Makefileを書き換える方向で進んでいます。 TOPPERS/JSPのコンフィグレータはjsp/sample/Makefileを元にそれ…

LDで逃げられないかも

gdb

レジスタ宣言を変数として行ったとき、gdbがいらない領域をelfからロードする問題。 LDスクリプトの .sysmmr : { . = ALIGN(0x0100); sys_mmr.o(SYSRST)} > MEM_SYSMMRとなっているところを、 .sysmmr (NOLOAD) : { . = ALIGN(0x0100); sys_mmr.o(SYSRST)} >…

レジスタ宣言の効果を確認

gdb

レジスタ宣言を組み込んだjspでsample1を作り、gdbに与えてみました。 とても便利です。 そのまま与えると、MMR領域にやはり何か値を書き込もうとします.そこで、 $ bfin-elf-objcopy -R .sysmmr jsp $ bfin-elf-objcopy -R .coremmr jspとして、データを引…

ADSP-BF533のレジスタ宣言完了

gdb

出張中でしたので、移動時間を使ってCORE MMRとSYSTEM MMRの宣言を全部終わらせました。アドレスの正しさの検証には、unixのフィルタ群を活用しているので、ほとんどストレスなしに正しさのチェックを行えます。 明日実験してみるつもりですが、今のところ気…

レジスタの宣言

gdb

Blackfin用のプログラムでは、例えば次のようにしてレジスタへのアクセスを提供するのが普通です。この方法はVisualDSP++で用いられている方法です。 #define pPLL_CTL ((volatile unsigned short *)PLL_CTL)これで例えば *pPLL_CTLとすればC言語プログラム…

レジスタ・アドレス

現在、TOPPERS/JSP for Blackfinのレジスタ・アドレスはADIのインクルード・ファイルをそのまま使っています。しかし、これを変更しようかと思っています。 理由の一つは、ライセンスが不定であること。通常、半導体メーカーが自社半導体上のアプリケーショ…

コツが掴めてきた

コツがあるのかよ!と突っ込まれそうですが、癖というか、地雷を避けながらEclipseでBlackfinアプリのデバッグをする方法が分かってきました。 きちんとしたまとめは、空挺団の方に書きますが、現時点で分かっていることを書きなぐると、 bfin-elf-gdbとbfin…

GanymedeでBlackfinのデバッグができたかも

速報。 VMWareではなく、スタンド・アローンPCにインストールしたUbuntu Linux 8.04 LTS 上で、Eclipse 3.4 (Ganymede)の実験をしていました。 ふと、思い立って、Zylin CDTではなくCDT + GDB Hardware Debugging Plug-inの構成にしてみたところ、あっさりロ…

デバッガからのリセット

コメントをいただきましたので、もうすこしリセットについて書いておきます。 プリンタポート版gdbproxyのmonitor resetは、なぜか完全ではありません。リセットを行っているのですが、どうしてかきちんとアプリが走らないことがあります。ソースコードを覗…

GDBに固有の問題?

VDSP++では発生しないものの、GDBを使うとたまに異常な割り込みを起こして停止する問題が発生しました。たまにというのが曲者で、出るときにはガンガン出ます。調べたところ、どうやらGDBがプログラムをロードするときにプロセッサを明示的にリセットしない…

gdbproxyとCygwin

gdb

一念発起して昨晩Cygwinでのビルドに再挑戦しました。まず、Cygwinの開発用パッケージを全インストール。で、gdbproxyのjtagサブディレクトリからビルド jtagサブディレクトリ makeをかけると libintl_gettextがないぞごらぁ ___swab32がないぞごらぁ という…

もとい

昨日行ったstart.Sとcpu_support.Sの変更を元に戻すと、何事もなかったかのように動き出しました。行った変更というのは、イベント・フックをファイル間で移動しただけです。 VisualDSP++版ではイベント・フックや割り込みディスパッチャと私が呼んでいるITO…

いきなり不調

小さな不具合を修正するためにほんのちょっとソースをいじったのですが、とたんにgdbがおかしくなってしまいました。loadまでは行きますが、continueをかけた瞬間にトラップがかかって制御不能になります。一方、VisualDSP++を使ってロードすると問題なく動…

DLC5の接続

gdb

EZ-KIT BF533のJTAGポートとDLC5の接続です。Analog DevicesのJTAGポートは3.3Vが出ていないので面倒でした。 詳しくはid:suikan:20060708を見ていただくとして、写真は簡単接続用のメモ。太いワイヤーはDLC5のものです。赤い線は+3.3V。細くて白い線は、EZ-…

sample1が動いた

ようやく、TOPPERS/JSP for Blackfinをgnuツールチェーンで動かすことができました。アプリケーションはsampl1。ステップはこんな感じです。 VisualDSP++4.5/EZ-KIT Liteにsrecloaderによってjsp.srecをロード めちゃめちゃロードに時間がかかる。動かないが…

SDRAMコントローラ初期化

gdb

ようやくEZ-KIT Liteに接続できましたが、接続直後はEZ-KIT LiteのSDRAMコントローラを初期化していないので、危なっかしくて使えません*1。 使用する前にSDRAMコントローラを初期化する必要があります。そこで次のようなコマンドファイルを作っておいて、gd…

gdbproxy / DLC5

gdb

ようやくデバッガの接続までいきました。ターゲットはEZ-KIT Lite BF533です。いくつかポイントを。 jtag/bfemu/jtag.c cable_paramsの設定は以下のようにしました。 char * const cable_params[] = { "parallel", "0x378", "DLC5" }; PCごとにいろいろ試す…

gdbproxy

gdb

gdbの最初のターゲットとしてシミュレータを使うか、エミュレータを使うか。さしたる理由もなくエミュレータに傾いています。そういうわけで、SUSE 10.1にgdbproxyをインストールしました。 SUSE 10.1に以下のパッケージをインストールする readline autocon…