TOPPERS/JSP

.bss.sysmmr と .bss.coremmr

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

96bitの割り込みマスクを作るには?

まやさんがBF548へのTOPPERS/JSPの移植で躓いている様子。 BF548のハードウェアリファレンスマニュアルを確認すると、IRQが96種類定義されています。他のプロセッサでは64種以内におさまっていたため、割り込みマスクをunsigned long longで各ビットに割り当…

ビルド出来た

TOPPERS/JSP for BF506ですが、とりあえずsample1のビルドはできました。 BF506は命令メモリが32KBしかありません。そのため、外部Flashにプログラムを置いてその場実行するのですが、その際、SRAM16kBはキャッシュに割り当てることになります。sample1のサ…

コードの確認を開始

まやさんから預かったTOPPERS/JSPのBf506ポートのチェックをはじめました。 VDSP++でしかビルドを確認していないとのことで、まずはGCC用へコードの整形を開始しています。幸いなことに、現在プロジェクトのインストーラが使っているgnu toolchain 2010R1 は…

gdbとブート

TOPPERS/JSPには「GDBのデバッグ時リセット能力が弱いので」特別なコードを入れているのですが、今頃になって、これ、私が書いたJSPのリセット後初期化コードの問題じゃないかという気がしてきました。 今のところ「気がする」だけですが、時間を見てu-boot…

チケット #24010に対応

TOPPERS/JSP for Blackfinにおいて、チップ共通部を識別するマクロが提供されていませんでしたので、これを提供しました。CVSのHEADには適応済みです。時期未定ですが、次のリリースに入れる予定です。 http://sourceforge.jp/ticket/browse.php?group_id=12…

Tail Call Optimization

BF537/518用の検死情報機能を実装しました。そこで一つ浮上してきた問題があります。GCCのTail Call Optimizationです。 検死情報を表示するspurious_int_handler()は、device_dispatcher()の末尾から呼び出されます。このとき、GCCはTail Call Optimization…

検死情報とコールスタックの表示機能を追加

以前、サンプルとして作った検死情報の表示機能をBF533依存部の機能として実装しました。スプリアス例外と割り込みが発生すると、コンソールに待避されたコアレジスタと主要なシステムレジスタを表示します。その後、イベント発生に至るコール・スタックを表…

GDB用のシステムリセット機能を修正

屋上屋を重ねる形で開発を進めてきたこの機能ですが、思い切ってリファクタリングしました。だいぶすっきりしました。 Blackfin用のgdbproxyはどうもリセット機能が弱いらしく、安定して動作しないことがままありました。そこで、GDBでプログラムをロードし…

TOPPERS/JSP for BlackfinのC++に大域変数の初期化機能追加

長い間懸案でしたが、ようやく目鼻がついてきました。今のところ、次のような手順で動かすことができます。 $ jsp/configure -C blackfin -S kobanzame -l c++ -A cxx_sample1 $ make depend $ make lは、プログラミング言語の指定、-A cxx_sample1は、TOPPE…

著作権表示に対応

TOPPERS/JSP for Blackfinは、log_taskが動き始めるまではシリアル出力にメッセージを出すことが出来ません。そのため、著作権表示や、Sample1終了後のメッセージが表示されていませんでした。 本日、この機能を実装しましたのでCVSのjspモジュールのヘッド…

Eclipseでglobal変数が表示されない問題

http://blackfin.g.hatena.ne.jp/suikan/20090821 でボヤいた「Eclipse上のbfin-elf-gdbでTOPPERS/JSP for Blackfinアプリケーションのグローバル変数を見ることができない問題」は、指摘があったとおり変数名の頭の"_"が引き金かもしれません。TOPPERS/JSP …

Release 3.1.1

リリースしました。 gdbのリセット対策コードがU-BOOTと干渉する問題を修正しています。詳しくはリリースノートを参照してください。コールド・ブート後にもアプリケーションからSDRAMコントローラが正しく動作していることを確認しています。 http://source…

ビルドエラー

chip_mmr.cというファイルを作って、以下のような定義をずらりと並べます。 volatile unsigned short mmrPLL_CTL __attribute__ ((aligned(4), section("PWRMGMT"))); volatile unsigned short mmrPLL_DIV __attribute__ ((aligned(4), section("PWRMGMT")))…

U-BOOTのSDRC設定が継承されない問題

