Jak flashovat REFORMAT na Ford Sync3 · GitHub
Uložte si bigunclemax/7117d6f506200224156e093f7d5a16be do svého počítače a použijte jej na GitHub Desktop.
# Jak flashovat REFORMAT na Ford Sync3
Anglická verze ➡️
Úvodní znělka
Tato metoda umožňuje flashovat Sync3 přes USB, i když byl zcela zazděný. Není potřeba pájet čtečku karet ani žádné jiné vodiče. Jediné, co musíte udělat, je rozebrat desku a zkratovat dva kontakty.
<strong>TL, DR</strong> ➡️
technické vybavení
Blok Ford Sync3 se skládá ze dvou desek:
- Základní deska – IPC s TI Omap5432 SoC jako hlavním procesorem, RAM, eMMC flash.
- Druhá deska – VMCU. Obsahuje CPLD a mikrokontrolér. Tato část je přímo zodpovědná za rozhraní CAN (protože Omap5432 jej nemá) a tato deska také funguje jako externí hlídací pes pro hlavní CPU.
IPC a VMCU spolu komunikují přes rozhraní UART, rychlost 500kbps, pro přenos paketů je použito kódování COBS. Ale o tom více někdy jindy
Režim spouštění OMAP5432
Podle veřejného datasheetu OMAP5432 Multimedia Deviced můžeme získat informace o způsobech a pořadí stahování Omap5432.

Je uveden v sekci 2.6 Konfigurace SYSBOOT.
Zde je štítek z tohoto datového listu.
Všechny oči upřené sys_boot3. Je to on, kdo změní prioritu spouštění z USB. Tedy pokud stisknete sys_boot3 k zemi, pak SOC začne bootovat nejprve z USB.
Ale jak najít sys_boot3?
K tomu nám pomůže další datasheet OMAP5432Multimedia Device Engineering Samples 2.0, který obsahuje popis pinů (kuliček, chcete-li) procesoru a také schéma s jejich umístěním (obrázek 2-1. OMAP5432 AAN S-PBGA -N754 Balíček (pohled zdola)).

Nacházíme naše sys_boot3 a vidíme, že je umístěn na místě V31.
Protože míč je V31 umístěný pod procesorem, nelze se k němu dostat bez speciálních nástrojů.
Ale pak jsem přišel na pomoc Cusco. Zazvonil na konektory od Soc k četným testovacím bodům (TP) umístěným na desce.

A nakonec jsem to našel V31!
Nyní jsme připraveni nahrát do Sync3 přes USB.
USB boot
Je čas připojit Sync3 k počítači pomocí kabelu miniUSB. Poté začneme probouzet desku pakety přes CAN (toto umí perfektně i jakýkoli jilm). Sepneme dva zakroužkované kontakty a přivedeme napájení 12V.
Podíváme se na log (dmesg) a uvidíme:
kernel: [431083.350475] usb 1-3: new high-speed USB device number 114 using xhci_hcd kernel: [431083.499541] usb 1-3: New USB device found, idVendor=0451, idProduct=d011, bcdDevice= 0.00 kernel: [431083.499555] usb 1-3: New USB device strings: Mfr=33, Product=37, SerialNumber=0 kernel: [431083.499561] usb 1-3: Product: OMAP5430 kernel: [431083.499566] usb 1-3: Manufacturer: Texas Instruments Super, SoC bylo vidět přes USB a čeká na nahrání kódu do něj.
Zde je třeba učinit malou poznámku. USB boot v Omap5432 není úplně stejný jako bootování z eMMC nebo SD karty. Nemůžeme jednoduše naformátovat USB flash disk určitým způsobem a spustit z něj, jak se to dělá v PC. Místo toho musíme přenést náš spustitelný kód (bootloader) do Soc přes USB a poté implementovat přístup k eMMC v tomto bootloaderu.
Po několika dnech googlování se mi podařilo najít odkazy na články o vývojové desce TI OMAP5 5432 uEVM ES2.0 (Panda5) vedoucí na http://omapedia.org. Snažíme se jít dál a. jsme přesměrováni na www.ti.com.
Místo bylo vykáceno. kurva!
Web.archive.org si však pamatuje všechno, nebo alespoň mnohé
- Obecný popis
- Podrobný popis procesu spouštění USB
Kupodivu byly odkazy na zdroje živé. Nás zajímá především užitečnost UsbBoot (Omapboot).
Vytáhneme zdrojové kódy git clone git://git.omapzoom.org/repo/omapboot.git usbboot && git checkout 33af7cb409b603cf7988306ab2ea70f052a9a02b a pokusíme se zkompilovat.
K sestavení pro Omap potřebujete toolchain pro Armv7. Můžete si vzít ten v článku z wiki, ale k tomu si budete muset stáhnout celé úložiště Android. Proto to uděláme jednodušeji a vezmeme si sestavený toolchain odtud.
Super, teď máme co nahrát do SoC. Načítání.
user@pc:~/$ sudo ./out/omap5uevm/usbboot -f reading ASIC ID CHIP: 5430 rom minor version: 02 IDEN: 0000000000000000000000000000000000000000 MPKH: 0000000000000000000000000000000000000000000000000000000000000000 CRC0: 071a9a31 CRC1: 00000000 device is GP using built-in GP iboot of size 23-KB sending 2ndstage to target. waiting for 2ndstage response. received 2ndstage response. Po načtení a přijetí odpovědi přes USB z našeho čerstvě sestaveného bootloaderu se můžeme připojit k Omap pomocí utility fastboot (ano, ano, stejná pro Android) a zkusit provést pár příkazů.

