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

Driver perangkat Linux tertanam:Memahami perannya

Catatan Editor:Linux Tertanam secara konsisten menempati peringkat di antara sistem operasi teratas yang digunakan dalam desain sistem tertanam. Dengan pesatnya pertumbuhan minat terhadap Internet of Things (IoT), kemampuan Linux yang disematkan untuk melayani berbagai peran akan terbukti vital dalam mendukung beragam kebutuhan yang ditemukan di setiap lapisan hierarki aplikasi IoT. Pada gilirannya, kemampuan para insinyur untuk menguasai sistem Linux tertanam akan menjadi penting untuk mencapai perkembangan yang cepat dan andal dari sistem yang lebih canggih. Dalam Menguasai Pemrograman Linux Tertanam – Edisi Kedua, penulis Chris Simmonds membawa pembaca pada tur terperinci melintasi luas dan dalamnya sistem operasi penting ini, menggunakan contoh terperinci untuk mengilustrasikan setiap poin kunci.

Dalam kutipan ini, Bab 9, dari buku ini, penulis menjelaskan bagaimana driver perangkat kernel berinteraksi dengan perangkat keras sistem dan bagaimana pengembang dapat menulis driver perangkat dan menggunakannya dalam aplikasi mereka. Angsuran berikut menyajikan kutipan ini pada driver perangkat Linux Tertanam:

• Memahami peran mereka

• Membaca status driver saat runtime

• Driver perangkat di ruang pengguna

• Menulis driver perangkat kernel

• Menemukan konfigurasi perangkat keras

Diadaptasi dari Menguasai Pemrograman Linux Tertanam – Edisi Kedua, oleh Chris Simmonds.

Bab 9. Berinteraksi dengan Driver Perangkat

Driver perangkat kernel adalah mekanisme di mana perangkat keras yang mendasarinya terpapar ke seluruh sistem. Sebagai pengembang sistem tertanam, Anda perlu mengetahui bagaimana driver perangkat ini cocok dengan arsitektur keseluruhan dan cara mengaksesnya dari program ruang pengguna. Sistem Anda mungkin akan memiliki beberapa perangkat keras baru, dan Anda harus mencari cara untuk mengaksesnya. Dalam banyak kasus, Anda akan menemukan bahwa ada driver perangkat yang disediakan untuk Anda, dan Anda dapat mencapai semua yang Anda inginkan tanpa menulis kode kernel apa pun. Misalnya, Anda dapat memanipulasi pin dan LED GPIO menggunakan file di sysfs , dan ada perpustakaan untuk mengakses bus serial, termasuk SPI (Serial Peripheral Interface) dan Saya 2 C (Sirkuit Terpadu).

Ada banyak tempat untuk mengetahui cara menulis driver perangkat, tetapi hanya sedikit yang memberi tahu Anda mengapa Anda menginginkannya dan pilihan yang Anda miliki dalam melakukannya. Inilah yang ingin saya ulas di sini. Namun, ingatlah bahwa ini bukan buku yang didedikasikan untuk menulis driver perangkat kernel dan bahwa informasi yang diberikan di sini adalah untuk membantu Anda menavigasi wilayah tetapi tidak harus mengatur rumah di sana. Ada banyak buku dan artikel bagus yang akan membantu Anda menulis driver perangkat, beberapa di antaranya tercantum di akhir bab ini.

Dalam bab ini kita akan membahas topik-topik berikut:

Peran driver perangkat

Seperti yang saya sebutkan di Bab 4, Mengonfigurasi dan Membangun Kernel , salah satu fungsi kernel adalah untuk merangkum banyak antarmuka perangkat keras dari sistem komputer dan menyajikannya secara konsisten ke program ruang pengguna. Kernel memiliki kerangka kerja yang dirancang untuk memudahkan penulisan driver perangkat, yang merupakan bagian dari kode yang menengahi antara kernel di atas dan perangkat keras di bawah. Driver perangkat mungkin ditulis untuk mengontrol perangkat fisik seperti UART atau pengontrol MMC, atau mungkin mewakili perangkat virtual seperti perangkat null ( /dev/null ) atau ramdisk. Satu pengemudi dapat mengontrol beberapa perangkat dengan jenis yang sama.

