ホーム › フォーラム › Texas Instruments › マイコン › C2000 › TMS320F28075 演算処理について
このトピックには5件の返信が含まれ、3人の参加者がいます。6 年、 6 ヶ月前に Ge さんが最後の更新を行いました。
-
投稿者投稿
-
TMS320F28075 演算処理について
デバイス型番:TMS320F28075CLAの演算機能 FPU、TMUなどはメインプロセッサと何処まで同等に使用できますか、また、メインタスクでFPUなどの演算処理をしている最中に割り込みハンドラーないで演算処理がなされた場合にレジ素などの退避(演算中の値の保護)はなにも意識する必要はありませんか?
CLAにつきましては、コプロセッサの位置づけとなっており、メインCPUと同等の性能を持つものではございません。
CLAの特徴につきましては、少々古い資料となりますが、以下の資料が参考になると思います。
○TMS320C2000:Piccolo MCUのソフトウェア開発入門(JAJA230A)
http://www.tij.co.jp/jp/lit/an/jaja230a/jaja230a.pdf
p.186 「10 CLA(Control Law Accelerator:制御補償器アクセラレータ)」
本資料は、TMS320F2806xシリーズに搭載されるCLAについて記載されております。
TMS320F28075では少し異なる点がございますので、本資料にて概要をご確認いただいた後は、
テクニカルリファレンスマニュアル(SPRUHM9D)のCLA章をご一読ください。
以下にTMS320F28075のCLAの特徴について、記載させていただきます。
・割り込み専用のプロセッサとなっており、通常CPUにある割り込みハンドラ以外のプログラムは動作しません
– C2000のPIEに定義される割り込みから8つの割り込みをCLAに入力できます
・スタックを持っていないため、多重割り込みおよび、2段階以上の関数呼び出しには対応していません
割り込みドリブンのプロセッサで多重割り込みには対応しておりませんので、コンテキスト(レジスタ)のセーブ
などを意識する必要がなく、割り込み禁止などの制御も考慮する必要がありません。
・C言語の標準ライブラリ(printfやstring関連、itoaなど)には対応していません
・CLAは独立したバスを持っており、一部ペリフェラル・メモリのアクセスに制約があります
(JAJA230に記載される内容と異なっている点になります)
– アクセス可能ペリフェラル/メモリ:
PWM, HWPRM, ADC, SPI, McBSP, GPIO
LSx RAM, Dx RAM, CPU-CLA間MSG RAM
– アクセス不可ペリフェラル/メモリ:
SCI, I2C, USB, CAN, EMIF
Mx RAM, GSx RAM, FLASH, OTP
・CLAのFPUはメインCPUと独立していますので、メインCPUの浮動小数点演算のタイミングには依存せず処理可能です
・CPUのTMUハードウェアアクセラレータは使用できません
・汎用レジスタは32bit x 4, 16bit x 2となっております
(メインCPUの汎用レジスタは32bit x 8)
メインプロセッサで、FPU、TMUを用いた少数点演算をしている最中に、割込みが発生してハンドラー内で異なった小数演算をしたことにより割り込み処理から戻った時に、影響(メインで計算していた途中のデータ)がでないことゆう認識でよろしいでしょうか、
FPU及びTMUは、どちらもFPUレジスタを使用して演算されます。このFPUレジスタは割り込み時にスタックにPUSHされ、割り込みから戻ったときにPOPされますので、演算結果に影響はでません。
また、FPUにはHigh Priority割り込みと、Low Priority割り込みの2種類の割り込みが用意されております。これらの割り込みの使い分け方法については、以下のドキュメントの241pageに記載ございますので、併せてご参照いただければと思います。
TMS320C2000:Piccolo MCUのソフトウェア開発入門
http://www.tij.co.jp/jp/lit/an/jaja230a/jaja230a.pdf回答有難うございます。
最後に、下記ダウンロードしたオブジェクトをデスアセンブルしたものですが、割り算やルート演算は、FPUもしくはTMUでを使用しているコードで間違いないでしょうか、
判断方法があればコメントお願いします。
FPU Fast RTSライブラリでFPUを使用した演算は行われているようですが、TMUは使用されておりません。
TMUの命令セット一覧は以下となります。
TMUはIntrinsics関数を使用することで呼び出し可能です。
controlSUITEに用意されている以下のサンプルプロジェクトが参考になると思いますので、こちらを参考にプログラムいただけますでしょうか。C:\ti\controlSUITE\device_support\F2807x\v210\F2807x_examples_Cpu1\tmu_sinegenまた、TMU向けの各Intrinsics関数については、下記のコンパイラのマニュアルに156pageに記載がございますので、併せてご利用下さい。
TMS320C28x Optimizing C/C++ Compile v18.1.0.LTS User’s Guide
http://www.ti.com/lit/ug/spru514p/spru514p.pdf
Table 7-8. C/C++ Compiler Intrinsics for TMU -
投稿者投稿