Flash read/write on LPC54102

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

Flash read/write on LPC54102

跳至解决方案
3,673 次查看
chethankumar
Contributor III

Hi,

 

i am using board which contains NXP's lpc54102. I am trying to write data to a flash (Sector 15 , Address 0x0007E000) and read it using memcpy() function. I am using Chip_IAP_CopyRamToFlash() api to write data. If i read data using memcpy() immediately after writing then i am able to read the proper data.  if i try to read data in some other file using memcpy function, then i am not getting the expected data. What could be the issue? Is there any sequence to follow while reading data from the flash?(IAP mode)

 

 

Thanks in adavance,

Ck

标记 (1)
1 解答
2,311 次查看
chethankumar
Contributor III

Issue resolved. Issue was with my code

Thanks.

在原帖中查看解决方案

6 回复数
2,311 次查看
chethankumar
Contributor III

In earlier post you mentioned like this.

" Where is the code running that is trying to write to the flash? It MUST be (re)located in RAM - you cannot program the flash if the code is running from that flash"

Now i got doubt where exactly my code will reside? Is it on RAM or flash? By default program gets stored in flash  right? Do i need to move IAP wrapper code to RAM? If so, how to do it?

Second thing, Once i write data to the Flash using IAP command then it should be there in flash. Now in my case i am using sector 15 ( address 0x00078000). And i should be able to read the data anytime right (after power cycle also)?.

So if the correct values are stored in the flash, then it must be a bug in your code that is reading the wrong values... Use the debugger to find out what addresses you are using in your memcpy and also check the ode that validates the values.

So if the correct values are stored in the flash, then it must be a bug in your code that is reading the wrong values... Use the debugger to find out what addresses you are using in your memcpy and also check the ode that validates the values.

     After writing to the flash using copyRAMtoFlash() command i read the data using memcpy() function and i colud see the data which i have written to the flash. After program comes out of that function when i try to read data using memcpy() from the sdame address then i am not getting the expected result.

Thanks,

Chethan

0 项奖励
回复
2,311 次查看
avt
Contributor III

If you are using LPCXpresso (as I am) this FAQ describes how to place code into RAM: Relocating code from FLASH to RAM

After writing to the flash using copyRAMtoFlash() command i read the data using memcpy() function and i colud see the data which i have written to the flash. After program comes out of that function when i try to read data using memcpy() from the sdame address then i am not getting the expected result.

This suggests that your 1st memcpy() is not actually copying from flash - perhaps your are checking your original ram-based data? As I said, you should use a debugger to actually check that you are really doing what you think you are doing (i.e. checking the addresses used in the various memcpy() calls).

0 项奖励
回复
2,312 次查看
chethankumar
Contributor III

Issue resolved. Issue was with my code

Thanks.

2,311 次查看
avt
Contributor III

I would guess that the write never worked. Where is the code running that is trying to write to the flash? It MUST be (re)located in RAM - you cannot program the flash if the code is running from that flash.

0 项奖励
回复
2,311 次查看
chethankumar
Contributor III

Hi,

Write function worked. I tested and verified by reading the data from flash

using memcpy function. I am able to see the correct data in one particular

file. When I try to read data using memcpy in some other file then I am

not seeing the same data which I saw in another file.

Code to write to flash is there in RAM itself.

Thanks,

Chethan

0 项奖励
回复
2,311 次查看
avt
Contributor III

So if the correct values are stored in the flash, then it must be a bug in your code that is reading the wrong values... Use the debugger to find out what addresses you are using in your memcpy and also check the ode that validates the values.

0 项奖励
回复