memcpy function caused underrun and made LCD noise of i.MX25PDK

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

memcpy function caused underrun and made LCD noise of i.MX25PDK

ソリューションへジャンプ
1,211件の閲覧回数
torus1000
Contributor V

Hi chip experts,

It seems large size of memcpy() argument 'n' cause LCD noise such as 3kB.
In fact without memcpy() didn't observe LCD noise. I assumed both buf1 and buf2 were DDR3.

#include <string.h>

  void *memcpy(void *buf1, const void *buf2, size_t n);

Is there any recommended max copy size for memcpy() for i.MX25PDK?

Thanks.

ラベル(2)
タグ(2)
0 件の賞賛
返信
1 解決策
1,077件の閲覧回数
Yuri
NXP Employee
NXP Employee

   The memcpy function often provides problems with LCD flickering.

This relates to using block data transfer (ARM) instructions LDM / STM, which

are intended for efficient data transfer (between memory and registers).

In this sense these instructions may be considered as serious competitor

(regarding LCD, CSI, SDMA, USB of the i.MX25) for bus resources. 
LDM and STM access length is defined by number of registers to be copied,

And each such instructioncannot be interrupted (for ARM9).

  Perhaps it makes sense to implement own memcpy() function, where

less aggressive (with less number of registers) ARM instructions are applied.


Have a great day,
Yuri

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

元の投稿で解決策を見る

0 件の賞賛
返信
1 返信
1,078件の閲覧回数
Yuri
NXP Employee
NXP Employee

   The memcpy function often provides problems with LCD flickering.

This relates to using block data transfer (ARM) instructions LDM / STM, which

are intended for efficient data transfer (between memory and registers).

In this sense these instructions may be considered as serious competitor

(regarding LCD, CSI, SDMA, USB of the i.MX25) for bus resources. 
LDM and STM access length is defined by number of registers to be copied,

And each such instructioncannot be interrupted (for ARM9).

  Perhaps it makes sense to implement own memcpy() function, where

less aggressive (with less number of registers) ARM instructions are applied.


Have a great day,
Yuri

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 件の賞賛
返信