Menghitung Scatter Loading File untuk Memori yang Dikendalikan

Menghitung Scatter Loading File untuk Memori yang Dikendalikan

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