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.

[参考译文] RTOS/PROCESSOR-SDK-AM57X:OCMC RAM 使用情况

Guru**** 2611705 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/656750/rtos-processor-sdk-am57x-ocmc-ram-usage

器件型号:PROCESSOR-SDK-AM57X

工具/软件:TI-RTOS

您好、再说一次、

PDK 引导加载程序完成后、我有关于在用户应用程序中使用 OCMC RAM 的问题。 具体而言、请参阅以下图片、该图片来自 Wiki 上的此链接: http://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_BOOT_AM57x#Application_Integration

此 wiki 页面在此图像下包含以下注释:

  • 应用程序引导并运行后,可以自由使用 SBL_MEM 区域。
  • 在电路板初始化期间、应用程序不应修改从0x40300000开始的 OCMC 区域的前192K 字节、以避免 Pinmux 数据损坏。
  • 保留的存储器区域包含 Pinmux 和 IO 延迟配置代码和数据区域、不应用于其他用途。

的第一个问题是:在引导加载程序运行到完成并且我的电路板已完全初始化之后、我是否能够在 应用程序代码中使用整个 OCMC RAM、或者我是否不能 使用 0x40300000和0x40330000之间的"保留内存"部分? 如果答案是我不能使用"保留的内存"部分、那么我想了解原因。

我 的第二个问题 是:我注意到、当我构建引导加载程序并查看映射文件时、Board_IO_DELAY_CODE 和 Board_IO_DELAY_DATA 段会分配给"保留的内存"区域;它们实际上位于 MSMC RAM 的另一部分。  接下来、我要问、  不应该将这两个段分配给 pdk_am57xx_1_0_9\packages/ti\boot\sbl\soc \am57xx\linker.cmd 中的 OCMC_RAM1? 我认为这种忽略可能是 PDK 中的一个小错误。

一如既往的感谢、
Dave

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

    Dave、

    重新阅读图形下的注释后、 我认为这些注释在它试图传达的信息中有些模糊、并且就 BOARD_IO_DELAY_CODE 和 BOARD_IO_DELAY_DATA 的放置 而言不准确、因此我将在这里回答您的问题、然后尝试更新这些注释以添加更多澄清。

    引导加载程序完成执行并初始化电路板后、您可以在应用程序代码中使用整个 OCMC RAM。 n`t 情况下、应将所有初始化合并到引导加载程序中、以便应用程序不必重新执行这些初始化。

    话虽如此、我们观察到一些以某种方式编写的应用代码、其中可能会尝试访问引脚多路复用器数据以检查多路复用模式、或重复使用这些数据以恢复默认设置引脚设置。 这只是一个n`t 语句、用于提醒用户注意使用情况、以便在调用 Board_init 来设置 pinmux 之前、用户不会意外损坏数据。

    我检查 linker.cmd 文件和 SBL.map 文件中是否有引导加载   程序、并同意您在第二个问题中的分析、即 Board_IO_DELAY_CODE 和 Board_IO_DELAY_DATA 中的 pinmux 数据未放置在 OCMC_RAM1中。 所有 SBL 代码和数据当前都位于一个名为 SBL_MEM 的段中。  

    将这些段放入 OCMC_RAM1的方法需要在链接器命令文件中添加以下内容。

    Board_IO_DELAY_CODE:
    {
    . = align (4);
    *(Board_IO_DELAY_CODE*)
    }> OCMC_RAM1
    
    Board_IO_DELAY_DATA:
    {
    。 = align (4);
    *(Board_IO_DELAY_DATA*)
    }> OCMC_RAM1 

    我同意这是一个小错误、我会将其归档以解决。 虽然这与当前文档存在偏差、但这种实现方案没有问题、因为要遵守的主要要求是从片上存储器而不是 TRM 中指定的外部存储器运行引脚多路复用器配置代码。

    此致、

    Rahul

    PS:可以使用错误 ID PRSDK-3464跟踪问题

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Rahul,非常感谢! 你完全回答了我的问题。 祝你度过美好的一天!

    此致、
    Dave