掲示板で指摘されている、U-BOOTはSDRAMを使えているのにSDRCのレジスタが初期化されている問題ですが、今頃真相に突き当たりました。 TOPPERS/JSPの初期化コードがリスタートしているからです。この問題はつい最近別プラットホームで同様の指摘があったばか…

リリース完了

Release 3.1.0が完了しました。ああ、暑かった。変更点はリリースノートを参照してください。ファイルもリリース済みです。 なお、CVSのRelease 3.1.0 タグは、R_3_1_xブランチに打っています。

リリース作業開始

Blackfin 依存部 Release 3.1.0へ向けての最終作業を開始しました。以下は、CHANGES.Blackfinファイルからの抜粋 2009/Jul/25 Release 3.1.0以下のチケットへの対策を行った。なお、チケットおよびその対策の詳細は以下のURLを参照 http://sourceforge.jp/pr…

defbfxxx.h抜きのコードをコミット

表題通り、VisualDSP++から持ってきていたdefbfxxx.h, cdefbfxxx.hを抜いたコードをCVSのHEADにコミットしました。 BF533版はBF533CBで動作確認済み。BF537版はコンパイルまで確認済みです。

gdb用MMR宣言をコミット

CVSにADSP-BF533用のMMR宣言をコミットしました。HEADからupdateすれば取得出来ますが、sample/Makefileを変更していますので、たぶんconfigureからやり直さなければ実行時にエラーが起きると思います。 gdbから利用する場合、レジスタはmmrXXXXでアクセスで…

g++4.3への対応

g++ 4.3ではヘッダの整理が行われており、ヘッダの暗黙のインクルードを当てにしているビルドが通りません。 チケット #17210 g++ 4.3でコンフィグレータをビルド出来ない 修正しました。大丈夫のよう。近いうちにMAINにマージします。

レジスタ・アドレス

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

Release 3.0.1

Release 3.0.1 バグフィックス・リリースです。最近報告された割り込み関係の危険なバグを修正しました。修正点については、ソースツリーのCHANGES.blackfinを参照してください。

今後の予定

現在、「チケット #16729 dis_int()が排他制御されていない」に対する対策を実装中です。 http://sourceforge.jp/ticket/browse.php?group_id=1240&tid=16729 実装と言っても、 dis_int()の廃止 chg_ims()の廃止 ena_int()内部で排他処理をきちんとする であ…

チケット #16810 hw_timer_initialize()が、冗長なIMASK操作をしている

登録のお知らせ。不具合は起こしませんが、冗長なコードです。修正します。ただし、修正は#16729の後です。

#16714のバグを修正

以下の問題を修正しました。 チケット #16714 多重割り込み時にIMASKを変更すると、間違ったハンドラが呼ばれる 修正点は以下の3点です cpu_support.Sのcall_interruptラベルの直後でcli命令により割り込みを禁止 cli命令の実行によって得た古いIMASKの値をc…

割り込みの排他処理に関するバグ(2)

昨日のエントリにコメントをいただきました。 ujinosuke 2009/05/18 12:55 #16714は candidates = priori... の部分をi_lock_cpu()等でLockすることで解決はできませんでしょうか? #16729 はdis_intする前に必ず対象デバイスをOFFして(割り込みをかからない…

割り込みの排他処理に関するバグ

TOPPERS/JSP for BlackfinのRelease 3.0.0に関して、いくつか重大なバグの報告がありました。そのうち2件にかんしては検討の結果バグであることが判明しています。以下、概要と考察です。 チケット #16714 多重割り込み時にIMASKを変更すると、間違ったハン…

古いモジュールの整理

TOPPERS/JSP for Blackfinの最新コードを格納しているのは、jspモジュールです。一方でblackfin-vdspおよびblackfinというモジュールも残っています。これらは以前使っていた開発用のモジュールです。 古いモジュールについては消してしまおうと思っていたの…

BUG #15329 コアタイマーのハンドラ名

BUG #15329 コアタイマーのハンドラ名表記が、BF533,BF537いずれでも間違っていました。これは、システムタイマーとしてコアを使うとビルドエラーとしてすぐに発覚するはずですが、長い間発覚しませんでした。2004年7月の終わりにGPタイマーとコアタイマーの…

64bit長bit論理演算

ADSP-BF533は、内蔵ペリフェラルが少なく、SIC_IMASKのうち、24bitしか使っていませんでした。ADSP-BF537は32bitすべてを使い切りました。ADSP-BF538はさらに内蔵ペリフェラルの数が増えたため、SIC_IMASKのビットに複数のペリフェラルからの割り込み要求をO…