Isi kandungan:
- Langkah 1: MENYELESAIKAN HAL-HAL / MENGUASAI
- Langkah 2: PEKELILING
- Langkah 3: BOOTABLE Mini SD
- Langkah 4: CHECK Mini SD
- Langkah 5: KOD1
- Langkah 6: KODE2: Turn_Led_ON
Video: Bare Metal Raspberry Pi 3: LED Berkedip: 8 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:11
Oleh mouldypizza Ikuti Lagi oleh pengarang:
Mengenai:.oO0Oo. Lebih Lanjut Mengenai moldypizza »
Selamat datang ke tutorial LED BARE METAL pi 3 Blinking!
Dalam tutorial ini kita akan melalui langkah-langkah, dari awal hingga akhir, untuk mendapatkan LED berkedip menggunakan Raspberry PI 3, papan roti, perintang, led, dan kad SD kosong.
Jadi apa itu LOGAM BARE? BARE METAL adalah pengaturcaraan tanpa embel-embel. Bare metal bermaksud kita dapat mengawal sepenuhnya apa yang akan dilakukan oleh komputer hingga sedikit. Oleh itu, ini pada dasarnya bermaksud bahawa kod tersebut akan ditulis sepenuhnya dalam pemasangan, menggunakan set arahan Arm. Pada akhirnya kita akan membuat program yang akan mengedipkan LED dengan mengakses alamat fizikal salah satu pin GPIO Raspberry Pi dan mengkonfigurasinya ke output dan kemudian menghidupkan dan mematikannya. Mencuba projek ini, adalah cara terbaik untuk memulakan pengaturcaraan tertanam dan semoga memberikan pemahaman yang lebih baik tentang bagaimana komputer berfungsi.
Apa yang anda perlukan?
Perkakasan
- Raspberry PI 3
- Kad SD dimuatkan dengan gambar yang boleh di-boot
- Papan roti
- Wayar pelompat Lelaki Perempuan
- Kabel pelompat lelaki
- LED
- Perintang 220 ohm (tidak semestinya 220 ohm, kebanyakan perintang akan berfungsi)
- kad sd mini
- kad mini sd yang dimuatkan dengan sistem operasi raspberry pi (biasanya disertakan dengan pi)
Perisian
- Penyusun GCC
- Rantai alat terbenam GNU
- penyunting teks
- pembentuk kad sd
Baiklah Mari Bermula!
Langkah 1: MENYELESAIKAN HAL-HAL / MENGUASAI
Baiklah … langkah pertama adalah untuk mendapatkan perkakasan. Anda boleh membeli bahagiannya secara berasingan atau ada alat yang disertakan dengan lebih banyak bahagian. LINK
Kit ini dilengkapi dengan semua yang diperlukan untuk menyiapkan raspberry pi 3 dan banyak lagi! satu-satunya perkara yang tidak termasuk dalam kit ini ialah kad sd mini tambahan. Tunggu! Jangan beli yang lain. Sekiranya anda tidak merancang untuk menggunakan pemasangan linux yang dimuatkan pada kad, kemudian salin kandungan kad mini sd yang disertakan untuk kemudian dan format semula kad (lebih lanjut kemudian). CATATAN PENTING: pastikan anda menyimpan fail pada kad yang disertakan dan anda akan memerlukannya kemudian!
Seterusnya sudah tiba masanya untuk menyediakan perisian. Tutorial ini tidak akan merangkumi arahan terperinci mengenai cara memasang perisian. Terdapat banyak sumber dan tutorial dalam talian mengenai cara memasangnya:
PENGGUNA WINDOWS:
Muat turun dan pasang gcc
Seterusnya, muat turun dan pasang rantai alat terbenam GNU ARM
LINUX / MAC
- Pengedaran Linux dilengkapi dengan gcc yang telah dipasang sebelumnya
- Muat turun dan pasang rantai alat terbenam GNU ARM.
Baiklah, jadi jika semuanya berjalan lancar, anda seharusnya dapat membuka terminal (linux / mac) atau garis cmd (windows) dan cuba menaip
arm-none-eabi-gcc
Hasilnya mestilah serupa dengan gambar pertama. Ini hanya untuk mengesahkan bahawa ia dipasang dengan betul.
Baiklah sekarang bahawa pra-syarat tidak dapat dilupakan, sudah tiba masanya untuk memulakan perkara yang menyeronokkan.
Langkah 2: PEKELILING
Masa litar! Litar ini mudah. Kami akan menyambungkan LED ke GPIO 21 (pin 40) pada pi (lihat gambar 2 dan 3). Perintang juga disambungkan secara bersiri untuk mengelakkan lekapan rosak. Perintang akan disambungkan ke lajur negatif di papan roti yang akan disambungkan ke GND (pin 39) pada pi. Semasa menyambungkan led, pastikan untuk menghubungkan hujung pendek ke sisi negatif. Lihat gambar terakhir
Langkah 3: BOOTABLE Mini SD
Terdapat tiga langkah untuk mendapatkan pi 3 anda untuk mengenali kad sd mini kosong anda. Kita perlu mencari dan menyalin bootcode.bin, start.elf, dan fixup.dat. Anda boleh mendapatkan fail-fail ini pada kad mini sd yang disertakan jika anda membeli canakit atau membuat kad sd yang dapat di-boot untuk pi 3 dengan pengedaran linux. Sama ada fail ini diperlukan untuk membolehkan pi mengenali kad sd sebagai peranti yang boleh di-boot. Seterusnya, format mini sd ke fat32 (kebanyakan kad mini sd diformat dalam fat32. Saya menggunakan kad sd mini murah dari sandisk), pindahkan bootcode.bin, start.elf, fixup.dat ke kad sd. Dan anda selesai! Baiklah sekali lagi dan mengikut urutan gambar, langkahnya adalah:
- Cari bootcode.bin, start.elf, fixup.dat.
- Pastikan kad sd anda diformat menjadi fat32.
- Pindahkan bootcode.bin, start.elf, dan fixup.dat ke kad sd yang diformat.
Inilah cara saya mengetahui ini, pautan.
Langkah 4: CHECK Mini SD
Baiklah, kami mempunyai kad sd mini yang dapat di-boot, dan semoga anda mempunyai pi 3 pada ketika ini. Jadi sekarang kita harus mengujinya untuk memastikan pi 3 mengenali kad mini sd sebagai bootable.
Di pi, berhampiran port mini usb terdapat dua led kecil. Satu berwarna merah. Ini adalah penunjuk kuasa. Semasa pi menerima kuasa lampu ini harus menyala. Oleh itu, jika anda memasang pi anda sekarang tanpa kad mini sd, ia mesti menyala merah. Baiklah sekarang cabut plag anda dan masukkan kad sd mini anda yang boleh boot yang telah dibuat pada langkah sebelumnya dan pasangkan pi. Adakah anda melihat lampu lain? Harus ada lampu hijau, tepat di sebelah lampu merah, yang menunjukkan bahawa ia membaca kad sd. LED ini dipanggil ACT led. Ia akan menyala apabila terdapat kad sd yang layak dimasukkan. Ia akan berkelip semasa mengakses kad mini sd anda.
Baiklah, jadi dua perkara sepatutnya berlaku setelah anda memasukkan kad mini sd yang dapat di-boot dan memasukkan pi:
- Lampu merah harus diterangi yang menunjukkan penerimaan kuasa
- Lampu hijau mesti diterangi yang menunjukkan bahawa ia telah dimasukkan ke dalam kad mini sd
Sekiranya ada yang salah, cuba ulangi langkah sebelumnya atau klik pada pautan di bawah untuk maklumat lebih lanjut.
Pautan di sini adalah rujukan yang baik.
Langkah 5: KOD1
Projek ini ditulis dalam bahasa pemasangan ARM. Pemahaman asas mengenai pemasangan ARM diandaikan dalam tutorial ini, tetapi berikut adalah beberapa perkara yang harus anda ketahui:
.equ: memberikan nilai pada simbol iaitu abc.equ 5 abc sekarang mewakili lima
- ldr: muatan dari memori
- str: menulis ke ingatan
- cmp: membandingkan dua nilai dengan melakukan penolakan. Menetapkan bendera.
- b: cabang ke label
- tambah: melakukan aritmetik
Sekiranya anda tidak mempunyai pengalaman dengan pemasangan Arm tonton video ini. Ini akan memberi anda pemahaman yang baik mengenai bahasa pemasangan Arm.
Baiklah, sekarang kita mempunyai litar yang disambungkan ke raspberry pi 3 kita dan kita mempunyai kad sd yang dikenali oleh pi, jadi tugas kita seterusnya adalah mencari cara untuk berinteraksi dengan litar dengan memuatkan pi dengan program yang dapat dilaksanakan. Secara umum, apa yang perlu kita lakukan ialah memberitahu pi untuk mengeluarkan voltan dari GPIO 21 (pin disambungkan ke wayar merah). Kemudian kita memerlukan kaedah untuk menukar LED agar ia berkedip. Untuk melakukan ini, kami memerlukan lebih banyak maklumat. Pada ketika ini kita tidak tahu bagaimana memberitahu GPIO 21 kepada output dan itulah sebabnya kita mesti membaca lembaran data. Sebilangan besar pengawal mikro mempunyai lembaran data yang menentukan dengan tepat bagaimana semuanya berfungsi. Malangnya, pi 3 tidak mempunyai dokumentasi rasmi! Walau bagaimanapun, terdapat lembaran data tidak rasmi. Berikut adalah dua pautan kepadanya:
- github.com/raspberrypi/documentation/files…
- web.stanford.edu/class/cs140e/docs/BCM2837…
Baiklah pada ketika ini, anda perlu meluangkan masa beberapa minit sebelum melangkah ke langkah seterusnya untuk melihat lembaran data dan melihat maklumat apa yang anda dapat.
Langkah 6: KODE2: Turn_Led_ON
Raspberry pi 3 53 mendaftar untuk mengawal pin output / input (periferal). Pin dikumpulkan bersama dan setiap kumpulan ditugaskan ke daftar. Untuk GPIO kita harus dapat mengakses daftar SELECT, register SET, dan CLEAR. Untuk mengakses daftar ini, kami memerlukan alamat fizikal daftar ini. Semasa anda membaca lembaran data, anda hanya ingin mencatat offset alamat (lo byte) dan menambahkannya ke alamat asas. Anda harus melakukan ini kerana lembar data menyenaraikan alamat maya linux yang pada dasarnya adalah nilai yang diberikan oleh sistem operasi. Kami tidak menggunakan sistem operasi jadi kami perlu mengakses daftar ini secara langsung dengan menggunakan alamat fizikal. Untuk ini, anda memerlukan maklumat berikut:
- Alamat Pangkalan bagi Periferal: 0x3f200000. Pdf (halaman6) mengatakan bahawa alamat asasnya adalah 0x3f000000, namun alamat ini tidak akan berfungsi. Gunakan 0x3f200000
- Offset FSEL2 (PILIH) bukan alamat penuh daftar. Pdf menyenaraikan FSEL2 pada 0x7E20008 tetapi alamat ini merujuk kepada alamat maya linux. Ofset akan sama jadi itulah yang ingin kita perhatikan. 0x08
- Offset GPSET0 (SET): 0x1c
- Pengimbangan GPCLR0 (CLEAR): 0x28
Oleh itu, anda mungkin menyedari bahawa lembaran data menyenaraikan 4 register SELECT, 2 register SET, dan 2 register CLEAR jadi mengapa saya memilih yang saya pilih? Ini kerana kami ingin menggunakan kawalan GPIO 21 dan FSEL2 GPIO 20-29, SET0 dan kawalan CLR0 GPIO 0-31. Daftar FSEL memberikan tiga bit untuk setiap pin GPIO. Oleh kerana kami menggunakan FSEL2 yang bermaksud bit 0-2 mengawal GPIO 20, dan bit 3-5 mengawal GPIO 21 dan seterusnya. Daftar Set dan CLR memberikan satu bit pada setiap pin. Sebagai contoh, bit 0 di SET0 dan CLR0 mengawal GPIO 1. Untuk mengawal GPIO 21, anda akan menetapkan bit 21 di SET0 dan CLR0.
Baiklah, jadi kami telah membincangkan cara mengakses daftar ini, tetapi apa maksudnya?
- Daftar FSEL2 akan digunakan untuk menetapkan output GPIO 21. Untuk menetapkan pin ke output, anda perlu menetapkan bit susunan lo dari tiga bit ke 1. Jadi jika bit 3-5 mengawal GPIO 21 itu bermakna kita perlu menetapkan bit pertama, bit 3 hingga 1. Ini akan memberitahu pi bahawa kita mahu menggunakan GPIO 21 sebagai output. Oleh itu, jika kita melihat 3 bit untuk GPIO 21 mereka akan kelihatan seperti ini setelah kita menetapkannya ke output, b001.
- GPSET0 memberitahu pi untuk menghidupkan pin (mengeluarkan voltan). Untuk melakukan ini, kita hanya menukar bit yang sesuai dengan pin GPIO yang kita mahukan. Dalam kes kami, bit 21.
- GPCLR0 memberitahu pi untuk mematikan pin (tiada voltan). Untuk mematikan pin tetapkan bit ke pin GPIO yang sesuai. Dalam kes kami bit 21
Sebelum kita menuju ke lampu berkedip, pertama mari buat program sederhana yang hanya akan menyalakan lampu LED.
Untuk memulakan, kita perlu menambah dua arahan di bahagian atas kod sumber kita.
- .seksyen.init memberitahu pi di mana meletakkan kod
- .global _start
Seterusnya, kita perlu menyusun semua alamat yang akan kita gunakan. Gunakan.equ untuk menetapkan simbol yang boleh dibaca pada nilai.
- .equ GPFSEL2, 0x08
- .equ GPSET0, 0x1c
- .equ GPCLR0, 0x28
- .equ BASE, 0x3f200000
Sekarang kita akan membuat topeng untuk menetapkan bit yang perlu kita tetapkan.
- .equ SET_BIT3, 0x08 Ini akan menetapkan bit tiga 0000_1000
- .equ SET_BIT21, 0x200000
Kemudian kita perlu menambah label _start
_mulakan:
Muatkan alamat pangkalan ke dalam daftar
ldr r0, = ASAS
Sekarang kita perlu menetapkan bit3 GPFSEL2
- ldr r1, SET_BIT3
- str r1, [r0, # GPFSEL2] Arahan ini mengatakan untuk menulis semula bit 0x08 ke alamat GPFSEL2
Akhirnya kita perlu menghidupkan GPIO 21 dengan menetapkan bit 21 dalam daftar GPSET0
- ldr r1, = SET_BIT21
- str r1, [r0, # GPSET0]
Produk akhir mestilah kelihatan seperti kod yang digambarkan.
Langkah seterusnya adalah menyusun kod dan membuat fail.img yang boleh dijalankan oleh pi.
- Muat turun makefile yang dilampirkan, dan kernel.ld dan jika anda mahukan kod sumber turn_led_on.s.
- Masukkan semua fail dalam folder yang sama.
- Sekiranya anda menggunakan kod sumber anda sendiri, edit makefile dan ganti kod = turn_led_on.s dengan kod =.s
- Simpan makefile.
- Gunakan terminal (linux) atau cmd window (windows) untuk menavigasi ke folder anda yang berisi fail dan ketik make dan tekan enter
- File make harus menghasilkan fail yang disebut kernel.img
- Salin kernel.img ke kad sd mini anda. Kandungan kad anda harus seperti gambar (gambar 3): bootcode.bin, start.elf, fixup.dat, dan kernel.img.
- Keluarkan kad mini sd dan masukkan ke dalam pi
- Pasang pi ke sumber kuasa
- LED mesti menyala !!!
CATATAN PENTING: Nampaknya instruksional mempunyai masalah dengan makefile tidak mempunyai pelanjutan, jadi saya memuat naik semula dengan sambungan.txt. Sila keluarkan pelanjutan semasa anda memuat turunnya agar berfungsi dengan baik.
Disyorkan:
Kawal Denyutan Berkedip LED Dengan Potensiometer: 6 Langkah
Mengawal Denyutan Berkedip LED Dengan Potensiometer: Dalam tutorial ini kita akan belajar bagaimana mengawal denyutan LED Berkedip dengan potensiometer. Tonton video demonstrasi
Butang Tekan Raspberry Pi Dengan LED Bare Metal: 8 Langkah
Tombol Raspberry Pi Push Dengan LED Bare Metal: Ini adalah tutorial kedua saya untuk memprogram raspberry pi 3 bare metal! Lihat yang pertama saya di sini. Kali terakhir saya menunjukkan kepada anda cara membuat imej sistem operasi untuk raspberry pi 3 yang berkedip satu LED, dalam tutorial ini saya akan menunjukkan kepada anda
LED Berkedip Dengan Raspberry Pi - Cara Menggunakan Pin GPIO pada Raspberry Pi: 4 Langkah
LED Berkedip Dengan Raspberry Pi | Cara Menggunakan Pin GPIO pada Raspberry Pi: Hai kawan-kawan dalam arahan ini, kita akan belajar bagaimana menggunakan GPIO dari Raspberry pi. Sekiranya anda pernah menggunakan Arduino maka mungkin anda tahu bahawa kami boleh menyambungkan suis LED dan lain-lain ke pinnya dan membuatnya berfungsi seperti itu. buat LED berkelip atau dapatkan input dari suis jadi
Mulakan Projek Pertama Anda Dengan Raspberry: LED Berkedip: 4 Langkah
Mulakan Projek Pertama Anda Dengan Raspberry: LED Berkedip: Dalam projek ini saya akan menunjukkan kepada anda bagaimana program Raspberry Pi untuk membuat LED berkelip, Sekiranya anda hampir membeli Raspberry pi dan anda tidak tahu apa lagi bermula, ini tutorial yang sesuai. Selain Raspberry Pi anda menjalankan Raspbian, y
Berkedip Berkedip: 5 Langkah (dengan Gambar)
Berkedip Leds: Mendengarkan muzik di komputer saya (dengan bangga menggunakan WINAMP), saya tertanya-tanya bagaimana mungkin beberapa lampu berkedip dengan suara yang keluar dari penyambung P2, jadi saya memutuskan untuk membuat litar sederhana untuk melakukannya. Ia berfungsi dengan baik, jadi saya memutuskan untuk