Mundarija:
- 1 -qadam: NARSALARNI O'RNATISH/STUFF UP
- 2 -qadam: CIRCUIT
- 3 -qadam: BOOTABLE Mini SD
- 4 -qadam: Mini SD -ni tekshiring
- 5 -qadam: CODE1
- 6 -qadam: CODE2: Turn_Led_ON
Video: Yalang'och metall Raspberry Pi 3: miltillovchi LED: 8 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:27
Muallif: More by Muallif
Haqida:.oO0Oo. Moldypizza haqida ko'proq ma'lumot »
BARE METAL pi 3 miltillovchi LED darsligiga xush kelibsiz!
Ushbu qo'llanmada biz Raspberry PI 3, non paneli, qarshilik, etakchi va bo'sh SD -karta yordamida LEDning miltillashi uchun boshidan oxirigacha bosqichlarni o'tamiz.
Xo'sh, BARE METAL nima? BARE METAL - bu noaniq dasturlash. Yalang'och metall degani, biz kompyuterning oxirigacha nima qilishini to'liq nazorat qilamiz. Bu shuni anglatadiki, bu kod Arm buyruqlar to'plamidan foydalangan holda to'liq yig'ilishda yoziladi. Oxir -oqibat biz Raspberry Pi GPIO pinlaridan birining jismoniy manziliga kirish va uni chiqish uchun sozlash, so'ng uni yoqish va o'chirish orqali LEDni yonib -o'chadigan dastur yaratamiz. Ushbu loyihani sinab ko'rish - bu ko'milgan dasturlashni boshlashning ajoyib usuli va umid qilamanki, kompyuter qanday ishlashini yaxshiroq tushunishga yordam beradi.
Sizga nima kerak?
Uskuna
- Malinali PI 3
- SD-karta yuklanadigan tasvir bilan oldindan yuklangan
- Non paneli
- Erkak ayol o'tish simlari
- Erkak erkak o'tish simlari
- LED
- 220 ohmli rezistor (to'liq 220 ohm bo'lishi shart emas, ko'pchilik qarshilik ishlaydi)
- mini sd karta
- oldindan malinali pi operatsion tizimi o'rnatilgan mini sd -karta (odatda pi bilan birga keladi)
Dasturiy ta'minot
- GCC kompilyatori
- GNU o'rnatilgan asboblar zanjiri
- matn muharriri
- sd kartani formatlashtiruvchi
Xo'sh, boshlaylik!
1 -qadam: NARSALARNI O'RNATISH/STUFF UP
Xo'sh, birinchi qadam - qo'shimcha qurilmalarni sotib olish. Siz ehtiyot qismlarni alohida sotib olishingiz mumkin yoki etarli qismlardan iborat to'plam mavjud. ULANISH
Bu to'plam malina pi 3 va undan ko'pini sozlash uchun kerak bo'lgan hamma narsaga ega! bu to'plamga kiritilmagan yagona narsa - bu qo'shimcha sd -karta. Kutmoq! Hozircha boshqasini sotib olmang. Agar siz kartaga oldindan yuklangan linuxni o'rnatishni ishlatishni rejalashtirmasangiz, unda mini sd kartaning tarkibini keyinroq nusxa ko'chiring va kartani qayta formatlang (bu haqda keyinroq). MUHIM ESLATMA: kartadagi fayllarni saqlaganingizga ishonch hosil qiling, keyinroq ularga kerak bo'ladi!
Keyin dasturiy ta'minotni sozlash vaqti keldi. Ushbu qo'llanmada dasturiy ta'minotni o'rnatish bo'yicha batafsil ko'rsatmalar mavjud emas. Internetda ularni o'rnatish bo'yicha ko'plab manbalar va qo'llanmalar mavjud:
WINDOWS foydalanuvchilari:
Gcc -ni yuklab oling va o'rnating
Keyin GNU ARM o'rnatilgan asboblar zanjirini yuklab oling va o'rnating
LINUX/MAC
- Linux taqsimotlari oldindan o'rnatilgan gcc bilan birga keladi
- GNU ARM o'rnatilgan asboblar zanjirini yuklab oling va o'rnating.
OK, agar hamma narsa yaxshi bo'lsa, siz terminalni (linux/mac) yoki cmd chizig'ini (derazalarni) ochib, yozishga harakat qilishingiz kerak.
arm-none-eabi-gcc
Chiqish birinchi rasmga o'xshash bo'lishi kerak. Bu faqat uning to'g'ri o'rnatilganligini tekshirish uchun.
Yaxshiyamki, old shartlar yo'q, endi qiziqarli narsalarni boshlash vaqti keldi.
2 -qadam: CIRCUIT
O'chirish vaqti! Buning sxemasi oddiy. Biz LEDni GPIO 21 ga (pin 40) pi ga ulaymiz (2 va 3 -rasmlarga qarang). Led shikastlanmasligi uchun rezistor ketma -ket ulanadi. Rezistor non panelidagi GND (pin 39) ga ulangan manfiy ustunga ulanadi. Ledni ulaganda, qisqa uchini salbiy tomonga ulang. Oxirgi rasmga qarang
3 -qadam: BOOTABLE Mini SD
Pi 3 -ni bo'sh sd -kartani tanib olish uchun uchta qadam bor. Biz bootcode.bin, start.elf va fixup.dat fayllarini topib nusxalashimiz kerak. Agar siz kanakitni sotib olgan bo'lsangiz yoki linux taqsimoti bilan pi 3 uchun bootable sd kartasini tayyorlagan bo'lsangiz, siz ushbu fayllarni o'z ichiga olgan mini sd kartaga olishingiz mumkin. Qanday bo'lmasin, bu fayllar pi -ga sd -kartani yuklash qurilmasi sifatida tan olish uchun kerak. Keyin mini sdni fat32 ga formatlang (aksariyat mini sd kartalar fat32 formatida keladi. Men sandiskdan arzon mini sd kartani ishlatardim), bootcode.bin, start.elf, fixup.dat ni sd kartaga o'tkazing. Va tugatdingiz! Yana bir marta va rasmlar ketma -ketligi bo'yicha qadamlar:
- Bootcode.bin, start.elf, fixup.dat -ni toping.
- SD -kartangiz fat32 formatlanganligiga ishonch hosil qiling.
- Bootcode.bin, start.elf va fixup.dat -ni formatlangan sd -kartaga o'tkazing.
Mana men buni qanday tushundim, havola.
4 -qadam: Mini SD -ni tekshiring
Yaxshi, bizda yuklanadigan mini sd -karta bor va umid qilamanki, sizda pi 3 bor. Endi biz pi 3 mini sd kartani yuklash mumkin deb tan olishiga ishonch hosil qilish uchun uni sinab ko'rishimiz kerak.
Mini -usb porti yonida, ikkita kichik LED bor. Biri qizil. Bu quvvat ko'rsatkichi. Quvvat olganda, bu chiroq yonishi kerak. Agar siz hozirda mini -sd -kartasiz pi -ni ulasangiz, u qizil rangda yonadi. Xo'sh, endi pi -ni uzing va oldingi qadamda yaratilgan yuklanadigan mini sd -kartani qo'ying va pinni ulang. Boshqa chiroqni ko'ryapsizmi? Qizil chiroq yonida yashil chiroq bo'lishi kerak, bu uning sd -kartani o'qishini ko'rsatadi. Bu LED ACT led deb ataladi. Sd karta o'rnatilgan bo'lsa, u yonadi. Mini -sd -kartangizga kirganda u yonadi.
OK, yuklanadigan mini sd -kartani joylashtirgandan va pi -ni ulaganingizdan keyin ikkita narsa bo'lishi kerak edi:
- Qizil LED yoritilgan bo'lishi kerak, bu quvvat qabul qilinishini ko'rsatadi
- Yashil LED yoritilgan bo'lishi kerak, bu uning mini sd kartaga o'rnatilganligini ko'rsatadi
Agar biror narsa noto'g'ri bo'lsa, oldingi amallarni takrorlashga harakat qiling yoki qo'shimcha ma'lumot olish uchun quyidagi havolani bosing.
Bu erdagi havola yaxshi havola.
5 -qadam: CODE1
Bu loyiha ARM assambleyasi tilida yozilgan. Ushbu qo'llanmada ARM yig'ish haqida asosiy tushuncha bor, lekin siz bilishingiz kerak bo'lgan bir nechta narsalar:
.equ: belgiga qiymat belgilaydi, ya'ni abc.equ 5 abc endi beshni bildiradi
- ldr: xotiradan yuklaydi
- str: xotiraga yozadi
- cmp: olib tashlash orqali ikkita qiymatni solishtiradi. Bayroqlarni o'rnatadi.
- b: yorliqqa bo'linish
- qo'shish: arifmetikani bajaradi
Agar qo'llarni yig'ish bo'yicha tajribangiz bo'lmasa, ushbu videoni tomosha qiling. Bu sizga qurol yig'ish tilini yaxshi tushunishga yordam beradi.
Xo'sh, hozir bizda malina pi 3 ga ulangan sxemamiz bor va bizda pi taniydigan sd -karta bor, shuning uchun bizning keyingi vazifamiz pi -ni bajariladigan dastur bilan yuklash orqali kontaktlarning zanglashini qanday topish mumkin. Umuman olganda, biz pi ga GPIO 21 (qizil simga ulangan pin) dan kuchlanishni chiqarishni aytishimiz kerak. Keyin biz milt -miltni miltillash uchun uni almashtirish usuliga muhtojmiz. Buning uchun bizga qo'shimcha ma'lumot kerak. Hozirgi vaqtda biz GPIO 21 -ni chiqishga qanday aytishni bilmaymiz, shuning uchun biz ma'lumotlar jadvalini o'qishimiz kerak. Ko'pgina mikro-kontrollerlarda hamma narsa qanday ishlashini aniq ko'rsatadigan ma'lumotlar varaqlari mavjud. Afsuski, pi 3 -da rasmiy hujjatlar yo'q! Biroq, norasmiy ma'lumotlar varaqasi mavjud. Mana, unga ikkita havola:
- github.com/raspberrypi/documentation/files…
- web.stanford.edu/class/cs140e/docs/BCM2837…
Xo'sh, bu vaqtda, keyingi bosqichga o'tishdan bir necha daqiqa oldin, ma'lumot varag'ini ko'rib chiqish va qanday ma'lumotlarni topishingiz mumkinligini bilish kerak.
6 -qadam: CODE2: Turn_Led_ON
Malinali pi 3 53 chiqish/kirish pinlarini (periferiya qurilmalari) boshqarishni qayd qiladi. Pinlar birlashtirilgan va har bir guruh registrga biriktirilgan. GPIO uchun biz SELECT, SET va CLEAR registrlariga kira olamiz. Bu registrlarga kirish uchun bizga bu registrlarning jismoniy manzillari kerak. Ma'lumotlar varag'ini o'qiyotganda, siz faqat manzilning ofsetini (lo bayt) qayd qilib, uni asosiy manzilga qo'shishni xohlaysiz. Siz buni qilishingiz kerak, chunki ma'lumotlar jadvalida Linux operatsion tizimlari belgilaydigan qiymatlar ko'rsatilgan. Biz operatsion tizimdan foydalanmayapmiz, shuning uchun biz to'g'ridan -to'g'ri jismoniy manzil orqali ushbu registrlarga kirishimiz kerak. Buning uchun sizga quyidagi ma'lumotlar kerak bo'ladi:
- Qo'shimcha qurilmalarning asosiy manzili: 0x3f200000. Pdf (6 -bet), asosiy manzil 0x3f000000 ekanligini aytadi, lekin bu manzil ishlamaydi. 0x3f200000 dan foydalaning
- FSEL2 ofset (SELECT) registrning to'liq manzili emas. Pdf FSEL2 ni 0x7E20008 da ro'yxatlaydi, lekin bu manzil Linux virtual manziliga ishora qiladi. Ofset bir xil bo'ladi, shuning uchun biz ta'kidlamoqchimiz. 0x08
- GPSET0 ofset (SET): 0x1c
- GPCLR0 ofset (CLEAR): 0x28
Ehtimol, siz ma'lumot varaqasida 4 ta SELECT registrlari, 2 ta SET registrlari va 2 ta CLEAR registrlari borligini payqadingiz, shuning uchun men nima uchun men tanlaganimni tanladim? Buning sababi shundaki, biz GPIO 21 va FSEL2 GPIO 20-29, SET0 va CLR0 GPIO 0-31 boshqaruvlarini ishlatmoqchimiz. FSEL registrlari har bir GPIO pin uchun uchta bitni belgilaydi. Biz FSEL2 dan foydalanayotganimiz uchun bu 0-2 bitli GPIO 20 ni boshqaradi va 3-5 bitli GPIO 21 ni boshqaradi va hokazo. Set va CLR registrlari har bir pin uchun bitta bitni belgilaydi. Masalan, SET0 va CLR0 -dagi 0 -bit GPIO -ni boshqaradi. GPIO 21 -ni boshqarish uchun siz SET0 va CLR0 -da 21 -bitni o'rnatasiz.
Xo'sh, biz bu registrlarga qanday kirish haqida gaplashdik, lekin bu nimani anglatadi?
- GPIO 21 ni chiqishga o'rnatish uchun FSEL2 registri ishlatiladi. Chiqish uchun pin o'rnatish uchun siz uchta bitning tartib tartibini 1 ga o'rnatishingiz kerak. Shunday qilib, agar 3-5 bit GPIO 21 ni boshqarsa, bu biz birinchi bitni 3 bitdan 1 gacha o'rnatishimiz kerakligini bildiradi. GPIO 21 -ni chiqish sifatida ishlatmoqchimiz. Shunday qilib, agar biz GPIO 21 uchun 3 bitni ko'rib chiqmoqchi bo'lsak, biz uni b001 chiqishiga o'rnatganimizdan keyin shunday bo'lishi kerak.
- GPSET0 pi -ga pinni yoqishni aytadi (kuchlanish chiqishi). Buning uchun biz kerakli GPIO piniga mos keladigan bitni almashtiramiz. Bizning holatda, bit 21.
- GPCLR0 pi ga pinni o'chirishni aytadi (kuchlanish yo'q). Pinni o'chirish uchun bitni mos keladigan GPIO piniga o'rnating. Bizning holatda 21 bit
Yonib -o'chib turgan chiroqqa etib borishdan oldin, avvalo, chiroqni yoqadigan oddiy dasturni tuzamiz.
Boshlash uchun biz manba kodimizning yuqori qismiga ikkita ko'rsatma qo'shishimiz kerak.
- .init.init pi kodni qaerga qo'yish kerakligini aytadi
- .global _start
Keyinchalik, biz foydalanadigan barcha manzillarni joylashtirishimiz kerak. Qiymatlarga o'qiladigan belgilarni belgilash uchun.equ dan foydalaning.
- .eng GPFSEL2, 0x08
- .vet GPSET0, 0x1c
- . teng GPCLR0, 0x28
- .equ BASE, 0x3f200000
Endi biz sozlashimiz kerak bo'lgan bitlarni o'rnatish uchun niqoblar yaratmoqchimiz.
- .equ SET_BIT3, 0x08 Bu uch bit 0000_1000 ni o'rnatadi
- teng SET_BIT21, 0x200000
Keyin biz _start yorlig'ini qo'shishimiz kerak
_boshlang:
Ro'yxatga asosiy manzilni yuklang
ldr r0, = BASE
Endi biz GPFSEL2 bit3 ni o'rnatishimiz kerak
- ldr r1, SET_BIT3
- str r1, [r0, #GPFSEL2] Ushbu yo'riqnomada 0x08 bitni GPFSEL2 manziliga qaytarish yozilgan.
Nihoyat, GPSET0 registrida 21 -bitni o'rnatish orqali GPIO 21 -ni yoqishimiz kerak
- ldr r1, = SET_BIT21
- str r1, [r0, #GPSET0]
Yakuniy mahsulot rasmdagi kodga o'xshash bo'lishi kerak.
Keyingi qadam - kodni kompilyatsiya qilish va pi ishlashi mumkin bo'lgan.img faylini yaratish.
- Biriktirilgan makefile va kernel.ld -ni yuklab oling va agar turn_led_on.s manba kodini xohlasangiz.
- Barcha fayllarni bitta papkaga joylashtiring.
- Agar siz o'zingizning manba kodingizdan foydalansangiz, makefile -ni tahrir qiling va = turn_led_on.s kodini kod =.s bilan almashtiring.
- Makefile faylini saqlang.
- Fayllarni o'z ichiga olgan papkaga o'tish uchun terminal (linux) yoki cmd oynasidan (derazalar) foydalaning va "enter" tugmasini bosing.
- Make fayli kernel.img deb nomlangan faylni yaratishi kerak
- Mini yadro kartangizga kernel.img -ni nusxalash. Sizning kartalaringiz mazmuni rasmdagi kabi bo'lishi kerak (3 -rasm): bootcode.bin, start.elf, fixup.dat va kernel.img.
- Mini sd -kartani chiqarib oling va uni pi -ga joylashtiring
- Pini quvvat manbaiga ulang
- LED yonishi kerak !!!
MUHIM MUHIM QAYD: Ko'rinib turibdiki, instruksiyalarda makefile kengaytmasi yo'qligi bilan bog'liq muammo bor edi, shuning uchun men uni.txt kengaytmasi bilan qayta yukladim. Iltimos, kengaytmani to'g'ri ishlashi uchun uni yuklaganingizda olib tashlang.
Tavsiya:
Yalang'och Arduino -ni sinovdan o'tkazing, sig'imli kirish va LED yordamida o'yin dasturiy ta'minoti: 4 qadam
Yalang'och Arduinoni, O'yin dasturiy ta'minoti yordamida, sig'imli kirish va LED yordamida tekshiring: " Itaring " Yalang'och Arduino taxtasi yordamida interaktiv o'yin, tashqi qismlar va simlar kerak emas (sig'imli "sensorli" kirish ishlatiladi). Yuqorida ko'rsatilgandek, u ikki xil taxtada ishlayotganini ko'rsatadi. Push-Bu ikkita maqsadga ega. /V ni tezda ko'rsatish uchun
Yalang'och minimal - Breadboard -dagi Arduino: 5 qadam
Bare Minimal - Breadboard -dagi Arduino: Arduino ATMega328p chipidan foydalanadi. Biz buni SMD formatida (ATMega328p-AU) yoki teshiklarni lehimlash uchun DIP formatida (ATMega328p-PU) olishimiz mumkin. Ammo chip o'z -o'zidan ishlamaydi. Unga yana bir nechta komponentlar kerak bo'ladi va ularning hammasi yalang'och deb ataladi
Yalang'och metallli LEDli Raspberry Pi tugmasi: 8 qadam
Yalang'och metall svetodiodli Raspberry Pi tugmasi: Bu malina pi 3 yalang'och metallni dasturlash bo'yicha ikkinchi darsligim! Birinchisini bu erda tekshiring. O'tgan safar men sizga malinali pi 3 uchun bitta chiroq yonib turadigan operatsion tizim tasvirini qanday yaratishni ko'rsatgan edim, bu darslikda men sizga ko'rsataman
Yalang'och o'tkazgich va makey makeyli interaktiv san'at: 10 qadam
Yalang'och o'tkazgich va makey makeyli interaktiv san'at: san'atni jonlantirish uchun tejamkor do'kon rasmidan foydalaning. Ehtiyot qismlar: Yalang'och Supero'tkazuvchilar murakkab Makey Makey Har xil o'lchamdagi jumperlar tejamkor do'kon rasmlari (yoki boshqa san'at) Asboblar: Noutbuklar uchun ovozli qurilmalar uchun dasturiy ta'minot tasmasi
Yalang'och suyaklar veb -sahifasi: 10 qadam
Yalang'och suyaklar veb -sahifasi: Bugun biz noldan juda oddiy, yalang'och suyaklar veb -sahifasini yaratmoqchimiz. Biz HTML elementlari, veb -sahifangizning uslubi (ranglar, shriftlar, hizalama va hk) va nihoyat rasmni veb -sahifangizga qanday kiritish haqida gaplashamiz