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.

[参考译文] TMS320F2.8379万D:在不知道密码的情况下进行了SCI闪存编程

Guru**** 2587365 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/657670/tms320f28379d-sci-flash-programming-without-knowing-the-passcode

部件号:TMS320F2.8379万D
主题中讨论的其他部件:C2000WARE

您好,  

我正在使用SCI闪存编程"serial_flash_programmer.exe"

并输入命令行“serial_flash_programr.exe -d f2837xD -k F2837xD_sci_flash_kernels_cpu01.txt -a blinky_dc_cpu01.txt -b 9600 -p COM5”

我可以将闪存内核下载到F2.8379万并获得反馈:

您要执行什么操作?
1-DFU CPU1
2-DFU CPU2
3-擦除CPU1
4-擦除CPU2
5-验证CPU1
6-验证CPU2
7-解锁CPU1区域1
8-解锁CPU1区域2
9-解锁CPU2区域1
10-解锁CPU2区域2
11-运行CPU1
12-重置CPU1
13-运行CPU1并引导CPU2
14-重置CPU1并引导CPU2
15-Run CPU2 (运行CPU2)
16-重置CPU2
0-完成

然后我需要输入我的选择。 例如,如果设备已锁定:  

7-解锁CPU1区域1 ,然后输入密码
8-解锁CPU1区域2 ,然后输入密码

如果我是一名软件开发人员,这没问题。 但是,当客户在批量生产中这样做时,情况就变得复杂了。 此外,让软件开发人员以外的其他人知道密码并不安全。 所以我想知道是否有办法总结所有这些步骤,那些需要升级软件的人只需单击鼠标即可完成所有操作。

我认为批处理文件应该是一个不错的选择。

我创建了一个.bat文件,它只需双击此文件即可将闪存内核加载到设备中

"设置/p num=请输入com端口号

serial_flash_programr.exe -d f2837xD -k F2837xD_sci_flash_kernels_cpu01.txt -a blinky_dc_cpu01.txt -b 9600 -p com%num%"

但是我很难等待闪存内核加载到设备并进行适当的选择,如何在批处理文件中执行类似以下的操作

如果(received packet="要执行什么操作?")

 1.

否则

 等待

如果您有任何好的建议,请表示感谢。

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

    您好,Howard:

    我同意使用批处理文件是解决此问题的好方法。 虽然我不能绝对说出批处理文件的特定语法,但我认为您应该考虑使用find命令来搜索字符串"What operation do you want to perform?"(您要执行什么操作?) 并使用 while循环类似结构继续循环,直到找到字符串。 可以通过创建标注“:label”并在循环逻辑末尾使用“goto :label”语句来实现循环。 这应模拟"wait"命令,直到find命令返回true。

    如果这有助于解决您的问题,请告诉我。


    谢谢!

    Taumer

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

    Taumer,

    我已经在.bat文件中编写了这样的代码

    "设置/p num=请输入com端口号

    serial_flash_programr.exe -d f2837xD -k F2837xD_sci_flash_kernels_cpu01.txt -a blinky_dc_cpu01.txt -b 9600 -p com%num%-v

    键入COM3 > data.txt"

    我发现Windows似乎总是在“serial_flash_programmer.exe”中,并且在我写入命令0以退出应用程序之前不会执行“type COM3 > data.txt”。

    如果是这种情况,除非我更改 "serial_flash_programmer.exe",否则.bat文件似乎无法实现我所寻找的内容。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我发现"您要执行什么操作?" 不是来自COM端口,而是在"serial_flash_programmer.exe"中写入
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Howard:

    您的答案是正确的,提示是直接从serial_flash_programmer输出的,因此修改serial_flash_programmer源代码可能是解决问题的可行选项。 如果您知道您计划通过哪些输入,则基本上可以绕过提示并直接对这些选项进行硬编码。 serial_flash_programmer的源代码包含在C2000Ware中,可以使用VisualStudio进行修改和构建。

    我还做了一些挖掘工作,我很想知道您能否将呼叫中的输入传递到serial_flash_programr.exe命令:

    echo 1 | serial_flash_programr.exe -d f2837xD -k F2837xD_sci_flash_kernels_cpu01.txt -a blinky_dc_cpu01.txt -b 9600 -p com%num%-v

    这些选项是否适合您?

    谢谢!

    Taumer

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

    使用此选项:

    echo 1 | serial_flash_programr.exe -d f2837xD -k F2837xD_sci_flash_kernels_cpu01.txt -a blinky_dc_cpu01.txt -b 9600 -p com%num%-v

    它一直在下载,似乎是无止境的。

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

    似乎serial_flash_programmer正在记录"1"选项并将其存储为每次响应,从而导致此无限循环。 我能够使其发挥作用:

    echo 1 0 | serial_flash_programr.exe -d f2837xD -k F2837xD_sci_flash_kernels_cpu01.txt -a blinky_dc_cpu01.txt /b 9600 -p com%num%-v

    此命令将选择选项1,然后选择选项0,退出应用程序。 理论上,只要0是确保程序退出的最后选择,您就可以执行任何操作组合。

    请告诉我这是否适合您。

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

    谢谢,它工作正常。 请告诉我"|"是什么意思?

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

    您好,Howard:

    管道运算符"|"可重定向输出,并可在命令之间使用:cmd A | cmd B。在我们的情况下,第一个命令是echo,它只重复输入,然后重定向到cmd B的输入,即调用serial_flash_programmer.exe。 当serial_flash_programmer延迟到控制台进行输入时,echo命令的结果将自动插入。 下面的链接详细介绍了Windows中的语法重定向:  

    谢谢!

    Taumer