MIMX8ML8 SDK optimized memcpy routine bug

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

MIMX8ML8 SDK optimized memcpy routine bug

428件の閲覧回数
bjoern_almqvist
Contributor I

I had trouble getting RPMsg-Lite to run continuously on the i.MX8M Plus Cortex-M7 (FreeRTOS, MCUXpresso SDK 2.16.000, arm-gnu-toolchain 13.3) with a 1 ms request/response cycle to Linux. After a variable number of cycles the communication froze hard and the M7 stopped servicing the incoming messages.

I added a SysTick watchdog that samples the interrupted program counter when the app stopped. During a freeze it consistently showed the M7 stuck in the size_ge_16 burst loop in fsl_memcpy.S, with the link register pointing back into rpmsg_queue_recv, inside env_memcpy(data, msg.data, msg.len) while copying a received payload out of the vring buffer.

It looks like a latent alignment bug in the optimized memcpy routine, exposed by the specific alignment of the rpmsg shared-memory buffers it’s asked to copy. (I did not isolate the exact faulty instruction.)

Swapping to the standard libc memcpy fixed it for me, i.e. changing the SDK_MISC_OVERRIDE_MEMCPY define to 0.

Is this something that is logged and fixed in later SDK versions?

0 件の賞賛
返信
1 返信

349件の閲覧回数
Manuel_Salas
NXP TechSupport
NXP TechSupport

Hello @bjoern_almqvist 

Hope you are doing very well.

 

The structure of the SDK regarding to the RPMSG has not any change from that Version.

Actually, in that case it is a good and functional workaround.

 

RPMSG is commonly used to send flags and short messages instead of big amount of data in the buffer, then M and A cores can access to the shared memory.

 

Best regards,

Salas.

