之前开发阶段时候已经出现此现象,当时不怎么留意,但是现在是小批量试产了还是暴露该问题了:
偶尔出现读flash错误,执行read()函数一致出不来,哪怕用Jlink仿真时候读取flash的内容(指令d 0x7ff00,0x7ffff),依然提示错误:
error 122: AGDI:memory read failed(0x0007FFE0),不知道为什么,出现这种情况的是偶然的,目前生产24套,有两套出现这个问题,但是通过仿真器把芯片full chip erase,
一切又正常了。
芯片:MK60FX512
环境:常温下;
生产过程中发生(本来是正常的),上电了几次后出现。
你好,
从你反映的情况看,只有小批量芯片出现这样的问题。麻烦能否告诉故障芯片的mask set信息,最好能将故障芯片的表明信息拍照。
是否mass erase之后,故障芯片就一切正常了?
Have a great day,
Ma Hui
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
您好,
芯片表面印字符如下:
MK60FX512VLQ15
3N96B
QCTAG1430L
整个芯片erase之后,一切正常。这个现象在早期开发阶段有出现过,当时没多大留意,现在试产出现这个问题,让我很担心,估计随时还会出现这个问题。请分析原因,谢谢。
你好,
MK60FX512VLQ15 默认出厂的状态应该是unsecured,我怀疑有些芯片在出厂时没有改成unsecured状态 (如果Flash被完全擦除后,Kinetis保护地址0x40C的值是0xFF,这个值会使芯片处于secured状态, 需要重新编程0x40C为0xFE)。所以在你们试产阶段,应该会出现JTAG 无法编程部分芯片的情况。之后通过JTAG MASS ERASE可以unsecure芯片,使芯片能够被正常编程。
现阶段,你可以标注一下出过问题的板子,看看问题是否还会复现。 我个人认为这些芯片应该没有问题,问题应该不会复现。
有什么情况,你可以联系我们。谢谢。
Have a great day,
Ma Hui
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
现在有一个芯片重复出现此问题,只能执行一次 write,第二次执行总是失败!!!
跟是否unsecure无关,因为JTAG 可以 section program ,现在这块芯片彻底写不进去了,但是第一次写入正常,第二次不行,执行write 失败,哪怕更换地址也不行,一旦写入失败,read 也失败。采用 Jlink 读取 flash 内容也提示失败!请帮我分析,谢谢!可提供联系电话吗?
对比了 flash 控制器相关寄存器内容,和正常执行时是一样的。
我想问下你用的Freescale MQX软件的版本。 你可以拨打我们的咨询电话: 800-990-8188 找我即可。
Have a great day,
Ma Hui
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
目前情况这样:
1、我分两次写入相邻的两块flash区域(连续地址0x7fe00-0x7ffff),每次写入29字节,第一次写入正常,第二次写入时候提示出错;但是写入字节数更改16字节,两次写入都正常;
2、考虑可能太靠近0x80000地址,我把写入地址更改为0x7f100,两次分别写入相邻的地址,每次写入29字节,第二次依然写入失败,通过JTAG看memory只写入了前5个字节;
3、把两次写入地址间隔开,即第一次写入地址0x7f100,第二次写入地址0x7f300,每次写入29字节,两次写入都正常;
MQX版本是4.1.2,如果更改MQX新版本的话改动太大,一时半会实现不了,请求继续分析,谢谢。
你好,
因为MQX Flash操作是调用 Program Phrase Command进行Flash编程操作, 这个命令需要编程的字节数必须是8的整数倍。
所以,当你所要编程的字节数为29时,就会出错。
建议你对Flash进行write操作,使用8的整数倍字节数进行编程。
祝顺利。
Best regards,
Ma Hui
但是第一次写入正常,并且更换地址后写入也正常。
你好,
我查看了MQX相关驱动,驱动确实会把不足8个字节的数据补成8个字节。
你能把你的Flash写入测试相关代码发给我们看一下吗?
Have a great day,
Ma Hui
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
uint8 savecfg(BOARDCFG *cfg,uint16 dev)
{
uint16 ret;
flash_file = fopen(FLASH_NAME, NULL);
if (flash_file == NULL)
{
printf("\nUnable to open file %s", FLASH_NAME);
_task_block();
}
ioctl(flash_file, FLASH_IOCTL_ENABLE_SECTOR_CACHE, NULL);
if(dev==DEV0)
fseek(flash_file,-(sizeof(BOARDCFG)+sizeof(BOARDCFG)+FLASHOFSET1),IO_SEEK_END);//增加FLASHOFSET1 、FLASHOFSET2后正常
else
fseek(flash_file,-(sizeof(BOARDCFG)+FLASHOFSET2),IO_SEEK_END); //增加FLASHOFSET1 、FLASHOFSET2后正常
if (write(flash_file, cfg, sizeof(BOARDCFG)) != sizeof(BOARDCFG))
{
if (write(flash_file, cfg, sizeof(BOARDCFG)) != sizeof(BOARDCFG))
{
printf("Error writing to the cfg file\n");
ret = VDR_RET_FAIL;
}
}
else
{
ret = VDR_RET_OK;
}
fclose(flash_file);
return ret;
}
你好,
我用Freescale MQX V4.2版本软件提供的Flashx代码在TWR-K70F120M 板子上测试了一下,多次写入非8整数倍数量的数据,是没有出现错误的。
写入Flash地址是0x3ffe0.
我建议下载最新版本的MQX软件,比较一下你所用版本Flashx驱动与最新版本驱动有什么区别。
Have a great day,
Ma Hui
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
你好,
我会让MQX相关同事帮忙分析一下。 另外,我会在TWR-K60D100M 板子上测试使用非MQX 操作系统驱动,看是否会复现这个问题。
Have a great day,
Ma Hui
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------