Phil Dibowitz wrote: > Hmmm. OK, well, there's no difference in the actual write-out of the flash > this time. That's good. I guess. > > That leaves a much smaller part of the logs to analyze...
Phew. OK, so the differences left are pretty small. The most obvious one is the read of 48 bytes at 0x200010. Apply this patch, and attempt a firmware upgrade. It'll exit before it ever does the firmware upgrade and will write out a binary file to /tmp/tout. Take /tmp/tout, bzip2 it up and email it to me. I'll forward it off to Stephen and Kevin as well - they're better at reverse engineering that stuff than I am... but I'll take a crack at it. -- Phil Dibowitz p...@ipom.com Open Source software and tech docs Insanity Palace of Metallica http://www.phildev.net/ http://www.ipom.com/ "Never write it in C if you can do it in 'awk'; Never do it in 'awk' if 'sed' can handle it; Never use 'sed' when 'tr' can do the job; Never invoke 'tr' when 'cat' is sufficient; Avoid using 'cat' whenever possible" -- Taylor's Laws of Programming
Index: libconcord/libconcord.cpp =================================================================== RCS file: /cvsroot/concordance/concordance/libconcord/libconcord.cpp,v retrieving revision 1.38 diff -u -r1.38 libconcord.cpp --- libconcord/libconcord.cpp 14 Oct 2008 19:35:01 -0000 1.38 +++ libconcord/libconcord.cpp 29 Dec 2008 20:53:37 -0000 @@ -1106,6 +1106,11 @@ return 0; } +int read_arbitrary_flash(int addr, uint32_t size, uint8_t **out) +{ + return _read_fw_from_remote(*out, size, addr, NULL, NULL); +} + int read_firmware_from_remote(uint8_t **out, uint32_t *size, lc_callback cb, void *cb_arg) { Index: libconcord/libconcord.h =================================================================== RCS file: /cvsroot/concordance/concordance/libconcord/libconcord.h,v retrieving revision 1.21 diff -u -r1.21 libconcord.h --- libconcord/libconcord.h 14 Oct 2008 19:35:01 -0000 1.21 +++ libconcord/libconcord.h 29 Dec 2008 20:53:38 -0000 @@ -464,6 +464,9 @@ int post_new_code(uint8_t *data, uint32_t size, char *key_name, char *encoded_signal); +/* debug */ +int read_arbitrary_flash(int addr, uint32_t size, uint8_t **out); + #ifdef __cplusplus } #endif Index: concordance/concordance.c =================================================================== RCS file: /cvsroot/concordance/concordance/concordance/concordance.c,v retrieving revision 1.35 diff -u -r1.35 concordance.c --- concordance/concordance.c 20 Dec 2008 21:18:55 -0000 1.35 +++ concordance/concordance.c 29 Dec 2008 20:53:38 -0000 @@ -569,6 +569,15 @@ uint8_t *firmware_bin; uint32_t firmware_bin_size; + uint8_t *blob = 0; + uint32_t blobsize = 48; + + read_arbitrary_flash(0x200010, blobsize, &blob); + + write_firmware_to_file(blob, blobsize, "/tmp/tout", 1); + + exit(0); + err = 0; firmware_bin = 0;
signature.asc
Description: OpenPGP digital signature
------------------------------------------------------------------------------
_______________________________________________ concordance-devel mailing list concordance-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/concordance-devel