Pada saat membangun aplikasi sistem operasi (OS), kita perlu mengatur memori secara tepat untuk mendukung fungsi-fungsi yang dibutuhkan. Salah satu cara untuk melakukan hal ini adalah dengan menggunakan scatter loading file, juga dikenal sebagai linker script pada GNU.
Load View dan Execution View
Pada dasarnya, memori dapat dilihat dari dua perspektif: load view dan execution view. Load view merujuk pada saat aplikasi sistem operasi (OS) masih dalam bentuk biner yang disimpan di ROM atau Flash, sedangkan execution view merujuk pada saat aplikasi OS dipindahkan ke RAM dan dijalankan.
Scatter Loading File
Dalam scatter loading file, kita dapat mengatur memori secara detail untuk mendukung fungsi-fungsi yang dibutuhkan. Contohnya:
LOAD_REGION 0x0
{
EXEC_REGION1 0x0
{
spaghettil.o (+RO)
}
EXEC_REGION2 0x8000
{
spaghettil.o (+RW)
}
EXEC_REGION3 0xA000
{
spaghettil.o (+ZI)
}
}
Dalam contoh di atas, LOAD_REGION 0x0 merujuk pada load view, sementara EXEC_REGION1, 2, dan 3 merujuk pada execution view. Load view menunjukkan bahwa ROM berisi RO (Read-Only) dan RW (Read/Write) yang akan di-load ke RAM. Sementara execution view menunjukkan bahwa RAM berisi RO, RW, dan ZI (Zero-Initialize) yang akan dijalankan.
Masalah dengan SP Flash Tool
Kadang-kadang, kita mengalami masalah ketika menggunakan SP Flash Tool untuk flashing firmware. Contohnya:
The ROM you provided does not contain a valid scatter file or recovery.img so you can not use SP Flash Tool.
Dalam kasus seperti ini, kita perlu membuat backup dari boot dan kemudian mempatch-kan firmware dengan Magisk Manager APK.
Patch Boot Image with Magisk Manager
Patching boot image dengan Magisk Manager akan menghapus flag "verify" dan patch-ing terhadap dm-verity, yang akan memungkinkan kita untuk booting dengan partition recovery yang telah dipatch.
Baca Back Recovery Partition
Jika kita memiliki ponsel yang serupa, kita dapat melakukan baca back dari partition recovery. Berikut adalah contoh scatter file untuk partition recovery:
############################################################################################################
General Setting
############################################################################################################
- general: MTK_PLATFORM_CFG
info: - config_version: V1.1.2
platform: MT6755
project: TP904A
storage: EMMC
boot_channel: MSDC_0
block_size: 0x20000
############################################################################################################
Layout Setting
############################################################################################################
- partition_index: SYS2
partition_name: recovery
file_name: recovery.img
is_download: true
type: NORMAL_ROM
linear_start_addr: 0x8000
physical_start_addr: 0x8000
partition_size: 0x1000000
region: EMMC_USER
storage: HW_STORAGE_EMMC
boundary_check: true
is_reserved: false
operation_type: UPDATE
is_upgradable: true
reserve: 0x00
Scatter File MT6755_Android_scatter_TP904A.txt
Berikut adalah contoh scatter file yang lengkap untuk memori TP904A:
MT6755_Android_scatter_TP904A.txt