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.

[参考译文] TMS320F28035:CAN 编程澄清

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1021400/tms320f28035-can-programming-clarification

器件型号:TMS320F28035
主题中讨论的其他器件:C2000WARETMDSDOCK28035

您好!
我已经阅读了大量有关适用于28035的 CAN 引导加载程序的相关文章、并希望确认我的看法。
***从未编程的28035开始***
将 GPIO37和 GPIO34单独保留-默认情况下、它会启用 GET_Mode
现在、我需要确保0x3D7BFE OTP_KEY = 0x55AA 和0x3D7BFF OTP_BMODE 0x0007
这在 C2000Ware_3_04_00_00\device_support\f2803x\examples\c28\F2803x_CAN_FLASH_kernel 示例中完成、并附带 GPIO 设置、邮箱设置、CAN 设置、时钟等
使用 serial_flash_programmer (串行端口) 从 F2803x_CAN_flash_kernel 示例中复制 kernel.txt 文件 (请参阅 SPRABV4D)。
(我认为这是在没有 JTAG 的情况下对 OTP 值进行编程的唯一方法。)
则应对28035电路板进行下电上电。
28035现在将在 CAN 总线上一直等待、直到它读取第一个 CAN 字。
如果28035需要加载应用程序代码、通过 CAN 实用程序以正确的密钥值0x08AA 发送十六进制文件。 (此时、引导加载程序将在调用 ExitBoot 例程后跳转到一个入口点地址、因此不需要额外的复位或下电上电。)
如果28035已经加载了应用程序代码并且我们希望它开始运行、发送一个包含错误密钥值的十六进制文件、例如0xFFFF、现在从闪存引导 F28035。
请随意批评我的理解。

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

    仔细研究 CAN 闪存示例后、我在任何地方都看不到编程的 OTP 值、也看不到 DATA_SECTION ("OtpKeyVar");

    是否需要手动添加这些内容?

    这就是我编码 OTP_Key 和 OTP_BMODE 的方式。
    在文件 DSP2803x_Headers_nonBIOS.cmd 中、我添加了以下内容:


    第1页
    OTPKEY:origin = 0x3D7BFE,length = 0x000001 //引导加载程序 GetMode 项*/
    OTPBMODE:origin = 0x3D7BFF,length = 0x000001 /* Bootloader BMODE 键-设置为 CAN*/
    部分
    OtpKeyVar:> OTPKEY,PAGE = 1.
    OtpBMode:> OTPBMODE,PAGE = 1.


    创建了一个具有以下内容的 OTP.asm 文件:
    ;/ /
    .sect "OtpKeyVar"
    .int 0x55AA;针对 CAN BMODE 的一次性可编程
    ;/ /
    .sect "OtpBMode"
    .int 0x0007;CAN BMODE
    ;/ /
    .end


    无需考虑" make"因素、因为它构建得很好。


    它在.map 文件中显示为:
    OTPKEY 003d7bfe 00000001 00000001 00000000 RWIX
    OTPBMODE 003d7bff 00000001 00000001 00000000 RWIX


    ***免责声明***至此尚未测试。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="352848" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1021400/tms320f28035-can-programming-clarification "]仅保留 GPIO37和 GPIO34 -默认为启用 Get_Mode[/quot]

    这些引脚应从复位中感测到高电平。 的确、有一个内部上拉电阻器、但它必须由一个外部 PU 补充。

    [引用 userid="352848" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1021400/tms320f28035-can-programming-clarification "]现在我需要确保0x3D7BFE OTP_KEY =0x55AA 和0x3D7BFF OTP_BMODE 0x0007[/quot]

    正确。

    您对引导顺序的理解是正确的。 我将请求软件团队的人员对内核传输发表意见。

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

    您好 Jeffrey、  

    将引导模式设置为 CAN 会将器件引导至 ROM 中的 CAN 引导加载程序。 ROM 引导加载程序仅将代码写入 RAM、而不是闪存、因此将器件设置为 CAN 引导以更新映像/加载到闪存中是不正确的。 如果您尝试更新闪存中的映像、这就是闪存内核的用武之地-闪存内核将被写入 RAM、并且将有助于在不使用 JTAG 的情况下将应用程序写入闪存。  

    我查看了您指向的示例、看起来需要使用 SCI 引导模式下载 CAN 闪存内核。 下载内核后、可以进行初始化、并可用于将应用程序写入闪存。 关于在没有 JTAG 的情况下对 OTP 值进行编程、我将很快返回给您。  

    谢谢、  

    Anu

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

    谢谢 Anu、我期待您对 OTP 值写入的响应。 它还可以解决 e2e.ti.com/.../tmdsdock28035-simple-flash-help 问题。

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

    您好 Jeffrey、

    您可以尝试以下几项操作:

    1.将 OTP 段映射移动到 PAGE 0、查看这是否有用。  我记得十六进制会为 page0和 page1生成单独的输出图像。  我建议将所有已初始化的段移动到 page0、以便将所有内容都放在一个十六进制输出中。

    注:我建议您不要为 应用添加的段修改 DSP2803x_Headers_nonBIOS.cmd。  这用于器件寄存器空间。  而是使用您的应用程序链接器 cmd 文件。

    如果以上内容无法解决您的问题、我建议您查看下面的#2。

    2.请搜索"我们如何在用户 OTP 中对字段进行编程?" 在以下常见问题解答页面中:

    e2e.ti.com/.../faq-faq-on-flash-api-usage-for-c2000-devices

    我将让 Anu 提出您可能对内核有的任何其他问题。

    谢谢、此致、
    Vamsi

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

    Vamsi 和 Anu、对于 OTP 值的编程、我有另一个线程正在运行(见上面)、不会尝试重复此操作。 感谢您的帮助、我相信 Anu 回答了我的另一个问题、现在这已经解决了。 如果我在尝试 使用 SCI 引导模式下载十六进制文件时遇到任何其他问题、我将打开另一个 TT。 再次感谢。

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

    Jeffrey、

    当 Anu 要求我检查此线程中的 OTP 写入问题时、我尝试单击您在上面给出的链接。 这对我不起作用。  我现在重试-未成功(出现以下错误)。  如果您需要有关该链接的进一步帮助、您可能希望再次在此共享该链接。  另一位同事(Kevin)今天向我提出了类似的问题(没有与我分享 E2E 帖子)、我建议他分享我的常见问题解答。  可能是您所指的同一个线程。 如果问题在那里得到解决、那么这是很好的选择。   

    谢谢、此致、

    Vamsi

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

    是-我正在与 Kevin 一起处理另一个主题-问题尚未解决。 我认为粘贴到文章中时链接会缩短、因此我现在建议搜索标题为"TMDSDOCK28035:Simple Flash Help"的线程、或复制并粘贴以下内容。

    e2e.ti.com/.../tmdsdock28035-simple-flash-help

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

    Jeffrey、

    好的、我们可以使用另一个线程。  如果需要、Kevin 会与我联系。

    谢谢、此致、
    Vamsi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="453770" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1021400/tms320f28035-can-programming-clarification/3776751 #3776751">我查看了您指向的示例、看起来需要使用 SCI 引导模式下载 CAN 闪存内核。 下载内核后、可以进行初始化、并可用于将应用程序写入闪存。[/quot]

    有几个问题-您能否找到在 CAN 闪存内核示例中写入 OTP 值的位置、因为它们需要为 CAN 引导进行编程?

    此外、我对这种情况还是有点模糊。 如果 CAN 引导加载程序已下载、我希望它可以驻留在闪存中、每次引导时强制 F28035等待 CAN 数据-十六进制文件或垃圾文件、以便引导。 如果 CAN 只能在通过 SCI 下载后存在于 RAM 中、这意味着当产品在现场时、我需要使用 SCI 和 CAN 来更新应用。 这毫无意义。 请澄清。

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

    Jeffery、  

    CAN 闪存内核不对 OTP 进行编程、这是一个单独的过程、我看到讨论这一点的另一个线程仍处于活动状态、因此您可以在此处继续讨论。  

    为清楚起见、我想将"CAN bootloader"和"CAN flash kernel"这两个术语分开。 CAN 引导加载程序驻留在 ROM 中、CAN 闪存内核可驻留在 RAM 或闪存中。 如果设备设置为 CAN 引导, 则每次要引导至闪存时,都需要向 CAN 引导加载程序提供“垃圾”值。 否则、CAN 引导加载程序将在循环中永久等待数据。 一种替代方法是将引导模式设置为从闪存引导、并将 CAN 闪存内核置于闪存中。 可以修改 C2000Ware 中的闪存内核示例、使其等待来自 CAN 的数据一段特定的秒数、如果未接收到数据、则可以转到应用程序代码。  

    如果您还有其他问题、我们可以设置电话。 如果您愿意、请通过聊天向我发送消息、我可以设置一个。  

    谢谢、

    Anu