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.

[参考译文] TMS320F28P659DK-Q1:使用 CAN 闪存内核对 MCU 进行固件升级

Guru**** 2577385 points
Other Parts Discussed in Thread: TMS320F28P659DK-Q1, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1573994/tms320f28p659dk-q1-firmware-upgradation-of-mcu-using-can-flash-kernel

器件型号:TMS320F28P659DK-Q1
主题: C2000WARE 中讨论的其他器件

工具/软件:

你(们)好

我想使用 Linux 主机系统来升级 MCU、 因此、我计划为 dcan_Programmer uisng 套接字 CAN 提供替代方案。
为此、我需要 TMS320F28P659DK-Q1 引导 ROM 的源代码。

 您能说这是我们在 C2000Ware_5_04_00_00/libraries/boot_rom/f28P65x/rev0/ROM_sources/CPU1/F28P65x_ROM 中拥有的相同代码吗  ????

因为我尝试发送从给定工程生成的 dcan 闪存内核二进制文件  C2000Ware_5_04_00_00/driverlib/f28p65x/examples/c28x_dual/flash_kernel/ccs、 使用定制生成的套接字 CAN 编程器

以发送闪存内核
比特率= 100kbps

CAN ID - 0x1

DLC - 2



来发送应用
比特率= 500kbps(也尝试了 1Mbps)

CAN ID - 0x1

DLC - 8


在不复位 MCU 的情况下、此比特率开关是否会产生任何问题?

但数据不会进入总线。  


我所遵循的步骤:-

1.切换至 CAN 引导
2、定制的 dcan 编程器使用套接字 can 与 100kbps 和 can ID 0x1 和 dlc 2 用于发送闪存内核,然后等待 5s 再将比特率更改为 500kbps dlc 8 和 can ID 为 0x1 仅用于应用程序。再次启动套接字以发送应用程序

(对于 dcan 程序员、我引用了 Windows 程序员的源代码、网址为  C2000Ware_5_04_00_00/utilities/flash_programmers/dcan_flash_programmer)

3.通过导入工程  C2000Ware_5_04_00_00/driverlib/f28p65x/examples/c28x_dual/flash_kernel/ccs 来生成 dcan 闪存内核、并使用  hex2000 -boot -sci8 -a -o flash_kernel.txt flash_kernel.out

 4.使用生成我的应用程序.out 并转换为.txt  hex2000 -boot -sci8 -a -o application.txt application.out



我现在所面对的问题:

1.约 237 帧的程序员正在 发送,然后被卡住

2、数据不会进入总线/网络也会出现故障


