
Բովանդակություն:
2025 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2025-01-23 14:48

Հետեւեք հեղինակի ավելին.






Օգտվողի մասին.oO0Oo. Ավելին moldypizza- ի մասին »
Բարի գալուստ BARE METAL pi 3 Blinking LED ձեռնարկ:
Այս ձեռնարկում մենք սկզբից մինչև վերջ կանցնենք այն քայլերի միջոցով, որոնք կպայթեցնեն լուսադիոդի թարթումը ՝ օգտագործելով Raspberry PI 3, տախտակ, դիմադրություն, led և դատարկ SD քարտ:
Այսպիսով, ինչ է BARE METAL- ը: BARE METAL- ը շռայլ ծրագրավորում չէ: Մերկ մետաղը նշանակում է, որ մենք լիովին վերահսկում ենք համակարգչի անելիքները: Այսպիսով, դա հիմնականում նշանակում է, որ կոդը ամբողջությամբ գրվելու է հավաքման մեջ ՝ օգտագործելով Arm հրահանգների հավաքածուն: Մինչև վերջ մենք կստեղծենք ծրագիր, որը կթարթեցնի լուսադիոդային լուսարձակը ՝ մուտք գործելով Raspberry Pi- ի GPIO կապում մեկի ֆիզիկական հասցեով և կազմաձևելով այն ելքի վրա, այնուհետև միացնել և անջատել այն: Այս նախագիծը փորձելը հիանալի միջոց է ներդրված ծրագրավորում սկսելու համար և հուսով եմ ավելի լավ պատկերացում կազմելու, թե ինչպես է աշխատում համակարգիչը:
Ի՞նչ է ձեզ պետք:
Սարքավորումներ
- Ազնվամորի PI 3
- SD քարտ նախապես բեռնված bootable պատկերով
- Breadboard
- Արական իգական ցատկող լարեր
- Արական Արական ցատկող լարեր
- LED
- 220 օմ դիմադրություն (պարտադիր չէ, որ լինի ճշգրիտ 220 օհմ, ցանկացած դիմադրիչի մեծ մասը կաշխատի)
- մինի sd քարտ
- մինի SD քարտ նախապես բեռնված ազնվամորու pi օպերացիոն համակարգով (սովորաբար ներառված է pi- ի հետ)
Ծրագրային ապահովում
- GCC կազմող
- GNU ներդրված գործիքաշղթա
- տեքստային խմբագիր
- sd քարտի ձևաչափիչ
Լավ, եկեք սկսենք:
Քայլ 1. ԲԱՆ/ԿԱՐԳԱՎԻԱԿԻ ԿԱՐԳԱՎՈՐՈՄ

Լավ … առաջին քայլը սարքավորում ձեռք բերելն է: Դուք կարող եք առանձին գնել մասերը կամ կա մի հավաքածու, որը գալիս է ավելի քան բավարար մասերով: ԿԱՊ
Այս հավաքածուն գալիս է այն ամենով, ինչ անհրաժեշտ է ազնվամորի pi 3 և ավելին տեղադրելու համար: միակ բանը, որը ներառված չէ այս հավաքածուի մեջ, լրացուցիչ մինի SD քարտ է: Սպասի! Դեռևս մեկ ուրիշը մի գնեք: Եթե չեք պլանավորում օգտագործել քարտի վրա նախապես բեռնված linux- ի տեղադրումը, ապա պարզապես պատճենեք ներառված մինի sd քարտի բովանդակությունը հետագայում և նորից ձևաչափեք քարտը (դրա մասին ավելի ուշ): ԿԱՐԵՎՈՐ ՈEՇԱԴՐՈԹՅՈՆ. Համոզվեք, որ ֆայլերը պահում եք ներառված քարտի վրա, որի կարիքը կունենաք հետագայում:
Հաջորդը ժամանակն է տեղադրել ծրագրակազմը: Այս ձեռնարկը չի ներառի մանրամասն հրահանգներ, թե ինչպես տեղադրել ծրագրակազմը: Կան բազմաթիվ ռեսուրսներ և ձեռնարկներ առցանց, թե ինչպես տեղադրել դրանք.
Պատուհանների օգտվողներ.
Ներբեռնեք և տեղադրեք gcc
Հաջորդը, ներբեռնեք և տեղադրեք GNU ARM- ի ներդրված գործիքաշղթան:
LINUX/MAC
- Linux- ի բաշխումները գալիս են նախապես տեղադրված gcc- ով
- Ներբեռնեք և տեղադրեք GNU ARM ներդրված գործիքաշղթա:
Լավ
arm-none-eabi-gcc
Ելքը պետք է նման լինի առաջին նկարին: Սա պարզապես ստուգելու համար, որ այն ճիշտ տեղադրված է:
Դե, հիմա, երբ նախապայմանները դուրս են եկել ճանապարհից, ժամանակն է սկսել զվարճալի իրերով:
Քայլ 2. ՇՐIRԱՆ



