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.

[参考译文] TM4C1294kcpdt:XDS100v2调试程序 MAC 用户1/2寄存器

Guru**** 2468610 points
Other Parts Discussed in Thread: EK-TM4C1294XL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/671948/tm4c1294kcpdt-xds100v2-debug-program-mac-user1-2-registers

器件型号:TM4C1294KCPDT
Thread 中讨论的其他器件:EK-TM4C1294XL

即使 在完全擦除闪存之后、也会返回一些奇怪的 MAC 地址。  单独刷写 每个用户 寄存器提交或刷写整个 MAC 地址会写入错误的数据、但固件会闪烁、即使是奇数 MAC 地址也能正常工作。 已验证 XDS100v2 JTAG 测试通过多次、没有任何错误。

奇怪的是 、首次尝试刷写该 MCU 的 MAC 部分成功 、然后在  对 MAC 进行夸夸其利时降级、如下所示。  调试用户寄存器1/2具有 与 XDS100V2回读相同的写入式 Wacky MAC。

有什么想法吗?

Cortex_M4_0:正在初始化器件...
Cortex_M4_0:操作成功完成。
Cortex_M4_0:正在擦除器件...
Cortex_M4_0:对 Flash 存储器执行整体擦除
Cortex_M4_0:操作成功完成。
Cortex_M4_0:编程的值被提交到用户寄存器1
Cortex_M4_0:操作成功完成。
Cortex_M4_0:用户寄存器操作...
Cortex_M4_0:MAC 地址值:0-10-2-0-10-0
Cortex_M4_0:操作成功完成。

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

    请记住、在提交 USER0/1之前、只写入了部分 MAC

    寄存器53:用户寄存器0 (USER_REG0)、偏移量0x1E0
    寄存器54:用户寄存器1 (USER_REG1)、偏移量0x1E4
    寄存器55:用户寄存器2 (USER_REG2)、偏移量0x1E8
    寄存器56:用户寄存器3 (USER_REG3)、偏移量0x1EC

    注意:偏移量是相对于0x400F.E000的系统控制基址而言的。
    每个寄存器提供32位用户定义的非易失性数据。 位只能是
    从1更改为0。 所示的复位值仅适用于寄存器不工作时的上电复位
    尚未提交;任何其他类型的复位都不影响该寄存器。 提交后、即寄存器
    通过上电复位保留其值。 恢复出厂默认值的唯一方法
    寄存器用于执行"恢复锁定的器件"序列、详见 JTAG 一节。

    我们尝试 JTAG 解锁、但 在 CCS 调试中有点棘手  、因为 XDS100v2无法在调试条目时连接到目标。  因此、由于 XDS100v2未连接到 DAP、因此目标可以在进入调试时断电、甚至在调试时重新加电。 但是 解锁过程由于未知原因而失败。

     

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

    您好 BP101:

     您能告诉我您使用什么工具通过 XDS100v2调试探针执行批量擦除(解锁器件)吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 BP101:
    很抱歉、我看不到您的第二个回复。 那么、您使用的是 CCS。 您如何在 CCS 中解锁 JTAG?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    使用 CCS 调试闪存实用程序而无需连接到 XDS100v2或在进入调试时刷写固件、这只是它在过程中的过程中非常深入。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 BP101:
    完成批量擦除后、您能否立即检查 MAC 地址是否已擦除至所有 F?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是昨天晚上尝试的第一件事、没有擦除 MAC 用户区域。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    另一个奇怪的现象是 UART3 RIS 寄存器 FEIS 和 BERIS 卡在打开位置、设为1。 RWIC 不会清除两个位、这非常奇怪、因为 MIS 甚至没有将这些位设置为中断或成帧中断、因此 TXD (PA5)输出保持高电平。 这一个甚至更难跟踪。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Cortex_M4_0:GEL 输出:
    内存映射初始化完成
    Cortex_M4_0:正在擦除器件...
    Cortex_M4_0:对 Flash 存储器执行整体擦除
    Cortex_M4_0:操作成功完成。
    Cortex_M4_0:正在执行空白检查...
    Cortex_M4_0:对以下(对齐)存储器范围执行空白检查:0x0 - 0x7FFFF
    Cortex_M4_0:操作成功完成。
    Cortex_M4_0:正在计算 CRC-32...
    Cortex_M4_0:选择了以下范围:0x0 - 0x%7FFFF
    Cortex_M4_0:计算得出的 CRC-32值:0x504bf849
    Cortex_M4_0:操作成功完成。
    Cortex_M4_0:用户寄存器操作...
    Cortex_M4_0:用户寄存器0值:0x21000
    Cortex_M4_0:操作成功完成。
    Cortex_M4_0:用户寄存器操作...
    Cortex_M4_0:用户寄存器1值:0x1000
    Cortex_M4_0:操作成功完成。
    Cortex_M4_0:用户寄存器操作...
    Cortex_M4_0:MAC 地址值:0-10-2-0-10-0
    Cortex_M4_0:操作成功完成。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 BP101:
    我无法使用 CCS 的闪存实用程序通过 XDS100v2调试探针自行执行器件解锁。 除非器件被真正的整体擦除、在这种情况下、USER0/1寄存器被擦除、否则不能重新编程 MAC 地址、即使控制台可能已经显示它已经将某些内容编程到 USER0/1寄存器中。 控制台的输出对我来说不正确。 您是否还记得在 CCS 中执行批量擦除后、寄存器 USER0/1中存储了哪些值?

    我建议您尝试 dbgjtag.exe 对器件进行批量擦除(器件解锁)、然后在 CCS 中对 MAC 地址进行编程、看看该地址是否起作用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Charles、

    与上面打印输出中相同的 MAC (批量擦除)没有正确或根本不能刷写 USER0/1。 奇怪的是整体擦除 空白验证将 MCU 闪存恢复到出厂 ROM 引导加载程序模式、因此 USER0/1应该已经被擦除但没有被擦除。  

    此外、发现 UART3 ISRAW 和 IMS 在最终 通过   EK-XL ICDI JP5接头 和 Widows COM 端口终端发送数据后未报告正确的信息。 XDS100v2仿真     器似乎正在刷新大多数其他外设寄存器中的读取数据、没有错误、可能需要进行闪存更新才能正确读取 UART2之上的外设寄存器。  

    我 看到 调试控制台中列出了更新 ICDI 、但害怕刷写 XDS100v2并在执行此操作后使其失败。 该 ICDI 更新是否适用于 XDS100v2?

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

    您好 BP101:

     我真的怀疑您的批量擦除成功了。 据我所知、空白检查不会检查 USER0/User1寄存器。 这些是 OTP 部分中的特殊闪存位置。 您能否出于实验目的尝试使用 dbgjtag.exe 执行批量擦除。 请参阅下面的内容并将 xds200替换为 xds100v2。

     我建议您不要更新 ICDI。 我刚才连接了 XDS100v2、下面是控制台日志。 问题是、它使 LPAD 在 ICDI 模式下之后不可用。 我需要使用 LM 闪存编程器来再次更新 ICDI 固件、使其能够再次工作。

    Cortex_M4_0:GEL 输出:
    内存映射初始化完成
    Cortex_M4_0:正在检查连接的器件...
    Cortex_M4_0:正在打开 ICDI 器件...
    Cortex_M4_0:正在检查已连接的器件类型...
    Cortex_M4_0:正在检查固件版本...
    Cortex_M4_0:连接的 ICDI 固件版本:12630
    Cortex_M4_0:更新到以下版本:9454
    Cortex_M4_0:将 ICDI 切换到更新模式...
    Cortex_M4_0:正在等待 ICDI 更新连接...
    Cortex_M4_0:打开 ICDI 器件进行更新...
    Cortex_M4_0:使用新固件对 ICDI 进行编程...
    Cortex_M4_0:关闭 ICDI 器件。
    Cortex_M4_0:固件更新完成。

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

    dbgjtag 是我唯一擦除 MAC 地址的方法。 否则、您只需将1写入0、这是一个按位的操作、并将新值与存在的值进行运算。

    GUI 会更好。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    最终必须通过 U6使 EK-TM4C1294XL 远程 MCU ICDI、移除 R40和目标 JTAG 零欧姆电阻器。 通过 ICDI 解锁用于在 CCS 调试中清除 USER0/1、并在 XDS 失败的情况下读取 UART3 IM 和 RIS。 感谢您验证 XDS100V2是否存在问题、我在前面提到的一些 UART3问题似乎通过连接到目标系统的 EK-ICDI 来降低威胁。

    已决定通过目标3V3 LDO 为 EKXL ICDI 供电、无法将 U6引脚1接头上的 ICDI 3V3停止到远程目标或停止 USB 为目标供电。 从目标为两个系统供电的单个3V3电源似乎会使 CCS 闪存验证挂起、并且无法启动目标或未从最后一次挂起中清除硬件断点。 让两个3V3电源相互竞争是否听起来很奇怪?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="BP101"]从目标为两个系统供电的单个3V3电源似乎使 CCS 闪存验证挂起、启动目标的过程未进行、或者硬件断点未从最后一次挂起中清除。

    复 选框以在 ICDI 连接上复位目标即使 在程序加载被选中后复位目标、 CCS 调试也不会跳转到程序 主程序、即使 也是选中此复选框。 XDS100v2不需要"Reset target on connect"复选框、  每个仿真器的闪存技术之间略有差异。