ZHCADG6A December 2023 – April 2024 TMS320F2800157 , TMS320F280039 , TMS320F280039-Q1 , TMS320F280039C , TMS320F280039C-Q1 , TMS320F28P659DK-Q1
闪存内核工程是根据 MCAN ROM 引导加载程序建模的。它直接进入已修改为写入闪存的 MCAN_Boot 函数。闪存内核的 MCAN 模块初始化与引导加载程序相同 - MCAN 模块的时钟源、标称和数据比特率、GPIO 引脚等由内核在初始化时根据引导模式进行设置。在接收到任何应用程序数据之前,F28P55x 和 F28P65x(不包括 F28P65x,此器件在稍后完成)MCAN 闪存内核会擦除器件的闪存以便为编程做好准备。此外,F28P55x MCAN 闪存内核工程允许用户指定在进行应用程序编程之前应擦除哪些闪存组和闪存扇区。自定义闪存组和扇区擦除中对此进行了更详细的论述。在闪存存储器中的相应位置进行擦除后,应用程序加载开始。
闪存内核一次从主机接收 64 个字节,并将内容放入中间 RAM 缓冲区中。然后,将该缓冲区以 128 位或 512 位增量写入闪存。F28003x 和 F28P65x 闪存内核一次写入 128 位,而 F28P55x 闪存内核一次写入 512 位。在第一次写入扇区之前,F28003x 会检查该扇区是否已被擦除,如果没有被擦除,闪存内核会让闪存 API 执行擦除操作(如上所述,F28P55x 和 F28P65x 闪存内核会事先擦除闪存)。此后,一个缓冲区将被写入闪存的内容填满,并从闪存 API 发送编程命令。一旦发生写入,闪存内核就会通过闪存 API 验证相应段是否已写入闪存的正确地址。一旦内核将所有内容复制到闪存,工程就会跳转到映像的入口地址。
存储在闪存中的固件映像的所有段都应根据一次性编程的位数对齐。如果一次编程 128 位(F28003x 和 F28P65x),这些段应与 128 位边界对齐。在固件镜像的链接器命令文件中,所有初始化段都需要映射到闪存扇区,并且在每次映射之后,需要添加 ALIGN(8) 指令以确保 128 位对齐。如果一次编程 512 位 (F28P55x),这些段应与 512 位边界对齐。在固件镜像的链接器命令文件中,所有初始化段都需要映射到闪存扇区,并且在每次映射之后,需要添加 ALIGN(32) 指令以确保 512 位对齐。
用于传输应用程序数据的协议遵循 MCAN ROM 加载程序协议。使用原始 MCAN ROM 加载程序协议,使用的标称比特率为 1Mbps,并且每帧从主机向目标器件传输 64 个字节,以实现标称位时序。该协议使用的数据比特率是 2Mbps,以实现数据位时序。