最近在调试MPU6050 DMP功能时出现程序卡在dmp_load_motion_driver_firmware()。
通过多次的插入打印信息发现是memcmp(firmware+ii, cur, this_write)函数数据对比失败,即写入和读取memory的值不匹配。
for (ii = 0; ii < length; ii += this_write) {
this_write = min(LOAD_CHUNK, length - ii);
if (mpu_write_mem(ii, this_write, (unsigned char*)&firmware[ii]))
return -1;
if (mpu_read_mem(ii, this_write, cur))
return -1;
if (memcmp(firmware+ii, cur, this_write))
return -2;
}
在mpu_write_mem()函数下方加入打印信息读取firmware数组的值并对比inv_mpu_dmp_motion_driver.c文件中的dmp_memory[DMP_CODE_SIZE]数组,发现firmware写入没有问题,是成功的,但是读出的值全部是0,表示写入成功,但是读取失败。
for (ii = 0; ii < length; ii += this_write) {
this_write = min(LOAD_CHUNK, length - ii);
if (mpu_write_mem(ii, this_write, (unsigned char*)&firm