path: root/rbutil/mkamsboot/main.c
AgeCommit message (Collapse)AuthorFilesLines
2011-07-02mkamsboot: remove useless castsRafaël Carré1-3/+3
git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2011-01-31mkamsboot: restructure model / firmware file information.Dominik Riebeling1-4/+6
Merge the various arrays holding model specific information into a structure and give it a distinct name. Avoids problems when linking with Rockbox Utility. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2010-07-18mkamsboot: take in account the additional 0x200 block when calculating sizeRafaël Carré1-7/+9
Align sizes of different blocks on mkamsboot output git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2010-05-24mkamsboot/rbutil/amsinfo : do not try to detect the model of a given Sansa ↵Rafaël Carré1-12/+12
AMS OF The field we thought was representative of the model is not, it has changed in the past for fuzev1 and fuzev2. For example the value 0x23 is found in 2 old fuzev1 OF versions, and in the c200v2 OF The only reliable way to detect the model of a given OF is by using the built-in list of md5sums. Modify mkamsboot and rbutilqt to load the rockbox bootloader first, and then check if the model in the bootloader corresponds to the model of the known md5sum of the given OF. That way we can continue to present the user with a list of known OF versions in case the OF is unknown to mkamsboot Also explicit the dependency of main.c on mkamsboot.h in case the prototypes change Correct the header's description not updated in r21648 git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2010-02-19mkamsboot: prevents 2 potential problemsRafaël Carré1-3/+5
We checked if the new firmware block (bootloader+ucl function+packed bootloader & OF) fit in the OF file, but not if it would run properly. For example the Clipv2 OF is bigger than 0x50000 bytes uncompressed, but it fitted in this space when packed and concatenated to a packed bootloader + ucl function and dualboot code (but we use 1MB of RAM and not 0x50000 anyway). Now we check that both bootloader and OF are small enough to be unpacked at runtime: the unpacked data must be smaller than available memory and not overlap with ucl function and packed data (although the unpacked and packed data could probably overlap a bit, I don't know how to calculate this and this could be quite complex). total_size() is replaced by check_sizes() which will perform all the checks and set an error string if the firmware can't be patched. (both mkamsboot and rbutilqt modified accordingly) The second problem is that dualboot.S assumed r3 and r5 were left untouched in the device specific checks. This was undocumented and very error prone when modifying these checks. r3 is the last byte of packed copy (bootloader or OF) r5 is the entry point of uclunpack function derived from r3, so move r5 calculation after the device specific code. Even if r3 is currently unused in the device specific code, we store it in memory after copying the ucl function, when it points to the last byte of packed data (not yet copied at this point since we didn't chose if we boot the OF or the bootloader), and restore it just before using it so no restriction is placed on registers usage in device specific code. Add a new variable ucl_dest in dualboot.S set by mkamsboot.c, which represents the last bound of buffer where we copy the ucl function, and then the packed data (bootloader or OF). RAM_SIZE definition is moved from dualboot.S to mkamsboot.c new model_memory_size(), where it is a bit better documented. Tested on e200v2 and Clip+ git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657
2009-11-04Clean up mkamsboot building. No functional changes.Dominik Riebeling1-0/+168
- split out standalone functions to a separate file. - adjust and clean up Makefile. git-svn-id: svn:// a1c6a512-1295-4272-9138-f99709370657