共2条
1/1 1 跳转至页
LPC21XX,IAP,ADS1,BUG,LPC21xx,BUG LPC21XX奇怪的IAP问题!ADS1.2的BUG吗?LPC21xx的BUG吗?请教高人?

问
为什么用IAP写FLASH有部分数据,有部分不正确。每次写1024个字节!
第一次调用RamToFlash(0x00010000,comdatabuff, 1024)时候写FALSH,出现错误!
comdatabuff[]={
00 01 08 0B 00 01 01 00 01 01 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
}
写到FLASH中的数据为:
0x00010000 01 01 08 0B 01 01 08 0B 00 01 01 00 01 01 00 00
0x00010010 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00
正确的应该是:
0x00010000 00 01 08 0B 00 01 01 00 01 01 00 00 00 00 00 00
0x00010010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
请各位大侠指正!!为什么会出现这样的问题?
答 1: ! 答 2: 发现有错误! 答 3: 发现有错误!调用RamToFlash(0x00010000,comdatabuff, 1024)时候写FALSH,出现错误!
comdatabuff[]={
00 01 08 0B 00 01 01 00 01 01 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
}
写到FLASH中的数据为:
0x00010000 01 01 08 0B 01 01 08 0B 00 01 01 00 01 01 00 00
0x00010010 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00
正确的应该是:
0x00010000 00 01 08 0B 00 01 01 00 01 01 00 00 00 00 00 00
0x00010010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
请各位大侠指正!!为什么会出现这样的问题? 答 4: ads有问题!在ADS中对FLASH进行IAP后,在单步运行观察FLASH中的数据,发现程序走几步FLASH中的数据居然发生变化. 答 5: 最新发现! for(i=0;i<32;i++){
comdatabuff[i]=i;
}
IRQDisable();
SelSector(9,9);
RamToFlash(0x00010000,comdatabuff,1024); IRQEnable();
memcpy(checkbuff,0x00010000,256);
按照上面的程序,comdatabuff数组中的数据成功写到FLASH中,并从FLASH中读出,完全正确。但请看下面
IRQDisable();
SelSector(9,9);
RamToFlash(0x00010000,comdatabuff,1024); IRQEnable();
memcpy(checkbuff,0x00010000,256);
却不能正确地把comdatabuff[]数组中的数据写到FLASH中去,看ADS的MEMORY窗口所看到的数据一定是错误的,看checkbuff[]数据中的数据应该正确反映FLASH中的数据,可以看到数据并不是想写进去comdatabuff[]数组中的数据,有一些数据是错误的!一些是正确的!不知道何解?是LPC2134的BUG吗? 答 6: IAP操作时序对了么? _IAPWriteInit(sector, sector);
_IAPEraseSector(sector, sector);
擦、写之前都要初始化的,另,你可以检查函数返回值,是否是 CMD_SUCCESS
第一次调用RamToFlash(0x00010000,comdatabuff, 1024)时候写FALSH,出现错误!
comdatabuff[]={
00 01 08 0B 00 01 01 00 01 01 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
}
写到FLASH中的数据为:
0x00010000 01 01 08 0B 01 01 08 0B 00 01 01 00 01 01 00 00
0x00010010 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00
正确的应该是:
0x00010000 00 01 08 0B 00 01 01 00 01 01 00 00 00 00 00 00
0x00010010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
请各位大侠指正!!为什么会出现这样的问题?
答 1: ! 答 2: 发现有错误! 答 3: 发现有错误!调用RamToFlash(0x00010000,comdatabuff, 1024)时候写FALSH,出现错误!
comdatabuff[]={
00 01 08 0B 00 01 01 00 01 01 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
}
写到FLASH中的数据为:
0x00010000 01 01 08 0B 01 01 08 0B 00 01 01 00 01 01 00 00
0x00010010 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00
正确的应该是:
0x00010000 00 01 08 0B 00 01 01 00 01 01 00 00 00 00 00 00
0x00010010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
请各位大侠指正!!为什么会出现这样的问题? 答 4: ads有问题!在ADS中对FLASH进行IAP后,在单步运行观察FLASH中的数据,发现程序走几步FLASH中的数据居然发生变化. 答 5: 最新发现! for(i=0;i<32;i++){
comdatabuff[i]=i;
}
IRQDisable();
SelSector(9,9);
RamToFlash(0x00010000,comdatabuff,1024); IRQEnable();
memcpy(checkbuff,0x00010000,256);
按照上面的程序,comdatabuff数组中的数据成功写到FLASH中,并从FLASH中读出,完全正确。但请看下面
IRQDisable();
SelSector(9,9);
RamToFlash(0x00010000,comdatabuff,1024); IRQEnable();
memcpy(checkbuff,0x00010000,256);
却不能正确地把comdatabuff[]数组中的数据写到FLASH中去,看ADS的MEMORY窗口所看到的数据一定是错误的,看checkbuff[]数据中的数据应该正确反映FLASH中的数据,可以看到数据并不是想写进去comdatabuff[]数组中的数据,有一些数据是错误的!一些是正确的!不知道何解?是LPC2134的BUG吗? 答 6: IAP操作时序对了么? _IAPWriteInit(sector, sector);
_IAPEraseSector(sector, sector);
擦、写之前都要初始化的,另,你可以检查函数返回值,是否是 CMD_SUCCESS
共2条
1/1 1 跳转至页
回复
打赏帖 | |
---|---|
汽车电子中巡航控制系统的使用被打赏10分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏100分 | |
分享汽车电子中巡航控制系统知识被打赏10分 | |
分享安全气囊系统的检修注意事项被打赏10分 | |
分享电子控制安全气囊计算机知识点被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【OZONE】使用方法总结被打赏20分 | |
【分享开发笔记,赚取电动螺丝刀】【S32K314】芯片启动流程分析被打赏40分 | |
【分享开发笔记,赚取电动螺丝刀】【S32K146】S32DS RTD 驱动环境搭建被打赏12分 | |
【分享开发笔记,赚取电动螺丝刀】【IAR】libc标注库time相关库函数使用被打赏23分 | |
LP‑MSPM0L1306开发版试用结果被打赏10分 |