ホーム フォーラム Texas Instruments マイコン C2000 CLAが動作しない現象について

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

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

    NICO
    参加者

    CLAが動作しない現象について

    デバイス型番:f28065

    f28065のソフトを開発中ですが、CLAタスクが動作しない現象で悩んでいます。
    何か原因として考えられることがあれば教えてください。

    尚、エミュレータ(USB200)を接続し、CPU Reset → Resume でプログラムを実行した場合は、
    問題なく動作します。
    エミュレータ―を切り離し、電源OFF→ONで実行させた場合は、動作しません。
    CLA以外の機能は問題なく動作しています。

    #13648 返信
    Ge
    Ge
    従業員

    お問い合わせありがとうございます。

    以前、memcpy()を実行するタイミングの問題で、似た現象が起きておりました。
    以下のリンクを参考に、memcpy()のコール箇所をご確認いただけますでしょうか。
    https://emb.macnica.co.jp/forums/topic/13464/

    上記で問題が解決しない場合には、再度お問い合わせいただけますでしょうか。

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

    #13649 返信

    NICO
    参加者

    返信ありがとうございます。
    リンク先の内容を確認しましたが、memcpyについては、InitFlash()の後に実行していますし、
    CLA以外の機能については問題なく動作するため現象が異なるように思います。
    また、CLAについてはconstデータは使用していないため、constデータのmemcpyは行っていません。

    #13650 返信
    Ge
    Ge
    従業員

    ご連絡ありがとうございます。

    C2000wareにCLAを使ったFLASH用のプロジェクトがございます。こちらのプロジェクトを使用した場合には正常に動作しますでしょうか。正常に動作する場合には、こちらのプロジェクトとの差分をご確認いただきたく思います。

    C2000WARE
    C:\ti\c2000\C2000Ware_3_03_00_00\device_support\f2806x\examples\c28\cla_adc_fir_flash

    上記で問題点が把握できなかった場合には、御社の問題を再現可能な、Cソースコード、cmdファイル、CLAソースコードをお送りいただけますでしょうか。これらのファイルをベースに調査させていただきます。
    ※.cmd、.claは添付できませんので、拡張子を.txt等に変更し添付をお願いいたします。

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

    #13651 返信

    NICO
    参加者

    原因が分かりました。
    CLAのクロックを有効化していないことが原因でした。
    SysCtrlRegs.PCLKCR3.bit.CLA1ENCLK = 1;
    を追加したところ正常に動作しました。

    #13654 返信
    Ge
    Ge
    従業員

    ご連絡いただきありがとうございます。
    問題が解決されたとのことで安心いたしました。
    また不明点が御座いましたらお問い合わせください。

     

    #13682 返信

    NICO
    参加者

    すみません。どうしても理解できないので教えてください。
    SysCtrlRegs.PCLKCR3.bit.CLA1ENCLKの初期値を確認したところ
    CPU Reset後:1 → Resume 後:0
    CPU Reset後:1 → Restart後:1
    となっています。

    本来であれば、CPU Reset後は0に初期化されるべきだと思いますが、
    0の状態でもCPU Resetを行うと1にセットされてしまいます。
    同じレジスタのCOMxENCLK,DMAENCLK,USB0ENCLKは0に初期化されるようです。
    これはエミュレータの仕様でしょうか?

    #13683 返信
    Ge
    Ge
    従業員

    お問い合わせありがとうございます。
    CCS使用時にデフォルトでGelファイルというものが使用されます。こちらのファイルが、CCSでのリセット、リスタートなどの際に、ハードウェアを初期化しています。これによりCLAのクロックが有効化されます。
    Gelファイルについては、以下のリンクの説明が参考になると思いますので、こちらをご参考ください。

    https://e2e.ti.com/support/archive/jp/f/894/t/302138?CCS%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E3%81%A8GEL

    このGelファイルはCCSを使用している場合にのみ使用されるので、スタンドアローンでの動作の際にはCLAが自動で有効化されません。

    また不明点が御座いましたらお問い合わせください。

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

    #13725 返信

    NICO
    参加者

    返信ありがとうございます。
    Gelファイルの中身を確認しました。
    OnReset(int nErrorCode)
    {
    C28x_Mode();
    Unlock_CSM();
    Device_Cal();
    CLA_Clock_Enable(); /* Enable CLA clock – allows to debugger to set CLA breakpoints after reset */

    // EMU_BOOT_SARAM(); /* Set EMU Boot Variables – Boot to SARAM */
    // EMU_BOOT_FLASH(); /* Set EMU Boot Variables – Boot to flash */

    CLAのクロックが有効化されていることを確認しました。

    ところで、上記処理では、EPWMなど他のレジスタの初期化は行っていないようですが、
    実際にはCPU Reset後に初期化されています。
    どのような仕組みで初期化しているのでしょうか。

    #13727 返信
    Ge
    Ge
    従業員

    ご連絡ありがとうございます。

    ところで、上記処理では、EPWMなど他のレジスタの初期化は行っていないようですが、
    実際にはCPU Reset後に初期化されています。
    どのような仕組みで初期化しているのでしょうか。

    弊社の環境にて、CPU Reset後にEPWMが初期化されるか確認をしてみましたが、特に初期化されている様子はございませんでした。CPU Reset後にEPWMレジスタが、どのような設定値になったかお教えいただけますでしょうか。

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

    #13728 返信

    NICO
    参加者

    CPU Reset前後のレジスタの内容を添付します。
    EPWM,ADC,CAN全て初期化されているようです。

    尚、CCSは6.2.0で、GELファイルはサンプルのf28065.gelをそのまま使用しています。

    #13732 返信
    Ge
    Ge
    従業員

    情報ありがとうございます。
    こちらはハードウェアの仕様となります。デバイスのテクニカルリファレンスマニュアルのレジスタの説明ページをご覧いただくと、リセット後のレジスタ初期値が記載されており、CCSリセットにより、この初期値に設定されます。

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

    #13733 返信

    NICO
    参加者

    エミュレータ―の CPU Reset実行時には、CPUへのリセット信号は出力されていませんが、
    どのようにして初期化しているのでしょうか?

    #13744 返信
    Ge
    Ge
    従業員

    エミュレータ―の CPU Reset実行時には、CPUへのリセット信号は出力されていませんが、
    どのようにして初期化しているのでしょうか?

    エミュレータのCPU ResetはXRS リセットとは異なるものなので、XRSピンからリセット信号は出力されませんが、デバイスの内部ではハードウェアリセットとほぼ同等の動作となっております。
    (エミュレータからのリセットは、XRSのリセットと異なり、PLLのレジスタなど一部のレジスタは初期化されません。)
    このエミュレータからのリセットについては、テクニカルリファレンスマニュアルにはあまり情報が無いのですが、マニュアル内で”debugger reset”と検索すると、いくつか情報がでてきますのでご参考ください。

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

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