Use any binary compare to find the offset of the first difference [...] I usually use HxD to compare, but only because I downloaded it a long time ago and it lets you compare and jump to the first difference.I don't have a specific recipe for the "inspect" part, but generally, normal variation will be near the end of the file, and likely preceded by a large chunk of 0xFF values, and likely aligned to some fairly large value.
The CHDK CRC check should also catch corruption in a large fraction of the ROM.
not dump to "PRIMAY.bin" but rather "SOME_UNIQUECAMERA_STR_PLUS_FW_VERSION.bin" with effort that would be LESS than me renaming like 140 files so it would need to be trivial or fun? I mean I'd need to exchange CHDKs anyway, so that wouldn't be a big deal, just tedious...
Maybe a script to combine...
fil="A/?romlog.log"
@param m Test | os.rename | Batchfile @default m 2
DUMPFILE="A/PRIMARY.BIN"addr=0xFF810000size=0x007EFFFC
while m needs to be 1, or I can just take out parts.Code: [Select]@param m Test | os.rename | Batchfile @default m 2
So that leaves the second half of the thought. Is it possible to detect the couple of versionsCode: [Select]DUMPFILE="A/PRIMARY.BIN"addr=0xFF810000size=0x007EFFFCcan have, or does that need to get hard coded, now that the unique identifier is available by autodetection per camera? I mean writing down the like 140 cases once and for all would be a last resort wouldn't it.
You could take the size logic from there too.
local startaddr,os,lcdmsg,msgstr,romsize,whatThePeekstartaddr=0os="unk"lcdmsg=0msgstr=0romsize=0whatThePeek=peek(0xFFC00004, 8)if (whatThePeek=="gaonisoy") then startaddr = 0xFFC00000 os = "dry"endwhatThePeek=peek(0xFFC00008, 8)if (whatThePeek=="Copyrigh") then startaddr = 0xFFC00000 os = "vx"endwhatThePeek=peek(0xFF810004, 8)if (whatThePeek=="gaonisoy") then startaddr = 0xFF810000 os = "dry"endwhatThePeek=peek(0xFF820004, 8)if (whatThePeek=="gaonisoy") then startaddr = 0xFF810000 os = "dry"endwhatThePeek=peek(0xFF810008, 8)if (whatThePeek=="Copyrigh") then startaddr = 0xFF810000 os = "vx"endwhatThePeek=peek(0xFF000004, 8)if (whatThePeek=="gaonisoy") then startaddr = 0xFF000000 os = "dry"endwhatThePeek=peek(0xFF020004, 8)if (whatThePeek=="gaonisoy") then startaddr = 0xFF010000 os = "dry"endwhatThePeek=peek(0xFC020004, 8)if (whatThePeek=="gaonisoy") then startaddr = 0xFC000000 os = "dry" romsize = 0x2000000endwhatThePeek=peek(0xE0020004, 8)if (whatThePeek=="gaonisoy") then startaddr = 0xE0000000 os = "dry" romsize = 0x2000000endif (romsize==0) then romsize = 0xFFFFFFFC - startaddrend
if (peek(0xFFC00004, 8)=="gaonisoy") then...
But assuming you do a fresh CHDK install, each camera should do a CRC check on boot anyway.
I have coded little lua, does this look plausible?
binstr=require'binstr'function getsig(addr) return binstr.pack({peek(addr),peek(addr+4)})end
Do I get this right: I need to delete CHDK each time rather than putting a base CHDK into an existing Full CHDK?
I wasn't sure if I could just do it inline like:
You can (but with getsig not peek)
You can set it "always" (2) in the menu.
Started by fudgey General Discussion and Assistance
Started by RonCam General Help and Assistance on using CHDK stable releases
Started by Old Farseeing Art General Help and Assistance on using CHDK stable releases
Started by Vishnuisgod General Help and Assistance on using CHDK stable releases
Started by Mauro900 General Help and Assistance on using CHDK stable releases