Rockbox
b12427741a
Buflib is written with a lot of hardcoded offsets to header fields, arbitrary pointer arithmetic, and similar but not quite duplicated code, making maintenance a nightmare. Most of the pointer arithmetic involving header fields is replaced by indexing from two well-defined pointers, the block start and end pointers. The start pointer points to the first header field, and he end pointer is one past the end of the header. Hardcoded field indices are replaced by two enums. Forward indices (fidx_XXX) are used to access fields from a block start pointer and negated backward indices (-bidx_XXX) are used to index from a block end pointer. There is no overlap between the indices because of the variable length name field in the middle of the header. The length of the fixed fields in the block header is now a #define'd constant rather than being open coded. There is now a function to acquire the block end pointer from the user data pointer (ie. the pointer stored in the handle table). The old code was not consistent in this; some functions would handle a non-aligned user pointer, which may occur as a result of shrinking, while other uses just assumed the user pointer was aligned. Block CRC calculations have also been factored out to a function that accepts block start and end pointers. Change-Id: I6a7e8a8c58aec6c6eaf0e5021400032d8e5f841e |
||
---|---|---|
android | ||
apps | ||
backdrops | ||
bootloader | ||
debian | ||
docs | ||
firmware | ||
fonts | ||
gdb | ||
icons | ||
lib | ||
manual | ||
packaging | ||
tools | ||
uisimulator | ||
utils | ||
wps | ||
.gitattributes | ||
.gitignore | ||
.gitreview |
__________ __ ___. Open \______ \ ____ ____ | | _\_ |__ _______ ___ Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ \/ \/ \/ \/ \/ Build Your Own Rockbox 1. Clone 'rockbox' from git (or extract a downloaded archive). $ git clone git://git.rockbox.org/rockbox or $ tar xjf rockbox.tar.bz2 2. Create a build directory, preferably in the same directory as the firmware/ and apps/ directories. This is where all generated files will be written. $ cd rockbox $ mkdir build $ cd build 3. Make sure you have mips/m68k/arm-elf-gcc and siblings in the PATH. Make sure that you have 'perl' in your PATH too. Your gcc cross compiler needs to be a particular version depending on what player you are compiling for. These can be generated using the rockboxdev.sh script in the /tools/ folder of the source. $ which arm-elf-eabi-gcc $ which perl 4. In your build directory, run the 'tools/configure' script and enter what target you want to build for and if you want a debug version or not (and a few more questions). It'll prompt you. The debug version is for making a gdb version out of it. It is only useful if you run gdb towards your target Archos. $ ../tools/configure 5. *ploink*. Now you have got a Makefile generated for you. 6. Run 'make' and soon the necessary pieces from the firmware and the apps directories have been compiled, linked and scrambled for you. $ make $ make zip 7. unzip the rockbox.zip on your music player, reboot it and *smile*. If you want to build for more than one target, just create several build directories and create a setup for each target: $ mkdir build-fuzeplus $ cd build-fuzeplus $ ../tools/configure $ mkdir build-xduoox3 $ cd build-xduoox3 $ ../tools/configure Questions anyone? Ask on the mailing list or on IRC. We'll be happy to help you!