To be sure that there is no mistake in this code, it is run *after*
the known to work HOME & LEFT buttons checks, unlike other Sansas
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26122 a1c6a512-1295-4272-9138-f99709370657
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://svn.rockbox.org/rockbox/trunk@24772 a1c6a512-1295-4272-9138-f99709370657
Also only use 0x50000 bytes of memory since the files just fit in.
TODO: make mkamsboot abort if the decompressed OF or bootloader doesn't
fit in RAM / or overlap on compressed data or uclunpack function
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24727 a1c6a512-1295-4272-9138-f99709370657
This removes the need for copying these files to ../ and removes the
risk of only copying one of the files (which led to bricking 2 c200v2
already)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24719 a1c6a512-1295-4272-9138-f99709370657
Dualboot works on the sansa clip+ by holding either the left "|<<" or home buttons.
The USB pin is still undiscovered at this point and should replace the home button when found.
By including the home button for dualboot we avoid bricking due to a single button failure.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24561 a1c6a512-1295-4272-9138-f99709370657
UNTESTED, could ver well brick your Clip+
If it works, booting should just be delayed by a small delay (perhaps
not noticeable)
Hopefully the Clipv2 checks will work for Clip+ and then we'll be able
to test the other Clipv2 code (LCD/button)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24219 a1c6a512-1295-4272-9138-f99709370657
When building various libraries for Rockbox Utility make sure they use the same compiler as Qt. Pass Qt's CC instead of explicitly setting it. This fixes issues linking on OS X (with recent XCode building universal binaries requires the use of gcc-4-0 while the default one is 4.2).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23779 a1c6a512-1295-4272-9138-f99709370657
Building universal libraries needs to take TARGET_DIR into account as when set the individual libraries are placed into the build output folder and didn't got found anymore.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23778 a1c6a512-1295-4272-9138-f99709370657
- split out standalone functions to a separate file.
- adjust and clean up Makefile.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23520 a1c6a512-1295-4272-9138-f99709370657