2016-04-23 1 views
0

私は静的なlibをMATLAB関数から生成しようとしています。生成されたコードには、FPGAプロジェクトのvivado HLSでこのコードを使用したいので、私がしたくないmemsetとmemcpy関数呼び出しが含まれています。許可されます。codegen:matlabでmemcとmemcpyを生成コードに取り除くには?

私は以下を試しました 1)Matlabコーダーアプリから「変数サイジングを有効にする」のチェックを外してください。 2)

cfg = coder.config('lib'); 
cfg.GenCodeOnly = true; 
cfg.EnableVariableSizing = false; 
cfg.EnableMemcpy = false; 
cfg.SupportNonFinite = false; 
cfg.InitFltsAndDblsToZero = false; 
cfg.FilePartitionMethod = 'SingleFile'; 
cfg.DynamicMemoryAllocation = 'off'; 
codegen -config cfg harris -args { zeros(640,480,'uint8'),zeros(1,1,'int32')} 

ラインcfg.InitFltsAndDblsToZero =偽次のコマンドラインスクリプトを使用します。は、配列の初期化のためのmemset呼び出しを排除するはずですが、生成されたコードではまだmemset関数呼び出しが表示されます。

したがって、どちらの方法も私にとっては機能しません。

設定の変更が必要かどうか、これがmatlabコーダーguiで可能な場合は教えてください。

P.S. 私はこのリンクを使用してcodegen設定オブジェクトのプロパティを設定しました。http://www.mathworks.com/help/coder/ref/coder.embeddedcodeconfig-class.html

+0

これを再現するためのサンプルコードがありますか? – Navan

答えて

1

これを行うには、設定で 'MemcpyThreshold'の値を 'inf'に設定してみてください。これを行うことで、memcpy/memsetの変換可能な割り当てはすべてしきい値以下になり、変換されません。メモ 'MemcpyThreshold'は、MemcpyとMemsetの両方の最適化に影響します。

http://www.mathworks.com/help/coder/ug/memcpy-optimization.htmlhttp://www.mathworks.com/help/coder/ug/memset-optimization.html

設定 'InitFltsAndDblsToZero' のみソース値は二重0.0である場合のmemsetコール影響を及ぼす。私は、ソース値が整数であるmemsetを持っていると推測しています。

関連する問題