Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial Internet of Things >> Tertanam

Struktur C Tertanam: Panduan Praktis untuk Definisi, Penggunaan, dan Optimasi Memori

Struktur adalah sumbu dari pemrograman C tertanam yang efisien. Dalam artikel ini, kami akan menjelajahi aplikasi praktisnya, sintaks untuk mendeklarasikannya, dan dampak perataan data pada penggunaan memori. Dengan mengurutkan anggota struktur secara strategis, Anda sering dapat mengurangi jejak objek data Anda, pertimbangan kritis dalam lingkungan dengan keterbatasan sumber daya.

Artikel ini menawarkan ringkasan yang ringkas namun komprehensif tentang struktur dalam C tertanam. Kami akan membahas aplikasi dunia nyata, cara mendeklarasikannya dengan benar, dan aturan halus perataan data yang mempengaruhi ukuran struktur Anda.

Struktur

Ketika beberapa variabel dengan tipe yang sama memiliki hubungan logis, array adalah pengelompokan yang nyaman. Misalnya, untuk menyimpan 50 sampel terakhir dari ADC yang mendigitalkan input suara, Anda mungkin menggunakan:

uint16_t voice[50];

Di sini, uint16_t adalah integer unsigned 16-bit yang didefinisikan dalam stdint.h, memastikan ukuran yang konsisten di seluruh platform.

Tetapi bagaimana jika Anda perlu mengelompokkan variabel dengan tipe yang berbeda—misalnya, array sampel dan laju sampling ADC? Mendeklarasikannya terpisah sebagai variabel independen menciptakan overhead yang tidak perlu. Sebaliknya, Anda dapat menyatukannya dalam sebuah struktur:

struct record { uint16_t voice[50]; float sample_rate; };

Struktur record sekarang berisi baik array uint16_t maupun float dalam satu objek data yang terhubung secara logis.

Mengapa Struktur Penting?

Struktur memungkinkan Anda mengasosiasikan variabel heterogen ke dalam satu unit yang kohesif, menyederhanakan manipulasi dan meningkatkan keterbacaan. Mereka membentuk dasar struktur data yang lebih kompleks, seperti daftar tertaut dan buffer pesan, yang everywhere dalam komunikasi sistem tertanam dan penanganan data sensor.

Misalnya, periferal memori-mapped pada mikrokontroler sering direpresentasikan sebagai struktur yang mencerminkan tata letak register hardware, memungkinkan akses register yang mudah melalui sintaks anggota.

Struktur C Tertanam: Panduan Praktis untuk Definisi, Penggunaan, dan Optimasi Memori

Gambar 1. Struktur dapat digunakan untuk mengimplementasikan daftar tertaut.

Struktur C Tertanam: Panduan Praktis untuk Definisi, Penggunaan, dan Optimasi Memori

Gambar 2. Peta memori mikrokontroler STM32. Gambar dengan kredit Embedded Systems with ARM.

Mendeklarasikan Struktur

Pertama, Anda mendefinisikan template struktur. Pertimbangkan contoh ini:

struct record { uint16_t voice[4]; float sample_rate; };

Template itu sendiri tidak mengkonsumsi memori; alokasi hanya terjadi saat Anda mendeklarasikan variabel dari tipe tersebut:

struct record mic1;

Sekarang, mic1 menempati cukup ruang untuk empat elemen uint16_t dan satu float. Akses anggota melalui operator titik:

mic1.voice[0] = 100; float fs = mic1.sample_rate;

Cara Lain untuk Mendeklarasikan Struktur

Meskipun pola yang paling umum mendefinisikan struktur terlebih dahulu dan kemudian mendeklarasikan variabel, C menawarkan sintaks alternatif:

Sintaks 1: Tag dan variabel bersama

struct record { uint16_t voice[4]; float sample_rate; } mic1;

Variabel berikutnya dapat dideklarasikan terpisah:

struct record mic2;

Sintaks 2: Template anonim

struct { uint16_t voice[4]; float sample_rate; } mic1;

Di sini Anda tidak dapat menggunakan template lagi karena ia tidak memiliki nama.

Sintaks 3: Struktur bersarang anonim

struct test { struct { float f; char a; }; } test_var;

Akses anggota dalaman secara langsung:

test_var.f = 1.2f;

Struktur anonim mengurangi keseruan tetapi harus digunakan dengan hati-hati untuk kejelasan.

Tata Letak Memori untuk Struktur

Standar C menjamin bahwa anggota disusun dalam memori secara berurutan, dalam urutan yang dideklarasikan. Misalnya:

struct Test2 { uint8_t c; uint32_t d; uint8_t e; uint16_t f; } MyStruct;

Pada mesin 32-bit, sizeof(MyStruct) adalah 12 byte karena padding yang menyelaraskan uint32_t ke batas 4 byte. Mengurutkan ulang anggota dapat menghilangkan padding:

struct Test2 { uint32_t d; uint16_t f; uint8_t c; uint8_t e; } MyStruct;

Sekarang sizeof(MyStruct) turun menjadi 8 byte—hemat yang berharga dalam firmware dengan keterbatasan memori.

Struktur C Tertanam: Panduan Praktis untuk Definisi, Penggunaan, dan Optimasi Memori

Gambar 3. Perataan data dapat menambahkan padding ke tata letak memori struktur.

Ringkasan

Jelajahi lebih banyak tutorial C tertanam kami di sini.

Tertanam

  1. Apa Itu Logam Refraktori? Tinjauan Ahli tentang Sifat dan Aplikasi
  2. Mur Deck Dijelaskan: Jenis, Manfaat, dan Perbandingan dengan Mur Kayu
  3. Spring-Energized Seals: Desain, Fungsi, dan Manfaat Industri
  4. Wood Screws Dijelaskan: Jenis, Fitur, dan Tips Pemilihan
  5. Logam Paduan Baja Dijelaskan: Jenis, Komposisi, dan Aplikasi
  6. Memanfaatkan Data di Internet of Reliability: Strategi untuk Manajemen yang Efektif
  7. Struktur Data Java: Menjelajahi Kelas Inti & Framework Koleksi
  8. Internet of Things Industri (IIoT): Definisi, Cakupan, dan Dampak Industri
  9. Data Pemeliharaan Dijelaskan: Kunci Manajemen Aset yang Terpercaya
  10. Menguasai Perkayahan Modern: Tren, Teknologi, dan Teknik