Շղթայի ժամանակը: Դրա համար միացումը պարզ է: Մենք միացնում ենք led- ը GPIO 21 -ին (փին 40) pi- ի վրա (տես նկար 2 և 3): Մի ռեզիստորը նույնպես միացված է մի շարք `կանխելու համար, որ լարերը վնասվեն: Ռեզիստորը միացված կլինի տախտակի բացասական սյունակին, որը միացված կլինի pi- ի GND- ին (39 -րդ փին): Led- ը միացնելիս անպայման միացրեք կարճ ծայրը բացասական կողմին: Տես վերջին նկարը
Քայլ 3: BOOTABLE Mini SD



Երեք քայլ կա, որպեսզի ձեր pi 3 -ը ճանաչի ձեր դատարկ մինի sd քարտը: Մենք պետք է գտնենք և պատճենենք bootcode.bin, start.elf և fixup.dat: Դուք կարող եք ստանալ այս ֆայլերը ներառված մինի sd քարտի վրա, եթե գնել եք canakit- ը կամ bootable sd քարտ պատրաստել pi 3 -ի համար linux բաշխմամբ: Ամեն դեպքում, այս ֆայլերը անհրաժեշտ են, որպեսզի pi- ն ճանաչի sd քարտը որպես bootable սարք: Հաջորդը, մինի sd- ն ձևակերպեք fat32- ին (մինի sd քարտերի մեծ մասը ձևակերպված են fat32- ում: Ես sandisk- ից օգտագործել եմ էժան մինի sd քարտ), տեղափոխել bootcode.bin, start.elf, fixup.dat sd քարտի վրա: Եվ ավարտեցիք: Լավ է ևս մեկ անգամ, և նկարների հաջորդականությամբ քայլերը հետևյալն են.
- Գտեք bootcode.bin, start.elf, fixup.dat:
- Համոզվեք, որ ձեր sd քարտը ձևաչափված է fat32:
- Տեղափոխեք bootcode.bin, start.elf և fixup.dat ձևաչափված sd քարտի վրա:
Ահա թե ինչպես ես դա պարզեցի, հղում:
Քայլ 4. Ստուգեք Mini SD- ն


Լավ, մենք ունենք bootable mini sd քարտ, և հուսանք, որ այս պահին դուք ունեք pi 3: Այսպիսով, այժմ մենք պետք է փորձարկենք այն `համոզվելու համար, որ pi 3 -ը ճանաչում է mini SD քարտը որպես bootable:
Pi- ի վրա, մինի USB պորտի մոտ կան երկու փոքր լեդեր: Մեկը կարմիր է: Սա էներգիայի ցուցիչն է: Երբ pi- ն էներգիա է ստանում, այս լույսը պետք է վառված լինի: Այսպիսով, եթե ձեր pi- ն միացնում եք այս պահին առանց մինի sd քարտի, այն պետք է լուսավորվի կարմիրով: Դե, հիմա անջատեք ձեր pi- ն և տեղադրեք ձեր bootable mini SD քարտը, որը ստեղծվել էր նախորդ քայլում և միացրեք pi- ն: Դուք այլ լույս տեսնու՞մ եք: Պետք է լինի կանաչ լույս, անմիջապես կարմիրի կողքին, որը ցույց է տալիս, որ կարդում է sd քարտը: Այս led- ը կոչվում է ACT led: Այն կլուսավորվի, երբ տեղադրվի կենսունակ sd քարտ: Այն կպայծառանա, երբ այն մուտք գործի ձեր մինի sd քարտ:
Լավ, այնպես որ երկու բան պետք է տեղի ունենար ՝ bootable mini SD քարտը տեղադրելուց և pi- ն միացնելուց հետո.
- Կարմիր լուսարձակը պետք է լուսավորված լինի ՝ նշելով հոսանքի ընդունումը
- Կանաչ լուսարձակը պետք է լուսավորված լինի ՝ նշելով, որ այն միացել է մինի sd քարտին
Եթե ինչ -որ բան սխալ է եղել, փորձեք կրկնել նախորդ քայլերը կամ լրացուցիչ տեղեկությունների համար կտտացրեք ստորև նշված հղմանը:
Հղումը այստեղ լավ տեղեկանք է:
Քայլ 5 ՝ ԿՈԴ 1
Այս նախագիծը գրված է ARM հավաքման լեզվով: Այս ձեռնարկում ենթադրվում է ARM հավաքման հիմնական հասկացություն, բայց ահա մի քանի բան, որ դուք պետք է իմանաք.
.equ: նշանակություն է տալիս խորհրդանիշին, այսինքն abc.equ 5 abc այժմ ներկայացնում է հինգը
- ldr: բեռներ հիշողությունից
- փող. գրում է հիշողության մեջ
- cmp: համեմատում է երկու արժեք ՝ հանում կատարելով: Սահմանում է դրոշներ:
- բ. ճյուղից պիտակ
- ավելացնել. կատարում է թվաբանություն
Եթե Arm հավաքման հետ փորձ չունեք, դիտեք այս տեսանյութը: Այն ձեզ լավ կհասկանա Arm հավաքման լեզուն:
Լավ, հիմա մենք ունենք մի շրջան, որը կապված է մեր ազնվամորու pi 3 -ի հետ և մենք ունենք SD քարտ, որը pi- ն ճանաչում է, ուստի մեր հաջորդ խնդիրն է պարզել, թե ինչպես փոխազդել շրջանի հետ `բեռնելով pi- ն գործարկվող ծրագրով: Ընդհանուր առմամբ, այն, ինչ մենք պետք է անենք, այն է, որ pi- ն լարման թողնի GPIO 21 -ից (կարմիր մետաղալարին միացված քորոց): Հետո մեզ անհրաժեշտ է միացնել լուսարձակը թարթելու համար: Դա անելու համար մեզ անհրաժեշտ է ավելի շատ տեղեկատվություն: Այս պահին մենք գաղափար չունենք, թե ինչպես ասել GPIO 21 -ին ելքի համար, այդ իսկ պատճառով մենք պետք է կարդանք տվյալների թերթիկը: Միկրոհսկիչների մեծամասնությունը ունի տվյալների թերթեր, որոնք հստակ նշում են, թե ինչպես է ամեն ինչ աշխատում: Unfortunatelyավոք, pi 3 -ը չունի պաշտոնական փաստաթղթեր: Այնուամենայնիվ, կա ոչ պաշտոնական տվյալներ: Ահա դրա երկու հղումներ.
- github.com/raspberrypi/documentation/files…
- web.stanford.edu/class/cs140e/docs/BCM2837…
Լավ այս պահին, հաջորդ քայլին անցնելուց առաջ պետք է մի քանի րոպե տրամադրեք ՝ թերթելու թերթիկը և տեսնելու, թե ինչ տեղեկատվություն կարող եք գտնել:
Քայլ 6 ՝ ԿՈԴ 2 ՝ Turn_Led_ON



Ազնվամորու pi 3 53 գրանցվում է ելքային/մուտքային կապում (ծայրամասային սարքեր) վերահսկելու համար: Քորոցները խմբավորված են միասին և յուրաքանչյուր խումբ նշանակվում է գրանցամատյանում: GPIO- ի համար մենք պետք է կարողանանք մուտք գործել SELECT գրանցամատյան, SET գրանցամատյան և CLEAR գրանցամատյաններ: Այս գրանցամատյաններին մուտք գործելու համար մեզ անհրաժեշտ են այս գրանցամատյանների ֆիզիկական հասցեները: Երբ կարդում եք տվյալների թերթիկը, ցանկանում եք նշել միայն հասցեի փոխհատուցումը (բոյթ) և ավելացնել այն հիմնական հասցեին: Դուք պետք է դա անեք, քանի որ տվյալների թերթը ներկայացնում է linux վիրտուալ հասցեն, որոնք հիմնականում արժեքներ են, որոնք հատկացված են օպերացիոն համակարգերին: Մենք չենք օգտագործում օպերացիոն համակարգ, այնպես որ մենք պետք է ուղղակի մուտք գործենք այս գրանցամատյաններ ՝ օգտագործելով ֆիզիկական հասցեն: Դրա համար ձեզ անհրաժեշտ են հետևյալ տեղեկությունները.
- Ipայրամասային սարքերի հիմնական հասցեն ՝ 0x3f200000: Pdf- ում (էջ 6) ասվում է, որ հիմնական հասցեն է ՝ 0x3f000000, այնուամենայնիվ, այս հասցեն չի աշխատի: Օգտագործեք 0x3f200000
- FSEL2- ի (SELECT) հաշվանցումը գրանցամատյանի ամբողջական հասցեն չէ: Pdf- ում նշված է FSEL2 հասցեն ՝ 0x7E20008, սակայն այս հասցեն վերաբերում է linux վիրտուալ հասցեին: Օֆսեթը նույնն է լինելու, ինչ ուզում ենք նշել: 0x08
- GPSET0 (SET) օֆսեթ ՝ 0x1c
- GPCLR0- ի փոխհատուցում (Մաքրել) ՝ 0x28
Այսպիսով, դուք հավանաբար նկատեցիք, որ տվյալների թերթիկը թվարկում է 4 SELECT գրանցամատյան, 2 SET գրանցամատյան և 2 CLEAR գրանցամատյան, ուստի ինչու՞ ընտրեցի այն, ինչ արել եմ: Դա պայմանավորված է նրանով, որ մենք ցանկանում ենք օգտագործել GPIO 21, իսկ FSEL2- ը ՝ GPIO 20-29, SET0 և CLR0 ՝ GPIO 0-31: FSEL գրանցամատյանները յուրաքանչյուր GPIO կապի համար տալիս են երեք բիթ: Քանի որ մենք օգտագործում ենք FSEL2- ը, դա նշանակում է 0-2 բիթ վերահսկող GPIO 20, և բիթ 3-5 բիթ GPIO 21 և այլն: Set և CLR գրանցամատյանները յուրաքանչյուր պինին տալիս են մեկ բիթ: Օրինակ, SET0- ի և CLR0- ի 0 բիթը վերահսկում է GPIO 1. GPIO 21- ը վերահսկելու համար դուք պետք է սահմանեք 21 բիթը SET0- ում և CLR0- ում:
Լավ, մենք խոսեցինք այն մասին, թե ինչպես մուտք գործել այս գրանցամատյանները, բայց ի՞նչ է դա նշանակում:
- FSEL2 գրանցամատյանը կօգտագործվի GPIO 21 ելքը կարգավորելու համար: Ելքի վրա քորոց դնելու համար հարկավոր է երեք բիթերի lo կարգի բիթը սահմանել 1. Այսպիսով, եթե 3-5 բիթերը վերահսկում են GPIO 21-ը, դա նշանակում է, որ մենք պետք է սահմանենք առաջին բիթը, բիթը 3-ից 1-ը: Սա կասի pi- ին որ մենք ցանկանում ենք օգտագործել GPIO 21 -ը որպես ելք: Այսպիսով, եթե մենք նայենք GPIO 21 -ի 3 բիթերին, դրանք պետք է այսպիսին լինեն այն բանից հետո, երբ այն դնում ենք ելքի վրա, b001:
- GPSET0- ը pi- ին ասում է, որ միացնի քորոցը (թողարկի լարում): Դա անելու համար մենք պարզապես փոխում ենք այն բիթը, որը համապատասխանում է մեր ուզած GPIO կապին: Մեր դեպքում `բիթ 21:
- GPCLR0- ը pi- ին ասում է անջատել քորոցը (առանց լարման): Պինն անջատելու համար բիթը սահմանեք համապատասխան GPIO կապի վրա: Մեր դեպքում բիթ 21
Մինչև թարթող լուսադիոդին հասնելը, նախ եկեք կազմենք մի պարզ ծրագիր, որը պարզապես կմիացնի լուսարձակը:
Սկսելու համար մենք պետք է երկու հրահանգ ավելացնենք մեր սկզբնական կոդի վերևում:
- .section.init- ը պիին ասում է, թե որտեղ տեղադրել կոդը
- . գլոբալ _սկսել
Հաջորդը, մենք պետք է դասավորենք այն բոլոր հասցեները, որոնք մենք կօգտագործենք: Օգտագործեք.equ- ը արժեքներին ընթերցվող խորհրդանիշներ նշանակելու համար:
- .equ GPFSEL2, 0x08
- .equ GPSET0, 0x1c
- .equ GPCLR0, 0x28
- .equ BASE, 0x3f200000
Այժմ մենք պատրաստվում ենք դիմակներ ստեղծել ՝ սահմանելու համար անհրաժեշտ բիթերը:
- .equ SET_BIT3, 0x08 Սա երեք բիթը կդնի 0000_1000
- . Equ SET_BIT21, 0x200000
Այնուհետեւ մենք պետք է ավելացնենք մեր _start պիտակը
_սկսել:
Տեղադրեք բազայի հասցեն գրանցամատյանում
ldr r0, = ԲԱEԻՆ
Այժմ մենք պետք է սահմանենք GPFSEL2- ի bit3
- ldr r1, SET_BIT3
- str r1, [r0, #GPFSEL2] Այս հրահանգը ասում է ՝ 0x08 բիթը հետ գրել GPFSEL2 հասցեով
Ի վերջո, մենք պետք է GPIO 21 -ը միացնենք GPSET0 գրանցամատյանում բիթ 21 տեղադրելով
- ldr r1, = SET_BIT21
- փող r1, [r0, #GPSET0]
Վերջնական արտադրանքը պետք է նման լինի պատկերված ծածկագրին:
Հաջորդ քայլը ծածկագիրը կազմելն է և.img ֆայլ ստեղծելը, որը pi- ն կարող է գործարկել:
- Ներբեռնեք կցված makefile- ը և kernel.ld- ը, և եթե ցանկանում եք turn_led_on.s- ի աղբյուրի կոդը:
- Տեղադրեք բոլոր ֆայլերը նույն թղթապանակում:
- Եթե դուք օգտագործում եք ձեր սեփական աղբյուրի կոդը, խմբագրեք makefile- ը և փոխարինեք = turn_led_on.s ծածկագրով =.s ծածկագրով
- Պահպանեք կազմաձևը:
- Օգտագործեք տերմինալը (linux) կամ cmd պատուհանը (պատուհաններ) ՝ ֆայլեր պարունակող ձեր թղթապանակ նավարկելու համար և մուտքագրեք make և սեղմեք enter
- Ստեղծման ֆայլը պետք է առաջացնի ֆայլ, որը կոչվում է kernel.img
- Պատճենեք kernel.img- ը ձեր մինի sd քարտի վրա: Ձեր քարտերի բովանդակությունը պետք է լինի այնպես, ինչպես պատկերված է (նկար 3) ՝ bootcode.bin, start.elf, fixup.dat և kernel.img:
- Հեռացրեք մինի sd քարտը և տեղադրեք այն pi- ի մեջ
- Միացրեք pi- ն էներգիայի աղբյուրին
- LED- ը պետք է լուսավորվի !!!
ԱՌԱ ԿԱՐԵՎՈՐ EԱՆՈԹՈԹՅՈՆ. Ըստ երևույթին, հրահանգվող ծրագրերի հետ կապված խնդիր էր առաջացել makefile- ի ընդլայնում չունենալու պատճառով, ուստի այն նորից վերբեռնեցի.txt ընդլայնմամբ: Խնդրում ենք հեռացնել ընդլայնումը, երբ այն բեռնում եք, որպեսզի այն ճիշտ աշխատի:
Խորհուրդ ենք տալիս:
Էլեկտրոնային նշան LED թարթող ռոբոտի նշան - oldոդման հավաքածու ՝ 11 քայլ

Electronic Badge LED Blinking Robot Badge - Soldering Kit. Այս հոդվածը հպարտորեն հովանավորվում է PCBWAY- ի կողմից: Փորձեք այն ինքներդ ձեզ համար և ստացեք 10 հատ PCB ընդամենը $ 5 -ով PCBWAY- ում ՝ շատ մեծ որակով: Շնորհակալություն PCBWAY: Robadge#1, որը ես մշակեցի
Թարթող Led օգտագործելով Arduino (TinkerCAD) ՝ 5 քայլ

Թարթող Led օգտագործելով Arduino (TinkerCAD). HI! Այս ուսուցողականը լինելու է բավականին հիմնական: Այստեղ ես ցույց կտամ, թե ինչպես օգտագործել TinkerCAD- ը Arduino- ի միջոցով Led- ը թարթելու համար: TinkerCAD- ը բավականին օգտակար ծրագիր է, երբ խոսքը վերաբերում է ձեր կոդը արագ փորձարկելուն և շատ հարմար է նրանց համար, ովքեր
LED թարթող {կոճակը վերահսկվում է} ՝ 5 քայլ

LED- ը թարթում է {կոճակը վերահսկվում է}. Ես ուսանող եմ Kang Chiao- ում: Սա իմ նախագիծն է, ես օգտագործում եմ Arduino- ն և պատրաստեցի լուսադիոդային լուսարձակը, որի կոճակը կարող է թարթել: Կարող եք այն դնել ձեր կտորի վրա և երբ որոշ մարդիկ ձեզ շատ մոտ են, կարող եք սեղմել կոճակը և լամպը
Հելոուինի նախագիծ ՝ գանգով, Arduino- ով, թարթող LED- ներով և ոլորվող աչքերով - Maker, MakerED, MakerSpaces: 4 քայլ

Հելոուինի նախագիծ ՝ գանգով, Arduino- ով, թարթող LED- ներով և ոլորվող աչքերով | Maker, MakerED, MakerSpaces: Halloween Project with Skull, Arduino, Blinking LEDs and Scrolling EyesSoon- ը Հելոուինն է, ուստի եկեք ստեղծենք սարսափելի նախագիծ ՝ կոդավորմամբ և DIY- ով (մի փոքր խեղդելով…): Ձեռնարկը նախատեսված է այն մարդկանց համար, ովքեր չունեն 3D տպիչ, մենք կօգտագործենք 21 սմ պլաստիկ
Սկսեք ձեր առաջին նախագիծը ազնվամորիով. Թարթող LED: 4 քայլ

Սկսեք ձեր առաջին նախագիծը ազնվամորու միջոցով. Թարթող լուսադիոդ: Այս նախագծում ես ձեզ ցույց կտամ, թե ինչպես ծրագրավորել Raspberry Pi- ն ՝ LED թարթելու համար, եթե դուք գրեթե գնել եք Raspberry pi և չգիտեք, թե որտեղից սկսել, սա ձեռնարկը տեղավորվում է: Բացի Raspbian- ով աշխատող ձեր Raspberry Pi- ից, դուք