2016-04-27 27 views
0

現在のCMSIS DSPライブラリで古いコードを使用しようとしています。旧コード:arm_rfft_init_q31:cfftメンバーはどのように初期化されていますか?

const unsiged fftlen=128; 
arm_cfft_radix4_instance_q31 forward_cfft_instance = {0}; 
arm_rfft_instance_q31 forward_rfft_instance = {0}; 
arm_rfft_init_q31(&forward_rfft_instance, &forward_cfft_instance,fftlen, 0, 1); 

コンパイラは、関数arm_rfft_init_q31は、DSPのLIBの現在のバージョンでは、もう、私の第二のパラメータ、(_cfft_)を受け入れないことを私に伝えます。

rfft構造体にはまだcfftインスタンスへのポインタがあるので、私はこのポインタが最近どのように初期化されているのだろうか?

これまで私がこれを説明している、関連する変更ログエントリを見つけようとしましたが、これまでのところ運がありませんでした。

+0

@Olaf OPの問題にどのように関連していますか? – fluter

+0

@fluter:ポイントを取った。いいえアイデアなぜ最後の行を 'struct'の初期化子として読みますか?多分私は新しい眼鏡が必要です。 – Olaf

答えて

0

(私はそれが利用可能であった知らなかった)私は初期化機能があるグローバル定数CFFT構造体へのポインタを挿入することを見つけます明らかに必要に応じてバイナリにリンクされています。

2

機能は、あなたがarm_cfft_radix4_instance_q31へのポインタを渡している間、それは、第二引数としてuint32_tを期待

arm_status arm_rfft_init_q31 (arm_rfft_instance_q31 *S, uint32_t fftLenReal, uint32_t ifftFlagR, uint32_t bitReverseFlag); 

として宣言されています。また、名前によると、何がしたいことだけです:

ソースを見てみると
uint32_t fftlen=128; 
arm_rfft_instance_q31 forward_rfft_instance = {0}; 
arm_rfft_init_q31(&forward_rfft_instance, fftlen, 0, 1); 
+0

はい、その関数は今のように宣言されています。 2012年に関数は5つの引数をとり、2つ目はこの関数のポインタです。推論は、実際の入力用のfftは、内部的に複雑な入力用にfftを使用していて、巧妙なデータの再編成でした。 rfft_init関数は両方の構造体を初期化していました。現在のライブラリのrfft構造体にはcfftポインタメンバ(最後のメンバ)が残っているので、このcfftがどのように割り当てられているのだろうと思います。結局、皮質mでは、ライブラリは単にmallocを呼び出すことはできません。 –

0

私はCMSIS 5のgithubでコードを見ていましたが、今は見つかりません。これは数学ライブラリで利用できるグローバル定数cfft構造体についてあなたが見たものを確認しました。私の場合には、図書館でlibarm_cortexM4lf_math.aを見てnmの

用途:

nm libarm_cortexM4lf_math.a 

これはarm_rfft_init_q31コールで参照されている読み取り専用の構造体のリストを提供します。

arm_const_structs.o: 
00000000 R arm_cfft_sR_f32_len1024 
00000000 R arm_cfft_sR_f32_len128 
00000000 R arm_cfft_sR_f32_len16 
00000000 R arm_cfft_sR_f32_len2048 
00000000 R arm_cfft_sR_f32_len256 
00000000 R arm_cfft_sR_f32_len32 
00000000 R arm_cfft_sR_f32_len4096 
00000000 R arm_cfft_sR_f32_len512 
00000000 R arm_cfft_sR_f32_len64 
00000000 R arm_cfft_sR_q15_len1024 
00000000 R arm_cfft_sR_q15_len128 
00000000 R arm_cfft_sR_q15_len16 
00000000 R arm_cfft_sR_q15_len2048 
00000000 R arm_cfft_sR_q15_len256 
00000000 R arm_cfft_sR_q15_len32 
00000000 R arm_cfft_sR_q15_len4096 
00000000 R arm_cfft_sR_q15_len512 
00000000 R arm_cfft_sR_q15_len64 
00000000 R arm_cfft_sR_q31_len1024 
00000000 R arm_cfft_sR_q31_len128 
00000000 R arm_cfft_sR_q31_len16 
00000000 R arm_cfft_sR_q31_len2048 
00000000 R arm_cfft_sR_q31_len256 
00000000 R arm_cfft_sR_q31_len32 
00000000 R arm_cfft_sR_q31_len4096 
00000000 R arm_cfft_sR_q31_len512 
00000000 R arm_cfft_sR_q31_len64 

例えばQ31初期化:

arm_rfft_init_q31.o: 
     U arm_cfft_sR_q31_len1024 
     U arm_cfft_sR_q31_len128 
     U arm_cfft_sR_q31_len16 
     U arm_cfft_sR_q31_len2048 
     U arm_cfft_sR_q31_len256 
     U arm_cfft_sR_q31_len32 
     U arm_cfft_sR_q31_len4096 
     U arm_cfft_sR_q31_len512 
     U arm_cfft_sR_q31_len64 
00000001 T arm_rfft_init_q31 
000000e4 t $d 
00000000 r $d 
00000000 r $d 
00000010 N $d 
00000000 r realCoefAQ31 
00000000 r realCoefBQ31 
00000000 t $t 

代わり実FFTのための初期化関数を使用する、インスタンス構造が直接ならびに回転因子の上方CFFTの構造体を参照して定義することができます。ポインタは、CMSIS documentationに示されています。

関連する問題