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.

[参考译文] 66AK2L06:CPU1:无法在66AK2L06上联机。

Guru**** 2559190 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/606218/66ak2l06-cpu1-failed-to-come-online-on-66ak2l06

器件型号:66AK2L06
主题中讨论的其他器件: TCI6630K2L

大家好、

我已经在66AK2L06上启动辅助 ARM 内核(又名 CPU1)将近两周、但一直都失败。

我使用 的是 ti-processor-sdk-linux-K2L-EVM-03.03.00.04 (也可以尝试使用 ti-processor-sdk-linux-K2L-EVM-03.02.00.05)。

我还尝试预编译图像、但仍然失败。

我跟踪次级内核启动流程。

首先、CPU0将调用引导监视器中的 psci 函数来为 CPU1加电。
其次、CPU1将首先在引导监视器中执行一些代码 、然后在 arch/arm/kernel/head.S 中执行函数 secondary 启动
似乎不 会在 CPU1上执行 secondary 启动。
我将"b _error_p"添加到此函数作为第一条指令、但 UART0上没有任何错误信息、内核将启动。
如果我将"b_error_p"添加到 entry stext 作为第一条指令、它将按预期显示错误信息(由 CPU0执行)、内核将停止启动。
我已检查引导监视器是否已成功打开 CPU1。
我不知道  CPU1为何不执行 secondary 启动。

可能 CPU1一直挂起、因此它不会在引导监视器或内核中执行任何代码。

我已经检查了电源及其定序。 没有任何问题。

我上传 u-boot 设置、内核启动日志、DTS 文件(从 DTB 恢复)和内核配置以进行检查。

e2e.ti.com/.../5857.uboot_2D00_env.txt

e2e.ti.com/.../5857.kernel_2D00_boot_2D00_log.txt'e2e.ti.com/.../4300.keystone_2D00_k2l_2D00_evm.dts.txt

e2e.ti.com/.../tisdk_5F00_k2l_2D00_evm_5F00_defconfig.txt
我们将感谢您的任何帮助。

