rockbox/utils/imxtools/sbtools
Amaury Pouly 47f6d77690 imxtools/sbtools: "fix" address handling in ELF
This is a common problem that proprietary tools don't handle ELF
files correctly. ELF sections use a virtual address and the
virtual -> physical translation is done though segments. This
allows to have a load (physical) address different from the
virtual one. Here is the trick: proprietary tools usually don't
take the pain to do the translation and just grab the virtual
address. This commit implements proper translation in elftosb1
knowing that this introduce a deviation from the behaviour of the
proprietary tool.

Change-Id: I91721a3a8dead382a0603f84ae3b35c5eb9704eb
2012-12-16 21:28:41 +01:00
..
aes128.c imxtools: move tools to a new sbtools/ subdirectory 2012-05-31 13:57:25 +02:00
crc.c imxtools: move tools to a new sbtools/ subdirectory 2012-05-31 13:57:25 +02:00
crypto.c sbtoelf: implement sb1 loading and dumping 2012-11-27 22:16:56 +01:00
crypto.h sbtools: add support for the stmp36xx format 2012-11-26 23:58:30 +01:00
dbparser.c imxtools: move tools to a new sbtools/ subdirectory 2012-05-31 13:57:25 +02:00
dbparser.h imxtools: move tools to a new sbtools/ subdirectory 2012-05-31 13:57:25 +02:00
elf.c imxtools/sbtools: add elf function (sort by address) 2012-12-16 21:28:41 +01:00
elf.h imxtools/sbtools: add elf function (sort by address) 2012-12-16 21:28:41 +01:00
elftosb.c imxtools/elftosb: remove duplicate include 2012-12-16 01:51:49 +01:00
elftosb1.c imxtools/sbtools: "fix" address handling in ELF 2012-12-16 21:28:41 +01:00
fuze+_key_file.txt imxtools: move tools to a new sbtools/ subdirectory 2012-05-31 13:57:25 +02:00
Makefile imxtools/sbtools: introduce elftosb1 for stmp36xx 2012-12-16 21:28:41 +01:00
misc.c rsrctool: produce an actually usuable entry list of the rsrc file 2012-12-02 11:51:50 +01:00
misc.h imxtools/sbtools: update misc with MIN 2012-12-16 21:28:41 +01:00
README imxtools: move tools to a new sbtools/ subdirectory 2012-05-31 13:57:25 +02:00
rsrc.c sbootls/rsrc: fix warnings 2012-12-13 00:23:07 +01:00
rsrc.h rsrctool: produce an actually usuable entry list of the rsrc file 2012-12-02 11:51:50 +01:00
rsrctool.c rsrctool: produce an actually usuable entry list of the rsrc file 2012-12-02 11:51:50 +01:00
sb.c sbtoelf: implement sb1 loading and dumping 2012-11-27 22:16:56 +01:00
sb.h imxtools: move tools to a new sbtools/ subdirectory 2012-05-31 13:57:25 +02:00
sb1.c imxtools/sbtools: fix some instruction handling & crypto 2012-12-16 21:28:41 +01:00
sb1.h imxtools/sbtools: fix some instruction handling & crypto 2012-12-16 21:28:41 +01:00
sbloader.c imxtools/sbloader: implement stmp36xx recovery support 2012-12-13 16:02:58 +01:00
sbtoelf.c imxtools/sbtoelf: use new method to get default xor key 2012-12-16 01:53:20 +01:00
sha1.c imxtools: move tools to a new sbtools/ subdirectory 2012-05-31 13:57:25 +02:00
xorcrypt.c sbtools: add forgotten file 2012-11-27 00:01:35 +01:00

This file document the format of the command file used by the elftosb tool.
By no way our tools tries to be compatible with Freescale's elftosb2.
However, our format is more subset of the general one.

The parse supports a limited form of comments: comments starting with // and ending at the end of the line.

A file first contains the list of sources:

sources
{
    hw_init = "sdram_init.elf";
    rockbox = "rockbox.elf";
}

It can then contain an arbitrary number of section. A section is identified by a number.
Within a section, three commands are supported: "load", "jump" and "call":

section(0x626f6f74) // hex for 'boot'
{
    load hw_init;
    call hw_init;
    load rockbox;
    jump rockbox;
}

Finally, both elftosb and sbtoelf tools use key files. A key file is a list of keys.
Each key consist is 128-bit long and is written in hexadecimal:

00000000000000000000000000000000

The parser does not handle blank line and only allows a final newline at the end of the file.
A file is allowed to contain zero (0) keys.