Kazalo:
- 1. korak: NASTAVITEV STVARI/NASTOPITEV
- 2. korak: VEZEK
- 3. korak: ZMOGLJIVI Mini SD
- 4. korak: PREVERITE Mini SD
- 5. korak: KODA1
- 6. korak: CODE2: Turn_Led_ON
Video: Bare Metal Raspberry Pi 3: utripajoča LED: 8 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
Avtor moldypizzaSledi še avtorja:
O:.oO0Oo. Več o plesni »
Dobrodošli v vadnici BARE METAL pi 3 Utripajoča LED!
V tej vadnici bomo šli skozi korake, od začetka do konca, da LED utripa z uporabo Raspberry PI 3, plošče, upora, LED in prazne kartice SD.
Kaj je torej BARE METAL? BARE METAL ni zahtevno programiranje. Gola kovina pomeni, da imamo v celoti nadzor nad tem, kaj bo računalnik naredil do kosa. Torej v bistvu pomeni, da bo koda v celoti napisana v sklopu, z uporabo nabora navodil Arm. Do konca bomo ustvarili program, ki bo utripal LED z dostopom do fizičnega naslova enega od zatičev GPIO Raspberry Pi in ga konfiguriral za izhod ter nato vklopil in izklopil. Poskus tega projekta je odličen način, da začnete z vgrajenim programiranjem in upamo, da boste bolje razumeli delovanje računalnika.
Kaj potrebujete?
Strojna oprema
- Malina PI 3
- Na kartico SD je že naložena zagonska slika
- Ogledna plošča
- Moški Ženski mostički
- Moški moški mostički
- LED
- 220 ohmski upor (ne mora biti ravno 220 ohmov, večina uporov bo delovala)
- mini sd kartica
- mini SD kartica, ki je vnaprej naložena z operacijskim sistemom raspberry pi (običajno priložena pi)
Programska oprema
- Prevajalnik GCC
- Vgrajena orodna veriga GNU
- urejevalnik besedil
- oblikovalnik sd kartic
V redu, začnimO!
1. korak: NASTAVITEV STVARI/NASTOPITEV
V redu … prvi korak je pridobitev strojne opreme. Deli lahko kupite ločeno ali pa je v kompletu več kot dovolj delov. POVEZAVA
Ta komplet vsebuje vse, kar je potrebno za nastavitev maline pi 3 in več! edina stvar, ki ni vključena v ta komplet, je dodatna mini SD kartica. Počakaj! Ne kupujte še enega. Če ne nameravate uporabljati vnaprej nameščene namestitve Linuxa na kartici, samo kopirajte vsebino priložene mini SD kartice za pozneje in jo znova formatirajte (več o tem kasneje). POMEMBNO OPOMBA: hranite datoteke na priloženi kartici, ki jih boste potrebovali pozneje!
Nato je čas za namestitev programske opreme. Ta vadnica ne vsebuje podrobnih navodil o namestitvi programske opreme. Na spletu je veliko virov in vadnic o tem, kako jih namestiti:
UPORABNIKI WINDOWS:
Prenesite in namestite gcc
Nato prenesite in namestite vgrajeno orodno verigo GNU ARM
LINUX/MAC
- Distribucije Linuxa imajo vnaprej nameščen gcc
- Prenesite in namestite vgrajeno orodno verigo GNU ARM.
Če je vse v redu, bi morali odpreti terminal (linux/mac) ali cmd vrstico (windows) in poskusiti vnesti
arm-none-eabi-gcc
Izhod mora biti podoben prvi sliki. To je samo zato, da preverite, ali je pravilno nameščen.
Zdaj, ko so predpogoji odpravljeni, je čas, da začnete z zabavnimi stvarmi.
2. korak: VEZEK
Čas kroga! Vezje za to je preprosto. Priključili bomo LED na GPIO 21 (pin 40) na pi (glej sliko 2 in 3). Zaporedno je priključen tudi upor, ki preprečuje poškodbe vodnika. Upor bo povezan z negativnim stolpcem na plošči, ki bo povezan z GND (pin 39) na pi. Ko priključujete LED, ne pozabite priključiti kratkega konca na negativno stran. Oglejte si zadnjo sliko
3. korak: ZMOGLJIVI Mini SD
Obstajajo trije koraki, da vaš pi 3 prepozna prazno mini sd kartico. Najti in kopirati moramo bootcode.bin, start.elf in fixup.dat. Te datoteke lahko dobite na priloženi mini SD kartici, če ste kupili canakit ali naredili zagonsko SD kartico za pi 3 z distribucijo linux. Kakorkoli, te datoteke so potrebne, da pi prepozna kartico sd kot zagonsko napravo. Nato formatirajte mini sd v fat32 (večina mini sd kartic je oblikovanih v fat32. Uporabil sem poceni mini sd kartico iz sandiska), premaknite bootcode.bin, start.elf, fixup.dat na sd kartico. In končali ste! V redu še enkrat in po vrstnem redu slik so koraki naslednji:
- Poiščite bootcode.bin, start.elf, fixup.dat.
- Poskrbite, da je vaša SD kartica formatirana na fat32.
- Premaknite bootcode.bin, start.elf in fixup.dat na formatirano SD kartico.
Evo, kako sem to ugotovil, link.
4. korak: PREVERITE Mini SD
V redu, imamo zagonsko mini SD kartico in upajmo, da imate na tem mestu pi 3. Zdaj bi ga morali preizkusiti, da se prepričamo, da pi 3 prepozna mini sd kartico kot zagonsko.
Na pi, blizu mini USB vhoda, sta dva majhna LED. Ena je rdeča. To je indikator moči. Ko pi prejema moč, mora ta lučka prižgati. Torej, če svoj pi priključite zdaj brez mini sd kartice, bi moral zasvetiti rdeče. V redu, zdaj odklopite pi in vstavite zagonsko mini sd kartico, ki je bila ustvarjena v prejšnjem koraku, in priključite pi. Ali vidite drugo luč? Tik ob rdeči luči mora biti zelena lučka, ki označuje, da bere SD kartico. Ta LED se imenuje ACT led. Sveti, ko je vstavljena sposobna SD kartica. Ko dostopa do mini SD kartice, bo utripal.
V redu, torej bi se morali po vstavitvi zagonske mini sd kartice in priključitvi pi zgoditi dve stvari:
- Rdeča dioda mora biti prižgana, kar označuje sprejem moči
- Zelena LED dioda mora biti osvetljena, kar pomeni, da se je zagnal v kartico mini sd
Če je šlo kaj narobe, ponovite prejšnje korake ali kliknite spodnjo povezavo za več informacij.
Povezava tukaj je dobra referenca.
5. korak: KODA1
Ta projekt je napisan v montažnem jeziku ARM. V tej vadnici je predvideno osnovno razumevanje montaže ARM, vendar morate vedeti nekaj stvari:
.equ: dodeli vrednost simbolu, tj. abc.equ 5 abc zdaj predstavlja pet
- ldr: naloži iz spomina
- str: zapisuje v spomin
- cmp: primerja dve vrednosti z odštevanjem. Nastavi zastavice.
- b: veja do oznake
- add: izvaja aritmetiko
Če nimate izkušenj z montažo roke, si oglejte ta video. Tako boste dobro razumeli montažni jezik Arm.
V redu, zdaj imamo vezje, ki je povezano z našo malino pi 3 in imamo sd kartico, ki jo pi prepozna, zato je naša naslednja naloga ugotoviti, kako komunicirati s vezjem, tako da naložimo pi z izvedljivim programom. Na splošno moramo povedati pi, da odda napetost iz GPIO 21 (pin priključen na rdečo žico). Nato potrebujemo način za preklop LED, da utripa. Za to potrebujemo več informacij. Na tej točki nimamo pojma, kako povedati GPIO 21 izhodu, zato moramo prebrati podatkovni list. Večina mikrokrmilnikov ima podatkovne liste, ki natančno določajo, kako vse deluje. Na žalost pi 3 nima uradne dokumentacije! Vendar pa obstaja neuraden podatkovni list. Tu sta dve povezavi do nje:
- github.com/raspberrypi/documentation/files…
- web.stanford.edu/class/cs140e/docs/BCM2837…
V redu, na tem mestu bi morali vzeti nekaj minut, preden se premaknete na naslednji korak, da pregledate podatkovni list in vidite, katere podatke lahko najdete.
6. korak: CODE2: Turn_Led_ON
Raspberry pi 3 53 registri za krmiljenje izhodnih/vhodnih zatičev (zunanjih naprav). Zatiči so združeni in vsaka skupina je dodeljena registru. Za GPIO moramo imeti dostop do registra SELECT, registra SET in CLEAR. Za dostop do teh registrov potrebujemo fizični naslov teh registrov. Ko berete podatkovni list, želite le zabeležiti odmik naslova (lo bajt) in ga dodati osnovnemu naslovu. To morate storiti, ker je v podatkovnem listu naveden navidezni naslov linux, ki so v bistvu vrednosti, ki jih dodeljujejo operacijski sistemi. Ne uporabljamo operacijskega sistema, zato moramo do teh registrov dostopati neposredno z uporabo fizičnega naslova. Za to potrebujete naslednje podatke:
- Osnovni naslov zunanjih naprav: 0x3f200000. PDF (stran 6) pravi, da je osnovni naslov 0x3f000000, vendar ta naslov ne bo deloval. Uporabite 0x3f200000
- Odmik FSEL2 (SELECT) ni polni naslov registra. PDF navaja FSEL2 na 0x7E20008, vendar se ta naslov nanaša na navidezni naslov linux. Odmik bo enak, zato želimo opozoriti. 0x08
- Odmik GPSET0 (SET): 0x1c
- Odmik GPCLR0 (CLEAR): 0x28
Torej ste verjetno opazili, da na podatkovnem listu so navedeni 4 registri SELECT, 2 registra SET in 2 CLEAR, zato zakaj sem izbral tiste, ki sem jih naredil? To je zato, ker želimo uporabiti kontrolnike GPIO 21 in FSEL2 GPIO 20-29, nastavitve SET0 in CLR0 GPIO 0-31. Registri FSEL za vsak pin GPIO dodelijo tri bite. Ker uporabljamo FSEL2, to pomeni, da biti 0-2 nadzorujejo GPIO 20 in bitovi 3-5 krmilijo GPIO 21 itd. Registra Set in CLR vsakemu zatiču dodeli en sam bit. Na primer, bit 0 v SET0 in CLR0 nadzoruje GPIO 1. Za nadzor GPIO 21 bi nastavili bit 21 v SET0 in CLR0.
V redu smo se pogovarjali o tem, kako dostopati do teh registrov, toda kaj vse to pomeni?
- Register FSEL2 bo uporabljen za nastavitev izhoda GPIO 21. Če želite nastaviti pin za izhod, morate nastaviti niz zaporedja treh bitov na 1. Torej, če biti 3-5 nadzorujejo GPIO 21, to pomeni, da moramo nastaviti prvi bit, bit 3 na 1. To bo povedalo pi da želimo kot izhod uporabiti GPIO 21. Če bi torej pogledali 3 bite za GPIO 21, bi morali izgledati tako, potem ko smo ga nastavili na izhod, b001.
- GPSET0 pove pi, naj vklopi pin (izhod napetosti). Če želite to narediti, samo preklopite bit, ki ustreza želenemu pin -ju GPIO. V našem primeru bit 21.
- GPCLR0 pove pi, naj izklopi pin (brez napetosti). Če želite izklopiti pin, nastavite bit na ustrezen pin GPIO. V našem primeru bit 21
Preden začnemo utripati LED, najprej naredimo preprost program, ki bo LED preprosto vklopil.
Za začetek moramo na vrh izvorne kode dodati dve direktivi.
- .section.init pove pi, kam naj vnese kodo
- .global _start
Nato moramo postaviti vse naslove, ki jih bomo uporabljali. Uporabite.equ, če želite vrednostim dodeliti berljive simbole.
- .equ GPFSEL2, 0x08
- .equ GPSET0, 0x1c
- .equ GPCLR0, 0x28
- .equ BASE, 0x3f200000
Zdaj bomo ustvarili maske za nastavitev bitov, ki jih moramo nastaviti.
- .equ SET_BIT3, 0x08 S tem nastavite tri bit 0000_1000
- .equ SET_BIT21, 0x200000
Nato moramo dodati oznako _start
_start:
Naložite osnovni naslov v register
ldr r0, = OSNOVA
Zdaj moramo nastaviti bit3 GPFSEL2
- ldr r1, SET_BIT3
- str r1, [r0, #GPFSEL2] To navodilo pravi, da se bit 0x08 vrne na naslov GPFSEL2
Nazadnje moramo vklopiti GPIO 21 z nastavitvijo bita 21 v registru GPSET0
- ldr r1, = SET_BIT21
- str r1, [r0, #GPSET0]
Končni izdelek bi moral biti videti kot koda na sliki.
Naslednji korak je sestavljanje kode in ustvarjanje datoteke.img, ki jo lahko pi zažene.
- Prenesite priloženo datoteko make in kernel.ld in če želite izvorno kodo turn_led_on.s.
- Vse datoteke postavite v isto mapo.
- Če uporabljate svojo izvorno kodo, uredite datoteko make in kodo = turn_led_on.s zamenjajte s kodo =.s
- Shranite datoteko make.
- S terminalom (linux) ali oknom cmd (windows) se pomaknite do mape z datotekami in vnesite make ter pritisnite enter
- Datoteka make bi morala ustvariti datoteko z imenom kernel.img
- Kopirajte kernel.img na svojo mini sd kartico. Vsebina vaših kartic mora biti takšna, kot je na sliki (slika 3): bootcode.bin, start.elf, fixup.dat in kernel.img.
- Izvlecite kartico mini sd in jo vstavite v pi
- Priključite pi v vir napajanja
- LED naj zasveti !!!
RAHLO POMEMBNO OPOMBA: Očitno je pri učiteljih prišlo do težave, ker makefile ni imel razširitve, zato sem jo znova naložil z razširitvijo.txt. Ko prenesete razširitev, jo odstranite, da bo delovala pravilno.
Priporočena:
Led utripajoča Hack-O-Lantern, ki sledi pesmi: 6 korakov
Led utripajoča Hack-O-Lantern, ki sledi pesmi: naredite jack-o-lantern, ki predvaja in utripa večbarvne LED-je za najljubšo pesem Halloween
Drobna utripajoča LED slika: 6 korakov
Drobna utripajoča LED slika: LED lahko preprosto utripate s časovnikom arduino ali 555. Lahko pa ustvarite utripajoče vezje brez takšnih IC -jev. To je preprosta utripajoča figura iz ločenih delov
Elektronska značka LED utripajoča robotska značka - komplet za spajkanje: 11 korakov
Elektronska značka LED utripajoča robotska značka - Komplet za spajkanje: Ta članek ponosno sponzorira PCBWAY. PCBWAY izdeluje visokokakovostne prototipe PCB -jev za ljudi po vsem svetu. Poskusite sami in dobite 10 PCB -jev za samo 5 USD na PCBWAY z zelo kakovostjo, hvala PCBWAY. Robadge#1, ki sem ga razvil za
Dvojna LED -utripajoča svetloba občutljiva: 13 korakov
Svetlobno občutljiva dvojna LED utripajoča: Hii friend, Danes bom naredil vezje za svetlobno občutljivo dvojno LED utripalo. To pomeni, da bodo LED utripale izmenično, ko na LDR ne bo padla nobena luč, LED pa bodo neprekinjeno svetile, ko bo lučka na LDR. Začnimo
Utripajoča/bledi/utripajoča LED s časovnikom 555: 7 korakov
Utripajoča/bledi/utripajoča LED s časovnikom 555: To drobno vezje je preprost način za izdelavo zbledele LED diode brez programiranja čipov ali pisanja kode. Samo nekaj preprostih komponent in pripravljeni boste zbledeti ves dan. Končni rezultat je nenehno bledenje in upadanje, tako kot Mac v pripravljenosti. Poskusite