[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: MCM chips flash problem?



Dear Mahmut,
thank you for this well documented report. I will get to the bottom 
with these errors as soon as possible. I have noticed that Atmel (the flash inside the MCM)
recommends a certain algorithm to determine when the flash has finished
programming or erasing. In etrax100boot we simply just check when the "toggle bit" (D06)
stops changing value.

Regards
/Magnus  

> -----Original Message-----
> From: Fettahlioglu, Mahmut [mailto:Mahmut.Fettahlioglu@xxxxxxx.au]
> Sent: den 23 juli 2003 08:53
> To: 'dev-etrax@xxxxxxx.com'
> Subject: MCM chips flash problem?
> 
> 
> Hi,
> 
> We had purchased some MCM chips last year and have so far 
> successfully used
> these using our own PCBs. One problem we have seen during this time is
> approximately 10% of our MCM chips apparently have flash problems.
> 
> We are flashing the units using flash images we have created. 
> We have seen
> flashing failures using both bootloader and ftp methods for 
> some 10% of our
> units. Flashing is consistently successful on the others.
> 
> The problem happens while writing the flash contents to the 
> chip. These
> failure locations are different on different units, but 
> identical for one
> unit across different flash attempts.
> 
> An interesting point is that these failures are not 
> consistent. When tested
> with different image files and many times, I saw that some 
> images could
> always be successfully written, while others sometimes failed 
> and sometimes
> succeeded. However when flashing fails, it always fails at 
> the same offset
> for one unit.
> 
> Here is a sample output for a failed flash attempt:
> --------------------------------------------------------------
> --------------
> -----
> Device ID = 0xc0fa3e85
> This bootloader was built by mahmut on Mon Jul 21 16:17:05 EST 2003.
> Checksum of bootloader is 0x00097f8d
> Waiting for load info.
> Checksum of file is 0x00001e03
> Got load info.
> SET_REGISTER
> 0xb0000000
> 0x000095f8
> SET_REGISTER
> 0xb0000004
> 0x00000104
> SET_REGISTER
> 0xb000000c
> 0x00601515
> SET_REGISTER
> 0xb0000008
> 0x8000c002
> PAUSE_LOOP
> 0x00020000
> SET_REGISTER
> 0xb0000008
> 0x8000c602
> SET_REGISTER
> 0xb0000008
> 0x8000c002
> SET_REGISTER
> 0x38001f00
> 0x00000007
> SET_REGISTER
> 0xb0000008
> 0x8000c402
> SET_REGISTER
> 0xb0000008
> 0x8000c002
> LOOP
> 0x38001f00
> 0x38001f5c
> SET_REGISTER
> 0xb0000008
> 0x8000c402
> SET_REGISTER
> 0xb0000008
> 0x8000c002
> LOOP
> 0x38001f00
> 0x38001f5c
> SET_REGISTER
> 0xb0000008
> 0x8000c402
> SET_REGISTER
> 0xb0000008
> 0x8000c002
> LOOP
> 0x38001f00
> 0x38001f5c
> SET_REGISTER
> 0xb0000008
> 0x8000c402
> SET_REGISTER
> 0xb0000008
> 0x8000c002
> LOOP
> 0x38001f00
> 0x38001f5c
> SET_REGISTER
> 0xb0000008
> 0x8000c402
> SET_REGISTER
> 0xb0000008
> 0x8000c002
> LOOP
> 0x38001f00
> 0x38001f5c
> SET_REGISTER
> 0xb0000008
> 0x8000c402
> SET_REGISTER
> 0xb0000008
> 0x8000c002
> LOOP
> 0x38001f00
> 0x38001f5c
> SET_REGISTER
> 0xb0000008
> 0x8000c402
> SET_REGISTER
> 0xb0000008
> 0x8000c002
> LOOP
> 0x38001f00
> 0x38001f5c
> SET_REGISTER
> 0xb0000008
> 0x8000c402
> SET_REGISTER
> 0xb0000008
> 0x8000c002
> LOOP
> 0x38001f00
> 0x38001f5c
> SET_REGISTER
> 0xb0000008
> 0x8060c202
> SET_REGISTER
> 0xb0000008
> 0x8000c002
> SET_REGISTER
> 0xb0000008
> 0x80008002
> SET_REGISTER
> 0xb0000030
> 0x0000ff00
> SET_REGISTER
> 0xb0000038
> 0x0000ff00
> PACKET_INFO
> 0xc0004000
> 0x00200018
> Checksum of file is 0x15018826
> FLASH
> 0xc0004000
> 0x00000000
> 0x00200000
> Found 1 x 16Mb BB at 0x80000000
> No single x16 at 0x84000000
> No interleaved x16 at 0x84000000
> 0x80000000: Erasing 0x00200000 bytes...done, verifying...OK
> 0x80000000: Writing 0x00200000 bytes...Timed out!
> Verify error at 0x8014b388
> Timed out!
> Verify error at 0x8014b388
> Timed out!
> Verify error at 0x8014b388
> Timed out!
> Verify error at 0x8014b388
> Timed out!
> Verify error at 0x8014b388
> Timed out!
> Verify error at 0x8014b388
> Timed out!
> Verify error at 0x8014b388
> Timed out!
> Verify error at 0x8014b388
> Timed out!
> Verify error at 0x8014b388
> Timed out!
> Fatal verify error.
> No single x16 at 0x84000000
> No interleaved x16 at 0x84000000
> 0x80000000: Erasing 0x00010000 bytes...
> --------------------------------------------------------------
> --------------
> -----
> This particular unit always fails at the offset 0x14b388. 
> Once something is
> written to that location the flash_is_busy() in flash.c 
> continues to return
> 1 even after the timeout expires and subsequent reads do not 
> match what is
> written.  I increased the timeout and the number of retries 
> but these did
> not help.
> 
> We are suspecting that the problem should be with the flash 
> chip inside the
> MCM itself. And even though we can flash a chip after a 
> number of retrials
> (so far I have seen up to 15), I am worried that we can have the same
> problem in runtime while writing to the /etc read-write 
> partition of these
> chips. So we currently do not use the faulty units. 
> 
> I was wondering if you had seen this problem before. If I 
> remember correctly
> the chips we have bought were among the first you have 
> manufactured, well
> before the official release date. Any ideas to help isolate 
> the problem
> would be most welcome.
> 
> Thanks,
> 
> Mahmut
>  
> --------------------------------------------------------------
> --------------
> ---------------------
> Mahmut Fettahlioglu
> Senior Software Engineer
> 
> Open Access Pty Ltd
> PO Box 301
> Crows Nest NSW 1585
>  
> Phone		02 9978 7009
> Fax		02 9978 7099
> Email		<mahmut.fettahlioglu@xxxxxxx.au>
> --------------------------------------------------------------
> --------------
> ---------------------
> This email is intended only for the use of the individual or entity
> named above and may contain information that is confidential and
> privileged. If you are not the intended recipient, you are hereby
> notified that any dissemination, distribution or copying of this
> email is strictly prohibited. If you have received this email in
> error, please notify us immediately by return email or telephone 
> 02 9978 7009 and destroy the original message.
> 
>