ホーム フォーラム Texas Instruments マイコン C2000 CodeStartBranch.asmのファイルについて

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

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

    ttkkttkk
    参加者

    CodeStartBranch.asmのファイルについて

    度々お世話になります

    F2837xD_CodeStartBranch.asmを編集し、
    GPIOポートの入力を検出することによってそのポートがHの場合は、_c_int00_に
    Lの場合は別のエントリーポイントに飛ぶ(別のプログラムを実行させる)

    といった仕組みは可能なのでしょうか

    • このトピックは ttkkttkkが5 年前に変更しました。
    #8954 返信
    Yojiro
    Yojiro
    従業員

    ttkkttkkさん

    はい、可能です。

    ただし、code_startに追加される場合、Linker Command Fileでは、セクション”codestart”はブランチ命令分のサイズ(2WORD)しか確保されておりません。GPIOの入力確認と分岐命令の追加コード分は、Linker Command Fileにて拡張して頂く必要がありますので、ご注意ください。

     

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

     

    #8955 返信

    ttkkttkk
    参加者

    回答ありがとうございます。

    すみませんが、確認させてください。
    ブランチ命令分のサイズが確保されている箇所は

    /* Flash Rom */
    BEGIN : origin = 0x080000, length = 0x000002 /* Program Start(Boot to FLASH) */

    上記のlengthのサイズが2wordしかないため
    拡張する必要があるということでしょうか

    #8956 返信
    Yojiro
    Yojiro
    従業員

    ttkkttkkさん

    はい、ご認識のとおりです。

    ”BEGIN”は Flash ROMのセクタA(FLASHA)の領域の一部を使用しています。そのため、”BEGIN”を拡張の際は、”FLASHA”の開始アドレス(origin)とサイズ(length)も調整頂く必要があります。

     

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

    #8959 返信

    ttkkttkk
    参加者

    すみません、一点追加で質問させてください。
    上記の2プログラムをCodeStartBranch.asmで分けるような
    サンプルプログラムはありますか

    #8960 返信
    Yojiro
    Yojiro
    従業員

    申し訳ありませんが、ご希望のサンプルコード・プロジェクトはございません。

     

    以上、よろしくお願いいたします。

    #8961 返信

    ttkkttkk
    参加者

    了解しました。
    回答ありがとうございます。

    #8970 返信

    ttkkttkk
    参加者

    何度もすみません
    上記 F28377のControlCARDで 試そうとしておりますが
    BootModeで使用するGPIO84, GPIO72は
    当該プログラムの切り替えポートとしては利用不可でしょうか

    #8971 返信
    Yojiro
    Yojiro
    従業員

    ttkkttkkさん

    Zx_BOOTCTRLがデフォルトの場合、GPIO72,84はBootROMが Flash ROMのコードを実行するかを判断するために使用されます。code_startファンクションは、この判定のあとに実行されるものになりますので、利用することは難しいものと考えます。

     

    以上、よろしくお願いいたします。

     

    #8983 返信

    ttkkttkk
    参加者

    すみません、もしわかりましたら教えてください

    CodeStartBranch.asmを以下のように改造を行い、

    .if WD_DISABLE == 1
    LB wd_disable ;Branch to watchdog disable code
    .else
    ;;;;;;;;;;;;;;;;; GPIO86 がL時にmain_testへ飛ばせるかどうかのテスト
    MOVW DP, #0x1FC
    MOVL @0x8, ACC
    TBIT @0x11, #0x6
    SB TESTL1, NTC
    ;;;;;;;;;;;;;;;;;
    LB _c_int00 ;Branch to start of boot._asm in RTS library
    .endif

    デバッガ接続でGPIO86をLにしたところ、正常にTESTL1ラベルのコードが
    開始されるのですが、デバッガ未接続で起動させると
    TESTL1ラベルのコードが開始されませんでした

    原因について何かわかりましたら回答をお願いいたします

    #8991 返信
    Yojiro
    Yojiro
    従業員

    ttkkttkkさん

    デバッガ未接続時にTESTL1が実行されないとのことですが、_c_int00からのコードが実行されるということでしょうか。それとも、全く動作していないように見えるということでしょうか。

    デバッガを接続してご確認いただいたときには、通常の動作(GPIO86=H)を確認したあと、CCSの”CPU Reset”でリセットからご確認されていると思います。CCSの”CPU Reset”では一部のレジスタはリセットされません。代表的なもので、クロック関連とウォッチドッグ関連があります。

    CPUクロックは、電源ON後は10MHzで動作しています。一度通常動作を実行されますと、おそらく200MHzを設定されているかと思いますので、その差は20倍になり、見た目上動作していないように見える場合がございます。

    また、サンプルプログラムでは、ウォッチドッグをディセーブルに設定していますので、同様にCPU Resetを実行されても、ディセーブルとなります。

    デバッガ未接続で電源ONした場合、CPUクロックは10MHz動作かつウォッチドッグはイネーブルとなり、TESTL1ラベル以降で、これらの設定を行わない場合にウォッチドッグによるリセットが発生している可能性が高くなります。

    まずは、TESTL1ラベルの処理にて、ウォッチドッグをディセーブルに設定してご確認いただけますでしょうか。

     

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

    #8992 返信

    ttkkttkk
    参加者

    回答ありがとうございます。

    デバッガ未接続時にTESTL1が実行されないとのことですが、_c_int00からのコードが実行されるということでしょうか。それとも、全く動作していないように見えるということでしょうか。

    これは後者の「全く動作していないように見える」です
    _c_int00モジュール、TESTL1以降のモジュールどちらも
    GPIO出力にてトグル操作をしていますが、何も出力されていなかったため
    そのように判断しました。

    ひとまず、TESTL1ラベル処理でWDTをdisableにして一度試します。

    #8995 返信

    ttkkttkk
    参加者

    WDTのdisable部分を追加してデバッガなしで起動したところ
    実行されていることが確認できました。
    ありがとうございました。

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