حالا که مفهوم عمومی 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 / Kernel

EDL، 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 / flashing

BROM 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/eMMC

Secure 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 متفاوتی داشته باشند.

منابع رسمی برای مطالعه بیشتر

قبلی: اولین کدبعدی: Bootloader و Modeهابازگشت به مقالاتصفحه اصلی