This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RM48L952:64位 SDRAM 未对齐访问时中止异常

Guru**** 2862450 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/815340/rm48l952-abort-exception-on-64bit-sdram-misaligned-accesses

器件型号:RM48L952

您好!  

我在32位访问上遇到异常中断、如以下主题中所述并得到解决:

https://e2e.ti.com/support/microcontrollers/hercules/f/312/p/811890/3004735

如前所述,这一问题已经解决,但最终向我展示了另一个相关问题。

如果我尝试对 EMIF SDRAM 中的64位数据进行任何非4字节对齐访问、RM48会抛出异常中断。 我尝试了所有的 MPU 模式、也禁用了 MPU、但它没有解决。

下面粘贴了用于确定问题的代码

uint64_t * SDRAM_PTR;
uint64_t var_test;

SDRAM_PTR =(uint64_t *) 0x8000000;
VAR_TEST =* SDRAM_PTR;/*读取 OK */ 
SDRAM_PTR =(uint64_t *) 0x80000001; VAR_TEST =* SDRAM_PTR;//触发中止异常*/
SDRAM_PTR =(uint64_t *) 0x800002; VAR_TEST =* SDRAM_PTR;//触发中止异常*/
SDRAM_PTR =(uint64_t *) 0x800003; VAR_TEST =* SDRAM_PTR;//触发中止异常*/
SDRAM_PTR =(uint64_t *) 0x800004; VAR_TEST =* SDRAM_PTR;/*读取 OK */

提前感谢您的任何帮助

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    数据提取的地址必须与访问的大小对齐。 因此、必须从与64位边界对齐的地址进行64位读取。

    此致、

    Sunil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sunil、

    感谢您的回答。

    考虑到它可以 在32位访问中正常工作、没有问题、这是一个错误还是一个预期的功能?

    此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    32位访问也必须与32位地址对齐。

    此致、

    Sunil