All times are UTC - 5 hours [ DST ]




Post new topic Reply to topic  [ 4 posts ] 
Author Message
 Post subject: the problem of 701640 with external rom
PostPosted: January 21st, 2012, 10:34 
Offline
User avatar

Joined: October 30th, 2007, 17:58
Posts: 463
Location: Egypt
Here is the problem

* if you try to swap pcb 701640 with external ROM chip with another pcb you will need to move the external ROM from the old pcb to the new pcb.
*but if your old pcb have died external ROM chip then you will need to write rom to your new pcb with suitable backup taken with any kind of tool like pc3k or Wd doctor or whatever you have.

the problem is the backup taken with pc3000 or wd doctor or.... is 192 k.b .
* if you write this file with pc3k oe WD Doctor , your pcb will power down ?
why ? because this chip "the external ROM " is 25x20 or some thing like that . carry file 256 k.b not 192k.b so if you write the 192 your pcb ,itwill power down.

* BUT if you read the external ROM with any usp programmer it will read file with the size 256k.b and if you write the file to another chip it will work fine.

so if you want to use your back up ROM file in such case . you must convert your 192 file to 256 file otherwise your pcb will power down


Attachments:
Rom 256.rar [179.79 KiB]
Downloaded 439 times
ROM192.rar [179.68 KiB]
Downloaded 427 times

_________________
Tawfeek Mokhtar
http://alsafwapc.net
Alsafwa Data Recovery Egypt
Top
 Profile  
 
 Post subject: Re: the problem of 701640 with external rom
PostPosted: January 24th, 2012, 18:47 
Offline
User avatar

Joined: September 8th, 2009, 18:21
Posts: 15525
Location: Australia
Why would it make any difference whether you write the last 64KB segment? It appears to be padded with 0xFF bytes. :?

FWIW, I have recently analysed another 192KB ROYL ROM and have determined that there are checksums for each of its code and data modules. AFAICS, the space between 192KB and 256KB is not included in any checksum, but I could be wrong.

The ROM begins with a table of LDSCs ("PM Loader Config String"), each occupying 32 bytes. The last byte of each LDSC is an 8-bit checksum which is calculated by summing the preceding 31 bytes.

Each LDSC contains the starting location and length, in bytes, of its corresponding PMCBlk ("Program Memory Code Block"). There are two length fields -- one is the length excluding the checksum byte, while the second is the total length including the checksum byte. These fields are 4-bytes long, in little endian format.

The 8-bit checksum for each PMCBlk is computed in the same way as for the LDSCs, with the result being placed at the end of the block.

LDSC 00 - 31 bytes + 1-byte checksum at the end
LDSC 01 - 31 bytes + 1-byte checksum at the end
...
LDSC nn - 31 bytes + 1-byte checksum at the end
PMCBlk 00 - variable length block of code + 1-byte checksum at the end
PMCBlk 01 - variable length block of code + 1-byte checksum at the end
...
PMCBlk nn - variable length block of code + 1-byte checksum at the end
ROM MODs - 32-byte zero sum - integrity bytes included in sum

One other test that I (and my colleague) performed was to compare the 192KB ROM contents before and after enabling PUIS (Power Up In Standby). We found that only two bytes, in ROM MOD 0D, were changed. These corresponded to the PUIS flag (changed from 01 to 02), and the MOD's checksum.

References:
http://nazyura.hardw.net/Part02.htm
http://nazyura.newmail.ru/Check_fl.zip
http://yura.projektas.lt/files/wd/mhdd/index.html

_________________
A backup a day keeps DR away.


Top
 Profile  
 
 Post subject: Re: the problem of 701640 with external rom
PostPosted: January 25th, 2012, 3:55 
Offline
User avatar

Joined: May 13th, 2010, 11:17
Posts: 2798
Location: Kuwait
tawfeek_mokhtar wrote:
Here is the problem

* if you try to swap pcb 701640 with external ROM chip with another pcb you will need to move the external ROM from the old pcb to the new pcb.
*but if your old pcb have died external ROM chip then you will need to write rom to your new pcb with suitable backup taken with any kind of tool like pc3k or Wd doctor or whatever you have.

the problem is the backup taken with pc3000 or wd doctor or.... is 192 k.b .
* if you write this file with pc3k oe WD Doctor , your pcb will power down ?
why ? because this chip "the external ROM " is 25x20 or some thing like that . carry file 256 k.b not 192k.b so if you write the 192 your pcb ,itwill power down.

* BUT if you read the external ROM with any usp programmer it will read file with the size 256k.b and if you write the file to another chip it will work fine.

so if you want to use your back up ROM file in such case . you must convert your 192 file to 256 file otherwise your pcb will power down



I guess i know what you mean here, seems you are right here
i did some progress here, but seems u came here with results

good luck man, and nice work

_________________
Kuwait Data Recovery - UNIX GTC
The only reason for time is so that everything doesn't happen at once. By: Albert Einstein


Top
 Profile  
 
 Post subject: Re: the problem of 701640 with external rom
PostPosted: January 25th, 2012, 15:34 
Offline
User avatar

Joined: September 8th, 2009, 18:21
Posts: 15525
Location: Australia
I don't mean to dismiss the OP's empirical evidence, but here are my results after analysing the BIN file with NazYura's utility:

Code:
Check Control Sum Flash Files For WD-Marvell
(C)NazYura Krasnodar 2006
Email: nazyura AT rambler DOT ru

------------------------------------------------------------------------------
Flash Code File Name --> 701640.FLS

LDSC:00 CS  + -->[6A-6A] - PMCBlk:00 Size:[1A25] Sign:[0000] CS  + -->[42-42]
LDSC:01 CS  + -->[69-69] - PMCBlk:01 Size:[7235] Sign:[2092] CS  + -->[87-87]
LDSC:02 CS  + -->[B6-B6] - PMCBlk:02 Size:[4FFD] Sign:[2074] CS  + -->[67-67]
LDSC:03 CS  + -->[A3-A3] - PMCBlk:03 Size:[07D1] Sign:[B009] CS  + -->[25-25]
LDSC:04 CS  + -->[75-75] - PMCBlk:04 Size:[01FD] Sign:[B802] CS  + -->[7D-7D]
LDSC:05 CS  + -->[4D-4D] - PMCBlk:05 Size:[0725] Sign:[200D] CS  + -->[6C-6C]
LDSC:06 CS  + -->[76-76] - PMCBlk:06 Size:[041D] Sign:[4808] CS  + -->[EC-EC]
LDSC:07 CS  + -->[86-86] - PMCBlk:07 Size:[16251] Sign:[D0CF] CS + -->[21-21]
LDSC:08 CS  + -->[D4-D4] - PMCBlk:08 Size:[7AC9] Sign:[B89B] CS  + -->[C7-C7]

------------------------------------------------------------------------------

History:
CS     - Control Sum
+      - GOOD Control Sum
BAD    - BAD Control Sum Found
LDSC   - PM Loader Config String
PMCBlk - Programm Memory Code Block
Sign   - Signature Block Code


Note that the file's extension had to be changed to FLS, and its size had to be truncated to 128KB. CHECK_FL can't handle block sizes greater than 0xFFFF, so the results for LDSCs 07 and 08 had to be recomputed with a hex editor.

AFAICS, each data/code structure has its own checksum, so one would have to ask why the MCU is rejecting the 192KB ROM image.

_________________
A backup a day keeps DR away.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 4 posts ] 

All times are UTC - 5 hours [ DST ]


Who is online

Users browsing this forum: Eastcoast, pcimage and 40 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group