I've uploaded a modified version of Cyrille's MySamBa download tool to SF. Please try it out on your machines and report back here.
Modified Flash Tool for WP 34S
|
|
« Next Oldest | Next Newest »
|
▼ ▼
Post: #8
10-04-2011, 06:07 AM
First Impression: I works just once. :-( It seems that the software write protects the flash after updating it which makes it impossible to burn another image once the tool has been used. You need to do a full erase first. I will investigate this further. ▼ ▼
Post: #10
10-04-2011, 09:56 AM
The problem is that I need to disassemble and modify ARM assembly code which exists as a hex dump only in the program. I have an idea but this will need some testing. Cyrille talked about doing the disassembly with an HP 50g. Is anybody here with enough knowledge to help me? I can post the hex dump here if needed.
Edit: here it is: 70 47 78 47 Edited: 4 Oct 2011, 10:15 a.m. ▼
Post: #11
10-04-2011, 11:23 AM
I found a very simple disassembler for ARM code on the net, compiled it, pasted my hex dump into HexEdit on my Mac, saved the resulting binary and came up with the following: 200B40 47784770 Undefined instruction ; [undefined instr]I turned out that the routine assumed a clear memory which can be simply written without erase (command #1) at address 200c28. I changed that to #3 (erase and write) and this should have done the trick. I was able to replace the 34S image with the original 20b ROM and back to WP 34S.
I'm uploading the modified version on SF. Edited: 4 Oct 2011, 11:55 a.m. ▼
Post: #12
10-04-2011, 12:17 PM
200B48 E3A01C02 MOV r1, #1<<9If you look at this instruction you can see that r1 is loaded with the number of flash pages. r1 is later used to stop the download, set the boot bit and reset the calculator. I'd like to replace it with an instruction that loads an arbitrary constant (the number of flash pages in the current bin file). The number is <= 512. Any ARM specialist who can help me out? Is there an instruction that allows this? We can assume that the size is a multiple of 4 so something like MOV r1, #n<<2 should do the trick and I just need to fill #n with the correct value (<=128) before I send the code to the calculator. |