ホーム フォーラム Texas Instruments マイコン C2000 Flash Bootについて

このトピックには13件の返信が含まれ、2人の参加者がいます。5 年、 9 ヶ月前 mickey.mouse さんが最後の更新を行いました。

14件の投稿を表示中 - 1 - 14件目 (全14件中)
  • 投稿者
    投稿
  • #5280 返信

    mickey.mouse
    参加者

    Flash Bootについて

    デバイス型番:TMS320F28075PTPT

    デバッガを外して、FLASH BOOTを試みましたが、全く動作しませんでした。
    開発を始めた時点で、端子処理は確認済みです、
    GPIO84 154pin、 GPIO72 139, TMS, TDI, TDO、はプールアップ、
    TRSin プールダウンです。
    何か、コマンドファイル、で設定する必要があるのか留意点をお知らせください。
    ちなみに、シンボルのみダウンロードすればリセット、リスタート、resumeでプログラムは
    動作します。
    よろしくお願いします。

    #5283 返信

    mickey.mouse
    参加者

    resetからステップで実行したところ以下の部分で止まっていることが判りました。
    コマンドファイルの変更の誤りで、配置されるべきデータが格納されていないのでしょうか、
    よろしくお願いします。

    ****************************************************************************
    * IF cinit IS NOT -1, PROCESS CINIT INITIALIZATION TABLE *
    ****************************************************************************
    MOV AL,#cinit
    MOV AH,#hi16(cinit)
    ADDB ACC,#1
    B DO_BINIT,EQ ; if cinit < 0 (-1) no init tables

    #5288 返信
    Yojiro
    Yojiro
    従業員

    mickey.mouseさん

    お問い合わせと症状のご確認、ありがとうございます。

    プロジェクトのビルド時に使用いただいているリンカコマンドファイル(拡張子: cmd)の詳細をご教示いただけますでしょうか。
    ・リンカコマンドファイルのファイル名および参照ディレクトリ名
    ・CCSまたはC2000wareに収録されているリンカコマンドファイルをそのままお使いでしょうか。
    ・修正頂いている場合、修正内容をご教示いただけますでしょうか。

    また、ビルド時にワーニングメッセージが出力されておりませんでしょうか。

    ご確認のほど、よろしくお願いいたします。

    #5294 返信

    mickey.mouse
    参加者

    /* Initalized sections go in Flash */
    .econst : >> FLASHF | FLASHG PAGE = 0
    .switch : > FLASHD PAGE = 0
    cmdファイルは、2年前ぐらいに収録されていたものを編集しています。
    CLAのコードをゴーストセグメント化することや、CPU、CLAのデータセグメントの
    分割、BSS、初期値ありデータを意識して編集していますが、
    本来は、オリジナルを使用できれば使いたいとおもいています。
    コマンドファイルは添付します。

    これを評価目的で設計したのが2年以上前ですので、このように配置しないと
    上手くいかなかった考えたと思います。
    添付は、メモリーマップ表です。

    現在のコマンドファイルとの相違は、下記セクションの記述がないことでしょうか、
    念のためコマンドファイルも添付します。

    /* Initalized sections go in Flash */
    .econst : >> FLASHF | FLASHG PAGE = 0
    .switch : > FLASHD PAGE = 0
    .reset : > RESET, PAGE = 0, TYPE = DSECT /* not used, */
    Filter_RegsFile : > RAMGS0, PAGE = 1
    SHARERAMGS0 : > RAMGS0, PAGE = 1
    SHARERAMGS1 : > RAMGS1, PAGE = 1

    /* Flash Programming Buffer */
    BufferDataSection : > RAMD1, PAGE = 1, ALIGN(4)

    #5312 返信

    mickey.mouse
    参加者

    原因は、下記コードの5~7行目(コメント行)当たりと思います。
    このコードは、以前 BSSクラスがリセット後に初期値なしグローバル変数が0に初期化されない
    問題があって入れたものです。
    今回これを外して、スタンドアローンで動作できるようです。

    ここで確認ですが、
    1)BSSの初期値なしデータはリセット後に0に初期化されるように改善されたのでしょうか、
    2)これは、判ればの話ですが、私が追加したコードは、以前にお送りしたコマンドファイルの指定で、ロケーション的に
    壊していたエリアが有るのでしょうか、

    よろしくお願いします。

    void main( ){
    int i;
    Uint16 *ebss_Ptr;
    Uint16 status;

    // ebss_Ptr = (Uint16 *)&RamEBssStart;
    // i = (int)&RamEBssSize;
    // memset(ebss_Ptr, 0, i ); /* WORDでクリアする方法はあるか */
    /* memset((Uint32 *)0x9000, 0, 0x1000 ); *//* WORDでクリアする方法はあるか */
    bss_init();

    #5316 返信

    mickey.mouse
    参加者

    BSSクラスの初期化ですが、デバッガを繋いでダウンロード、リセットをすると前値が残っている為に、
    プログラムが誤動作してしまいます。やはり、初期値なしグローバル変数は0に初期化する必要性があります。

    よろしくお願いします。

    #5318 返信
    Yojiro
    Yojiro
    従業員

    お手数ですが、ご利用中のCCS、コンパイラ、C2000wareのバージョンをご教示いただけますでしょうか。

    コンパイラのユーザーズガイド(SPRU514)によりますと、初期値なしグローバル・スタティック変数に対しては、0に初期化は行われません。グローバール・スタティック変数で初期化が必要な変数については、ユーザーで明示的に0初期化が必要になります。
    (コンパイラバージョン18.8.0以降でしたら、EABIを使用いただくことで初期値なし変数もBoot時に0初期化されるようです)

    C2000コンパイラでは、グローバル・スタティック変数については、初期値のあり・なしにかかわらず、.ebssセクションに配置されるのですが、main関数の先頭で.ebssセクションの初期化を実施すると、初期値付き変数も0初期化されると思いますが、どのような対応をされているのでしょうか。

    添付いただきましたファイルを確認させていただきましたが、
    .ebssセクションに割り当てられているRAMGS4メモリのサイズが0x3800 = 14,336 WORDに対し、PDFのRAM GS4の使用量が21Kとなっています。ここでリンク時にエラーまたはワーニングは発生していないのでしょうか。

    ご確認のほど、よろしくお願いいたします。

    #5321 返信

    mickey.mouse
    参加者

    回答有難うございます。

    .eBssの初期かについてですが、二度でまになりますが、.eBssを0で埋めてからBoot内のBss_init()モジュールを呼び出して初期値を再転送しています。
    多分、.eBssのグローバル変数にテーブール情報がブートより渡されているのと思います。
    それで、main冒頭で0値の初期化処理を行うと単体(Flash Boot)で実効できないのだと推測していますが、どうなんでしょうか、

    EABIについて、オプションについて説明いただけませんか、Allow extern C functions to propagate exceptions (EABI only). 理解できません。

    また、指摘のRAM GS4は、コマンドファイルの定義で、GS4(GS5,GS6)を合わせた物として12KWordよって24Kbyteして使用しています。

    よろしくお願いします。

    #5323 返信

    mickey.mouse
    参加者

    コンパイラ 18.1より18.12へ場ジョンアップ後 添付の様に
    Output FormatをLegacy(COFF)よりeabi(ELF)に変更したところ
    インラインアセンブルで使用しているラベル(変数)が未定義になってしまいます。
    実体は、C言語により行っています。

    対策をご教示ください。

    定義部
    unsigned short task_chg_no;

    C言語ソース
    task_run_no = task_chg_no;

    __asm(” MOVL XAR4, #_stack_pointer”);
    __asm(” MOVL XAR5, #_task_chg_req”);

    コンパイルのエラーメッセージ
    The following symbols are undefined:
    _task_chg_no
    _stack_pointer
    _task_chg_req

    Errors in Source – Assembler Aborted
    gmake: *** [Task1(power)/Lib_PWM.obj] Error 1

    Attachments:
    #5325 返信

    mickey.mouse
    参加者

    その後 インラインアセンブラにも外部参照である宣言を付け加えることで
    この部分のエラーは解決できましたが、
    __asm(” MOVL XAR4, #_stack_pointer”);

    今度は、リンク部分で以下のメッセージが表示されてしまいました。

    atal error: object files have incompatible formats
    (“C:/ti/ccsv8/tools/compiler/ti-cgt-c2000_18.12.1.LTS/lib/rts2800_fpu32.lib<
    boot28.asm.obj>” = TI-COFF, “./F2807x_Adc.obj” = ELF)
    gmake: *** [UPS.out] Error 1
    gmake: Target ‘all’ not remade because of errors.

    ブートがリンクできない模様です。

    #5326 返信
    Yojiro
    Yojiro
    従業員

    メイン関数の先頭でebss領域の初期化を実施されておりますが、Watchdogタイマーが有効になっているのではないでしょうか。

    InitSysCtrl();

    を先に実行していただいたあとに初期化処理を実行していただけますでしょうか。

    参照しているライブラリがCOFF(古いABI)となっているようです。
    EABIのご利用につきましては、コンパイラ・アセンブラのユーザーズガイドを参照の上ご利用のほどお願いいたします。

    ご確認のほど、よろしくお願いいたします。

    #5327 返信

    mickey.mouse
    参加者

    ご指摘の通り、初期の問題点は解決できました。
    有難うございました。

    最後に確認ですが、
    ・リセットスタート時は、ウオッチドッグはスタートしているのでしょうか、
    ・ライブラリに関して、参照すべきページを具体的に教えて頂けませんか、

    よろしくお願いします。

    #5328 返信
    Yojiro
    Yojiro
    従業員

    ・リセットスタート時は、ウオッチドッグはスタートしているのでしょうか、

    はい、リセット後はウォッチドッグは有効になっております。
    デバッガ(CCS)を接続している場合は、CCSの処理でウォッチドッグを停止しています。

    ・ライブラリに関して、参照すべきページを具体的に教えて頂けませんか、

    ライブラリに関しましては、コンパイラのユーザーズガイド(SPRU514)
    Chapter 8. Using Run-Time-Support Functions and Building Libraries
    に記載されておりますので、ご確認ください。
    FPU32用のRTSライブラリは、
    ファイル名:rts2800_fpu32_eabi.lib
    となります。

    ご確認のほど、よろしくお願いいたします。

    #5330 返信

    mickey.mouse
    参加者

    色々と調べていただき感謝します。
    有難うございました。

14件の投稿を表示中 - 1 - 14件目 (全14件中)