Downloads
release
dev builds
extras
themes
Documentation
manual
wiki
device status
Support
forums
mailing lists
IRC
Development
bugs
patches
dev guide
Search
Search
| Go
Wiki
>
Main
>
IaudioPort
>
IaudioX5Info
>
IaudioX5FirmwareDisassembly
---+!! Information gathered from iaudio X5 OF disassembly %TOC% ---++ Preloader ---+++ General Info This part of firmware resides from 0x00000000 to 0x00010000 and never changes. It is a single-threaded program that handles the following tasks: 1 Device initialization. 2 USB HDD mode. 3 Adapter/USB charge mode. 4 Firmware upgrade. 5 Executing the actual firmware (i.e., jmp 0x10000). ---+++ General Code Flow * Initialization steps 1 & 2 * If USB and/or AC adapter is connected, go to Initialization step 3; otherwise, go to Initialization step 4. ---++++ Initialization, step 1 * Internal <nop>ColdFire registers: sp, vbr, cacr, acr0, acr1, mbar, mbar2, rambar0, rambar1 * Various registers on MBAR and MBAR2 (interrupts, timers, DMA, IIS_CONFIGs, EBU_CONFIGs) * GPIO out/enable/function registers | | *OUT* | *ENABLE* | *FUNCTION* | | *GPIO* | 0x40200018 | 0x60A0E018 | 0x6FA1E179 | | *GPIO1* | 0x4830 | 0x483C | 0x483C| * DRAM controller * PLL_CONFIG (to 0x11436059) * Chip Select 0 * Copy rest of preloader to DRAM ---++++ Initialization, step 2 * UART0 * LCD * I2C controller (interface 1 only) * PCF50606 * CY7C68310 ---++++ Initialization, step 3 (USB and/or AC adapter connected) * Remote LCD detect & init * Turn of backlight and display boot screen * If USB is connected: * ATA init & reset * HDD identify & init * Partition table & FAT32 init * Set slow CPU freq (PLL_CONFIG = 0x10422035) and adjust UART divider (32) * Enter ATA bridge mode * If AC adapter is connected: * ATA init & reset * HDD identify & init * Partition table & FAT32 init ---++++ Initialization, step 4 (neither USB nor AC adapter connected) * ATA init & reset * Jump to firmware (at 0x10000) _To be continued..._ ---++ Firmware ---+++ General Info This part of firmware resides from 0x00010000 to ~0x019D0000 and can be upgraded. It has two parts: * the first is composed of ~18 data and/or code segments, most of which are cached to IRAM/DRAM. * the second contains read-only data (images, remote images, text strings, ...) and begins at 0x01700000. H3Mod changes things here. _To be continued..._
E
dit
|
A
ttach
|
P
rint version
|
H
istory
: r3
<
r2
<
r1
|
B
acklinks
|
V
iew topic
|
M
ore topic actions
r3 - 30 Sep 2007 - 17:32:14 -
NicolasPennequin
Parents:
IaudioPort
>
IaudioX5Info
Copyright © by the contributing authors.