共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 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 片外存储Flash使用方法(Arduino IDE环境)被打赏¥22元 | |
| 三分钟快速上手ESP-NOW(ArduinoIDE环境)被打赏¥23元 | |
| 【S32K3XX】LPSPI参数配置说明被打赏¥21元 | |
| 在WT9932C61-TINY上实现超声波测距被打赏¥22元 | |
| 基于WT9932C61-TINY的环境构建及OLED屏驱动测试被打赏¥20元 | |
| 【S32K3XX】Core-to-Core 中断使用被打赏¥21元 | |
| 「AI编程记录--含源码」用一晚上的时间写一个esp32的示波器被打赏¥19元 | |
| STM32C0116DK开发探索记(3)被打赏¥30元 | |
| STM32C0116DK开发探索记(2)被打赏¥24元 | |
| STM32C0116DK开发探索记(1)被打赏¥29元 | |
我要赚赏金