0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-2377258%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EMIMX8ML8%20SDK%E6%9C%80%E9%81%A9%E5%8C%96%E3%81%95%E3%82%8C%E3%81%9Fmemcpy%E3%83%AB%E3%83%BC%E3%83%81%E3%83%B3%E3%81%AE%E3%83%90%E3%82%B0%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2377258%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3Ei.MX8M%20Plus%20Cortex-M7%20(FreeRTOS%E3%80%81MCUXpresso%20SDK%202.16.000%E3%80%81arm-gnu-toolchain%2013.3)%20%E4%B8%8A%E3%81%A7%E3%80%81Linux%20%E3%81%B8%E3%81%AE%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%2F%E3%83%AC%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B9%E3%82%B5%E3%82%A4%E3%82%AF%E3%83%AB%E3%82%92%201%20ms%20%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%A6%20RPMsg-Lite%20%E3%82%92%E7%B6%99%E7%B6%9A%E7%9A%84%E3%81%AB%E5%AE%9F%E8%A1%8C%E3%81%95%E3%81%9B%E3%82%8B%E3%81%AE%E3%81%AB%E8%8B%A6%E5%8A%B4%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%E4%B8%80%E5%AE%9A%E5%9B%9E%E6%95%B0%E3%81%AE%E9%80%9A%E4%BF%A1%E3%82%B5%E3%82%A4%E3%82%AF%E3%83%AB%E5%BE%8C%E3%80%81%E9%80%9A%E4%BF%A1%E3%81%8C%E5%AE%8C%E5%85%A8%E3%81%AB%E5%81%9C%E6%AD%A2%E3%81%97%E3%80%81M7%E3%81%AF%E5%8F%97%E4%BF%A1%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%AE%E5%87%A6%E7%90%86%E3%82%92%E5%81%9C%E6%AD%A2%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%3CP%3E%E3%82%A2%E3%83%97%E3%83%AA%E3%81%8C%E5%81%9C%E6%AD%A2%E3%81%97%E3%81%9F%E9%9A%9B%E3%81%AB%E3%80%81%E4%B8%AD%E6%96%AD%E3%81%95%E3%82%8C%E3%81%9F%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%AB%E3%82%A6%E3%83%B3%E3%82%BF%E3%82%92%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%99%E3%82%8BSysTick%E3%82%A6%E3%82%A9%E3%83%83%E3%83%81%E3%83%89%E3%83%83%E3%82%B0%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%E3%83%95%E3%83%AA%E3%83%BC%E3%82%BA%E4%B8%AD%E3%80%81m7%20%E3%81%8C%20fsl_memcpy.S%20%E5%86%85%E3%81%AE%20size_ge_16%20%E3%83%90%E3%83%BC%E3%82%B9%E3%83%88%20%E3%83%AB%E3%83%BC%E3%83%97%E3%81%A7%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E4%B8%80%E8%B2%AB%E3%81%97%E3%81%A6%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%80%81%E3%83%AA%E3%83%B3%E3%82%AF%20%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%E3%81%AF%E3%80%81vring%20%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%81%8B%E3%82%89%E5%8F%97%E4%BF%A1%E3%81%97%E3%81%9F%E3%83%9A%E3%82%A4%E3%83%AD%E3%83%BC%E3%83%89%E3%82%92%E3%82%B3%E3%83%94%E3%83%BC%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E9%96%93%E3%80%81env_memcpy(data%2C%20msg.data%2C%20msg.len)%20%E5%86%85%E3%81%AE%20rpmsg_queue_recv%20%E3%82%92%E6%8C%87%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%3CP%3E%E3%81%93%E3%82%8C%E3%81%AF%E3%80%81%E6%9C%80%E9%81%A9%E5%8C%96%E3%81%95%E3%82%8C%E3%81%9Fmemcpy%E3%83%AB%E3%83%BC%E3%83%81%E3%83%B3%E3%81%AB%E6%BD%9C%E5%9C%A8%E7%9A%84%E3%81%AA%E3%82%A2%E3%83%A9%E3%82%A4%E3%83%A1%E3%83%B3%E3%83%88%E3%83%90%E3%82%B0%E3%81%8C%E5%AD%98%E5%9C%A8%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E7%A4%BA%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%82%88%E3%81%86%E3%81%A7%E3%80%81%E3%82%B3%E3%83%94%E3%83%BC%E5%AF%BE%E8%B1%A1%E3%81%A8%E3%81%AA%E3%82%8Brpmsg%E5%85%B1%E6%9C%89%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%81%AE%E7%89%B9%E5%AE%9A%E3%81%AE%E3%82%A2%E3%83%A9%E3%82%A4%E3%83%A1%E3%83%B3%E3%83%88%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E9%A1%95%E5%9C%A8%E5%8C%96%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%80%82%EF%BC%88%E3%81%A9%E3%81%AE%E9%83%A8%E5%88%86%E3%81%AB%E4%B8%8D%E5%85%B7%E5%90%88%E3%81%8C%E3%81%82%E3%82%8B%E3%81%AE%E3%81%8B%E3%80%81%E6%AD%A3%E7%A2%BA%E3%81%AA%E7%AE%87%E6%89%80%E3%81%AF%E7%89%B9%E5%AE%9A%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%81%A7%E3%81%97%E3%81%9F%E3%80%82%EF%BC%89%3C%2FP%3E%3CP%3E%E6%A8%99%E6%BA%96%E3%81%AElibc%20memcpy%E3%81%AB%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%81%9F%E3%81%A8%E3%81%93%E3%82%8D%E3%80%81%E5%95%8F%E9%A1%8C%E3%81%8C%E8%A7%A3%E6%B1%BA%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%E3%81%A4%E3%81%BE%E3%82%8A%E3%80%81SDK_MISC_OVERRIDE_MEMCPY%E3%81%AE%E5%AE%9A%E7%BE%A9%E3%82%920%E3%81%AB%E5%A4%89%E6%9B%B4%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%3CP%3E%E3%81%93%E3%82%8C%E3%81%AF%E3%80%81%E5%BE%8C%E3%81%AESDK%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%A7%E3%83%AD%E3%82%B0%E3%81%AB%E8%A8%98%E9%8C%B2%E3%81%95%E3%82%8C%E3%80%81%E4%BF%AE%E6%AD%A3%E3%81%95%E3%82%8C%E3%82%8B%E5%95%8F%E9%A1%8C%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%EF%BC%9F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2378558%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20MIMX8ML8%20SDK%20optimized%20memcpy%20routine%20bug%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2378558%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%20%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F263488%22%20target%3D%22_blank%22%3E%40bjoern_almqvist%20%E3%81%95%E3%82%93%E3%80%82%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%E3%81%8A%E5%85%83%E6%B0%97%E3%81%A7%E3%81%8A%E9%81%8E%E3%81%94%E3%81%97%E3%81%AE%E3%81%93%E3%81%A8%E3%81%A8%E6%80%9D%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3ERPMSG%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8BSDK%E3%81%AE%E6%A7%8B%E9%80%A0%E3%81%AF%E3%80%81%E3%81%9D%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%8B%E3%82%89%E5%A4%89%E6%9B%B4%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FP%3E%0A%3CP%3E%E5%AE%9F%E9%9A%9B%E3%80%81%E3%81%9D%E3%81%AE%E5%A0%B4%E5%90%88%E3%81%AF%E3%80%81%E3%81%9D%E3%82%8C%E3%81%AF%E9%81%A9%E5%88%87%E3%81%A7%E6%A9%9F%E8%83%BD%E7%9A%84%E3%81%AA%E5%9B%9E%E9%81%BF%E7%AD%96%E3%81%A8%E8%A8%80%E3%81%88%E3%82%8B%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%80%82%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3ERPMSG%E3%81%AF%E3%80%81%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E5%86%85%E3%81%AE%E5%A4%A7%E9%87%8F%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E4%BB%A3%E3%82%8F%E3%82%8A%E3%81%AB%E3%83%95%E3%83%A9%E3%82%B0%E3%82%84%E7%9F%AD%E3%81%84%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%92%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB%E3%82%88%E3%81%8F%E4%BD%BF%E7%94%A8%E3%81%95%E3%82%8C%E3%80%81%E3%81%9D%E3%81%AE%E5%BE%8C%E3%80%81M%E3%82%B3%E3%82%A2%E3%81%A8A%E3%82%B3%E3%82%A2%E3%81%AF%E5%85%B1%E6%9C%89%E3%83%A1%E3%83%A2%E3%83%AA%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%84%E3%81%9F%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%E3%82%B5%E3%83%A9%E3%82%B9%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E