<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://freemyipod.org/index.php?action=history&amp;feed=atom&amp;title=Boot_Process</id>
	<title>Boot Process - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://freemyipod.org/index.php?action=history&amp;feed=atom&amp;title=Boot_Process"/>
	<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Boot_Process&amp;action=history"/>
	<updated>2026-04-30T07:14:21Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://freemyipod.org/index.php?title=Boot_Process&amp;diff=21987&amp;oldid=prev</id>
		<title>Q3k: Created page with &quot;== S5L87xx iPod Boot Process ==  This summarizes the boot process of Samsung S5L87XX based iPods (Nano 3G+, Classic).  === BootROM ===  The S5L87xx SoC starts executing the ...&quot;</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Boot_Process&amp;diff=21987&amp;oldid=prev"/>
		<updated>2023-01-09T16:47:59Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== S5L87xx iPod Boot Process ==  This summarizes the boot process of Samsung S5L87XX based iPods (Nano 3G+, Classic).  === BootROM ===  The S5L87xx SoC starts executing the ...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== S5L87xx iPod Boot Process ==&lt;br /&gt;
&lt;br /&gt;
This summarizes the boot process of Samsung S5L87XX based iPods (Nano 3G+, Classic).&lt;br /&gt;
&lt;br /&gt;
=== BootROM ===&lt;br /&gt;
&lt;br /&gt;
The S5L87xx SoC starts executing the [[Bootrom]] at power up. The BootROM mainly lives at 0x20000000, but is also mapped to 0x00000000 as that&amp;#039;s where the ARM core expects interrupt vectors to be present.&lt;br /&gt;
&lt;br /&gt;
The BootROM does the bare minimum to load a second stage: set up stacks/modes, bring up PLLs, and opens clock gates for AES/NAND/NOR/USB as needed.&lt;br /&gt;
&lt;br /&gt;
The bootROM then checks a few conditions (like GPIO, probably set by the clickwheel controler) to decide what to do next:&lt;br /&gt;
&lt;br /&gt;
# Load a second stage bootloader from NOR&lt;br /&gt;
# Load a second stage bootloader from NAND&lt;br /&gt;
# Start DFU mode over USB&lt;br /&gt;
&lt;br /&gt;
Starting DFU mode is also the fail-safe mode that the BootROM will run if other boot methods fail.&lt;br /&gt;
&lt;br /&gt;
The second-stage bootloader (loaded as an [[IMG1]]) is signature checked, decrypted, and executed.&lt;br /&gt;
&lt;br /&gt;
=== Second Stage Bootloader (bootloader / WTF) ===&lt;br /&gt;
&lt;br /&gt;
When loaded from NAND/NOR this bootloader is referred to as &amp;#039;bootloader&amp;#039;. When loaded over DFU during recovery more, it&amp;#039;s called &amp;#039;WTF&amp;#039;. They are pretty much the same codebase, with slight differences in the &amp;#039;main&amp;#039; flow of booting the next stage.&lt;br /&gt;
&lt;br /&gt;
The bootloader/WTF images are based around EFI, and thus quite modular. When further booting another EFI-based payload, eg. Diags, the bootloader/WTF&amp;#039;s EFI interfaces are also available to the latter stage.&lt;br /&gt;
&lt;br /&gt;
This stage initializes a bunch of peripherals/subsystems, like DRAM, the LCD, UART, the interrupt controller(s), [[FTL]], ...&lt;br /&gt;
&lt;br /&gt;
Depending on the implementation (WTF vs. bootloader), pressed keys and other unknown conditions it will either continue booting [[OSOS]] (or diagnostics/disk mode/aupd) from NAND or go into another USB DFU mode. The WTF by default goes into USB DFU. This permits another [[IMG1]] being loaded and executed.&lt;br /&gt;
&lt;br /&gt;
As with the BootROM, the bootloader/DFU perform IMG1 signature checking and decryption.&lt;/div&gt;</summary>
		<author><name>Q3k</name></author>
	</entry>
</feed>