This repo contains my notes on classic iPod hardware. Trying to collect fragmented knowledge from public documents, ipodlinux wiki, ipodlinux/rockbox/ipodloader/etc. sources.
PP5020 SoC contains 2 ARM7TDMI cores: CPU and COP.
Note that ARM7 is not the same as ARMv7. It is ARMv4.
SoC components:
- CPU
- COP
- Mailbox
- 96KB IRAM (4x24KB banks?)
- Interface controller
Other hardware includes
- 32MB SDRAM
- LCD (Monochrome in 1st model, Color in "photo" and 3rd models) (LCD1 or LCD2)
- IDE hard drive (EIDE)
- Piezo clicker (PWM)
- Audio: Wolfson WM8975 (I2S)
- Clickwheel (I2C?)
- Buttons (I2C?)
- ...
Separate firmware partition before hfs/fat partition: https://web.archive.org/web/20180501050730/http://www.ipodlinux.org/Firmware.html#Firmware_Partition_format
Start addr | Content |
---|---|
0x0000_0000 | FLASH |
0x1000_0000 | DRAM |
0x4000_0000 | IRAM |
0x6000_0000 | Processor ID |
0x6000_1000 | Mailboxes |
0x6000_1038 | Mystery IRQ Controllers? |
0x6000_3000 | Total mystery 1 |
0x6000_4000 | Interrupt Controller |
0x6000_5000 | Timers |
0x6000_6000 | Device Controller |
0x6000_7000 | CPU Controller |
0x6000_9000 | Total Mystery 2 |
0x6000_A000 | DMA Controller |
0x6000_C000 | Cache Controller |
0x6000_D000 | GPIO Controller |
0x6000_F100 | Interrupt Vector Table |
0x7000_0000 | PP Controller (PP50XX controller?) |
0x7000_2800 | I2S Controller |
0x7000_3000 | LCD1 Controller (monochrome) |
0x7000_3800 | Total mystery 3 |
0x7000_6000 | Serial Controller |
0x7000_8A00 | LCD2 Controller (color) |
0x7000_A000 | PWM Controller |
0x7000_C000 | I2C Controller |
0x7000_C100 | OPTO? |
0xc031_b1d8 | mystery_flash_stub |
0xc031_b1e8 | mystery_flash_stub |
0xC300_0000 | EIDE Controller |
0xC500_0000 | USB Controller |
0xC600_0000 | FireWire Controller |
0xF000_0000 | Memory Controller |
0xffff_FE00 | mystery_flash_stub |