Cov txheej txheem:
- Kauj Ruam 1: TSEEB TSHAJ PLAWS/STUFF UP
- Kauj Ruam 2: CIRCUIT
- Kauj ruam 3: BOOTABLE Mini SD
- Kauj ruam 4: Txheeb xyuas Mini SD
- Kauj ruam 5: CODE1
- Kauj Ruam 6: CODE2: Turn_Led_ON
Video: Bare Metal Raspberry Pi 3: Teeb LED: 8 Kauj Ruam
2024 Tus sau: John Day | [email protected]. Kawg hloov kho: 2024-01-30 09:29
Ua raws ntau los ntawm tus sau:
Txog:.oO0Oo. Xav paub ntau ntxiv txog moldypizza »
Txais tos rau BARE METAL pi 3 Blinking LED tutorial!
Hauv qhov kev qhia no peb yuav dhau los ntawm cov theem, txij thaum pib mus txog qhov kawg, kom tau txais LED ntsais muag siv lub Raspberry PI 3, lub khob cij, tus tiv thaiv, tus coj, thiab daim npav SD dawb paug.
Yog li BARE METAL yog dab tsi? BARE METAL tsis yog qhov kev ua kom zoo nkauj. Cov hlau liab txhais tau tias peb tau ua tiav ntawm kev tswj hwm lub computer yuav ua dab tsi. Yog li nws ib txwm txhais tau tias cov cai yuav raug sau tag nrho hauv kev sib dhos, siv Arm qhia kev teeb tsa. Thaum kawg peb yuav tau tsim ib qhov program uas yuav ntsais muag LED los ntawm kev nkag mus rau lub chaw nyob ntawm ib qho ntawm Raspberry Pi's GPIO pins thiab teeb tsa nws kom tso tawm thiab tom qab ntawd hloov nws rau thiab tawm. Sim ua txoj haujlwm no, yog txoj hauv kev zoo los pib nrog kev tsim cov phiaj xwm thiab vam tias yuav muab kev nkag siab zoo ntawm lub computer ua haujlwm li cas.
Koj xav tau dab tsi?
Kho vajtse
- Raspberry PI 3
- SD daim npav ua ntej thauj khoom nrog daim duab bootable
- Cov qhob cij
- Txiv neej Poj niam jumper xov hlau
- Txiv neej Txiv neej jumper xov hlau
- LED
- 220 ohm resistor (tsis tas yuav tsum yog 220 ohms, feem ntau cov resistor yuav ua haujlwm)
- mini sd card
- mini sd card ua ntej thauj khoom nrog raspberry pi operating system (feem ntau suav nrog pi)
Software
- GCC tus tsim tawm
- GNU embedded toolchain
- ntawv editor
- sd daim ntawv formatter
Zoo, Cia Peb Pib!
Kauj Ruam 1: TSEEB TSHAJ PLAWS/STUFF UP
Yog li ntawd … thawj kauj ruam yog kom tau txais khoom kho vajtse. Koj tuaj yeem yuav cov khoom sib cais lossis muaj cov khoom siv uas los nrog ntau dua qhov txaus. LINK
Cov khoom siv no los nrog txhua yam xav tau los teeb tsa raspberry pi 3 thiab ntau dua! qhov tsuas yog tsis suav nrog hauv cov khoom siv no yog daim npav mini sd ntxiv. Tos! Tsis txhob yuav lwm tus tam sim no. Yog tias koj tsis npaj rau kev siv linux teeb tsa ua ntej ntawm daim npav ces tsuas yog luam cov ntsiab lus ntawm suav nrog daim npav mini rau yav tom ntej thiab rov ua daim npav (ntau ntxiv tom qab ntawd). CEEB TOOM CEEB TOOM: nco ntsoov tias koj khaws cov ntaub ntawv ntawm daim npav uas koj yuav xav tau tom qab!
Tom ntej no yog lub sijhawm los teeb tsa software. Phau ntawv qhia no yuav tsis suav nrog cov lus qhia ntxaws txog yuav ua li cas rau nruab software. Muaj ntau qhov peev txheej thiab qhia hauv online ntawm yuav ua li cas rau nruab cov no:
Cov neeg siv WINDOWS:
Rub tawm thiab teeb tsa gcc
Tom ntej no, rub tawm thiab teeb tsa GNU ARM embedded toolchain
LINUX/MAC
- Linux kev faib khoom tuaj nrog gcc ua ntej teeb tsa
- Rub tawm thiab teeb tsa GNU ARM embedded toolchain.
Yog li yog tias txhua yam mus tau zoo ces koj yuav tsum tuaj yeem qhib lub davhlau ya nyob twg (linux/mac) lossis kab cmd (windows) thiab sim ntaus ntawv
caj npab-tsis-eabi-gcc
Cov zis yuav tsum zoo ib yam li thawj daim duab. Qhov no tsuas yog txhawm rau txheeb xyuas tias nws tau teeb tsa raug.
Zoo tam sim no tias qhov kev xav tau ua ntej yog txoj hauv kev, nws yog lub sijhawm kom pib nrog cov khoom lom zem.
Kauj Ruam 2: CIRCUIT
Lub sijhawm luv luv! Lub voj voog rau qhov no yog qhov yooj yim. Peb yuav txuas tus coj mus rau GPIO 21 (tus pin 40) ntawm pi (saib daim duab 2 thiab 3). Ib tus tiv thaiv kuj tseem txuas nrog ua ntu zus los tiv thaiv cov coj los ntawm kev puas tsuaj. Tus tiv thaiv yuav txuas nrog rau kab lus tsis zoo ntawm lub khob cij uas yuav txuas nrog GND (tus lej 39) ntawm tus pi. Thaum txuas tus coj kom ntseeg tau tias txuas txuas qhov kawg mus rau qhov tsis zoo. Saib daim duab kawg
Kauj ruam 3: BOOTABLE Mini SD
Muaj peb kauj ruam kom tau txais koj tus pi 3 kom paub txog koj daim npav mini sd dawb paug. Peb yuav tsum nrhiav thiab luam bootcode.bin, pib.elf, thiab fixup.dat. Koj tuaj yeem tau txais cov ntaub ntawv no suav nrog daim npav mini sd yog tias koj yuav lub canakit lossis ua daim npav SD bootable rau pi 3 nrog kev faib linux. Ob txoj hauv kev no cov ntaub ntawv tsim nyog los tso cai rau pi kom paub txog daim npav SD ua lub cuab yeej bootable. Tom ntej no, teeb tsa lub mini sd rau fat32 (feem ntau daim npav mini sd tuaj yeem ua rau hauv fat32. Kuv siv daim npav mini pheej yig los ntawm sandisk), txav bootcode.bin, pib.elf, fixup.dat mus rau daim npav SD. Thiab koj ua tiav! Okay ib zaug ntxiv thiab nyob rau hauv qhov kev txiav txim ntawm cov duab cov kauj ruam yog:
- Nrhiav bootcode.bin, start.elf, fixup.dat.
- Nco ntsoov tias koj daim npav SD tau teeb tsa rau fat32.
- Txav mus rau bootcode.bin, pib.elf, thiab fixup.dat mus rau daim ntawv SD daim ntawv.
Nov yog qhov kuv xam pom qhov no, txuas.
Kauj ruam 4: Txheeb xyuas Mini SD
Yog lawm, peb muaj daim npav mini bootable, thiab cia siab tias, koj muaj pi 3 ntawm qhov no. Yog li tam sim no peb yuav tsum ntsuas nws kom paub tseeb tias pi 3 tau lees paub lub mini sd card li bootable.
Ntawm tus pi, ze ntawm qhov chaw nres nkoj mini usb muaj ob lub coj me me. Ib qho yog liab. Qhov no yog qhov taw qhia lub zog. Thaum tus pi tau txais lub hwj chim lub teeb no yuav tsum qhib. Yog li yog tias koj ntsaws koj tus pi tam sim no uas tsis muaj daim npav mini sd nws yuav tsum teeb liab. Okay tam sim no ntsaws koj tus pi thiab muab tso rau hauv koj lub bootable mini sd card uas tau tsim hauv cov kauj ruam dhau los thiab ntsaws tus pi rau hauv. Koj puas pom lwm lub teeb? Yuav tsum muaj lub teeb ntsuab, nyob ib sab ntawm tus liab, uas qhia tias nws tab tom nyeem daim npav SD. Cov coj no hu ua ACT coj. Nws yuav ci ntsa iab thaum muaj daim npav sd siv tau. Nws yuav nyem thaum nws nkag mus rau koj daim npav mini sd.
Okay yog li ob yam yuav tsum tau tshwm sim tom qab koj tso lub bootable mini sd card thiab ntsaws tus pi hauv:
- Cov coj liab yuav tsum tau teeb pom kev qhia lub zog txais tos
- Cov coj ntsuab yuav tsum tau teeb pom kev qhia tias nws tau khau raj rau hauv daim npav mini sd
Yog tias muaj qee yam tsis raug sim rov ua cov kauj ruam dhau los lossis nyem rau kab ntawv txuas hauv qab no kom paub ntau ntxiv.
Txuas ntawm no yog qhov siv tau zoo.
Kauj ruam 5: CODE1
Txoj haujlwm no tau sau ua lus ARM los ua ke. Kev nkag siab yooj yim ntawm kev sib dhos ARM yog xav hauv qhov kev qhia no, tab sis ntawm no yog qee yam uas koj yuav tsum paub:
.equ: muab tus nqi rau lub cim piv txwv li abc.equ 5 abc tam sim no sawv cev rau tsib
- ldr: thauj khoom los ntawm kev nco
- str: sau rau nco
- cmp: sib piv ob qhov txiaj ntsig los ntawm kev ua rho tawm. Teem chij.
- b: ceg rau daim ntawv lo
- ntxiv: ua cov lej
Yog tias koj tsis muaj kev paub nrog Arm sib dhos saib cov vis dis aus no. Nws yuav muab rau koj nkag siab zoo ntawm cov lus sib dhos ntawm caj npab.
Yog li tam sim no peb muaj lub xov tooj sib txuas uas txuas nrog peb lub raspberry pi 3 thiab peb muaj daim npav SD uas tus pi lees paub, yog li peb txoj haujlwm tom ntej yog xam tawm yuav ua li cas cuam tshuam nrog Circuit Court los ntawm kev thau cov pi nrog txoj haujlwm ua haujlwm. Feem ntau, yam peb yuav tsum tau ua yog qhia tus pi kom tso tawm qhov hluav taws xob los ntawm GPIO 21 (tus pin txuas nrog xaim liab). Tom qab ntawd peb xav tau txoj hauv kev toggle tus coj kom nws ntsais muag. Txhawm rau ua qhov no peb xav tau cov ntaub ntawv ntxiv. Txog tam sim no peb tsis muaj lub tswv yim yuav qhia GPIO 21 mus rau qhov twg uas yog vim li cas peb yuav tsum nyeem cov ntawv teev npe. Feem ntau cov tswj hwm micro muaj cov ntaub ntawv-nplooj ntawv uas qhia meej meej tias txhua yam ua haujlwm li cas. Hmoov tsis zoo, pi 3 tsis muaj ntaub ntawv raug cai! Txawm li cas los xij, muaj cov ntaub ntawv tsis raug cai-daim ntawv. Nov yog ob qhov txuas rau nws:
- github.com/raspberrypi/documentation/files…
- web.stanford.edu/class/cs140e/docs/BCM2837…
Okay ntawm qhov no, koj yuav tsum siv sijhawm li ob peb feeb ua ntej txav mus rau cov kauj ruam tom ntej los saib los ntawm cov ntaub ntawv-ntawv thiab saib cov ntaub ntawv twg koj tuaj yeem nrhiav tau.
Kauj Ruam 6: CODE2: Turn_Led_ON
Raspberry pi 3 53 sau npe los tswj cov zis/tawm tswv yim (cov khoom siv sab nraud). Cov koob tau koom ua ke thiab txhua pab pawg tau muab rau npe. Txog GPIO peb yuav tsum muaj peev xwm nkag mus rau SELECT sau npe, SET sau npe, thiab CLEAR sau npe. Txhawm rau nkag mus rau cov npe no peb xav tau lub chaw nyob ntawm cov npe no. Thaum koj tab tom nyeem cov ntaub ntawv-koj tsuas yog xav kom sau tseg qhov chaw nyob (lo byte) thiab ntxiv qhov ntawd mus rau qhov chaw nyob. Koj yuav tsum ua qhov no vim hais tias cov ntawv teev npe ntawm linux virtual chaw nyob uas yog qhov tseem ceeb uas cov haujlwm ua haujlwm muab. Peb tsis siv lub kaw lus ua haujlwm yog li peb yuav tsum nkag mus rau cov npe no ncaj qha los ntawm kev siv lub chaw nyob. Rau qhov no koj xav tau cov ntaub ntawv hauv qab no:
- Qhov Chaw Nyob Ntawm Cov Khoom Siv Hluav Taws Xob: 0x3f200000. Pdf (nplooj 6) hais tias qhov chaw nyob yog 0x3f000000, txawm li cas los xij, qhov chaw nyob no yuav tsis ua haujlwm. Siv 0x3f200000
- Offset ntawm FSEL2 (SELECT) tsis yog qhov chaw nyob ntawm qhov sau npe. Pdf sau FSEL2 ntawm 0x7E20008 tab sis qhov chaw nyob no hais txog linux virtual chaw nyob. Cov offset yuav zoo ib yam yog li qhov peb xav kom nco ntsoov. 0 x8x
- Offset ntawm GPSET0 (SET): 0x1c
- Offset ntawm GPCLR0 (CLEAR): 0x28
Yog li koj yuav pom tias cov ntaub ntawv-teev 4 SELECT sau npe, 2 SET sau npe, thiab 2 CLEAR sau npe yog vim li cas kuv thiaj xaiv qhov kuv tau ua? Qhov no yog vim peb xav siv GPIO 21 thiab FSEL2 tswj GPIO 20-29, SET0 thiab CLR0 tswj GPIO 0-31. FSEL cov ntawv sau npe muab peb qho rau txhua tus lej GPIO. Txij li thaum peb siv FSEL2 uas txhais tau tias cov khoom 0-2 tswj GPIO 20, thiab cov khoom 3-5 tswj GPIO 21 thiab ntxiv rau. Teeb thiab CLR cov ntawv sau npe muab me ntsis rau txhua tus pin. Piv txwv, me ntsis 0 hauv SET0 thiab CLR0 tswj GPIO 1. Txhawm rau tswj GPIO 21 koj yuav teeb tsa me ntsis 21 hauv SET0 thiab CLR0.
Okay yog li peb tau tham txog yuav ua li cas nkag mus rau cov npe no, tab sis txhua yam nws txhais li cas?
- FSEL2 sau npe yuav raug siv los teeb tsa GPIO 21 rau qhov tso tawm. Txhawm rau teeb tus pin rau qhov tso tawm koj yuav tsum teeb tsa lo me ntsis ntawm peb qhov khoom rau 1. Yog li yog cov khoom 3-5 tswj GPIO 21 uas txhais tau tias peb yuav tsum teeb tsa thawj zaug, ntsis 3 txog 1. Qhov no yuav qhia rau pi tias peb xav siv GPIO 21 ua qhov tso tawm. Yog li yog tias peb tau saib 3 qhov khoom rau GPIO 21 lawv yuav tsum zoo li qhov no tom qab peb teeb tsa nws kom tso tawm, b001.
- GPSET0 qhia tus pi qhib tus pin (tso tawm qhov hluav taws xob). Txhawm rau ua qhov no peb tsuas yog hloov me ntsis uas sib haum nrog tus pin GPIO peb xav tau. Hauv peb, rooj me ntsis 21.
- GPCLR0 qhia tus pi kom tua tus pin (tsis muaj qhov hluav taws xob). Txhawm rau tua tus pin teeb tsa me ntsis rau tus pin GPIO sib xws. Hauv peb kis me ntsis 21
Ua ntej peb mus rau qhov muag ntsais muag, ua ntej cia ua qhov program yooj yim uas yuav yooj yim tig rau ntawm tus coj.
Txhawm rau pib tawm peb yuav tsum ntxiv ob txoj kev coj mus rau sab saum toj ntawm peb qhov chaws.
- .section.init qhia tus pi qhov twg tso cov cai
- .global _ pib
Tom ntej no, peb yuav tsum teeb tsa txhua qhov chaw nyob uas peb yuav siv. Siv.equ los muab cov cim uas nyeem tau rau tus nqi.
- .equ GPFSEL2, 0x08
- .equ GPSET0, 0x1c
- .equ GPCLR0, 0x28
- .equ BASE, 0x3f200000
Tam sim no peb tab tom tsim lub qhov ncauj qhov ntswg los teeb cov khoom uas peb xav tau los teeb tsa.
- .equ SET_BIT3, 0x08 Qhov no yuav teeb tsa me ntsis peb 0000_1000
- .equ SET_BIT21, 0x200000
Tom qab ntawd peb yuav tsum ntxiv peb daim ntawv _start
_ pib:
Thauj chaw nyob hauv paus rau npe
ldr r0, = LOJ
Tam sim no peb yuav tsum teeb tsa bit3 ntawm GPFSEL2
- ldr r1, SET_BIT3
- str r1, [r0, #GPFSEL2] Cov lus qhia no hais kom sau rov qab me ntsis 0x08 mus rau qhov chaw nyob ntawm GPFSEL2
Thaum kawg peb yuav tsum teeb tsa GPIO 21 rau los ntawm teeb tsa me ntsis 21 hauv GPSET0 sau npe
- ldr r1, = SET_BIT21
- str r1, [r0, #GPSET0]
Cov khoom kawg yuav tsum saib qee yam zoo li cov cai hauv daim duab.
Cov kauj ruam tom ntej yog sau cov cai thiab tsim cov ntaub ntawv.img uas pi tuaj yeem ua haujlwm.
- Rub tawm daim ntawv txuas ua ke, thiab kernel.ld thiab yog tias koj xav tau turn_led_on.s qhov chaws.
- Muab tag nrho cov ntaub ntawv tso rau hauv tib daim nplaub tshev.
- Yog tias koj siv koj tus kheej qhov chaws hloov kho cov makefile thiab hloov cov cai = turn_led_on.s nrog code =.s
- Txuag lub makefile.
- Siv lub davhlau ya nyob twg (linux) lossis cmd window (windows) mus rau koj lub nplaub tshev uas muaj cov ntaub ntawv thiab ntaus ua thiab ntaus nkag
- Cov ntawv ua yuav tsum tsim cov ntaub ntawv hu ua kernel.img
- Luam kernel.img rau koj daim npav mini SD. Koj daim npav cov ntsiab lus yuav tsum zoo li daim duab (duab 3): bootcode.bin, start.elf, fixup.dat, thiab kernel.img.
- Tshem daim npav mini sd thiab ntxig rau hauv pi
- Plug pi rau hauv lub zog siv
- LED yuav tsum teeb !!!
CEEB TOOM QHOV TSEEB QHOV TSEEM CEEB: Yooj yim qhia tau tias muaj teeb meem nrog cov makefile tsis muaj qhov txuas ntxiv, yog li kuv rov tso nws dua nrog.txt ncua ntxiv. Thov tshem qhov txuas ntxiv thaum koj rub tawm nws kom nws ua haujlwm tau zoo.
Pom zoo:
Maus Tail Teeb Nrog Cov Teeb Pom Kev Zoo Siv Lub Teeb LED: 4 Cov Kauj Ruam
Maus Tail Teeb Nrog Cov Teeb Pom Kev Zoo Siv Lub Teeb LEDs: Nyob Zoo! Qhov no yog qee qhov yooj yim DIY ntawm yuav ua li cas thiaj li tsim tau qhov kev cai Programmable RGB Tail Teeb (nrog ua ke ntsais muag/ntsuas ntsuas) rau koj lub maus taus lossis tej zaum muaj ib yam dab tsi siv WS2812B (tus kheej qhov chaw nyob leds) thiab Arduinos . Muaj 4 hom teeb pom kev zoo
Raspberry Pi Push Button With LEDs Bare Metal: 8 Kauj Ruam
Raspberry Pi Push Button With LEDs Bare Metal: Nov yog kuv qhov kev qhia thib ob ntawm kev ua haujlwm raspberry pi 3 liab qab hlau! Txheeb xyuas kuv thawj tus ntawm no. Lub sijhawm kawg kuv tau qhia koj yuav ua li cas los tsim cov duab ua haujlwm rau raspberry pi 3 uas ntsais ib tus coj, hauv qhov kev qhia no kuv yuav qhia koj
Dusty Wall Arduino Animated Led Teeb Nrog Teeb Lub Teeb: 11 Cov Kauj Ruam (nrog Duab)
Dusty Wall Arduino Animated Led Lamp Nrog Lub Teeb Pom Kev: Kuv nyuam qhuav muaj me nyuam thiab tom qab ua nws chav pw, kuv xav tau lub teeb ntawm phab ntsa. Raws li kuv nyiam heev LED kuv txiav txim siab los tsim ib yam.Kuv nyiam lub dav hlau dav dav, yog li vim li cas ho tsis tso lub dav hlau los ntawm daim duab tas luav rau ntawm phab ntsa, ntawm no thaum nws pib thiab kuv ua li cas
DIY LED Teeb - Niaj Hnub Teeb Meem Teeb Nrog Cov Chaw Taws Teeb: 8 Kauj Ruam (nrog Duab)
DIY LED Teeb - Niaj Hnub Teeb Mood Teeb Nrog Chaw Taws Teeb: Hauv kab lus no kuv yuav mus hla cov txheej txheem Kuv tau siv los tsim qhov no zoo heev pyramid zoo li tus LED Mood Teeb.Kuv siv maple rau cov qauv tseem ceeb thiab qee qhov mahogany txhav ntxiv rau lub zog. Rau lub teeb Kuv siv RGB LED teeb uas tuaj nyob hauv 16 ko taw
LED Teeb Teeb Duab Cwjmem: Cov Cuab Yeej rau Teeb Teeb Doodles: 6 Kauj Ruam (nrog Duab)
LED Teeb Teeb Lub Cwjmem: Cov Cuab Yeej rau Teeb Doodles: Kuv tus poj niam Lori yog tus neeg siv tsis tu ncua thiab kuv tau ua si nrog kev yees duab ntev ntev rau ntau xyoo. Kev tshoov siab los ntawm PikaPika pab pawg teeb pom kev zoo thiab yooj yim ntawm cov koob yees duab digital peb tau siv lub teeb duab kos duab kom pom tias peb tuaj yeem ua dab tsi