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.

[参考译文] AM2434:访问 MSRAM 6&7 个块不起作用

Guru**** 2931100 points

Other Parts Discussed in Thread: AM2434

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1649363/am2434-access-of-msram-6-7-blocks-does-not-work

器件型号: AM2434

尊敬的 TI:

将任何示例工程下载到定制电路板时、我无法使用 CCS 的 Memory Browser 访问 0x70180000 - 0x701FFFFF 范围内的 MSRAM。  我在任何写尝试中都收到了“错误 1065 — 无法访问设备内存“消息。  我知道 MSRAM 的末端用作共享内存、但我想在应用中使用 MSRAM 6。 我在 noboot 模式下使用 hs-fs 器件。 什么因素阻止访问 MSRAM 的最后一个季度?

此致、Kalman

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

    嗨、Kalman

    漏掉了这个问题。  根据我们 AI 数据库的指导(我认为这对于您遇到的情况来说是准确的),快速回答 — 如果这对我有所帮助,请告诉我。  

    访问块由 已知的器件勘误表 (i2423) 引起 —FS 器件上的 ROM 错误地将调试访问限制应用于 涵盖 MSRAM 的整个防火墙区域、而不仅仅是其中的安全资产。 在 noboot 模式下、没有引导加载程序运行来打开这些防火墙、因此 CCS 存储器浏览器(用作外部仿真器)会永久阻止此地址范围。


    根本原因

    在 HS-ROM 器件上、FS 对包含安全资产的防火墙区域 FWL 33 和 66 应用调试限制。 该限制适用于整个防火墙区域、而不仅仅是安全资产部分。 这可以防止外部仿真器在没有 TIFS 软件干预[1][2][3]的情况下访问存储器。

    设置中的两个因素会加剧这种情况:

    1. 无引导模式—不会执行辅助引导加载程序 (SBL)、因此 Bootloader_socOpenFirewalls SDK 引导加载程序在 SYSFW 引导通知后通常调用的 API 永远不会运行[4][5]。
    2. IPC 共享存储器保留 — SDK 的默认存储器映射放置 MSRAM_IPC_SHM 在 0x70180000 [6]、在 HS-ROM 器件上、该区域还会受到 FS 防火墙配置的保护。

    权变措施

    勘误表中记录的权变措施为:

    需要 TIFS 软件才能请求打开所需的防火墙。 [1][2][3]

    在实践中、这意味着:

    • 从 noboot 切换到 dev-boot 模式 — 这是 HS-CCS 器件上 FS + GEL 流程的强制引导模式[5]。 开发引导模式允许 TIFS/SYSFW 初始化、并允许 GEL 脚本打开防火墙。
    • 在引导流程中使用 SBL —即使是最小的 sbl_nullsbl_jtagBootloader_socOpenFirewalls 在 SYSFW 引导后调用、这会在应用程序加载之前打开 MSRAM 防火墙[4]。
    • Bootloader_socOpenFirewalls 在应用程序初始化中调用 —如果必须避免使用完整的引导加载程序、请在 SYSFW 运行后将此 API 调用提前集成到代码中。

    如果没有这些方法之一、硬件防火墙将继续阻止所有外部仿真器访问 0x70180000–0x701FFFFF、无论您的链接器或 MPU 配置如何都是如此。


    为了帮助完善这项建议、了解以下信息会有所帮助:

    • 您的特定器件型号和 SDK 版本
    • 您的应用是否需要 IPC 功能(因为该区域是默认的 IPC 共享存储器)
    • 无论您是可以切换到开发引导模式还是将 SBL 集成到开发工作流程中
    • 无论您是特别需要访问调试器、还是从应用代码访问运行时就足够了

    引文

    1. TI 勘误表 SPRZ457J - i2423
    2. TI 勘误表 SPRZ574B - i2423
    3. TI 勘误表 SPRZ580A - i2423
    4. MCU+ SDK AM243X HS-SDK FS 迁移指南
    5. MCU+ SDK AM64X HS-SDK FS 迁移指南
    6. E2E 常见问题解答 — AM64X IPC 存储器配置
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 Mukul、

    感谢您的回答。 我必须自行更正:我的 Sitara 处于 DevBoot 模式。 勘误表提到了 FWL 33 和 FWL 66、我在 TRM 中没有找到这些信息 (SPRUIM2H 和 J)。

    您是否有现成的 GEL 文件来打开 MSRAM6 和 7 块的防火墙?

    澄清问题的答案:

    • AM2434、IND COMM SDK 11
    • 使用的 IPC 存储器较少
    • 在固件开发期间配置了 DEV 引导模式、将在生产代码中使用 SBL
    • 需要访问调试器

    此致、Kalman

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的 Sitara 处于 DevBoot 模式。 勘误表提到了 FWL 33 和 FWL 66、我在 TRM 中没有找到这两个器件 (SPRUIM2H 和 J)。

    在 DEVBOOT 模式下、必须使用 SCICLIENT_CCS_INIT 示例对应用程序进行初始化、从而打开 MSRAM 防火墙。

    github.com/.../main.c

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

    您好、Prashant、

    我想使用 GEL 打开防火墙、因为 CCS 与 MSRAM6 重叠时无法下载我的长代码。 稍后在量产代码中、我将使用 SBL。

    顺便说一下、我尝试运行建议的 sciclient_ccs_init 示例。 我没有成功的分步操作,代码乱在一段时间循环 这里。   在启动应用程序之前是否运行 load_dmsc_hsfs_win.js 脚本无关紧要。 但是、如果不采取步骤并打开防火墙、这是可以的。

    现在、这可以是一种权变措施、不太舒服、但可以正常工作。 GEL 脚本的使用会更容易。

    当没有 GEL 可用于防火墙处理时、您可以关闭此线程。

    此致、Kalman

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    现在这可以是一种变通方法、不是很舒服、但可以使用。 使用 GEL 脚本会更容易。

    在 DEVBOOT 模式下、需要加载 SCICLIENT_CCS_INIT 等应用程序来初始化 SoC、其中包括加载 SYSFW。 不能通过一体式 GEL 脚本执行此操作。

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

    您好、Prashant、

    到目前为止 、我使用 load_dmsc_hsfs_win.js 下载 SYSFW、现在我必须   在代码超出无限 MSRAM 范围时加载并运行 sciclient_ccs_init。

    感谢您的友好帮助 Slight smile

    此致、Kalman

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    直到现在我使用 load_dmsc_hsfs_win.js 下载 SYSFW、

    您能解释一下如何使用它来加载 SYSFW 吗?

    该 SDK 中的默认脚本需要 SCICLIENT_CCS_init 应用程序、因此需要使用“load_dmsc_hsfs.js“和 sciclient_ccs_init 应用程序来初始化 HSFS 器件。

    github.com/.../load_dmsc_hsfs.js

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

    在 DevBoot 配置中、我有一个空的板载 OSPI 闪存 (MAIN_BOOTCFG = EC7B)。

    我打开电路板、启动 CCS 调试会话、当 SOC 可用时、运行 Scripting Console 中的 load_dmsc_hsfs_win.js 脚本。 然后可以下载我的实际应用文件。

    我已经 研究了该脚本、而且“dsMCU1_0.memory.loadProgram (ccs_init_elf_file);“命令从未引起我的注意。

    但现在:是什么使“official“ sciclient_ccs_init.release.out 文件与防火墙一起使用? 我应该将其替换为打开所有防火墙的示例文件! 这将是我的解决方案。

    而且它是有效的!

    再次感谢!

    此致、Kalman

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    但现在:什么使“official“ sciclient_ccs_init.release.out 文件带有防火墙? 我应该将其替换为打开所有防火墙的示例文件! 这将是我的解决方案。

    我不确定是否理解查询。 如果用示例替换 SCICLIENT_CCS_INIT、则需要加载 SYSFW 并打开防火墙。 是否在应用程序中执行这些操作以便不需要 SCICLIENT_CCS_INIT?

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

    SBL 将在发布版本中加载 SYSFW 并打开防火墙。 我仍处于开发阶段。 我的电路板上的闪存芯片为空、我使用  load_dmsc_hsfs_win.js 脚本在调试开始时初始化 SoC。 _Win 意味着:脚本中的路径是在 Windows 样式中设置的:“c\ti\...“。 此脚本会下载 sciclient_ccs_init 示例的输出、而不是 SDK 中原始的/tools/ccs_load/am243x/sciclient_ccs_init.release.out 文件。 它打开了 MSRAM 6 和 7 的防火墙。 这就是我实现的目标。  

    sciclient_ccs_init 示例 与 /tools/ccs_load/am243x/sciclient_ccs_init.release.out.之间存在一些偏差这是什么区别? 在 MSRAM 6 和 7 的打开或不打开防火墙旁边。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    sciclient_ccs_init 示例 与 /tools/ccs_load/am243x/sciclient_ccs_init.release.out.之间存在一些偏差这是什么区别?

    我现在看到该脚本 加载了预构建的 SCICLIENT_CCS_init 示例。 我认为此预编译映像长时间未更新、从而导致与默认示例的偏差。 最好简单地构建示例并使用生成的映像。

    我认为这澄清了对我的疑虑,一切都应该为你解决,所以我现在正在关闭线.