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;
 

Attachment: signature.asc
Description: OpenPGP digital signature

------------------------------------------------------------------------------
_______________________________________________
concordance-devel mailing list
concordance-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/concordance-devel

Reply via email to