主题中讨论的其他器件:C2000WARE、 UNIFLASH
工具与软件:
大家好
我有一个专有的 引导 、可以 在外部闪存中加载程序(稍后要在 RAM 中加载和执行)
现在我 想 通过 UART 在现场更新启动:你有一个 关于如何做到这一点的示例 w doc 吗?
我的引导在 RAM 中执行。
有任何建议吗?
谢谢你
BR
Carlo
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.
工具与软件:
大家好
我有一个专有的 引导 、可以 在外部闪存中加载程序(稍后要在 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
尊敬的 Luca:
但是在这之后将有一个 PC 应用程序与内核通信?
您能在这个问题上详细说明一下吗? 您是否要使用 serial_flash_programmer 仅发送应用程序而不发送内核? 如果是、serial_flash_programr_appln.exe 会执行此操作。
此致、
Skyler
e2e.ti.com/.../f28335_5F00_flash_5F00_kernel.zip
您好、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