Thread 中讨论的其他器件:IWR6843AOP、 MMWAVE-SDK
工具/软件:
大家好、我正在根据"3D_EVM"演示源代码使用 IWR6843AOP People_Tracking 处理一个项目。 我当前正在尝试将"chirp_configs"文件存储在闪存中。 我尝试了下面所示的方法、但遇到了从闪存读回的数据与写入的数据不匹配的问题。 我附上了用于参考的调试日志和源代码。
我对此有几个问题:
-
是否建议使用外部闪存来存储此类数据?
-
引导加载程序是否实施任何可能影响闪存读取/写入访问的保护?
-
是否可以获取 IWR6843AOP 引导加载程序的源代码?
调试日志:
正在启动闪存测试...>
正在擦除0x001E0000处的扇区...
扇区擦除成功
正在将1024字节模式写入闪存...
闪存写入成功
正在从闪存读回...
闪存读取成功
偏移0处不匹配:读取0x00、预期为0xA5
静态 int32_t flash_test (int32_t、char * argv[])
{
/* RAM 缓冲区*/
静态 uint8_t txBuffer[FLASH_TEST_SECTOR_SIZE];
静态 uint8_t rxBuffer[FLASH_TEST_SECTOR_size];
Bool 结果;
uint32_t i;
DBG_PRINT ("开始闪存测试...");
/*步骤1:擦除扇区*/
DBG_PRINT ("Erasing 扇区 at 0x%08X...\n"、flash_test_address);
结果= QSPIFlash_eraseSector (FLASH_TEST_ADDRESS);
if (!result)
{
DBG_PRINT ("扇区擦除失败!\n");
返回-1;
}
DBG_PRINT ("扇区擦除成功\n");
/*步骤2:准备模式*/
memset (txBuffer、flash_test_pattern、sizeof (txBuffer));
/*步骤3:写入模式*/
DBG_PRINT ("将%u 字节模式写入闪存……\n"、(unsigned int) sizeof (txBuffer));
结果= QSPIFlash_write (FLASH_TEST_ADDRESS、txBuffer、sizeof (txBuffer));
if (!result)
{
DBG_PRINT ("闪存写入失败!\n");
返回-1;
}
DBG_PRINT ("闪存写入成功\n");
/*步骤4:清除读取缓冲区*/
memset (rxBuffer、0、sizeof (rxBuffer));
/*步骤5:读回*/
DBG_PRINT ("从闪存读回...\n");
Result = QSPIFlash_read (flash_test_address、rxBuffer、sizeof (rxBuffer));
if (!result)
{
DBG_PRINT ("闪存读取失败!\n");
返回-1;
}
DBG_PRINT ("闪存读取成功\n");
/*步骤6:比较*/
对于(I = 0;I < FLASH_TEST_SECTOR_SIZE;I++)
{
if (rxBuffer[i]!= flash_test_pattern)
{
DBG_PRINT ("偏移%u 处不匹配:读取0x%02x、预期0x%02x\n"、
(unsigned int) i、rxBuffer[i]、flash_test_pattern);
返回-1;
}
}
DBG_PRINT ("闪存测试通过\n");
返回0;
}