Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-23 14:49
Oleh moldypizzaIkuti Lainnya oleh penulis:
Tentang:.oO0Oo. Selengkapnya Tentang mouldypizza »
Selamat datang di tutorial LED Blinking BARE METAL pi 3!
Dalam tutorial ini kita akan melalui langkah-langkah, dari awal sampai akhir, untuk mendapatkan LED berkedip menggunakan Raspberry PI 3, papan tempat memotong roti, resistor, led, dan kartu SD kosong.
Jadi apa itu BARE METAL? BARE METAL adalah pemrograman tanpa embel-embel. Bare metal berarti kita sepenuhnya mengendalikan apa yang akan dilakukan komputer hingga bagian terkecil. Jadi itu pada dasarnya berarti bahwa kode akan ditulis sepenuhnya dalam perakitan, menggunakan set instruksi Arm. Pada akhirnya kita akan membuat program yang akan mengedipkan LED dengan mengakses alamat fisik salah satu pin GPIO Raspberry Pi dan mengonfigurasinya ke output dan kemudian mengaktifkan dan menonaktifkannya. Mencoba proyek ini, adalah cara yang bagus untuk memulai dengan pemrograman tertanam dan mudah-mudahan memberikan pemahaman yang lebih baik tentang cara kerja komputer.
Apa yang kamu butuhkan?
Perangkat keras
- Raspberry PI 3
- Kartu SD dimuat sebelumnya dengan gambar yang dapat di-boot
- Papan tempat memotong roti
- Kabel jumper Pria Wanita
- Kabel jumper Pria Pria
- LED
- Resistor 220 ohm (tidak harus persis 220 ohm, hampir semua resistor bisa digunakan)
- kartu sd mini
- kartu sd mini pra dimuat dengan sistem operasi raspberry pi (biasanya disertakan dengan pi)
Perangkat lunak
- Kompiler GCC
- Rantai alat tertanam GNU
- editor teks
- pemformat kartu sd
Baiklah mari kita MULAI!
Langkah 1: MENGATUR HAL / BARANG
Oke jadi… langkah pertama adalah memperoleh ke perangkat keras. Anda dapat membeli suku cadang secara terpisah atau ada kit yang dilengkapi dengan lebih dari cukup suku cadang. TAUTAN
Kit ini dilengkapi dengan semua yang diperlukan untuk menyiapkan raspberry pi 3 dan banyak lagi! satu-satunya hal yang tidak termasuk dalam kit ini adalah kartu mini sd tambahan. Tunggu! Jangan beli yang lain dulu. Jika Anda tidak berencana menggunakan instalasi linux yang dimuat sebelumnya pada kartu, maka salin saja isi kartu mini sd yang disertakan untuk nanti dan format ulang kartu (lebih lanjut tentang itu nanti). CATATAN PENTING: pastikan Anda menyimpan file di kartu yang disertakan, Anda akan MEMBUTUHKANnya nanti!
Selanjutnya saatnya untuk men-setup software. Tutorial ini tidak akan menyertakan petunjuk rinci tentang cara menginstal perangkat lunak. Ada banyak sumber dan tutorial online tentang cara menginstal ini:
PENGGUNA WINDOWS:
Unduh dan instal gcc
Selanjutnya, unduh dan instal rantai alat tertanam GNU ARM
LINUX/MAC
- Distribusi Linux datang dengan gcc pra-instal
- Unduh dan instal rantai alat tertanam GNU ARM.
Oke jadi jika semuanya berjalan dengan baik maka Anda harus dapat membuka terminal (linux/mac) atau cmd line (windows) dan coba ketik
arm-none-eabi-gcc
Outputnya akan terlihat mirip dengan gambar pertama. Ini hanya untuk memverifikasi bahwa itu diinstal dengan benar.
Baiklah sekarang prasyarat sudah keluar, saatnya untuk memulai dengan hal-hal yang menyenangkan.
Langkah 2: SIRKUIT
Waktu sirkuit! Rangkaian untuk ini sederhana. Kami akan menghubungkan led ke GPIO 21 (pin 40) pada pi (lihat gambar 2 dan 3). Sebuah resistor juga dihubungkan secara seri untuk mencegah led dari kerusakan. Resistor akan dihubungkan ke kolom negatif pada breadboard yang akan dihubungkan ke GND (pin 39) pada pi. Saat menghubungkan led pastikan untuk menghubungkan ujung pendek ke sisi negatif. Lihat gambar terakhir
Langkah 3: BOOTABLE Mini SD
Ada tiga langkah untuk membuat pi 3 Anda mengenali kartu mini sd kosong Anda. Kita perlu menemukan dan menyalin bootcode.bin, start.elf, dan fixup.dat. Anda bisa mendapatkan file-file ini pada kartu mini sd yang disertakan jika Anda membeli canakit atau membuat kartu sd yang dapat di-boot untuk pi 3 dengan distribusi linux. Either way file-file ini diperlukan untuk memungkinkan pi mengenali kartu sd sebagai perangkat yang dapat di-boot. Selanjutnya, format mini sd ke fat32 (kebanyakan mini sd card diformat dalam fat32. Saya menggunakan kartu mini sd murah dari sandisk), pindahkan bootcode.bin, start.elf, fixup.dat ke kartu sd. Dan Anda selesai! Oke sekali lagi dan sesuai urutan gambar langkah-langkahnya adalah:
- Temukan bootcode.bin, start.elf, fixup.dat.
- Pastikan kartu sd Anda diformat ke FAT32.
- Pindahkan bootcode.bin, start.elf, dan fixup.dat ke kartu sd yang telah diformat.
Inilah cara saya menemukan ini, tautan.
Langkah 4: PERIKSA Mini SD
Baiklah, kami memiliki kartu mini sd yang dapat di-boot, dan mudah-mudahan, Anda memiliki pi 3 saat ini. Jadi sekarang kita harus mengujinya untuk memastikan pi 3 mengenali kartu mini sd sebagai bootable.
Di pi, di dekat port mini usb ada dua led kecil. Satu berwarna merah. Ini adalah indikator daya. Saat pi menerima daya, lampu ini harus menyala. Jadi jika Anda mencolokkan pi Anda sekarang tanpa kartu sd mini, itu akan menyala merah. Oke sekarang cabut pi Anda dan masukkan kartu mini sd bootable Anda yang telah dibuat pada langkah sebelumnya dan colokkan pi. Apakah Anda melihat cahaya lain? Seharusnya ada lampu hijau, tepat di sebelah yang merah, yang menunjukkan bahwa ia sedang membaca kartu sd. Led ini disebut led ACT. Ini akan menyala ketika ada kartu sd yang layak dimasukkan. Ini akan berkedip ketika mengakses kartu mini sd Anda.
Oke jadi dua hal seharusnya terjadi setelah Anda memasukkan kartu mini sd yang dapat di-boot dan memasang pi:
- Led merah harus menyala menunjukkan penerimaan daya
- Led hijau harus menyala menunjukkan bahwa ia telah boot ke kartu mini sd
Jika ada yang salah coba ulangi langkah sebelumnya atau klik tautan di bawah untuk informasi lebih lanjut.
Tautan di sini adalah referensi yang bagus.
Langkah 5: KODE1
Proyek ini ditulis dalam bahasa rakitan ARM. Pemahaman dasar tentang perakitan ARM diasumsikan dalam tutorial ini, tetapi berikut adalah beberapa hal yang harus Anda ketahui:
.equ: memberikan nilai ke simbol yaitu abc.equ 5 abc sekarang mewakili lima
- ldr: memuat dari memori
- str: menulis ke memori
- cmp: membandingkan dua nilai dengan melakukan pengurangan. Menetapkan bendera.
- b: cabang ke label
- tambahkan: melakukan aritmatika
Jika Anda tidak memiliki pengalaman dengan perakitan Arm, tonton video ini. Ini akan memberi Anda pemahaman yang baik tentang bahasa rakitan Arm.
Oke jadi sekarang kami memiliki sirkuit yang terhubung ke raspberry pi 3 kami dan kami memiliki kartu sd yang dikenali pi, jadi tugas kami selanjutnya adalah mencari tahu bagaimana berinteraksi dengan sirkuit dengan memuat pi dengan program yang dapat dieksekusi. Secara umum, yang perlu kita lakukan adalah memberi tahu pi untuk mengeluarkan tegangan dari GPIO 21 (pin terhubung ke kabel merah). Maka kita membutuhkan cara untuk mengaktifkan led agar berkedip. Untuk melakukan ini, kami membutuhkan lebih banyak informasi. Pada titik ini kami tidak tahu bagaimana memberi tahu GPIO 21 ke output, itulah sebabnya kami harus membaca lembar data. Sebagian besar pengontrol mikro memiliki lembar data yang menentukan dengan tepat cara kerja semuanya. Sayangnya, pi 3 tidak memiliki dokumentasi resmi! Namun, ada lembar data tidak resmi. Berikut adalah dua tautan ke sana:
- github.com/raspberrypi/documentation/files…
- web.stanford.edu/class/cs140e/docs/BCM2837…
Oke pada titik ini, Anda harus meluangkan beberapa menit sebelum melanjutkan ke langkah berikutnya untuk melihat lembar data dan melihat informasi apa yang dapat Anda temukan.
Langkah 6: KODE2: Turn_Led_ON
Raspberry pi 3 53 mendaftar untuk mengontrol pin output/input (periferal). Pin dikelompokkan bersama dan setiap kelompok ditugaskan ke register. Untuk GPIO kita harus dapat mengakses register SELECT, register SET, dan register CLEAR. Untuk mengakses register-register ini kita memerlukan alamat fisik dari register-register ini. Saat Anda membaca lembar data, Anda hanya ingin mencatat offset alamat (lo byte) dan menambahkannya ke alamat dasar. Anda harus melakukan ini karena lembar data mencantumkan alamat virtual linux yang pada dasarnya adalah nilai yang ditetapkan oleh sistem operasi. Kami tidak menggunakan sistem operasi sehingga kami perlu mengakses register ini secara langsung dengan menggunakan alamat fisik. Untuk ini, Anda memerlukan informasi berikut:
- Alamat Dasar Periferal: 0x3f200000. Pdf (halaman6) mengatakan bahwa alamat dasarnya adalah 0x3f000000, namun, alamat ini tidak akan berfungsi. Gunakan 0x3f2000000
- Offset FSEL2(SELECT) bukan alamat lengkap register. Pdf mencantumkan FSEL2 di 0x7E20008 tetapi alamat ini merujuk ke alamat virtual linux. Offsetnya akan sama sehingga itulah yang ingin kita perhatikan. 0x08
- Offset dari GPSET0 (SET): 0x1c
- Offset dari GPCLR0 (CLEAR): 0x28
Jadi Anda mungkin memperhatikan bahwa lembar data mencantumkan 4 register SELECT, 2 register SET, dan 2 register CLEAR, jadi mengapa saya memilih yang saya lakukan? Ini karena kami ingin menggunakan kontrol GPIO 21 dan FSEL2 GPIO 20-29, SET0 dan kontrol CLR0 GPIO 0-31. Register FSEL memberikan tiga bit untuk setiap pin GPIO. Karena kita menggunakan FSEL2 itu berarti bit 0-2 mengontrol GPIO 20, dan bit 3-5 mengontrol GPIO 21 dan seterusnya. Register Set dan CLR menetapkan satu bit untuk setiap pin. Misalnya, bit 0 di SET0 dan CLR0 mengontrol GPIO 1. Untuk mengontrol GPIO 21 Anda akan mengatur bit 21 di SET0 dan CLR0.
Oke jadi kita sudah berbicara tentang cara mengakses register ini, tapi apa artinya semua itu?
- Register FSEL2 akan digunakan untuk mengatur GPIO 21 ke output. Untuk mengatur pin ke output Anda perlu mengatur bit urutan lo dari tiga bit ke 1. Jadi jika bit 3-5 mengontrol GPIO 21 itu berarti kita perlu mengatur bit pertama, bit 3 ke 1. Ini akan memberi tahu pi bahwa kita ingin menggunakan GPIO 21 sebagai output. Jadi jika kita melihat 3 bit untuk GPIO 21 mereka akan terlihat seperti ini setelah kita set ke output, b001.
- GPSET0 memberitahu pi untuk menyalakan pin (mengeluarkan tegangan). Untuk melakukan ini, kita tinggal mengganti bit yang sesuai dengan pin GPIO yang kita inginkan. Dalam kasus kami, bit 21.
- GPCLR0 memberitahu pi untuk mematikan pin (tidak ada tegangan). Untuk mematikan pin atur bit ke pin GPIO yang sesuai. Dalam kasus kami, bit 21
Sebelum kita masuk ke led yang berkedip, pertama-tama mari kita buat program sederhana yang hanya akan menyalakan led.
Untuk memulai kita perlu menambahkan dua arahan ke bagian atas kode sumber kita.
- .section.init memberi tahu pi di mana harus meletakkan kode
- .global _start
Selanjutnya, kita perlu menata semua alamat yang akan kita gunakan. Gunakan.equ untuk menetapkan simbol yang dapat dibaca ke nilai.
- .equ GPFSEL2, 0x08
- .equ GPSET0, 0x1c
- .equ GPCLR0, 0x28
- .equ BASE, 0x3f200000
Sekarang kita akan membuat topeng untuk mengatur bit yang perlu kita atur.
- .equ SET_BIT3, 0x08 Ini akan mengatur bit tiga 0000_1000
- .equ SET_BIT21, 0x200000
Maka kita perlu menambahkan _start label kita
_Mulailah:
Muat alamat dasar ke dalam register
ldr r0, = BASE
Sekarang kita perlu mengatur bit3 dari GPFSEL2
- ldr r1, SET_BIT3
- str r1, [r0, #GPFSEL2] Instruksi ini mengatakan untuk menulis kembali bit 0x08 ke alamat GPFSEL2
Akhirnya kita perlu mengatur GPIO 21 ke on dengan mengatur bit 21 di register GPSET0
- ldr r1, =SET_BIT21
- str r1, [r0, #GPSET0]
Produk akhir akan terlihat seperti kode yang digambarkan.
Langkah selanjutnya adalah mengkompilasi kode dan membuat file.img yang dapat dijalankan oleh pi.
- Unduh makefile terlampir, dan kernel.ld dan jika Anda menginginkan kode sumber turn_led_on.s.
- Letakkan semua file dalam folder yang sama.
- Jika Anda menggunakan kode sumber Anda sendiri, edit makefile dan ganti kode = turn_led_on.s dengan kode =.s
- Simpan file make.
- Gunakan terminal (linux) atau jendela cmd (windows) untuk menavigasi ke folder Anda yang berisi file dan ketik make dan tekan enter
- File make harus menghasilkan file bernama kernel.img
- Salin kernel.img ke kartu mini sd Anda. Isi kartu Anda harus seperti yang digambarkan (gambar 3):bootcode.bin, start.elf, fixup.dat, dan kernel.img.
- Keluarkan kartu mini sd dan masukkan ke dalam pi
- Colokkan pi ke sumber listrik
- LED harus menyala!!!
CATATAN SANGAT PENTING: Rupanya instruksi memiliki masalah dengan makefile yang tidak memiliki ekstensi, jadi saya mengunggahnya kembali dengan ekstensi.txt. Harap hapus ekstensi saat Anda mengunduhnya agar berfungsi dengan baik.
Direkomendasikan:
Berkedip Caos: Mapa Logístico Para Berkedip Acak: 5 Langkah
Berkedip Cao: Mapa Logístico Para Acak Berkedip: Este es un instructable untuk generator de aleatoredad, utilizando un mapa logístico, que ahora explico que es. Con el mapa logístico, se enciende y apaga un led de forma aleatoria. Este puede service simplemente de ejemplo de como a
Tombol Tekan Raspberry Pi Dengan LED Bare Metal: 8 Langkah
Push Button Raspberry Pi Dengan LED Bare Metal: Ini adalah tutorial kedua saya tentang pemrograman raspberry pi 3 bare metal! Lihat yang pertama saya di sini. Terakhir kali saya menunjukkan cara membuat gambar sistem operasi untuk raspberry pi 3 yang berkedip satu led, dalam tutorial ini saya akan menunjukkan cara
LED Berkedip Dengan Raspberry Pi - Cara Menggunakan Pin GPIO di Raspberry Pi: 4 Langkah
LED Berkedip Dengan Raspberry Pi | Cara Menggunakan Pin GPIO di Raspberry Pi: Hai teman-teman dalam instruksi ini kita akan belajar cara menggunakan GPIO dari Raspberry pi. Jika Anda pernah menggunakan Arduino maka mungkin Anda tahu bahwa kita dapat menghubungkan sakelar LED dll. ke pinnya dan membuatnya berfungsi seperti itu. buat LED berkedip atau dapatkan input dari sakelar jadi
Mulai Proyek Pertama Anda Dengan Raspberry: LED Berkedip: 4 Langkah
Mulai Proyek Pertama Anda Dengan Raspberry: LED Berkedip: Dalam proyek ini saya akan menunjukkan cara memprogram Raspberry Pi untuk membuat LED berkedip,Jika Anda hampir membeli Raspberry pi dan Anda tidak tahu harus mulai dari mana, ini tutorial itu cocok. Selain Raspberry Pi Anda menjalankan Raspbian, y
Led Electric Guitar Pickup Mod *** Diperbarui Dengan Skema untuk Led dan Video Berkedip!: 8 Langkah
Led Electric Guitar Pickup Mod *** Diperbarui Dengan Skema untuk Led dan Video Berkedip!: Pernah ingin gitar Anda menjadi unik? Atau gitar yang membuat semua orang iri? Atau apakah Anda hanya bosan dengan tampilan gitar Anda yang lama dan ingin mempercantiknya? Nah, dalam Ible yang sangat sederhana ini saya akan menunjukkan cara menerangi pikap di