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.

[参考译文] AM263P4-Q1:向 L2OCRAM_BANK4 (0x70200000)和 L2COCRAM_BANK5 (0x70280000)写入值时出错

Guru**** 2454880 points
Other Parts Discussed in Thread: AM263P4, SYSCONFIG, AM2634, UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1495829/am263p4-q1-error-in-writing-values-to-l2ocram_bank4-0x70200000-and-l2cocram_bank5-0x70280000

器件型号:AM263P4-Q1
主题中讨论的其他器件:SYSCONFIGAM2634、AM263P4、 UNIFLASH

工具/软件:

您好:  

我尝试使用0x7020 0000到0x702F FFFF 的存储器区域作为共享存储器。 由于没有任何示例在 MPU 中定义该区域、因此我在 SysConfig 中添加了一个条目、如下所示:  

然后在存储器区域中、将其设置为 Shared:

在代码中、我有一个定义如下的变量:

#define OUTPUT_BUFFER_LENGTH 5000
#define ANALOG_CHANNES_PER_CORE 4.
volatile float out_data[ANALOG_CHANNELS_PER_CORE * 2][OUTPUT_BUFFER_LENGTH]__attribute__((section(".bss.user_shared_mem")));

然后我尝试将数组初始化为0:

for(uint16_t i = 0; i < (ANALOG_CHANNELS_PER_CORE * 2); i++)
{
for(uint16_t j = 0; j < OUTPUT_BUFFER_LENGTH; j++)
{
out_data[i][j] = 0.0f;
}
}

问题不是所有值都设置为0、如果我暂停应用程序并尝试手动将数组值设置为0、它仍然不起作用! 我想知道这是否是器件问题? 我有坏的 SOC 吗? 或配置问题?  

