ในแฟลชไฟล์ของ Qualcomm จะเห็น loader ต่าง ๆ มีโครงสร้างประมาณนี้:
prog_emmc_firehose_8976_lite
prog_emmc_firehose_8976_ddr
prog_ufs_firehose_8996_lite
prog_ufs_firehose_sdm845_ddr
prog_firehose_ddr_fwupdate
คุณอาจสงสัยว่าแต่ละอันต่างกันยังไง: สรุปสั้น ๆ คือ... ddr vs lite: "ddr" มีการใช้หน่วยความจำ DDR (เร็วกว่า), "lite": ใช้แค่ SRAM
นั่นหมายถึง DDR มีความสามารถมากกว่า lite และมีคำสั่งบางอย่างที่ lite ใช้ไม่ได้ ทำให้ครอบคลุมการใช้งานกว้างขวางกว่า อย่างไรก็ตาม ไฟล์เหล่านี้ถูกสร้างขึ้นสำหรับศูนย์บริการหลักและหลังการขายโดยเฉพาะ ไม่ได้มีไว้สำหรับผู้ใช้ทั่วไปหรือช่างภายนอกอย่างพวกเรา
รูปแบบไฟล์:
MBN & ELF
ELF (Executable and Linkable Format)
MBN (Modem Binary หรือ Multi Boot Image)
ไฟล์ MBN เป็นแบบ 32 บิต ซึ่งเป็นรูปแบบเก่า หากเปิดด้วย HXD คุณจะเห็นโค้ดเริ่มต้นในลักษณะนี้: #define MBN_HEAD_CODEWORD 0x844bdcd1 /* little-endian */ ส่วนไฟล์ MBN ที่เป็น ELF และไฟล์ ELF binaries จะเริ่มต้นด้วย: 0x464C457F - header สำหรับ ".ELF"
ไฟล์ Firehose FW Update: ส่วนใหญ่เรารู้จักตัวเลือก "Update FFU" ที่อยู่ใน eMMCDL source แต่มันไม่ได้มีใน loader ทุกตัว หากคุณลองใช้งานผ่าน loader ปกติ การทำงานจะล้มเหลว
ไฟล์นี้มีการเปิดใช้งานเฉพาะคำสั่ง IC Firmware Update และ Patch ซึ่งเมื่อเร็ว ๆ นี้ได้มีการใช้เพื่อจัดการกับอุปกรณ์ Oppo และ Realme Qualcomm รุ่นใหม่ ๆ โดยใช้คำสั่ง Patch ในการเขียนและฟอร์แมต แทนที่จะใช้คำสั่งทั่วไปที่มีใน loader ปกติ และเนื่องจากการอ่านข้อมูลไม่ได้รับอนุญาตจาก loader นักพัฒนาจึงหาวิธีดึงที่อยู่ที่เกี่ยวข้องจาก Raw Program เช่น ส่วน misc และ frp บนอุปกรณ์ที่รู้แน่ว่ามีแฟลชไฟล์ให้ และแบ่งส่วนพร้อมที่อยู่ของแต่ละพาร์ติชัน ส่วนใหญ่ที่อยู่นี้จะคงที่สำหรับ vendor และโปรเซสเซอร์เดียวกัน โดยเฉพาะพาร์ติชันหลักก่อนถึงไฟล์ SUPER/SYSTEM ทำให้สามารถใช้คำสั่งนี้สำหรับฟอร์แมตและลบ FRP ได้ อย่างไรก็ตาม การทำงานค่อนข้างช้าเพราะคำสั่ง Patch ใช้ผ่าน SRAM แทนที่จะเป็น DRAM - DDR
อาจจะดูไม่สำคัญ แต่เป็นความรู้พื้นฐานที่ควรเข้าใจไว้