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.

[参考译文] TMS320F28379D:Linux 下的 Uniflash

Guru**** 1561515 points
Other Parts Discussed in Thread: TMS320F28379D, UNIFLASH
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1355205/tms320f28379d-uniflash-under-linux

器件型号:TMS320F28379D
主题中讨论的其他器件: UNIFLASH

您好!

我想通过 Linux 命令行对 TMS320F28379D (闪存和 OTP 存储器)进行编程。

我正为在 Linux 下使用 Uniflash 而苦恼。 我有 Intel Atom 330板、它是 x86_64。

到目前为止、我测试的内容:

  • xubuntu 16.04 -可以安装和运行 Uniflash、但未检测 xds110。 在系统日志中有一些抱怨 glibc 版本(太旧)
  •  Ubuntu 20.04.6 LTS -无法安装 Uniflash、安装程序显示 libusb 和 libgconf 缺失的消息(不幸的是、这些库已不在发行版中)

我获悉 Linux 和 x86-64架构支持 UniFlash。

请告诉我应该使用什么 Linux (发行版和版本)才能使 UniFlash 正常工作。

这对我来说非常重要、必须在一周内开始对具有 TMS320F28379D 的1k 器件进行编程。
UniFlash 只是我的一个组件、我需要构建基于 UniFlash 的环境。

此致、

