ホーム › フォーラム › Texas Instruments › マイコン › C2000 › CLAが動作しない現象について
このトピックには12件の返信が含まれ、2人の参加者がいます。3 年、 12 ヶ月前に Ge さんが最後の更新を行いました。
-
投稿者投稿
-
CLAが動作しない現象について
デバイス型番:f28065f28065のソフトを開発中ですが、CLAタスクが動作しない現象で悩んでいます。
何か原因として考えられることがあれば教えてください。尚、エミュレータ(USB200)を接続し、CPU Reset → Resume でプログラムを実行した場合は、
問題なく動作します。
エミュレータ―を切り離し、電源OFF→ONで実行させた場合は、動作しません。
CLA以外の機能は問題なく動作しています。お問い合わせありがとうございます。
以前、memcpy()を実行するタイミングの問題で、似た現象が起きておりました。
以下のリンクを参考に、memcpy()のコール箇所をご確認いただけますでしょうか。
https://emb.macnica.co.jp/forums/topic/13464/上記で問題が解決しない場合には、再度お問い合わせいただけますでしょうか。
以上、よろしくお願いいたします。
返信ありがとうございます。
リンク先の内容を確認しましたが、memcpyについては、InitFlash()の後に実行していますし、
CLA以外の機能については問題なく動作するため現象が異なるように思います。
また、CLAについてはconstデータは使用していないため、constデータのmemcpyは行っていません。ご連絡ありがとうございます。
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等に変更し添付をお願いいたします。以上、よろしくお願いいたします。
原因が分かりました。
CLAのクロックを有効化していないことが原因でした。
SysCtrlRegs.PCLKCR3.bit.CLA1ENCLK = 1;
を追加したところ正常に動作しました。ご連絡いただきありがとうございます。
問題が解決されたとのことで安心いたしました。
また不明点が御座いましたらお問い合わせください。すみません。どうしても理解できないので教えてください。
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に初期化されるようです。
これはエミュレータの仕様でしょうか?お問い合わせありがとうございます。
CCS使用時にデフォルトでGelファイルというものが使用されます。こちらのファイルが、CCSでのリセット、リスタートなどの際に、ハードウェアを初期化しています。これによりCLAのクロックが有効化されます。
Gelファイルについては、以下のリンクの説明が参考になると思いますので、こちらをご参考ください。このGelファイルはCCSを使用している場合にのみ使用されるので、スタンドアローンでの動作の際にはCLAが自動で有効化されません。
また不明点が御座いましたらお問い合わせください。
以上、よろしくお願いいたします。
返信ありがとうございます。
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後に初期化されています。
どのような仕組みで初期化しているのでしょうか。ご連絡ありがとうございます。
ところで、上記処理では、EPWMなど他のレジスタの初期化は行っていないようですが、
実際にはCPU Reset後に初期化されています。
どのような仕組みで初期化しているのでしょうか。弊社の環境にて、CPU Reset後にEPWMが初期化されるか確認をしてみましたが、特に初期化されている様子はございませんでした。CPU Reset後にEPWMレジスタが、どのような設定値になったかお教えいただけますでしょうか。
以上、よろしくお願いいたします。
CPU Reset前後のレジスタの内容を添付します。
EPWM,ADC,CAN全て初期化されているようです。尚、CCSは6.2.0で、GELファイルはサンプルのf28065.gelをそのまま使用しています。
Attachments:
情報ありがとうございます。
こちらはハードウェアの仕様となります。デバイスのテクニカルリファレンスマニュアルのレジスタの説明ページをご覧いただくと、リセット後のレジスタ初期値が記載されており、CCSリセットにより、この初期値に設定されます。以上、よろしくお願いいたします。
エミュレータ―の CPU Reset実行時には、CPUへのリセット信号は出力されていませんが、
どのようにして初期化しているのでしょうか?エミュレータ―の CPU Reset実行時には、CPUへのリセット信号は出力されていませんが、
どのようにして初期化しているのでしょうか?エミュレータのCPU ResetはXRS リセットとは異なるものなので、XRSピンからリセット信号は出力されませんが、デバイスの内部ではハードウェアリセットとほぼ同等の動作となっております。
(エミュレータからのリセットは、XRSのリセットと異なり、PLLのレジスタなど一部のレジスタは初期化されません。)
このエミュレータからのリセットについては、テクニカルリファレンスマニュアルにはあまり情報が無いのですが、マニュアル内で”debugger reset”と検索すると、いくつか情報がでてきますのでご参考ください。以上、よろしくお願いいたします。
-
投稿者投稿