Hello,
is there a way to “Dump to File” the contents of Rabbit Flash memory? This used to be an option to the older DC-v7.21
Thank you
Found this link, don’t think DC has that capability anymore.
http://shdesigns.org/tips/readflash.shtml
The proposed C program is able to liberate the dump command (although you have to add void before main() ).
The resulting bin file (after the conversion) is not able to be uploaded on the flash using the RFU utility. The ERROR “Target Communication Error” appears.
Have you tried it?
Thank you
Sorry I did not. Try this is the official program, you can actually use your current version of Dynamic C.
/* map_flash1or2.c --- map entire flash (1 or 2 or both)
This utility maps into quadrants 3 and/or 4 the entire flash or flashes,
including the ID and User Blocks, without altering the previous content
of the flash(es).
1) Start Dynamic C WITHOUT THE UNIT BEING CONNECTED!!!!
2) Set Dynamic C to Compile to RAM
3) Load the MAP_FLASH1OR2.C program and un-comment the
#define MAP_FIRST_FLASH
line near the top, then compile and run the program. When the program finishes
(should be very quickly!), click the OK button in the little message box that
says, "Program Terminated. Exit Code 0."
4) Via Dynamic C's "Inspect > Dump at Address" menu... dialog box, dump the
0x80000 through 0xBFFFF physical address range (Hex Address 80000,
# Bytes 262144) to a disk file.
5) Email the flash-dump files to us.
*/
// uncomment one or both of the following lines
#define MAP_FIRST_FLASH
//#define MAP_SECOND_FLASH
#ifndef _RAM_
#error "This program must be run in RAM!"
#endif
#ifndef MAP_FIRST_FLASH
#ifndef MAP_SECOND_FLASH
#error "Uncomment MAP_FIRST_FLASH and/or MAP_SECOND_FLASH to inspect the"
#error "unaltered content of the flash(es) in quadrant(s) 3 and/or 4."
#endif
#endif
main()
{
;
#ifdef MAP_FIRST_FLASH
// assumes first flash is on CS0
WrPortI(MB2CR, &MB2CRShadow, FLASH_WSTATES | 0x00);
#ifndef MAP_SECOND_FLASH
// map 2nd half of 512KB first flash, or duplicate if < 512KB
WrPortI(MB3CR, &MB3CRShadow, FLASH_WSTATES | 0x00);
#endif
#endif
#ifdef MAP_SECOND_FLASH
// assumes second flash is on CS2
#ifndef MAP_FIRST_FLASH
// map 1st half of 512KB second flash, or duplicate if < 512KB
WrPortI(MB2CR, &MB2CRShadow, FLASH_WSTATES | 0x02);
#endif
WrPortI(MB3CR, &MB3CRShadow, FLASH_WSTATES | 0x02);
#endif
}
1 Like