Blog Archive

Arduino Indonesia. Gambar tema oleh Storman. Diberdayakan oleh Blogger.

Supported by Electronics 3 in 1

1. Jasa pencetakan PCB single layer dengan harga paling murah.

(Metode Pembuatan dengan Transfer Toner)
>PCB design sendiri (siap cetak) : Rp.150,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

(Metode Sablon Full Masking dan Silk Screen minimal pemesanan 100 Pcs)
>PCB design sendiri (siap cetak) : Rp.200,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

2. Jasa perancangan, perakitan, dan pembuatan trainer pembelajaran elektronika untuk SMK dan Mahasiswa.

3. Jasa perancangan, perakitan, dan pembuatan berbagai macam kontroller, sensor, aktuator, dan tranduser.
>Design Rangkaian / Sistem Elektronika
>Design Rangkaian / Sistem Instrumentasi
>Design Rangkaian / Sistem Kendali
>Kerjasama Riset (data atau peralatan)
>Kerjasama Produksi Produk-Produk KIT Elektronika
>Produksi Instrumentasi Elektronika

4. Jasa Pembuatan Proyek, Tugas Akhir, Tugas Laboratorium, PKM, Karya Ilmiah, SKRIPSI, dll

Like My Facebook

Popular Posts

Rabu, 20 Agustus 2025

Struktur Penyimpanan Program di Raspberry Pi Pico

Raspberry Pi Pico adalah mikrokontroler berbasis RP2040 yang dikembangkan oleh Raspberry Pi Foundation. Salah satu aspek penting dalam pengembangan proyek dengan Pico adalah memahami struktur penyimpanan programnya. Artikel ini akan membahas secara mendalam bagaimana program disimpan di Raspberry Pi Pico, termasuk flash memory, RAM, serta manajemen file sistem. Dengan pemahaman yang baik tentang struktur penyimpanan, pengembang dapat mengoptimalkan kinerja, mengelola ruang penyimpanan dengan efisien, dan memastikan program berjalan dengan stabil.  


Arsitektur Penyimpanan Raspberry Pi Pico

 

Raspberry Pi Pico memiliki dua jenis memori utama, yaitu:  

- Flash Memory (Non-Volatile Storage) 

- SRAM (Static Random-Access Memory, Volatile Storage)

1. Flash Memory (Penyimpanan Non-Volatile)

Flash memory pada Pico berkapasitas 2MB (beberapa varian memiliki ukuran berbeda). Memori ini digunakan untuk menyimpan:  

- Program firmware (UF2, MicroPython, atau C/C++ binaries)  

- File sistem (jika menggunakan MicroPython/CircuitPython)  

- Data konfigurasi yang perlu dipertahankan setelah reboot  

Struktur Flash Memory

Flash memory terbagi menjadi beberapa bagian, yaitu:  

- Bootloader (UF2 Bootloader)

  - Terletak di sektor awal flash (sekitar ratusan KB).  

  - Bertanggung jawab untuk memuat firmware baru melalui USB mass storage.  

- Program Firmware

  - Setelah bootloader, firmware utama disimpan dalam format biner.  

  - Pada MicroPython, firmware mencakup interpreter dan library dasar.  

- File System (Jika Digunakan)

  - MicroPython/CircuitPython menggunakan bagian flash sebagai sistem file virtual.  

  - File seperti boot.py, main.py, dan modul custom disimpan di sini.  

2. SRAM (Penyimpanan Volatile)

RP2040 memiliki 264KB SRAM yang terbagi menjadi:  

- 2 × 64KB bank + 1 × 128KB bank (total 256KB) untuk aplikasi

- 4KB untuk USB controller, dan sisanya untuk sistem.

SRAM digunakan untuk:  

- Menyimpan variabel program saat eksekusi.  

- Stack dan heap memory.  

- Buffer untuk operasi I/O.  

 

Bagaimana Program Disimpan dan Dieksekusi?

  

1. Proses Booting

Saat Pico dinyalakan:  

- Bootrom internal (mask ROM) menjalankan kode pertama.  

