主题中讨论的其他器件: UNIFLASH
工具/软件:Linux
您好!
我正在尝试在 ARM 和 Linux 系统下刷写器件(使用 AWR1642通过 UART 刷写)。 我已经完成了一个简单的代码、它可以对 RAM 进行编程。 但关于闪存、它变得不同。
我参考的文档是 或 。
--------
我每次发送时 (数据有效载荷<8字节、不带0x24)、ACK 返回完美值。
如果我设置(数据有效载荷> 7字节)、即 (数据有效载荷= 8字节)、则根本没有 ACK 反馈。 但是、如果我将0x24更改为0x26 (使用新校验和)、ACK 将正确返回。 我使用闪存文件(.bin、300+ KB)进行了测试、它可以成功上传250 x 8个字节、但在250字节数据的第9个块返回0x00 0x04 0x33 0x00 0x33。
我要使用的流程图是
--------
该文档提到、在"写入 SFLASH、计算每包 CRC "过程中。 本文档未提及如何计算 CRC32以及如何将 CRC32附加到数据包。
我需要了解的是:
使用 CRC32时、是否需要更改任何数据? (命令长度、校验和)。
我需要计算数据的哪一部分?(仅有效载荷、从0xAA、校验和或0x24开始?)
我应该使用哪种算法来获得 CRC32 (多个标准来获得它、结果也可能不同)?
最大数据包大小为256、那么在这种情况下、有效载荷的最大大小是多少? 如何将其附加到命令中?
----------
本文档未提及如何获取校验和(我通过其他命令获取)
本文档未提及如何获取长度(我从其他命令获取)
本文档未提及除0x00 0x04 0xcc 0x00 0xcc 以外的其他 ACK。
本文档未提及如何擦除闪存(无流程图)。 不确定是否写入闪存至关重要。
----------
如果可以提供 C 示例、我将不胜感激;UNIFLASH 源代码将是完美的。
此致、
国王