Starta ROM

Boot ROM är en typ av ROM som används för att starta upp ett datorsystem. Det finns två typer: ett maskstart -ROM som inte kan ändras i efterhand och ett start- EEPROM , som kan innehålla en UEFI- implementering.

Syfte

Vid start startar hårdvaran vanligtvis oinitierad. För att fortsätta starta kan systemet behöva läsa en starthanterare från någon kringutrustning. Det är ofta lättare att implementera rutiner för läsning från externa lagringsenheter i mjukvara än i hårdvara. Ett start-ROM tillhandahåller en plats för att lagra denna initiala laddningskod, på en fast plats som är omedelbart tillgänglig för processorn när exekveringen startar.

Drift

Start-ROM:et mappas in i minnet på en fast plats, och processorn är utformad för att börja exekvera från denna plats efter återställning. Vanligtvis placeras den på samma tärning som processorn, men det kan också vara ett externt ROM- chip, vilket är vanligt i äldre system.

Boot ROM kommer sedan att initiera de hårdvarubussar och kringutrustning som behövs för att starta. I vissa fall är start-ROM kapabel att initiera RAM , och i andra fall är det upp till starthanteraren att göra det.

I slutet av hårdvaruinitieringen kommer start-ROM att försöka ladda en bootloader från extern perifer(er) (som en eMMC, ett microSD-kort, och så vidare) eller genom specifika protokoll på en buss för dataöverföring ( som USB, UART, etc).

I många system på ett chip kan kringutrustningen eller bussarna från vilka start-ROM försöker ladda bootloadern, och i vilken ordning de laddas, konfigureras. Denna konfiguration kan göras genom att blåsa några elektroniska säkringar inuti systemet på ett chip för att koda den informationen, eller genom att ha specifika stift i systemet på ett chip högt eller lågt vid start.

Vissa start-ROM kan kontrollera starthanterarens digitala signatur och kommer att vägra köra starthanteraren och stoppa uppstarten om signaturen inte är giltig eller inte har signerats med en auktoriserad nyckel . Med vissa start-ROM är hashen för den publika nyckeln som behövs för att verifiera signaturerna kodad i elektroniska säkringar inuti systemet på ett chip . Vissa system på ett chip- start-ROM stöder också en offentlig nyckelinfrastruktur och hashen för certifikatutfärdarens (CA) offentliga nyckel kodas i de elektroniska säkringarna istället, och start-ROM kommer då att kunna kontrollera om starthanteraren är signerad av en auktoriserad nyckel genom att verifiera den nyckeln med CA:s publika nyckel (vars hash är kodad i de elektroniska säkringarna ).

Den funktionen kan sedan användas för att implementera säkerhetsfunktioner eller användas som en hårdvarurot av förtroende i en Chain of trust , men när den väl har konfigurerats nekas användarna friheten att ersätta bootloadern med den de vill ha. På grund av detta har funktionen väckt stora farhågor från friprogramvarugemenskapen.

Precis innan du hoppar till starthanteraren tar vissa system på ett chip också bort start-ROM från minnesmappingen, medan andra inte gör det, vilket gör det möjligt att dumpa start-ROM från senare analys. Om boot-ROM fortfarande är synlig, kan bootloaders också anropa koden för boot-ROM (vilket ibland är dokumenterat).

Stäng av till RAM

När ett system på ett chip går in i viloläge till RAM- läge, är processorn i många fall helt avstängd medan RAM-minnet sätts i självuppdateringsläge. Vid återupptagning exekveras boot ROM igen och många boot ROM kan upptäcka att systemet på ett chip var i viloläge till RAM och kan återupptas genom att hoppa direkt till kärnan som sedan tar hand om att slå på igen kringutrustningen som var avstängd och återställer det tillstånd som datorn var i tidigare.

Specifika implementeringar

Allwinner

På många Allwinner- system på ett chip (A10, A20, A64) väntar boot-ROM antingen på att en bootloader ska laddas via USB (om en specifik PIN-kod är hög) eller försöker starta på flera kringutrustning i en fast ordning.

Vissa Allwinner- system på ett chip kan verifiera signaturen för booloaders. Men de flesta enheter som tillverkas är inte konfigurerade för det. Detta har gjort det möjligt för gratis och öppen källkodsprogramvara att lägga till stöd för många Allwinner- system på ett chip och enheter som använder dem i bootloaders som U-Boot .

Äpple