Piotr Romaniuk

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

    Fedora 39如中所述:

    e2e.ti.com/.../uniflash-linux-desktop-application-sporadically-stuck

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    •  Ubuntu 20.04.6 LTS -无法安装 Uniflash、安装程序显示 libusb 和 libgconf 缺失的消息(不幸的是、这些库已不在发行版中)

    我获悉 Linux 和 x86-64架构支持 UniFlash。

    [/报价]

    您可能缺少一些依赖项。 许多依赖项应该与 CCS 相似。 请参阅本页:

    https://software-dl.ti.com/ccs/esd/documents/ccsv12_linux_host_support.html

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

    是的、回答正确。 我在 Ubuntu 20.04中安装了缺失的软件包。 Uniflash 已启动并检测到 xds110。  

    不幸的是、它的工作非常慢-无法使用。

    我现在正在更新系统中的软件包。 我将在更新后再次检查它。

    为了实现我的目标、我需要命令行工具、因此 GUI 使用问题可能对我来说很小。

    此致、

    Piotr Romaniuk

    PS
    我将在这里写下进度。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    为实现我的目标,我需要命令行工具,所以 GUI 的使用问题可能对我来说很小。

    UniFlash 附带命令行界面。 请参阅以下文档的"命令行界面"部分:

    https://software-dl.ti.com/ccs/esd/uniflash/docs/v8_6/uniflash_quick_start_guide.html#command-line-interface

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

    UniFlash GUI 无法正常工作。 它是如此的慢,在设置初始配置时几十秒持续(它是非常有效和响应在16.04 )。

    我希望在切换到 CLI 之前验证一切正常。

    使用 CLI 前、我应该做些什么? 我应该先在 GUI 中部署什么吗?

    此致、

    Piotr Romaniuk

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    UniFlash GUI 不工作。 它太慢了,设置初始配置时可以持续几十秒[/报价]

    您使用的是  Intel Atom 330。 性能将会非常慢。 我会推荐一款电流更强大的处理器。

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

    命令行工具的速度是可以接受的。 我使用生成的 uniflash_linux.zip 作为模板。

    不幸的是、存在一些问题:

    1.脚本 one_time_setup.sh 创建了错误的链接(在软件包中有 libstdc++.so.6.0.30但脚本试图链接6.0.28 )-次要,我手动修正。

    2.总的来说,闪存已被擦除,我获得了错误(请参见此消息末尾的)。 重新启动 CPU 电源并重新连接 USB XDS 帮助。 我在 笔记本电脑(Windows)上通过 uniflash 验证了 CPU 的状态、内存是空白的、可以对 CPU 进行编程和 erasse。
    OTP 消息非常奇怪、该 hex 文件不会触摸 OTP。

    对于生产环境、不可重新启动电源或重新连接 USB。

    3.在生产中我们使用 DCSM ,因此十六进制文件也会包含 OTP 写入。 它是否会由 DSlite 闪存命令正确地处理?

    4. UniFlash-GUI 中有一个"运行后保持连接"功能。 如何在 CLI 中获取它?

    在生产中、我们按顺序对两个内核进行编程:cpu02、cpu01、并保持它们、直到该功能完成序列。 只要它们连接在一起 、它们就不会被重置、安全性也是无效的。

    此致、

    Piotr Romaniuk

    pi@tool:~/uniflash_linux$ ./dslite-C28xx_CPU1.sh
    + set -e
    ++ readlink -f ./dslite-C28xx_CPU1.sh
    + script=/home/pi/uniflash_linux/dslite-C28xx_CPU1.sh
    ++ dirname /home/pi/uniflash_linux/dslite-C28xx_CPU1.sh
    + scriptDir=/home/pi/uniflash_linux
    + hexfile=user_files/images/Bootloader_cpu01.hex
    + MODE=flash
    + USEROPTIONS=
    + '[' '' == --listMode ']'
    + '[' 0 -ne 0 ']'
    + '[' 0 -eq 0 ']'
    + args=(\"$scriptDir\"/ccs_base/DebugServer/bin/DSLite $MODE -c user_files/configs/f28379d.ccxml -l user_files/settings/generated.ufsettings -s VerifyAfterProgramLoad=\"No verification\" -e -f -v \"$hexfile\")
    + echo -e Executing: '"/home/pi/uniflash_linux"/ccs_base/DebugServer/bin/DSLite' flash -c user_files/configs/f28379d.ccxml -l user_files/settings/generated.ufsettings -s 'VerifyAfterProgramLoad="No' 'verification"' -e -f -v '"user_files/images/Bootloader_cpu01.hex"'
    Executing: "/home/pi/uniflash_linux"/ccs_base/DebugServer/bin/DSLite flash -c user_files/configs/f28379d.ccxml -l user_files/settings/generated.ufsettings -s VerifyAfterProgramLoad="No verification" -e -f -v "user_files/images/Bootloader_cpu01.hex"
    + eval '"/home/pi/uniflash_linux"/ccs_base/DebugServer/bin/DSLite' flash -c user_files/configs/f28379d.ccxml -l user_files/settings/generated.ufsettings -s 'VerifyAfterProgramLoad="No' 'verification"' -e -f -v '"user_files/images/Bootloader_cpu01.hex"'
    ++ /home/pi/uniflash_linux/ccs_base/DebugServer/bin/DSLite flash -c user_files/configs/f28379d.ccxml -l user_files/settings/generated.ufsettings -s 'VerifyAfterProgramLoad=No verification' -e -f -v user_files/images/Bootloader_cpu01.hex
    DSLite version 12.7.0.3313
    Configuring Debugger (may take a few minutes on first launch)...
            Initializing Register Database...
            Initializing: IcePick_C_0
            Executing Startup Scripts: IcePick_C_0
            Initializing: C28xx_CPU1
            Executing Startup Scripts: C28xx_CPU1
            Initializing: CPU1_CLA1
            Executing Startup Scripts: CPU1_CLA1
            Initializing: C28xx_CPU2
            Executing Startup Scripts: C28xx_CPU2
            Initializing: CPU2_CLA1
            Executing Startup Scripts: CPU2_CLA1
    Connecting...
    C28xx_CPU1: GEL Output:
    Memory Map Initialization Complete
    info: C28xx_CPU1: If erase/program (E/P) operation is being done on one core, the other core should not execute from shared-RAM (SR) as they are used for the E/P code. Also, CPU1 will be halted to determine SR ownership for the CPU which will run the Flash Plugin code, after which CPU1 will be set to run its application. User code execution from SR could commence after both flash banks are programmed.
    Loading Program: user_files/images/Bootloader_cpu01.hex
            Preparing ...
            0 of 15754 at 0x80000
    fatal: C28xx_CPU1: Trouble Writing Memory Block at 0xc000 on Page 0 of Length 0x180: (Error -1044 @ 0x0) The debug probe reported an error. Confirm debug probe configuration and connections, reset the debug probe, and retry the operation. (Emulation package 12.7.0.00059)
    error: C28xx_CPU1: Error occurred during flash operation: Target failed to write 0x00C000@Program
    fatal: C28xx_CPU1: Trouble Writing Memory Block at 0x130 on Page 0 of Length 0x2: (Error -1044 @ 0x0) The debug probe reported an error. Confirm debug probe configuration and connections, reset the debug probe, and retry the operation. (Emulation package 12.7.0.00059)
    error: C28xx_CPU1: Error occurred during flash operation: Target failed to write 0x000130@Program
    fatal: C28xx_CPU1: Trouble Writing Memory Block at 0x134 on Page 0 of Length 0x2: (Error -1044 @ 0x0) The debug probe reported an error. Confirm debug probe configuration and connections, reset the debug probe, and retry the operation. (Emulation package 12.7.0.00059)
    error: C28xx_CPU1: Error occurred during flash operation: Target failed to write 0x000134@Program
    fatal: C28xx_CPU1: Trouble Writing Memory Block at 0x136 on Page 0 of Length 0x2: (Error -1044 @ 0x0) The debug probe reported an error. Confirm debug probe configuration and connections, reset the debug probe, and retry the operation. (Emulation package 12.7.0.00059)
    error: C28xx_CPU1: Error occurred during flash operation: Target failed to write 0x000136@Program
    fatal: C28xx_CPU1: Trouble Writing Memory Block at 0x138 on Page 0 of Length 0x2: (Error -1044 @ 0x0) The debug probe reported an error. Confirm debug probe configuration and connections, reset the debug probe, and retry the operation. (Emulation package 12.7.0.00059)
    error: C28xx_CPU1: Error occurred during flash operation: Target failed to write 0x000138@Program
    fatal: C28xx_CPU1: Trouble Setting Breakpoint with the Action "Remain Halted" at 0xc0eb: (Error -1044 @ 0x0) The debug probe reported an error. Confirm debug probe configuration and connections, reset the debug probe, and retry the operation. (Emulation package 12.7.0.00059)
    error: C28xx_CPU1: Error occurred during flash operation: Internal error while writing 0x0005F444@Data
    fatal: C28xx_CPU1: Trouble Reading Register ST1: (Error -1044 @ 0x0) The debug probe reported an error. Confirm debug probe configuration and connections, reset the debug probe, and retry the operation. (Emulation package 12.7.0.00059)
    error: C28xx_CPU1: Error setting the GSxMSEL register for Flash operations
    fatal: C28xx_CPU1: Can't Run Target CPU: (Error -1044 @ 0x0) The debug probe reported an error. Confirm debug probe configuration and connections, reset the debug probe, and retry the operation. (Emulation package 12.7.0.00059)
    fatal: C28xx_CPU1: Error: (Error -1044 @ 0x0) The debug probe reported an error. Confirm debug probe configuration and connections, reset the debug probe, and retry the operation. (Emulation package 12.7.0.00059)
    error: C28xx_CPU1: Unable to determine target status after 20 attempts
    error: C28xx_CPU1: Failed to remove the debug state from the target before disconnecting.  There may still be breakpoint op-codes embedded in program memory.  It is recommended that you reset the emulator before you connect and reload your program before you continue debugging
    error: C28xx_CPU1: Error occurred during flash operation: Could not read 0x0007026D@Data: target is not connected
    error: C28xx_CPU1: Error occurred during flash operation: Could not write 0x0005F444@Data: target is not connected
    error: C28xx_CPU1: Error occurred during flash operation: Could not read 0x0005F444@Data: target is not connected
    error: C28xx_CPU1: Error setting the GSxMSEL register for Flash operations
    error: C28xx_CPU1: Error occurred during flash operation: Could not read 0x000130@Program: target is not connected
    error: C28xx_CPU1: Error executing PLL configuration algorithm. Operation cancelled. (0x0)
    error: C28xx_CPU1: Error occurred during flash operation: Could not write 0x0005D200@Data: target is not connected
    error: C28xx_CPU1: File Loader: Memory write failed: Unknown error
            Finished

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    3. 在生产环境中、我们使用 DCSM、因此十六进制文件也将包含 OTP 写入。 它是否可以通过 DSlite flash 命令正确处理?

    可在 UniFlash GUI 中执行的大多数操作可通过命令完成。 您是否能够从 UniFlash GUI 执行此操作?

    4. 在 UniFlash-GUI 中有一个"运行后保持连接"功能。 如何在 CLI 中获取它?

    请访问: https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/998161/tms320f280048-q1-uniflash-programming-issue/3687539#3687539

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    可在 UniFlash GUI 中完成的大多数操作可通过命令完成。 您是否能够从 UniFlash GUI 执行此操作?

    是的、它通常在 UniFlash GUI 窗口版本中工作。 虽然存在一些问题、但我们会在本文报告之前尝试捕获日志。

    AD/4  

    哦、是的、您还记得有 DSS 脚本。 我知道它,但还没有使用。  

    广告 2.
    你能问[2]吗? 我们将在下周对1K 个器件进行编程、对于这类问题、我们将会变得更加困难且耗时。

    此致、
    Piotr Romaniuk

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    广告。 2.
    你能问[2]吗? 我们将在下周对1K 个设备进行编程,这样的问题将使它变得更加困难和耗时。

    似乎闪存操作失败。 我会将该主题提请器件专家注意。

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

    尊敬的 Piotr:

    我现在被分配到这个职位。

    请澄清几个问题:

    1) 1)控制台摘要在哪里提到它正在写入 OTP?

    2) 2)您是否已将任何初始化段映射到应用程序中的 RAM?   

    3) 3)在尝试显示错误消息之前、您是否已在此设备上配置 DCSM?

    谢谢。此致、

    瓦姆西

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

    尊敬的 Vamsi:

    1)控制台摘要在哪里提到它正在写入 OTP?

    我这样想:

    1. @CCS、我使用了 DCSM_SECURITY_TOOL 生成 OTP 配置。 我将其添加到了我的项目中(在链接器脚本中进行修改、在.asm 中修改 OTP 的值)。 它导致 OTP 位置采用.hex 文件。
    2. @UniFlashGUI 仅可通过包含 OTP 位置的.hex 文件成功对 CPU 进行编程并确保 CPU 安全  
    3. @UniflashGUI 有"独立命令行"-我假设 它具有与 GUI 相同的功能、

    我在上面报告的问题是针对未修改 OTP 的软件。 这是我的下一步。 我已经有一些旧版板、所以我可以  对 OTP 进行试验、也可以[编辑] CLI 可以对 OTP 进行编程、这里是证明(我还检查了 OTP 内容是否与十六进制一致)

    DSLite version 12.7.0.3313
    Configuring Debugger (may take a few minutes on first launch)...
            Initializing Register Database...
            Initializing: IcePick_C_0
            Executing Startup Scripts: IcePick_C_0
            Initializing: C28xx_CPU1
            Executing Startup Scripts: C28xx_CPU1
            Initializing: CPU1_CLA1
            Executing Startup Scripts: CPU1_CLA1
            Initializing: C28xx_CPU2
            Executing Startup Scripts: C28xx_CPU2
            Initializing: CPU2_CLA1
            Executing Startup Scripts: CPU2_CLA1
    Connecting...
    C28xx_CPU1: GEL Output:
    Memory Map Initialization Complete
    info: C28xx_CPU1: If erase/program (E/P) operation is being done on one core, the other core should not execute from shared-RAM (SR) as they are used for the E/P code. Also, CPU1 will be halted to determine SR ownership for the CPU which will run the Flash Plugin code, after which CPU1 will be set to run its application. User code execution from SR could commence after both flash banks are programmed.
    C28xx_CPU2: GEL Output:
    Memory Map Initialization Complete
    info: C28xx_CPU2: If erase/program (E/P) operation is being done on one core, the other core should not execute from shared-RAM (SR) as they are used for the E/P code. Also, CPU1 will be halted to determine SR ownership for the CPU which will run the Flash Plugin code, after which CPU1 will be set to run its application. User code execution from SR could commence after both flash banks are programmed.
    Loading Program: user_files/images/new-cpulock/Bootloader_cpu02.hex
            Preparing ...
            0 of 24 at 0x78000
            0 of 16 at 0x78010
            0 of 32 at 0x78020
            0 of 24 at 0x78200
            0 of 16 at 0x78210: 1%
            0 of 32 at 0x78220: 1%
            0 of 8124 at 0x80000: 1%
            Finished: 1%
            Setting PC to entry point.: 1%
    Verifying Program: user_files/images/new-cpulock/Bootloader_cpu02.hex
            Preparing ...
            0 of 24 at 0x78000
            0 of 16 at 0x78010
            0 of 32 at 0x78020
            0 of 24 at 0x78200
            0 of 16 at 0x78210: 1%
            0 of 32 at 0x78220: 1%
            0 of 8124 at 0x80000: 1%
            Finished: 1%
    info: C28xx_CPU2: Program verification successful for user_files/images/new-cpulock/Bootloader_cpu02.hex
    Success
    

    我的推理过程中有任何差距吗? UniflashGUI 和 CLI 是否使用 下面相同的机制(DSlite 调试服务器/DSS)?

    2)在应用程序中是否有任何已初始化的部分映射到 RAM?

    我不确定我是否理解你的意思。 我可能在 RAM 中有一些被初始化为非零值的变量、但这是由启动代码而不是 JTAG 编程器完成的。

    3) 3)在尝试显示错误消息之前、您是否已在此设备上配置 DCSM?

    谢谢。此致、

    [/报价]

    我不确定、可能没有。 请注意、重启后编程没有问题。

    我很惊讶0xc000存储器地址处记录的 dslite 问题(如果我没记错、那就是 RAMGS):

            Preparing ...
            0 of 15754 at 0x80000
    fatal: C28xx_CPU1: Trouble Writing Memory Block at 0xc000 on Page 0 of Length 0x180: (Error -1044 @ 0x0) The debug probe reported an error. Confirm debug probe configuration and connections, reset the debug probe, and retry the operation. (Emulation package 12.7.0.00059)
    error: C28xx_CPU1: Error occurred during flash operation: Target failed to write 0x00C000@Program

    这个问题是如此的持续,我需要重新启动所有。

    此致、

    Piotr Romaniuk

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

    尊敬的 Piotr:

    我将在下周查看并与您联系。

    谢谢。此致、

    瓦姆西

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

    尊敬的 Piotr:

    很抱歉耽误你的时间。  我复查了错误。

    这不是刷写过程中的错误。

    错误表示闪存工具无法将闪存工具的代码加载到 RAM 中。

    当错误发生时、您是否可以尝试将代码加载到发生故障的 RAM 地址、然后查看是否能够成功加载?  您也可以尝试在调试器内存窗口中写入该 RAM 地址、然后查看写入是否成功。

    请让我知道情况如何。

    谢谢。此致、

    瓦姆西

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

    尊敬的 Vamsi:

    它发生了一次。 如果我记得正确的话,第二次审判也失败了。 需要重新启动 XDS 和 CPU 的电源才能使其再次工作。  
    我现在无法对其进行测试、但如果其频率较高、在对系列器件编程(1K)期间将再次进行测试。

    出现错误时,您能否将代码加载到该故障 RAM 地址,看看您是否能够成功加载?  您也可以尝试在调试器内存窗口中写入该 RAM 地址、然后查看写入是否成功。

    我只有 CLI。此设备上的 Uniflash GUI 太慢。  

    此致

    Piotr Romaniuk

    PS
    调试服务器(即 DSLite)是否也写入 Node Webkit?

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

    Piotr、

    好的、如果它再次发生并且如果这导致闪烁错误、我可以提供帮助。

    到目前为止、我可以看出这不是闪烁错误。  您可以使用 CCS、并在发生故障时尝试将一些代码加载到该发生故障的 RAM 地址。  我们的团队可以根据您提供的信息提供帮助、只要您准备就绪即可。

    关于 DSLite 问题、我会要求 Ki 为您进行澄清。

    谢谢。此致、
    瓦姆西

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

    尊敬的 Vamsi:

    到目前为止,我可以看出这不是闪烁错误
    错误提示闪存工具无法加载 RAM 中的闪存工具代码

    感谢您确认初始阶段卡滞、甚至在它触摸闪存或 OTP 之前。

    我对此问题感到担忧、因为:

    • 我使用了德州仪器的所有组件:CPU、JTAG、DSLite、
    • 调用 DSLite 并非总是成功的,虽然我做了一切正常的方式。
    • 我需要编程和保护大量 CPU 板、
    • 我将在此过程中更改 OTP、 因此重试可能不重要、甚至不可能。

    我没有查明错误、所以我不知道是 CPU 还是 JTAG 站点上的错误。 下次我将尝试做更多的实验和记录,正如你的建议。

    此致、

    Piotr Romaniuk

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否调试服务器(即 DSLite)也是在 Node Webkit 中编写的?

    没错。  

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

    尊敬的 Piotr:

    我可以暂时关闭该帖子吗?  当您从实验中获得更多信息时、您可以针对可能遇到的任何新问题打开新帖子。

    谢谢。此致、

    瓦姆西

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

    可以。 幻灯片。

    此致、

    Piotr Romaniuk