- Bootrom memeriksa pin bootsel untuk menentukan mode update firmware.  

- Jika tidak ada update, bootloader UF2 memuat firmware dari flash.  

- Setelah boot, firmware utama seperti MicroPython atau program C/C++ mulai dieksekusi dari flash.

2. Penyimpanan Program dalam Flash

- Dalam C/C++:  

  - Program dikompilasi menjadi file .uf2 atau .bin dan ditulis ke flash.  

  - Default-nya RP2040 mendukung XIP (Execute In Place), jadi kode dijalankan langsung dari flash, tidak dipindahkan ke SRAM kecuali secara eksplisit di-copy.  

- Dalam MicroPython: 

  - Firmware MicroPython disimpan di flash.  

  - Skrip pengguna (main.py, boot.py) disimpan di sistem file virtual.  

3. Eksekusi Program dari Flash vs RAM

- Eksekusi dari Flash (XIP - Execute in Place):

  - RP2040 mendukung XIP, sehingga kode dapat dijalankan langsung dari flash tanpa memuat ke RAM.  

  - Menghemat RAM tetapi sedikit lebih lambat dibanding eksekusi dari SRAM.  

- Eksekusi dari SRAM:

  - Kode yang perlu kinerja tinggi dapat di-copy ke SRAM.  

  - Memakan lebih banyak RAM tetapi lebih cepat.  

 

Manajemen File System di Raspberry Pi Pico

  

1. File System pada MicroPython/CircuitPython

MicroPython menggunakan flash sebagai sistem file virtual dengan struktur:  


2. Penyimpanan File Eksternal

- Pico tidak memiliki penyimpanan eksternal default, tetapi dapat menggunakan:  

  - EEPROM I2C/SPI

  - SD Card (dengan modul SPI)

  - Flash tambahan (melalui QSPI)

 

Optimasi Penggunaan Penyimpanan

 

1. Mengurangi Ukuran Program

- Dalam C/C++:

  - Gunakan compiler flags seperti -Os untuk optimasi ukuran.  

  - Hindari library yang tidak diperlukan.  

- Dalam MicroPython:

  - Hapus komentar dan spasi berlebihan.  

  - Gunakan`mpy-cross untuk mengkompilasi .py ke .mpy (lebih kecil).  

2. Manajemen Memory Dinamis

- Gunakan gc.collect() di MicroPython untuk membersihkan memori tak terpakai.  

- Hindari alokasi memori berlebihan dalam loop.  

3. Pembagian Flash untuk Data dan Program

- Beberapa proyek memisahkan firmware dan data pengguna.  

- Contoh: 1.5MB untuk firmware, 0.5MB untuk file konfigurasi.  


Contoh Kode Program MicroPython (cek penggunaan flash & RAM)

 

import os, gc


# Cek sisa ruang di filesystem

stats = os.statvfs('/')

print("Sisa ruang flash:", stats[0] * stats[3], "bytes")


# Cek memori heap yang tersedia

print("Memori bebas:", gc.mem_free(), "bytes")


Contoh C (Blink LED dari Flash)


#include "pico/stdlib.h"


int main() {

    const uint LED_PIN = 25;

    gpio_init(LED_PIN);

    gpio_set_dir(LED_PIN, GPIO_OUT);


    while (true) {

        gpio_put(LED_PIN, 1);

        sleep_ms(500);

        gpio_put(LED_PIN, 0);

        sleep_ms(500);

    }

}


Pemahaman ini tidak hanya membantu pemula memahami dasar penyimpanan, tetapi juga memberi bekal bagi pengembang lanjut untuk mengoptimalkan performa dan stabilitas proyek berbasis Raspberry Pi Pico.


Baca juga: Pengenalan I2C di Raspberry Pi Pico

 

 

 

 

 

 

 

 

 

Siap Untuk Membuat Proyek Impianmu Menjadi Kenyataan?

Klik di sini untuk chat langsung via WhatsApp dan dapatkan dukungan langsung dari tim ahli kami! 

 

0 on: "Struktur Penyimpanan Program di Raspberry Pi Pico"