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.

[参考译文] LP-AM263:TCM I 问题

Guru**** 2486065 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1443710/lp-am263-issue-with-tcm-i

器件型号:LP-AM263

工具与软件:

你(们)好

我在让 SBL 通过 TCM 工作时遇到问题。

我从最初的 sbl_ospi_multicore_elf 示例开始。 除了添加在 main ()顶部的 loop_forever 函数之外,原始代码不会被修改。

我想尽可能使用 TCM 存储器、以尽量减少 SBL OCM 的使用量、从而为应用程序提供大部分空间。

因此、我将 TCMA 区域大小修改为64K、并将 TCMB 区域大小修改为192K。

MPU 配置如下:

TCM A:

TCMB:

现在、我要将堆栈段放入 TCMA、如下所示。

计划将.bss 移至 TCMB。

在执行代码时、执行会继续、直到代码调用 bootloader_InitCpu

然后调用 Bootloader_socMemInitCpu

然后卡在等待 TCMA 初始化或触发复位的 while 循环中。

您能否告知导致该行为的原因?

我是否了解 Core0是否已启用 TCMA 和 TCMB?

您会如何推荐使用 TCM 作为 SBL?

谢谢

此致

Sebastien

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

    SBL  设备 应位于除0x70002000 (默认地址)之外的任何其他位置。 有关该文件的更多详细信息、请参阅以下链接: AM26x 器件中的次级引导加载程序流程

    此致、

    Sahana

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

    你(们)好  

    我意识到该帖子可能会令人困惑。

    我不是想让代码从 TCM 工作,我试图最小化 SBL 在 OCM 的足迹。

    因此、我想将堆栈和 BSS 推送到 TCM。

    代码保持在 OCM 中、并从0x70002000开始。

    推动这个概念,我有另一个线程在 XIP 中尝试获取 SBL 工作的一部分: e2e.ti.com/.../5537462

    我们回到将堆栈推送到 TCMA、我当前的工程将.sysmem 和.stack 与其他堆栈分组、整个组从 TCMA 运行。 请参阅从链接器脚本提取。

    组 : {
      .irqstack:{
        . =。 +_IRQ_STACK_SIZE;
      }对齐(8)
      RUN_START (_IRQ_STACK_START)
      RUN_END (__IRQ_STACK_END)
      .fiqstack:{
        . =。 +_FIQ_STACK_SIZE;
      }对齐(8)
      RUN_START (_FIQ_STACK_START)
      RUN_END (_FIQ_STACK_END)
      svcstack:{
        . =。 +__SVC_STACK_SIZE;
      }对齐(8)
      RUN_START (__SVC_STACK_START)
      RUN_END (__SVC_STACK_END)
      .abortstack:{
        . =。 +___ abort_stack_size;
      }对齐(8)
      RUN_START (__ABORT_STACK_START)
      RUN_END (__ABORT_STACK_END)
      .undefinedstack:{
        . =。 +__undefined_stack_size;
      }对齐(8)
      RUN_START (__未定义_STACK_START)
      RUN_END (__undefined_stack_end)
      . sysmem :{
      }对齐(8)
      . 堆栈 :{
      }对齐(8)
      } > R5F_TCMA_64K  

    内核0和1在锁步中运行。 只有内核0在 SBL 项目中被定义。

    将要引导的应用程序的 Core 0和1以锁步方式工作、 Core 2和3以独立方式工作。  

    设置的其余部分与示例相同。 我遇到了上述问题。

    在这种方法中是否有任何错误?

    很高兴分享该项目。

    提前感谢您的帮助。

    此致

    单端

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

    尊敬的 Seb:

    [报价用户 id="237858" url="~/support/processors-group/processors/f/processors-forum/1443710/lp-am263-issue-with-tcm-i "]因此、我将 TCMA 区域大小修改为64K、将 TCMB 区域大小修改为192K。

    在 AM263x 器件上、R5FSS0_CORE0的 TCM 大小如下。

    TCMA 64KB (锁步) 32KB (双核)
    TCMB 64KB  (锁步) 32KB (双核)

    那么您是否愿意与他人共享您的 CCS 项目? 我想导入相同的工程、检查 syscfg 和链接器、尝试对它们进行调试。

    此致、
    Shaunak

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

    尊敬的 Seb:

    忽略我之前的回复、是假设您使用的是 AM263x-LP 的。 从您在论坛上的其他帖子(AM263x 没有 OSPI)中、我意识到您位于 AM263Px-LP (E2E 的标题中提到了 AM263x 而不是 AM263Px)。

    R5FSS0_0内核的 TCM 大小如下:

    锁步模式:TCMA (64KB)+ TCMB (192KB)

    双核模式:TCMA (32KB)+ TCMB (96KB)

    另一个您可能必须检查映射文件的问题是、您的应用程序的.stack 是否适合 TCMA。

    我将等待您共享 CCS 项目、然后我们可以进一步查看。

    此致、
    Shaunak

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

    e2e.ti.com/.../UDS_5F00_sbl_5F00_ospi_5F00_multicore_5F00_elf_5F00_am263px_2D00_lp_5F00_r5fss0_2D00_0_5F00_nortos_5F00_ti_2D00_arm_2D00_clang_5F00_StacksInTCMA.zipe2e.ti.com/.../Multicore_5F00_LedBlinkingApp_5F00_am263px_2D00_lp_5F00_system_5F00_nortos.zip

    你好、Shaunak

    感谢您的反馈。

    请参见附加的项目。 如上所述、该项目是包含.sysmem 和.stack 的 jus 示例、这些示例分组了异常处理栈并直接位于 TCMA 中。

    在调试时、我刷写了这两个引导加载程序(请注意、在 main 的开始处有永远的循环)和一个虚拟多核应用、仅刷写 Launchpad 上的 LED。  

    引导加载程序将解析映像正常、然后继续进行 CPU 初始化、从而解决问题。

    我还连接了.mcelf。

    感谢您的参与。 非常感谢您的帮助。

    此致

    单端