此致、
Jason

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

    我已将此事转交给专家。 他们的反馈应发布在此处。

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

    大家好、

    我更新了我遇到的有关此问题的一些信息。

    我可以确认 CPU1始终挂起。

    链接中的内容

    wiki.tiprocessors.com/.../Linux_Core_Boot_Monitor_User's_Guide

    在 u-boot 中执行 mon_install 时、CPU0将执行_skern_init。

    当 Linux 内核启动时、CPU0会开启 CPU1并使 CPU1在 引导监视器中执行_skern_123_init。

    我添加 了汇编语言的调试函数、以便在 UART0上打印一些字符。

    如果我添加跳转_skern_init 中的调试函数作为第一条指令、当我在 u-boot 中执行 mon_install 时、我将在 UART0上获得调试字符。

    如果我添加跳转_skern_123_init 中的调试函数作为第一条指令、

    当 CPU0正决定启动 Linux 内核中的 CPU1启动流程时、没有任何调试字符。

    我们将感谢您的任何帮助。
    此致、
    Jason

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    e2e.ti.com/.../2237252中有重复的帖子
    我们将使用该线程。 为避免丢失信息、上面显示了指向其他帖子的链接。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jason、

    您是否正在使用 TI EVM? 您是否能够在 TI EVM 上启动内核? 内核启动后、所有辅助内核都应运行。 我使用 ProcSDK 3.2中的预构建映像运行了 K2E/L EVM。 在顶部显示屏上、您可以看到运行多核基准测试时所有4个内核的 CPU 利用率。

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

    尊敬的 Rex:

    K2L 中只有2个 ARM 内核、而 K2E 中只有4个 ARM 内核。 那么、您是否使用 K2L EVM?

    我没有 TI EVM。 我使用我们的板、除了电源和一些 GPIO 用于控制其他一些芯片外、这与 TI EVM 几乎相同。

    我已经使用相同的结果测试了来自 ProcSDK 3.02和3.03的预编译映像。

    我还检查 了 IO 之前的内核电源定序、并确保它符合数据表中的要求。

    正如另一个线程所示、我对 ARM 引导魔法地址的评价是两倍。

    目前、引导监视器中的 ARM 引导神奇地址和入口设置如下所示:

    #define CORE_N_BASE_ADDR_ARM00x02501040
    unsigned int * addr =(unsigned int *) core_N_base_ADDR_ARM0;
    对于(i = 1;i < arm_cluster_NUM_CPU;i++){
    ADDR[I * 2]=(unsigned int)_skern_123_init;
    } 

    但次级 ARM 内核根本不会在我的电路板上执行指令。

    我在 skernel.S 中添加了调试函数、以检查次级 ARM 内核是否可以通过在带有汇编代码的 UART0上添加调试信息来执行指令。

    就像这样:

    全局_skern_123_init
    _skern_123_init:
    @
    @我们在 RBL 快速启动后来到这里
    @我们不需要保存 SP 和其他寄存器
    @我们只为我们安装监视器矢量和堆栈
    @
    b __debug_test 

    如果我将 ARM 引导魔法地址恢复为旧地址、如下所示:

        #define CORE_N_BASE_ADDR_ARM0 0x0c1d2500
      unsigned int * addr =(unsigned int *) core_N_base_ADDR_ARM0;
      对于(i = 1;i < arm_cluster_NUM_CPU;i++){
     Addr[i]=(unsigned int)_skern_123_init;
      }
    次级 ARM 内核可以执行我的调试代码并将调试信息放置在 UART0上。
    但是、它在执行 MCR 指令后挂起、如下所示:
    全局_skern_123_init
    _skern_123_init:
    @μ A
    @我们在 RBL 快速启动后来到这里
    @我们不需要保存 SP 和其他寄存器
    @我们只为我们安装监视器矢量和堆栈
    @μ A
        @b __debug_test
        R8女士、CPSR
    BIC R8、R8、#0x1f
    ORR R8、R8、#0x16
    MSR CPSR_c、R8
         @b __debug_test
     
    LDR R1、=monitor_vectors
          @b __debug_test
    MCR P15、#0、R1、C12、c0、 #1 @执行此指令时、次级 ARM 挂起
          b __debug_test @此处未到达
    MRC P15、#0、r0、c0、c0、 5号
     
    和 r0 、r0、#3
          @b __debug_test @此处未到达
     它太模糊了。  没有任何文档说明了66AK2L06上的 ARM 引导魔法地址
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jason、

    K2L 和 K2E 属于同一系列。 唯一的区别是 K2L 具有无线接口。 它们使用相同的软件。 下面是 K2L 的顶部屏幕截图、其中显示了2个内核已启动并正在运行。

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

    您好、Rex、

    我有一个来自 TI 的 EVM。

    它可以使用预构建映像和我自己修改的版本映像启动两个 ARM 内核。

    我发现 EVM 上的芯片是 TCI6630K2L、而我们的芯片是66ak2l06。

    我已经检查了两个芯片规格和数据表。

    除了 CPU 频率外、ARM CorePac 和 DSP CorePac 似乎没有什么不同。

    有一些不同的外设、但我认为它们与我的问题无关。

    电源是相同的。

    从 u-boot 输入中、我 还确认有相同的芯片系列。

    有什么建议吗?

     

    此致、

    Jason

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

    您好、Jason、

    器件型号仅指示  哪个业务部门使用的 SoC。 TCIxx 指示通信基础设施 BU、而66AK2 指示目录 BU。  由于它被用在不同的总线上、一些外设/协处理器可能是不同的。  在目录 BU 中、我经常使用66AK2E 作为与 K2L 相同的系列、但没有无线功能。 在 Linux 中、它们是相同的、但 DTS 文件除外。 除了硬件不同之外、我不能认为您的电路板不会出现任何原因。

    雷克斯

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

    您好、Rex、

    感谢您的信息!

    我与我们的硬件工程师合作、检查电源/复位电路和时钟电源。

    它们符合数据表的要求、与我获得的 EVM 几乎相同。

    什么会影响导致次级内核无法联机的 ARM CorePac 行为?

    此致、

    Jason

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

    Rex、

    当第一个 ARM 已经运行时、您仍然认为它与硬件设计有关吗? 我想它可能与软件相关、也许在某个地方检查器件类型、然后软件运行到不同的开关、只是猜测、因为我以前没有接触过此器件、但这是我的客户、只是希望能帮助他们。

    客户使用 EVM 仔细检查了他们的硬件设计、没有发现不同的硬件设计、并且测量了电源序列、这符合器件的要求。

    除此之外、您是否愿意为我们提供更多检查线索?

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

    Rex、

    我们还发现了一些问题相同的帖子、但不知道它们是否以及如何解决该问题:

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

    Tony、

    感谢您提供信息。

    Jason、

    想知道您的 SoC PG 版本是什么、JTAGID 的位31-28值是多少(0x02620018)? 在 Tony 的链接中、我认为 Pg2之前的硬件应该会出现此问题、但我的 EVM 版本为1.0.3.0、根据 eInfochips 网页、K2E EVM 1.0.3.0具有器件版本1.0。 它应该失败、但我看不到它。 让我花一些时间来了解它、并看看我是否可以获得 PG2.0 EVM。

    雷克斯  

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

    您好、Rex、

    Tony 的链接中的问题仅影响 K2HK 系列 PRE-Pg2硬件、而不影响 K2L 系列硬件。

    我已确认 JTAGID (0x02620018)与 EVM 相同。

    显示如下、

    => MD 0x2620018
    02620018:0b9a702f 00000000 12408087 00000000 /p.… @…
    02620028:00000000 00000000 00000000 00000000…
    

    EVM 的值显示如下、

    => MD 0x2620018
    02620018:0b9a702f 00000000 02008087 00000000 /p...........
    02620028:00000000 00000000 00000000 00000000… 

    但我注意到、DEVSTAT (0x02620020)有一些不同之处。

    我们板上的 DEVSTAT 为0x12408087、而 EVM 上的 DEVSTAT 为0x02008087。

    不同的位是保留位。 我不知道到底意味着什么。

    您能否检查此不同值是否可能导致辅助 ARM 内核无法联机?

    此致、

    Jason

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

    我上传芯片图像以检查 SoC 版本和器件型号。

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

    您的 SoC 似乎是修订版1.0。 我认为 DEVSTAT 位无关紧要。 在 Tony 的第一个链接中、它似乎仅与 K2HK EVM 相关。 在预构建的镜像文件夹中、只有 K2hk birnary 文件提供。 也就是说、它不适用于 K2E/L 在第二个链接中、客户没有提供更多反馈、只是验证了答案。 这给我一种印象、即客户在升级 u-boot 后没有重置 u-boot 环境变量。 我找不到 pg2.0 EVM、但也不认为它很重要。 TI EVM 的版本与您的版本相同。 我无法解释为什么我们在 TI EVM 上看不到问题、而是您的问题。 如果不在 TI 重现此问题、我无法缩小原因范围。

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

    您好、Rex、

    在某些情况下、辅助内核可能会执行指令、我之前已将调试信息发布在此线程中。

    引导监视器、它过去具有两个引导条目地址。

    使用最新的引导方法、次级内核不执行任何指令。

    对于旧的内核、辅助内核可以执行一些指令、但在配置到 CP15时与'mcr'中断挂起。

    从这些不同的行为中、我们是否应该对其进行更多的分析?

    此致、

    Jason

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

    如果不重现问题、我们就很难对其进行调试。 您是否能够按照另一个线程中所述的方法来恢复更改?

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

    您好、Rex、

    我从电路板上移除了66AK2L06、并将 TCI6630K2替换为66AK2L06至 EVM。

    次级臂可以启动。

    我认为有一些信号质量会导致次级臂无法启动。

    我正在检查我们的硬件工程师有何不同。

    所有 GPIO 和电源似乎都由 EVM 上的 FPGA 控制。

    您是否有 FPGA 的源代码?

    目前、我们只是使用猜测进行测量。

    此致、

    Jason

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

    只想提一下、在 TI K2L EVM 上看不到该问题、对吧? 您的硬件上可能存在某种信号完整性? 很抱歉、我不熟悉硬件、只能猜测。 TI EVM 由 eInfochips 构建。 我检查了原理图、它是一个 Xilinx FPGA。 我不确定 Xilinx 是否提供了代码或 eInfochips 对 FPGA 进行了编程。

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

    我确认在具有 TCI6630K2或66AK2L06的 TI K2L EVM 上看不到该问题。

    我将尽力找出根本原因。

    如果我得到它、我将在这里发布它。

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

    您好、Jason、

    这似乎不是 TI 的问题。 如果您不介意、我现在将关闭此主题。 尽管螺纹已闭合、但未锁定。 请在此处发布您的发现。 如果存在其他问题、请打开新主题。 谢谢!

    雷克斯

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

    您好、Rex、

    我认为我的猜测与我之前提到的 DEVSTAT 值是正确的。

    我曾提到、EVM (TCI6630K2)上的 DEVSTAT 值为0x02008087、而我们的电路板(66AK2L06)达到0x12048087。

    现在、我检查 EVM 上的 DEVSTAT 值(替换为66AK2L06) 是否为0x02008087、作为 TCI6630K2。

    DEVSTAT 中具有不同值的这些保留位应反映电路板上66AK2L06未满足的条件。

    您能否从 IC 团队获得任何信息、DEVSTAT 中保留的位到底意味着什么?

    此致、

    Jason

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

    您的问题不在我的业务部门的知识范围内、我需要另一个业务部门来回答您的问题。

    雷克斯