Shrňme mezivýsledek
- Naučili jsme se, jak změnit pořadí spouštění z USB.
- Naučili jsme se, jak spustit vlastní bootloader.
- Máme funkční USB kanál pro interakci mezi PC a Sync procesorem.
Je čas naučit se flashovat eMMC Sync s vašimi vlastními obrázky přenesenými přes USB z PC.
Reformat
Reformátovací balíček je určen pro tovární (čistou) instalaci OS Sync3. Skládá se ze 2 částí:
- MLO – Nakladač
- QNX-IFS-REFORMAT – Obraz OS, který provádí tovární instalaci Sync3.
Právě tyto soubory potřebujeme zapsat do eMMC. Zbývá pochopit, kde přesně v eMMC by měly být umístěny.
Chcete-li to provést, podívejme se na původní instalační skript přeformátování. Vidíme tam následující řádek update_boot -t -i /tmp/QNX-IFS-REFORMAT -m /tmp/MLO
Jo, to znamená, že existuje určitý nástroj update_boot, který provede celou instalaci v Sync. No, pojďme si to vybrat.
Nejprve strings update_boot :
Usage: %s [-i] [-m] raw partition -i Path of IFS image file -m Path of MLO image file -t Toggle active IFS partition -r replace current IFS with new one raw partition Path of raw partition to write IFS and MLO image files, default value is /dev/hd0. Parametry jsou víceméně jasné; zbývá jen pochopit, co přesně tento software dělá. Vezmeme Hydru a dáme tam náš update_boot. Proces dekompilace je nad rámec tohoto článku. Pro zájemce je zde odkaz na úložiště s posraným pseudokódem získaným v důsledku dekompilace.
Výsledkem je tento obrázek označení eMMC pro Sync3.
Rozvržení Sync3 eMMC
| blokovat | ofset | název |
|---|---|---|
| 0x0000 | MBR | |
| 0x0002 | 0x0000400 (1024) | informace o spouštěcí bance |
| 0x0100 | 0x0020000 (131072) | MLO |
| 0x0184 | 0x0030800 (198656) | První banka IFS |
| 0x7cd2 | 0x0F9A400 (16360448) | Druhá banka IFS |
Sync3flash
Bootloader, který jsme sestavili dříve, již má funkce pro čtení a zápis na flash disk. Dostali jsme adresy, na které potřebujeme napsat obrázek reformovaných v předchozím odstavci.
Pojďme trochu přepsat původní usbboot tím, že vyhodíme vše nepotřebné a přidáme firmware MLO a QNX-IFS-REFORMAT s offsety, které potřebujeme. Výsledný software je sync3flash.
Firmware eMMC Sync3
Pro firmware potřebujete PC s Linuxem (virtuální stroj nebude fungovat, ale můžete použít flash disk livecd, například puppy linux)
sync3flash
Vyžaduje se také přeformátování souborů (MLO a QNX-IFS-REFORMAT)
Nyní tedy máme vše, co potřebujeme pro firmware. Začněme:

- Sync3 připojíme k PC přímo pomocí microUSB kabelu. (připojení přes rozbočovač nebude fungovat)
- Začneme odesílat zprávy CAN, které probudí synchronizaci.
- Spusťte sudo ./sync3flash -i QNX-IFS-REFORMAT -m MLO
- Uzavřeme kontakty zakroužkované červeně
- Dodáváme energii do Sync.
Pokud je vše úspěšné, měli byste vidět výstup jako:
user@user-PC:/tmp$ sudo ./sync3flash -m MLO -i QNX-IFS-REFORMAT waiting for device. reading ASIC ID CHIP: 5430 rom minor version: 02 IDEN: 0000000000000000000000000000000000000000 MPKH: 0000000000000000000000000000000000000000000000000000000000000000 CRC0: 071a9a31 CRC1: 00000000 device is GP sending 2ndstage to target. waiting for 2ndstage response. sending image to target. size (22696-B/22-KB/0-MB) sending image to target. size (9279956-B/9062-KB/8-MB) Po 30 sekundách se Sync 3 restartuje a načte se přeformátování. To je vše.
PS:
Tento příběh slouží pouze pro zábavní a vzdělávací účely a nikoho nenabádá k žádné akci. Všechny postavy jsou fiktivní a podobnosti jsou náhodné.
PPS:
Děkuju mnohokrát Cusco za pomoc s hardwarem, ideové inspirátory Sanek2033 и AuoNa Rys za nápad.