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.

[参考译文] F28M35H52C:通过 UART0进行 Uniflash 串行编程失败

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/587808/f28m35h52c-uniflash-serial-programming-over-uart0-failing

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

您好!

我尝试通过 UART 对我们的设计中使用的 F28M35H52C 进行编程。 此设计经过验证可正常工作、并可使用 XDSv100进行编程。  

我在 Ubuntu 16.04 LTS 上运行 Uniflash 3.4.1 (因为 v4不支持 F28M35系列的 UART 编程)。 UART 线通过 FT4232H 模块连接到 PC。  UART 线已经在115200波特率下进行了测试。  

Uniflash 是否希望使用 DTR 或 RTS 线路? 或者 URX 和 UTX 线路是唯一需要的线路吗? 在 Uniflash 中运行操作之前、我先手动复位到引导模式。

编程期间我提供的时钟为20MHz、这是因为我之前在 Uniflash 中遇到过一个问题(在该问题中、它不能与20MHz 以外的任何时钟源配合使用、请参阅 :https://e2e.ti.com/support/microcontrollers/c2000/f/171/p/494557/1788723)。

我将时钟源设置为20MHz 并将引导引脚更改为以下模式、从而将电路板置于 UART 编程模式:

BOOT_0 = 0
BOOT_1 = 1
BOOT_2 = 0
BOOT_3 = 0

然后我复位电路板。

我的 Uniflash 闪存/时钟设置如下所示:

我的串行设置如下所示:

但是,我没有运气。 我在日志中看到的内容如下:

[23:58:24]对内核0上的闪存扇区进行擦除< C28x 串行连接/Cortex_M3_0 >...
[23:58:24]开始擦除闪存操作。
[23:58:30] Cortex_M3_0:正在加载 Concerto M3闪存内核、这可能需要几分钟...

[23:58:34] Cortex_M3_0:Concerto M3闪存内核已成功加载。

[23:58:40]错误>> Cortex_M3_0:在闪存操作期间发生错误:串行接口错误

[23:58:50]错误>> Cortex_M3_0:在闪存操作期间发生错误:串行接口错误

[23:58:50]错误>> Cortex_M3_0: 串行通信异常:请复位器件并重试!

[23:58:50]未知错误
[23:58:51]返回操作擦除闪存。

我只是在这个中尝试擦除。 加载程序也会执行相同的操作。 M3闪存内核每次加载都很顺利、但实际的擦除或闪存操作不起作用。

请提供建议。 我的 wits 结束了 如有必要、我可以通过电子邮件提供.out 文件。

谢谢、
Aditya

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

    我认为 UniFlash 不希望您使用 DTR 或 RTS 线路。
    工具开发人员现在已不在办公室、并将在他回来时要求他查看此问题。
    同时、我要求另一个开发人员查看代码以查找何时会发生上述错误。

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

    您好!

    我想知道工具开发人员今天是否有机会查看它。

    我一直尝试以不同的波特率与电路板进行串行通信、在正常工作模式下发送或接收串行数据不会出现问题。 Uniflash 仍然失败。 同时具有默认设置和20MHz 以及10MHz 时钟源。  

    设置为较低的波特率似乎没有帮助。

    在串行引导模式下复位电路板后、是否需要在特定的时间/窗口中从 Uniflash 擦除/编程?  

    -Aditya

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

    小小的更新。

    我已将 Ubuntu (16.04 LTS) PC 从循环中拉出、并使用 Windows (10) PC 运行 Uniflash、该 PC 可与完全相同的硬件配合使用。 对于 Ubuntu 16.04或一般 Linux 安装、我是否需要专门进行某些操作?

    我按照 processors.wiki.ti.com/.../Linux_Host_Support_CCSv6安装了以下软件包
    i386 libx11-6:i386 libgconf-2:i386 libbatk1.0-0:i386 k2:i386 i386 i386 i386 i386 i386 libdbus-glib-1-2:i386 i386 libgconf-2-4:libgdk-pixbuf2.0-0:i386 libgtk-3-0:i386 i386 libdbus6:libmfibxbida-mb:libmb:libmf6:libmb:libmund-mb:i386 1:libmund-unt 1:libg2:i386

    如该 wiki 页面上所述、我还按照此博客文章 www.webupd8.org/.../fix-missing-libgcrypt11-causing-spotify.html 上的说明 安装了 libgcrypt11。

    对于 Uniflash、我还应该做什么。 我看不到 Uniflash 需要通过串行端口进行通信的任何特殊情况。

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

    您好!

    另一个更新。 这看起来像是 Uniflash 中的错误。 它未正确设置串行端口属性。 我们的应用以38400波特率工作。 因此、当我们的应用程序运行时、串行端口(本例中为/dev/ttyUSB1)设置为38400。 当 Uniflash 运行时、它应将波特率设置为115200、但不会。

    我在运行擦除操作后运行了 stty、并且端口的波特率仍然设置为38400。 如果我手动运行 stty 并将端口波特率设置为115200、则 Uniflash 工作正常。

    因此、如果有人尝试在 Ubuntu 上使用 Uniflash 3.4和 C28x 串行编程、请在启动和使用 Uniflash 之前运行以下代码:

    stty -F 115200 

    我不确定“加载 Concerto M3闪存内核”部分是如何工作的——可能没有错误检查。 与 Uniflash 的20MHz 限制类似、这些内容应该在某个地方加以注意。 现在也不是。

    客户是否可以编辑您的 Wiki 以执行此操作?

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

    Aditya、

    感谢您的更新。  很高兴知道、您可以通过将波特率设置为115200来让 UniFlash 在 Ubuntu 上工作。  我会将此信息传递给开发人员-他仍然不在办公室。

    可能是工具在代码执行结束后恢复波特率-我不确定。  我将与开发人员核实。

    我现在将 TT 提交给工具的新错误跟踪系统(每个月都会进行审查)、以通知开发人员将 GUI 时钟源要求修复为20MHz、并调试当前波特率问题。  

    我以前问过 wiki、用户无法编辑 wiki。  我还将在 TT 中提及更新 Wiki。

    谢谢、此致、

    Vamsi