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.
我通过F021 API对片内Flash进行擦除和写入
我擦除Bank1之后,对Bank1的Sector0的起始8个字节,每个字节都写入0xaa。然后在C程序中直接通过地址的方式依次读这8个字节。
根据串口的打印信息,擦除和写入都没有软件上的报错,但是在到读取第一个字节的数据时,串口会停止不动,单板上的红灯会亮起。
这时候通过UniFlash中的Memory选项读取内存信息,发现Bank1的Sector0的起始8个字节已经都被写成了0xaa。
然后我试着,写入Bank1的Sector0的起始的16个字节,24个字节,32个字节。发现写起始24个字节和32个字节时,能够没有错误地读出我写入的数据。
想请问导致这种情况可能是什么原因?应该如何解决?
根据技术手册和API手册,似乎只写8个字节,并读这8个字节是可行的
还有一个额外的问题, 对于Fapi_issueProgrammingCommand, 参数FapiFlashProgrammingCommandType mode为Fapi_AutoEccGeneration的情况下,向片内Flash写入的最小byte数和最大byte数是多少,是否需要8字节对齐呢
首先,在此提供一个我使用的测试用例的代码
然后补充一些信息:
使用的是 F021_API_CortexR4_BE_L2FMC_V3D16_NDS.lib
最后描述一下用例代码的行为:
代码执行到通过指针解引用读取写入内容的时候,板子红灯亮起,所有行为停止。
然后再通过UniFlash读取整个Memory后,有如下内容
使用API - Fapi_doMarginReadByByte读取在Bank1 Sector0写入的8个字节也是同样的行为,串口停止,板上红灯亮起。对于Bank7 Sector0来说,写入8个字节后,无论是直接通过地址访问还是使用API读取都不会出现该问题