iOS- enheter kallas start-ROM "SecureROM". Det är en avskalad version av iBoot . Den tillhandahåller en Device Firmware Upgrade (DFU) mekanism, som kan aktiveras med en speciell tangentkombination.

NXP

Start-ROM för NXP- system på ett chip stödjer konfigurering av kringutrustning genom specifika stift i systemet på ett chip. På I.MX6-familjen stöder den också konfigurering av startordningen genom efuses .

Boot-ROM för flera NXP- system på ett chip har många sätt att ladda starthanteraren för första steget ( från eMMC, microSD, USB, etc).

Flera NXP- system på ett chip kan konfigureras för att verifiera signaturen för startladdare. Många enheter med ett sådant system på ett chip såldes utan att den verifieringen var konfigurerad och på de enheterna kan användare installera den bootloader de vill ha, inklusive flera gratis och öppen källkodsmjukvarustartladdare som Das U-Boot och Barebox .

Texas instrument

Start-ROM för flera Texas Instruments- system på ett chip stödjer konfigurering av kringutrustningen genom specifika stift i systemet på ett chip.

Boot-ROM-minnet för flera Texas Instruments- system på ett chip har många sätt att ladda första stegets bootloader (som kallas MLO i referensmanualerna för system på ett chip) :

  • Den kan laddas från olika lagringsenheter (MMC/SD/eMMC, NAND, etc).
  • Med MMC/SD/eMMC kan den laddas direkt från kortsektorer (kallas RAW-läge i manualen) eller från en FAT12/16/32-partition.
  • Den kan också laddas från USB eller UART.

På OMAP36xx -systemet på ett chip letar start-ROM-minnet efter starthanteraren i första steget vid sektorerna 0x0 och 0x20000 (128KB), och på AM3358- systemet på ett chip tittar den dessutom på 0x40000 (256KiB) och 0x38000B (0x38000B). I båda fallen är dess maximala storlek 128KiB. Detta beror på att starthanteraren (första steget) laddas i ett SRAM som finns inuti systemet på ett chip .

OMAP- och AM335x- systemen på ett chip kan konfigureras för att verifiera signaturen för booloaders. Många enheter med ett sådant system på ett chip såldes utan att verifiering konfigurerats och på dessa enheter kan användare installera den bootloader de vill ha, inklusive flera gratis och öppen källkodsmjukvarustartladdare som Das U-Boot och Coreboot och Barebox .

STMicro STM32

STMicro STM32 -familjens mikrokontroller har inbyggd on-chip ROM (även kallad "inbyggd bootloader") för att underlätta tom systemblinkning. Vissa pinkombinationer eller ibland efuses och/eller tomma flashkontroller tvingar chippet att starta från ROM istället för den fasta programvaran i huvudflash. Detta gör att tomma kretsar kan flashas utan att tillgripa hårdvaruprogrammeringsgränssnitt. Tekniskt sett lagras detta ROM i ett dedikerat område av flash-arrayen och programmeras av STMicro under produktionen. De flesta STM32-mikrokontroller kan åtminstone flashas över UART, vissa stöder USB och så småningom andra gränssnitt som t.ex. I2C , SPI , eller CAN . Cortex -M CPU-kärnan hämtar normalt vektorer från de välkända adresserna 0x00000000 (initial stack pointer value) och 0x00000004 (initial program counter value). Men stift och/eller säkringar definierar vilket minne som är mappat på dessa adresser. Inbyggd start-ROM är ett av mappningsalternativen, ett annat skulle vanligtvis vara huvudfirmware i flash. I det här fallet ska firmware göra alla jobb som start-ROM gör; en del av den fasta programvaran skulle kunna fungera som en bootloader liknande ST:s start-ROM. Hårdvara kan tillhandahålla skrivskyddad upprätthållande av startområdet, vilket gör det till en användartillhandahållen version av start-ROM.

säkerhet

Äpple

På enheter som kör iOS används ibland boot ROM-exploater (som Limera1n och checkm8) för iOS-jailbreaking . Fördelen för människor som vill jailbreaka sina enheter framför exploateringar som påverkar iOS är att eftersom start-ROM inte kan modifieras – och att enheter som kör iOS inte har säkringar för att lägga till kod till start-ROM, kan Apple inte fixa sårbarheten på befintliga enheter.

Nvidia Tegra

Boot ROM för Tegra SoC från Nvidia (används av Nintendo Switch ) innehöll en sårbarhet som gjorde det möjligt för användare att köra den bootloader de vill ha.

Se även