更新:我测试了另一个主板并得到了相同的结果、所以这不是一个糟糕的 SOC。

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

    尊敬的 Ahmed:

    我尝试了以下步骤:

    1.在 CCS 中从 AM263Px 的 MCU_PLUS_SDK 导入空的多核工程。

    2.在 core-0 syscfg 中、进行类似于您共享的更改

    3.在主函数中、添加 for 循环以填充"OUT_DATA"缓冲区。 (我不是0.0f 赋值、而是分配了1.2f 值、因为编译器会自动分配"0")。 请参阅下面的屏幕截图、了解填充的 OUT_DATA 缓冲区。

    4.运行此代码时、我能够正确更新缓冲区值( 也可以从 Expressions 窗口手动更新、请参见下面的屏幕截图)

    我需要您的帮助来重现问题。 您能否分享您的 CCS 多核工程或重现此问题的步骤?

    此致、
    Shaunak

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

    您好 Shaunak、

    我将复制您的步骤并很快上载项目。  

    问一个简单问题、在设置 MPU 时、是否只将其用于 core0? 我的印象是我必须对所有4个内核执行该操作。

    谢谢

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

    尊敬的 Ahmed:

    简单问题:设置 MPU 时、是否只将其用于 core0? 我的印象是我必须为所有4个内核执行该操作。

    在我的示例中、我只为内核0配置了 MPU 区域和存储器配置器。 此外、运行的嵌套 for 循环是否在另一个 R5F 内核的代码上?

    此致。
    Shaunak

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

    我想知道如果这是问题、我会从其他内核中移除 MPU!  

    此环路仅用于在 core0上进行测试。

    当前注释掉的其余代码使用 spinlock 来保护对 OUT_DATA 数组的访问。 我会在到达电脑后上传完整的项目。  

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

    您好:  

    我复制了您的步骤、仍然收到相同的错误

    可以看到、一些值更新到1.2f、而有些值没有! 附加空工程示例。

    e2e.ti.com/.../empty_5F00_am263px_2D00_lp_5F00_system_5F00_nortos.zip

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

    只是更新、我尝试更改了周围的存储器配置、因此共享存储器位于大小为512KB 的0x70080000中、因此存储器组1和内核1 OCRAM 现在位于组4中。 现在可以正确访问阵列、但内核1无法正常工作。 我想知道这是否与我的器件型号有关、这是 SOC 上的器件标识:

    AM263P4ACOKFZCZQ1

    4AA6SQW G1

    867 ZCZ

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

    尊敬的 Ahmed:

    感谢分享这个项目,我导入它,构建和运行,因为它没有任何修改。

    我能够运行您的代码(在调试和释放模式下)并获得预期的结果(在 OUT_DATA 数组中均分配为"1.2")。 让我检查一下这是否与硬件部件号有关。

    此致、
    Shaunak

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

    尊敬的 Ahmed:

    如果您将 AM263Px-LP 与任何特定硬件修改或定制电路板一起使用、您能告诉我吗?

    此致、
    Shaunak

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

    尊敬的 Ahmed:

    另一个问题是、您是刷写应用程序并运行它、还是只是通过 CCS 将.out 文件加载到两个内核并尝试使用? 作为参考、我刷写了 SBL NULL 并设置 OSPI 引导模式、然后通过连接的 CCS 将.out 文件加载到 R5F 内核。

    此致、
    Shaunak

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

    您好 Shaunak、

    我使用的是定制板、从现在开始、SOP 设置为 devboot。 该板专为较旧的 AM2634而设计、因此具有 QSPI 闪存。 但它们应该是兼容的、对吧?  

    是否有办法在 DevBoot 中做到这一点? 开发完成后、我有0hm 电阻器切换到 QSPI。

    再次感谢!

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

    尊敬的 Ahmed:

    该电路板专为较旧的 AM2634而设计、因此具有 QSPI 闪存。 但它们应该是兼容的、对吧?  [/报价]

    请帮助我消除我的困惑。 在 E2E 标题和您的 CCS 工程中、我看到 AM263 P 具有 OSPI NOR 闪存的 X-LP。 我看到您使用的是 QSPI 闪存、但是基于 AM263的定制板 P X 或 AM263x?

    在您的定制板上、您是否有方法刷写 SBL NULL 并在 QSPI 引导模式下进行测试? SBL 中可能存在一些配置差异、以及 GEL 脚本执行的操作可能会导致这种情况发生。

    此致、
    Shaunak

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

    我将使用定制板、其中包含 AM263P4 SOC 和 QSPI 闪存。  

    我有 UART 0、可以使用0 Ω 电阻器将 SOP 切换到 UART 引导模式以下载 SBL 闪存写入器、然后刷写 SBL NULL、然后切换到 QSPI 引导模式。

    我想我能够将电路板保留在 Devboot 中并使用 JTAG 闪存写入器。  这有什么意义吗?

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

    您好、

    我尝试了 DEVBOOT 模式并遇到与您相同的问题、我相信 SBL 负责某些没有 GEL 脚本的配置(使用 DEV 引导模式时运行 GEL 脚本)。

    如果您有 UART、则可以在 QSPI 引导模式下使用它来刷写 SBL Null 并通过 CCS 加载应用程序二进制文件

    如果您只希望在 QSPI 引导模式下工作、而不切换到 UART/DEV、则可以在 QSPI 引导模式下使用 SBL JTAG UniFlash 应用(使用以下步骤: https://software-dl.ti.com/mcu-plus-sdk/esd/AM263PX/latest/exports/docs/api_guide_am263px/EXAMPLES_DRIVERS_SBL_JTAG_UNIFLASH.html)。 首先擦除闪存、写入 SBL Null。

    如何发挥作用

    此致、
    Shaunak

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

    尊敬的 Ahmed:

    快速查看(C:\ti\ccs1281\ccs\ccs_base\emulation\gel\AM263Px)中的 am263px GEL 脚本时、我发现 GEL 脚本仅初始化 OCRAM 的前4个存储体(将0xF 写入 CFG0_L2IORAM_MEM_INIT 寄存器、写入0x3F 将初始化代码中使用的所有6个存储体、包括存储体4和存储体5)。

    在更新 GEL 脚本(使用修改后的代码以初始化 bank4和 bank5)时、该代码在开发引导模式下工作。 对于 SBL、SBL 负责初始化所有6个 OCRAM 组。   

    要更新 GEL 脚本、请打开以下 GEL 脚本:(c:\ti\ccs1281\ccs\ccs_base\emulation\gel\AM263Px\common\AM263Px_common.gel)并更新 MSS_L2_COMMON  Mem_Init ()函数以写入0x3F 而不是0xF、因此更新后的代码如下所示:

    WRITE_MMR (MSS_CTRL_U_BASE + MSS_CTRL_L2IORAM_MEM_INIT、0x3F);   

    现在、重新启动目标配置并重新测试

    此致、
    Shaunak