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:Lauterbach TRACE32实例缺失?

Guru**** 2454880 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1491611/am263p4-q1-lauterbach-trace32-instances-missing

器件型号:AM263P4-Q1

工具与软件:

您好!

我运行了"_am263px_allcoretype_connect.cmm"脚本、期望在适用于 ARM-R5xxx 的四个 TRACE32实例中看到该脚本。 但是、我只能得到以下信息:

 

我的工程为 R50_0、R51_0和 R51_1。 (R50_1处于锁步模式)。

我想对  R50_0、R51_0和 R51_1使用 Data、load.Elf。

  • "ARM-R5SS0"= R50_0且"ARM-R5SS1"= R51_0、正确吗?
  • 如果是、为了加载其.out 文件、R51_1的实例在哪里?
  • 如果没有、请更正我的误解。

谢谢你。

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

    您好!

     am263px_allcorettype_connect.cmm 是一个测试脚本、用于显示可以连接所有内核类型。  该 R5的脚本会调用 _am263px_r5ss.cmm attach 帮助程序。  该脚本的调用参数是 AMP1、AMP2或 SMP。   SMP 允许同时调试集群的2个内核(它会将两个内核中的断点设置在同一位置、如果两个内核之间的二进制数相同、则使用该断点)。  如果集群中的内核是独立的、则每个内核都需要一个 GUI。

    对您来说、您将创建3个实例:
     IC R5SS0_0执行"&path/_am263px_r5ss.cmm" R5SS0 AMP1      ;拆分中的磁芯1 (共2个)
     IC R5SS0_1执行"&path/_am263px_r5ss.cmm" R5SS0 AMP2      ;拆分中的芯2 (共2个)
     IC R5SS1_x 执行"&path/_am263px_r5ss.cmm" R5SS1 AMP1      ; 锁芯1 (共1个)
    在连接 R5SS1之前、您会将其锁定。
    x_GEL_TO_cmm 中的裸机脚本主要用于没有初始固件的单元测试。  若要使用 TI SDK 进行开发、您可能需要在应用早期添加干净的连接点(某些 while (1)旋转)、以执行~late 连接、然后进行调试(这可能意味着只有符号加载、因为代码将来自闪存)。
    此致、
    理查德·W·
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Richard、但我仍然在挣扎。

    我不确定、但由于 SS0旨在用作锁步(而不是 SS1)、因此我的简单脚本应该看起来像这样、不是吗?

      IC R5SS0 DO "&path/_am263px_r5ss.cmm" R5SS0 AMP1 ;core 1 of 1 in lock
      IC R5SS1 DO "&path/_am263px_r5ss.cmm" R5SS1 AMP1 ;core 1 of 2 in split
      IC R5SS1 DO "&path/_am263px_r5ss.cmm" R5SS1 AMP2 ;core 2 of 2 in split

    但是、当我运行它时、会得到以下结果:

    抱歉、Lauterbach 有点不好意思。

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

    您好!

    是的、您为连接显示的是正确的流程。   在尝试连接之前、您需要确保对锁步的控制就位。

    内部通信失败、因为在调用之前必须启动实例。  IC =内部通信、它采用"name-handle"参数 R5SS0。  "name-handle"是网络端口地址的别名。  必须先创建这些脚本(如 allcore 连接脚本中所示)。  创建后、可以使用参数调用它。

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

    尊敬的 Richard:

    我已经创建了两个实例并发布了 SS1中的两个内核。 我现在正在使用以下脚本:

    这似乎产生了所有正确的噪音:

    但是、这仍然只提供两个实例、 每个子系统一个。 据我所见、我只能在 SS1中查看一组寄存器、我假设这是内核0 (也称为 R5FSS1_0)。

    但问题仍然存在:

    -如何查看 SS1 (R5FSS1_1)中第二个内核的寄存器?

    -如何将 ELF 文件加载到 SS1 (R5FSS1_1)中的第二个内核?

    谢谢你。

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

    您好!

    具体操作取决于所运行的代码。   某些自动加载器配置会在内核之间使用相同的代码、在这些情况下、您会发送"smp"参数(此配置中为两个内核设置断点等参数)。  如果每个内核使用自己的代码、则您应启动3个 GUI 实例。   重复使用上面的图形即可得到"R5SSx AMP1 + R5SSy AMP1 + R5SSy AMP2"。  然后、您可以使用 GUI 实例或通过脚本获取的其句柄直接加载给定的内核。  

    可能值得研究 Lauterbach 提供的一些 TRACE32专门培训。  他们将能够加速您的工具使用。  他们在自己的农场有这些板,并将提供最好的工具具体的帮助。

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

    是的、我需要3个 GUI 实例、因为我在每个内核中都有唯一的代码。

    [报价 userid="7309" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1491611/am263p4-q1-lauterbach-trace32-instances-missing/5742295 #5742295"]具有"R5SSx AMP1 + R5SSy AMP1 + R5SSy AMP2"[/报价]

    同意、但 R5SSy AMP2的语法是什么? 这是问题的关键所在。

    按照该模式、我具有:

    在上面、我要尝试在第34到39行创建 R5SS1 (R5SSy)的第二个实例、并传递 AMP2参数。 但是、只有一个实例(子系统1的实例)(脚本中要创建的最后一个实例)保留为:

    第一个子系统1实例丢失、可能是在创建第二个实例时关闭。

    您是否能够尝试这你的终端吗?

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

    实际上、我可能只是 偶然发现了正确的语法:

    看起来像 intercom.ping ()和 _am263px_r5ss.cmm 的参数应该保持为'R5SS1'(绿色),但所有其他子系统引用都是 R5FSS1_1 (黄色):

    我对第一个实例重复了相同的模式。

    现在、我有3个 GUI 可以使用。

    是否实际连接到正确的内核、仍有待观察。 下面是我现在拥有的脚本:

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ; Launch/connect all cores for AM263px
    ; 28 Aug 23 - Richard Woodruff - Adapt AM263 to AM263px
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ; Bare metal all core test to run on:
    ;   GP:     All core connect
    ;   HS-FS:  SW1: FLED(0,1,0,1) : All core connect
    ;   HS-xx:  SW1: !FLED : Use null SBL to unlock (else no HSM and watchdog)
     &path=OS.PPD()
    
    ;;;;;;;;;;;;;;;;;;;;;; SOC Setup ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;; Initial scripts use AHB-AP to bring up cores
     TITLE "TRACE32 for ARM-CR5-EAHB - MASTER"
     DO "~~~~/AM263Px.cmm"    ; enable all power & clocks & load menus
     wait 1s
    
    ;;;;;;;;;;;;;;;;;;;;;;; R5FSS;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;; CR5: (R5SS0,R5SS1) x (SMP,AMP1,AMP2)
    ;;;;;;;;;;;;;;;;;;;;;;; R5F_SS0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
     IF !INTERCOM.PING(R5SS0)
      TargetSystem.NewInstance R5SS0 /ARCHitecture ARM
     IC R5SS0 TITLE "TRACE32 for ARM-R5SS0_0"
     DO "&path_AM263Px_common_cmm" R5F_SS0_CoreA_unhalt
     IC R5SS0 DO "&path/_am263px_r5ss.cmm" R5SS0 AMP1
     IC.WAIT R5SS0
    ;;;;;;;;;;;;;;;;;;;;;;; R5F_SS1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
     IF !INTERCOM.PING(R5SS1)
      TargetSystem.NewInstance R5SS1_0 /ARCHitecture ARM
     IC R5SS1_0 TITLE "TRACE32 for ARM-R5SS1_0"
     DO "&path_AM263Px_common_cmm" R5F_SS1_CoreA_unhalt
     IC R5SS1_0 DO "&path/_am263px_r5ss.cmm" R5SS1 AMP1
     IC.WAIT R5SS1_0
     
     IF !INTERCOM.PING(R5SS1)
      TargetSystem.NewInstance R5SS1_1 /ARCHitecture ARM
     IC R5SS1_1 TITLE "TRACE32 for ARM-R5SS1_1"
     DO "&path_AM263Px_common_cmm" R5F_SS1_CoreB_unhalt
     IC R5SS1_1 DO "&path/_am263px_r5ss.cmm" R5SS1 AMP2
     IC.WAIT R5SS1_1
    
    ENDDO

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

    好的、3个 GUI 应该允许独立控制每个内核。  您可以在每个内核上加载一些唯一代码、也可以进行"data.assembly"(创建每个内核的简单唯一代码)、然后设置 PC 进行单步执行。

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

    感谢 Richard 的腿举起来。

    我已确认通过 MPIDR 寄存器连接了正确的内核。

    我还修改了_am263px_r5ss.cmm 并 为每个代码加载了正确的程序,它们都运行到 main()。 所以我很高兴……几乎。

    请回答最后一个问题 :我希望同时启动全部3个实例。 如何为所有内核同时进行?

    CCS 中的等效操作是点击 CORE 组1并点击 Resume:

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

    您好!

    感谢您分享有关进度的反馈。   MPIDR 是一个增强内核到 GUI 映射信心的好方法。  我的方法是基于地址映射以及正确的规范、但 MPIDR 甚至是更好的关联点。

     对于使用操作规则进行分组、常用的方法是使用 synch 命令。 默认情况下、它将使用基于调试器网络端口的同步。  如果需要更快的方法、可以设置 CTI。  我制作了一个短视频来演示 am263p EVM。

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

    非常感谢视频 Richard、正是我所需要的!

    对于后续读取器、只需将两个从器件放在主器件的连接列表中用空格隔开: