BF592のUARTブート方法

ADSP-BF592のUARTブートに成功したので方法を記しておきます。

UARTブートはJTAG-ICEを使わずにPCからBlackfinをブートできる便利な方法ですが、当然PC側に何らかのホストプログラムが必要です。つまり、Blackfinにあわせて実行プログラムをUARTから送り込んでやる、ホストプログラムです。

ちょっと前からJavaやPythonで組めないかなと探っていたのですが、簡単な実験に成功した後に気づきました。Blackfin Koopの配布パッケージに含まれています orz 。

LDRファイルを作る

bfin-elf-ldrは、ELFファイルからBlackfinのロードファイル(LDR)形式のデータを作り出すプログラムです。しかしながら、このプログラムにはもう一つの顔がありました。LDRファイルをUART経由で送信する仕事です。はい。問題解決ですね。

ADSP-BF592を例に取りましょう。私はACB-BF592とUB-232Rをブレッドボード上に組んで実験しました。

最初にBF592上で動作するELFファイルを用意します。私はTOPPERS/JSP for Blackfinでsample1をビルドしました。生成したファイル名はjspになります。拡張子はありません。

これをコマンドライン上で次のように実行して変換します。

$ bfin-elf-ldr -T BF592 -c jsp.ldr jsp

これでLDR形式の、jsp.ldrができあがります。-TオプションはターゲットプロセッサがBF592であることを指示し、-c オプションはLDRファイルを作ることを指示しています。

LDRファイルをターゲットにロードする

次に同じbfin-elf-ldr コマンドを使って、今作ったLDRファイルをターゲットのBF592にロードします。ターゲットをリセットしてから以下のコマンドを実行してください。

$ bfin-elf-ldr -l jsp.ldr /dev/ttyUSB0 -b 57600 -C

-l オプションは、LDRファイルをUART経由でBlackfinに転送することを指示しています。jsp.ldrはファイル名、 /dev/ttyUSB0は、ホストがBlakcfinとの通信に使うシリアル・ポートです。この例ではLinuxですが、Windowsでも動作するようです。

-bオプションは、通信に使う速度を指定します。実は-bオプションを指定しない場合、通信速度は115200baudですので、上の例では遅い速度を指定しています。これは別にトラブル回避ではなく、プログラムが無事動作した際に、bfin-elf-ldrが通信回線上のデータを文字化け無く端末に表示できるようにとの配慮です。

bfin-elf-ldrはターゲットのロードが完了したら実行を停止してコマンド・プロンプトに戻りますが、直前の受信バッファのデータを端末に表示してから終了します。TOPPERS/JSP for Blackfinのシリアル通信はデフォルトで57600baudであるため、文字化けがないよう上の設定をしています。

-Cは、CTS/RTSハンドシェイクを行うための指示です。BlackfinはLDRファイルを展開する際、一時的に受信不能になることがあります。これによるデータの取り落としを避けるため、ADSP-BF592は#HWAITピンによるハードウェア・ハンドシェイクに対応しています。#HWAITとUARTデバイスの#CTSを接続し、抵抗でプルアップして使用します。

引数は大文字小文字を区別しますので気をつけてください。問題無く動作した場合には以下のように出力されます。プログラムのブート後、sample1がテキストを出力し始めたことが見て取れます。

Ubuntu 10.04 blackfin-2012-04-08-13-53-47

参照文献およびツールバージョン
  • toolchain::ldr-utils Blackfin Koopの資料。
  • 実行環境
    • Ubuntu 12.04 LTS beta 2
    • Blackfin GCC Tool-chain 2011R1RC4
追記

2014/11/30 コメント欄の指摘どおり、bfin-elf-ldrのファイル名の順序が間違っていたため、修正しました。

「BF592のUARTブート方法」への2件のフィードバック

  1. bfin-elf-ldrに与えるオプションですが、「-c, –create * Create LDR from binaries」となっていますので、記事中の「-c jsp jsp.ldr」は間違いではないでしょうか?「-c jsp.ldr jsp」と思います。
    記事のとおりに与えるとjspが空のファイルになってしまいます。

    返信

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください