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.

[参考译文] TMS320F28335:关于通过串行重新刷新引导的帮助

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1427045/tms320f28335-help-on-reflashing-boot-via-serial

器件型号:TMS320F28335
主题中讨论的其他器件:C2000WAREUNIFLASH

工具与软件:

大家好  

我有一个专有的 引导 、可以 在外部闪存中加载程序(稍后要在 RAM 中加载和执行)  

现在我 想 通过 UART 在现场更新启动:你有一个 关于如何做到这一点的示例 w doc 吗?  

我的引导在 RAM 中执行。

有任何建议吗?

谢谢你  

BR

Carlo

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

    尊敬的 Carlo:

    c2000ware 中提供了有关串行闪存编程的文档以及相关示例、可供您参考。 对于 F8xxx 器件、这里有  可以使用的闪存编程指南。 在现场更新 UART 意味着什么? 您是否考虑使用 UniFlash 工具或其他第三方软件?  

    闪存内核示例可以在 c2000ware 根目录中的以下位置找到:device_support\f2833x\examples\f28335_flash_kernel

    串行闪存编程示例可在以下位置找到: utilities\flash_programmers\serial_flash_programmer

    此致!

    Matt

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

    您好、Matt

    我可以使用引导加载程序从 RAM 运行任何应用程序、例如、可以加载并运行 F28335_flash_kernel (在调整 COM 端口引脚后)、但在有 PC 应用程序与内核通信后? 因为我在发送要刷写的代码之前已经看到了 serial_flash_programr.exe、将内核再次加载到 RAM 中。

    此致 Luca  

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

    抱歉、Matt

    我忘记说明我将仅使用 UART、因为无法连接仿真器

    此致

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

    尊敬的 Luca:

    但是在这之后将有一个 PC 应用程序与内核通信?

    您能在这个问题上详细说明一下吗? 您是否要使用 serial_flash_programmer 仅发送应用程序而不发送内核? 如果是、serial_flash_programr_appln.exe 会执行此操作。

    此致、

    Skyler

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

    您好、Skyler

    是的、我只是在寻找一个能够与 flash_kernel 通信、但仅发送要编程到微内部闪存中的数据的 PC 应用程序。 serial_flash_programr_appln.exe 具有相同的命令行参数? 在哪里可以找到命令行规格?

    此致

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

    尊敬的 Luca:

    是的、serial_flash_programr_appln.exe 使用与 serial_flash_programr.exe 相同的参数、但是不发送-k 文件。 通过添加-h 选项、您可以看到完整的命令列表、也可以参阅 Matt 在上文提到的串行闪存编程文档的第6.2节。

    此致、

    Skyler

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

    您好、Skyler

    我尝试过、但编程过程似乎失败...

    此致

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

    尊敬的 Luca:

    您拥有哪个版本的 C2000Ware?

    此致、

    Skyler

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

    您好、Skyler

    我有 c2000ware 5.00.00、今天我在家里工作、但明天我可以分享我要加载的内核项目。

    此致

    Luca.

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

    尊敬的 Luca:

    好的、请验证您的内核项目为 SCI 配置的 GPIO 是否正确。

    此致、

    Skyler

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

    您好、Skyler

    对不起,但昨天它不可能访问 E2E 网站,我不认为是引脚问题,因为 PC 应用显示自动波特成功,我注意到,内核软件不调用在 sysctrl 中提供的 InifFlash 过程,可能是有用的?

    此致

    Luca.

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

    Luca

    Skyler 目前不在办公室,将于周一返回。

    谢谢!

    Alex

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

    尊敬的 Luca:

    您能否在主机卡住后暂停内核的执行(如上所示)、然后查看内核在该点停留的位置? 如果您能找出内核卡住的位置(可能是在等待数据或存在其他问题)、这将帮助我们缩小根本原因。

    此致、

    Skyler

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

    e2e.ti.com/.../f28335_5F00_flash_5F00_kernel.zip

    您好、Skyler

    我已经附上了内核项目和它残留的屏幕截图。

    此致

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

    尊敬的 Luca:

    在这个过程中发生的是什么? 接收数据会在内核的整个过程中发生、但它是否会接收应用程序数据? 接收保留字? 请查看调试窗口、看看此过程中调用了哪些函数。

    此致、

    Skyler

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

    您好、Skyler

    内核在接收到 前两个字节0xAA 0x08时只是残桩、但我注意到、如果我调用 SCIA_GetWordData 而不是 SCIA_GetOnlyWordData、我可以向前一点、但在它残桩发现未使用的字后、如果我还为获取未使用的字而切换被调用的过程、它会残桩得到长字...

    所以,这是正确的功能与或没有生态???

    此致 Luca  

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

    尊敬的 Luca:

    您能否验证主机是否正在发送预期值(0x08AA)? 我建议使用示波器执行此操作、并验证 UART RX 寄存器是否显示器件上的这些值。

    此致、

    Skyler

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

    您好、Skyler

    我想您还没有阅读我之前的文章、我试着做更好地解释:在 SCI_Boot.c 文件中、有两个函数需要从主机读取一个字。

    下载应用程序时、内核的第一个操作是检查 键值、并使用 SCI_GetOnlyWordData()

    但在本例中、内核在接收到0xAA 后会阻塞、我认为这是因为主机正在等待来自它的生态系统。 如果我使用的是 SCI_GetWordData()、该过程将继续、但会中断接收未使用的字。

    此致

    Luca.

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

    尊敬的 Luca:

    是的、您应该使用 SCI_GetWordData()、以便它将数据回传至主机。 您的意思是:

    流程继续进行、但缺少收到未使用的字。

    你说什么?"

    此致、

    Skyler

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

    您好、Skyler

    我的意思是键值后面的8个字、从2到9、请参阅下表

    这个字由以下内核函数读取:

    此外,在这种情况下,源代码是错误的,因为我只能再次使用  SCI_GetWordData ()执行这一步;同样适用于获取入口点,我可以用同样的方法解决这一问题。 在获得 enrty 点后、内核会擦除闪存并且在发送回主机后校验和、但值不正确。 您知道主机如何计算此校验和吗? 是否使用到现在为止传输的所有值或其他值?

    当主机发送数据块时、是否等待每个字节回波、或者仅等待块校验和?

    此致

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

    尊敬的 Luca:

    因此、我花了一些时间来深入探究这个问题、并且我必须纠正一些错误。

    此器件不支持仅通过主机编程器发送应用程序。 尽管使用 serial_flash_programmer_appln.exe、主机仍将发送内核、然后发送应用程序。 如果要修改此行为、可以打开 Visual Studio 项目并修改 F05_DownloadImage()函数。 您只需注释掉发送内核的函数部分(第115-150行)。

    如果先将内核加载到 RAM、然后再加载应用程序、您仍会看到相同的行为吗?

    此致、

    Skyler