注:MCU 和主机之间的硬件连接 完好无损。 与其他 CAN 通信应用进行检查

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

    您好、Sreeklakshmy:

    >  您可以想象一下、这是我们在 C2000Ware_5_04_00_00/libraries/boot_ROM/f28P65x/rev0/ROM_sources/CPU1/F28P65x_ROM 中拥有的相同代码吗 ????

    是的、C2000Ware 中存在的 ROM 源代码应与器件上运行的 ROM 源代码相同、以启动 DCAN 引导。

    > 此比特率开关会在不重置 MCU 的情况下产生任何问题吗?

    如果 在 闪存内核中考虑了开关、则 bootROM 提供的比特率开关功能不应导致问题。  

    首先、应修改内核的 CAN 位时序、以解决速度从 100kbps 到 1Mbps 的问题。 您是否修改了 kernel  .txt 文件以解决此位开关更改问题?  应按照 C2000 微控制器 CAN 闪存编程 应用手册的第 7.2 节所述修改.txt 文件的开头。 默认值应为  0xC0 和 0x7A  用于字节 3 和 4。  

    谢谢。此致、

    Charles

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

    尊敬的 Charles:

    在 dcan 闪存内核示例中、
     ex_5_bootloader_can_timing.h 中找到  

    1.是否需要将其更改为 100kbps?


    #define CAN_CALC_bitrate 100000UL
    #define CAN_CALC_CANCLK 20000000UL
    #define CAN_CALC_BITTIME 20UL

    因此、 可以对 CAN_CALC_BTRREG 进行任意计算。 对吗?

    2. 。 该值例如如果是的话 0x7AC0、我们需要将其手动添加到 flash_kernel.txt 右侧的第 3 个和第 4 个字节?

    例如:-

    何时执行  hex2000 -boot -sci8 -a -o flash_kernel.txt flash_kernel.out、

    请访问 flash_kernel.txt

    AA 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00
    00 00 00 00 41 00 42 16
    0A 00 00 00 D0 01 00 00 00 00 26 00 00 B3 19 01 00 D0 00 00 B4 22
    02 00
    1E 00 00 00 B2 01 D0 05 01 00 F3 05 01 00 D5 05 01 00 DA 05 01 00 DF 05 05.
    01 00 E4 05 01 00 E9 05 01 00 C6 05 01 00 EE 05 01 00 AD 05 01 00 B2 05
    01 00 B7 05 01 00 C1 05 01 00 BC 05 01 00 CB 05 01 00 CB 05 01 00
    B4 02 02 00 00 20 2F 00 68 00 6F 00 6D 00 65 00 2F 00 75 00 62 00 6E 00
    75 00 73 00 65 00 72 00 2F 00 74 00 69 00 2F 00 72 00 65 00 70 00 6F 00

    这是我得到的...  

    我需要修改它、如下所示

    AA 08 C0 7A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00
    00 00 00 00 41 00 42 16
    0A 00 00 00 D0 01 00 00 00 00 26 00 00 B3 19 01 00 D0 00 00 B4 22
    02 00
    1E 00 00 00 B2 01 D0 05 01 00 F3 05 01 00 D5 05 01 00 DA 05 01 00 DF 05 05.
    01 00 E4 05 01 00 E9 05 01 00 C6 05 01 00 EE 05 01 00 AD 05 01 00 B2 05
    01 00 B7 05 01 00 C1 05 01 00 BC 05 01 00 CB 05 01 00 CB 05 01 00
    B4 02 02 00 00 20 2F 00 68 00 6F 00 6D 00 65 00 2F 00 75 00 62 00 6E 00
    75 00 73 00 65 00 72 00 2F 00 74 00 69 00 2F 00 72 00 65 00 70 00 6F 00

    3.上述更改是否正确?

    应修改内核的 CAN 位时序、以适应从 100kbps 到 1Mbps 的速度

     我们可以 在  ex_5_bootloader_can_timing.h 中配置一次比特率吗?

    #define CAN_CALC_bitrate 100000UL、这一个

    4.在闪存内核中、我们将从 100kbps 配置到 1Mbps?


    5.如果我们在这里配置 100kps、在闪存内核中、我们将配置为接收应用程序所需的 1Mbps。

    6.发送闪存内核后,要发送应用程序,我们需要在 MCU 和编程器中将 CAN 比特率配置为 1 Mbps? 您是否还能确认我用于发送闪存内核和应用的 CAN 的配置正确?

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

    尊敬的 Charles:
    我正在与提出此查询的 Sreelakshmy 合作。 我们使用一个连接到芯片 X1 引脚的 25MHz 振荡器。 我认为默认情况下 MCU 将使用 XTAL 作为频率源(如果我错了,请纠正我)。 正如我注意到、每个基准频率都以 20MHz 给出、这是否会造成问题? 是否应该将 CAN_CALC_CANCLK 更改为 25000000UL?

    谢谢

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

    还有一个问题。 器件在闪存模式和 CAN 引导模式下设置的 CAN 工作时钟是多少。 是相同还是不同。 如果不同、说明值及其在代码库中的位置。

    谢谢。

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

    您好、Sreelakshmy:

    1、例如、需要将其更改为 1Mbps。

    2.是的,这是正确的。

    3. YES 可以在  bootloader_can_timing.h 文件中进行配置。  

    4、与 (3) 相同。 更改字节 3 和 4 的目的是使 bootROM 识别其比特率的变化、从而以更快的速率下载内核。

    5、与 (2) 相同。 配置从 100Kbps 到 1Mbps 的比特率时序的目的是、内核初始化后、它将以 1Mbps 的速率运行来下载应用程序。

    6.是的,这是正确的,内核和程序员都应该以相同的速率传输,在这种情况下是 1Mbps。

    尊敬的 Aflah:

    根据有关 CAN 引导模式的第 4.7.8.2.5 节、25MHz 振荡器应能够用作 CAN_CALC_CANCLK 的值。 能否检查收到的  CAN_CALC_BTRREG 值 ?

    无论引导模式如何、CAN 工作时钟都应由 XTAL 作为位时钟源、并由 INTOSC2 作为系统时钟源确定。

    谢谢。此致、

    Charles