Kode driver perangkat kernel berjalan pada tingkat hak istimewa yang tinggi, seperti halnya kernel lainnya. Ini memiliki akses penuh ke ruang alamat prosesor dan register perangkat keras. Ini dapat menangani interupsi dan transfer DMA. Itu dapat menggunakan infrastruktur kernel yang canggih untuk sinkronisasi dan manajemen memori. Namun, Anda harus menyadari bahwa ada sisi negatifnya; jika ada yang tidak beres pada driver buggy, itu bisa benar-benar salah dan menurunkan sistem. Akibatnya, ada prinsip bahwa driver perangkat harus sesederhana mungkin dengan hanya memberikan informasi ke aplikasi di mana keputusan nyata dibuat. Anda sering mendengar pernyataan ini sebagai tidak ada kebijakan di kernel . Ini adalah tanggung jawab ruang pengguna untuk menetapkan kebijakan yang mengatur perilaku sistem secara keseluruhan. Misalnya, memuat modul kernel sebagai respons terhadap kejadian eksternal, seperti mencolokkan perangkat USB baru, adalah tanggung jawab program ruang pengguna, udev , bukan kernel. Kernel hanya menyediakan sarana untuk memuat modul kernel.

Di Linux, ada tiga tipe utama device driver:

Ada juga tipe keempat yang menampilkan dirinya sebagai sekelompok file di salah satu sistem file semu. Misalnya, Anda dapat mengakses driver GPIO melalui sekelompok file di /sys/class/gpio , seperti yang akan saya jelaskan nanti dalam bab ini. Mari kita mulai dengan melihat lebih detail ketiga jenis perangkat dasar.

Perangkat karakter

Perangkat karakter diidentifikasi di ruang pengguna oleh file khusus yang disebut device node . Nama file ini dipetakan ke driver perangkat menggunakan nomor mayor dan minor yang terkait dengannya. Secara garis besar, angka utama memetakan node perangkat ke driver perangkat tertentu, dan nomor kecil memberitahu driver antarmuka mana yang sedang diakses. Misalnya, node perangkat dari port serial pertama pada ARM Serbaguna PB bernama /dev/ttyAMA0 , dan memiliki nomor utama 204 dan nomor kecil 64. Perangkat node untuk port serial kedua memiliki nomor utama yang sama, karena ditangani oleh driver perangkat yang sama, tetapi nomor minornya adalah 65. Kita dapat melihat nomor untuk keempat port serial dari daftar direktori di sini:

# ls -l /dev/ttyAMA*crw-rw---- 1 root root 204, 64 Jan 1 1970 /dev/ttyAMA0crw-rw---- 1 root root 204, 65 Jan 1 1970 /dev/ ttyAMA1crw-rw---- 1 root root 204, 66 Jan 1 1970 /dev/ttyAMA2crw-rw---- 1 root root 204, 67 Jan 1 1970 /dev/ttyAMA3

Daftar nomor mayor dan minor standar dapat ditemukan di dokumentasi kernel di Documentation/devices.txt . Daftar ini tidak sering diperbarui dan tidak menyertakan perangkat ttyAMA yang dijelaskan dalam paragraf sebelumnya. Namun demikian, jika Anda melihat kode sumber kernel di driver/tty/serial/amba-pl011.c , Anda akan melihat di mana nomor mayor dan minor dideklarasikan:

 #define SERIAL_AMBA_MAJOR 204 #define SERIAL_AMBA_MINOR 64

Di mana ada lebih dari satu instance perangkat, seperti driver ttyAMA, konvensi untuk membentuk nama node perangkat adalah mengambil nama dasar, ttyAMA, dan menambahkan nomor instance dari 0 hingga 3 dalam contoh ini.

Seperti yang saya sebutkan di Bab 5, Membangun Sistem File Root , node perangkat dapat dibuat dengan beberapa cara:

Anda mungkin mendapat kesan dari angka yang saya gunakan di atas bahwa angka mayor dan minor adalah angka 8-bit dalam kisaran 0 hingga 255. Faktanya, dari Linux 2.6 dan seterusnya, angka mayor adalah 12 bit, yang memberikan angka yang valid dari 1 hingga 4.095, dan bilangan minornya adalah 20 bit, dari 0 hingga 1.048.575.


Tertanam

  1. Peran Sistem Tertanam di Mobil
  2. Peran beragam Epoxy dalam pembuatan PCB perangkat IoT
  3. Teknologi utama memperkuat peran pertumbuhan untuk visi tertanam
  4. Pembaruan OTA untuk Linux Tertanam, bagian 2 – Perbandingan sistem pembaruan siap pakai
  5. Pembaruan OTA untuk Linux Tertanam, bagian 1 – Dasar-dasar dan implementasi
  6. Driver perangkat Linux yang disematkan:Menemukan konfigurasi perangkat keras
  7. Blog:Memahami Peran PDMS di Alam Mikrofluida
  8. Dari IoT ke Cryptojacking:Memahami ancaman perangkat seluler baru
  9. Pengantar peretasan perangkat keras tertanam perangkat IoT
  10. Komponen CAM dan Perannya dalam Pemesinan CNC