حالا که مفهوم عمومی Boot ROM را میشناسیم، باید تفاوت Vendorها را جدیتر ببینیم. این تفاوت در Repair، Flash، Unbrick و Secure Boot کاملاً عملی است.
این مقاله یک نقشه معماری است؛ نام Stageها با نسل SoC، OEM و نوع محصول تغییر میکنند و نباید یک زنجیره ثابت را به تمام چیپها تعمیم داد.
نمای مقایسهای
Concept Qualcomm MediaTek
First immutable code PBL BootROM / BROM
Stored in SoC ROM SoC ROM
Next stages XBL / other stages Preloader or BL2 / later stages
ROM-level download EDL BROM download
Early protocol Sahara BROM protocol
Loaded helper Programmer / Firehose Download Agent (DA)Qualcomm PBL
Qualcomm در مستندات Secure Boot، PBL را اولین Boot Loader داخل ROM غیرقابلتغییر معرفی میکند. PBL مرحله بعد را authenticate و Load میکند. در نسلهای جدید نام XBL بسیار رایج است؛ در نسلهای دیگر SBL و نامهای متفاوت دیده میشود.
PBL (ROM)
↓ verify/load
XBL / early stages
↓
platform & security firmware
↓
Android bootloader
↓
AVB / KernelEDL، Sahara و Firehose
EDL یک مسیر Emergency Download در سطح بسیار پایین است. در workflow رایج، Host ابتدا با Sahara مذاکره میکند، programmer سازگار و معمولاً signed را Load میکند و بعد از اجرای programmer، Firehose امکانات Storage/Flash را ارائه میدهد.
PC → USB → EDL
↓
Sahara
↓
load programmer
↓
Firehose
↓
UFS/eMMC accessنام معروف 9008 معمولاً به USB interface دستگاه Qualcomm در EDL اشاره دارد. 9008 نام PBL یا نام Bootloader نیست.
MediaTek BROM
در MediaTek خود اصطلاح BROM بسیار رایج است. BROM از ROM داخلی SoC اجرا میشود و Boot source یا Download path را انتخاب میکند. روی بسیاری از گوشیها Stage مهم بعدی Preloader نامیده میشود؛ در معماریهای جدید مبتنی بر Trusted Firmware نیز نامهایی مثل BL2، BL31، BL32 و BL33 دیده میشوند.
Preloader یا BL2 چه میکند؟
نقش دقیق نسلوابسته است، اما این Stageها معمولاً بخشی از Platform bring-up، DRAM initialization و Storage access را انجام میدهند. در مستندات رسمی Genio، BL2 مسئول DRAM و Storage initialization است.
Download Agent
در Download mode، BROM میتواند DA را از Host دریافت و داخل SRAM اجرا کند. DA سختافزار لازم را bootstrap میکند و عملیات Flash را پیش میبرد. در Secure configuration، DAA میتواند DA را قبل از اجرا authenticate کند.
PC / flash tool
↓ USB
MediaTek BROM
↓ load/authenticate
Download Agent in SRAM
↓
DRAM / storage / flashingBROM Mode با Preloader Mode یکی نیست
اگر USB مستقیماً از BROM برقرار شده، دستگاه هنوز در ROM-level environment است. اگر Preloader اجرا شده و USB interface را ساخته باشد، BROM موفق شده Stage بعدی را از Storage Load کند. همین تفاوت برای تشخیص محل خرابی مهم است.
BROM connection → ROM alive, higher stage may be broken
Preloader connection → BROM + Preloader are alive
Fastboot → several higher boot stages are aliveمقایسه Recovery path
Qualcomm MediaTek
PBL BROM
└─ EDL └─ Download mode
↓ Sahara ↓ BROM protocol
programmer Download Agent
↓ Firehose ↓
UFS/eMMC UFS/eMMCSecure Boot روی این مسیرها
وجود EDL یا BROM Download به معنی دور زدن Secure Boot نیست. Qualcomm میتواند programmer امضاشده بخواهد و MediaTek میتواند Download Agent Authentication را enforce کند. پس «Port زنده است» با «هر Image دلخواه قابل اجراست» فرق دارد.
eFuse چرا مهم است؟
eFuse/OTP برای نگهداری policyها و Root-of-Trust material استفاده میشود و بعضی Bitها یکباربرنامهپذیرند. فعالسازی Secure Boot یا محدودیت Download میتواند تصمیمی برگشتناپذیر در تولید باشد.
از روی Mode چه نتیجهای میگیریم؟
- Fastboot: Boot chain تا bootloader سطح بالا پیش رفته است.
- Qualcomm EDL/9008: مسیر ROM-level/early Qualcomm زنده است؛ Stageهای بالاتر ممکن است خراب یا Reject شوند.
- MediaTek BROM: ROM زنده است و Download path ممکن است قابلدسترسی باشد.
- MediaTek Preloader: Stage بعد از BROM نیز اجرا شده است.
چه چیزهایی را تعمیم ندهیم؟
- همه Qualcommها دقیقاً PBL→XBL یکسان ندارند.
- همه MediaTekها دقیقاً BROM→Preloader→LK ندارند.
- همه EDLها رفتار 9008 یکسان ندارند.
- همه BROMها DA بدون Authentication را قبول نمیکنند.
- گوشی، IoT و Automotive ممکن است Boot architecture متفاوتی داشته باشند.