Orodha ya maudhui:

Baa ya Raspberry Pi 3: Kuangaza kwa LED: Hatua 8
Baa ya Raspberry Pi 3: Kuangaza kwa LED: Hatua 8

Video: Baa ya Raspberry Pi 3: Kuangaza kwa LED: Hatua 8

Video: Baa ya Raspberry Pi 3: Kuangaza kwa LED: Hatua 8
Video: Штукатурка стен - самое полное видео! Переделка хрущевки от А до Я. #5 2024, Julai
Anonim
Baa ya Raspberry Pi 3: Kuangaza kwa LED
Baa ya Raspberry Pi 3: Kuangaza kwa LED

Fuata Zaidi na mwandishi:

Kitufe cha Raspberry Pi na Kitufe cha LED
Kitufe cha Raspberry Pi na Kitufe cha LED
Kitufe cha Raspberry Pi na Kitufe cha LED
Kitufe cha Raspberry Pi na Kitufe cha LED
Makreti
Makreti
Makreti
Makreti
Jinsi ya Kufanya Mchoro wa Usaidizi kwa Siku ya Maveterani
Jinsi ya Kufanya Mchoro wa Usaidizi kwa Siku ya Maveterani
Jinsi ya Kufanya Mchoro wa Usaidizi kwa Siku ya Maveterani
Jinsi ya Kufanya Mchoro wa Usaidizi kwa Siku ya Maveterani

Kuhusu:.oO0Oo. Zaidi Kuhusu moldypizza »

Karibu kwenye BARE METAL pi 3 Kupepesa mafunzo ya LED!

Katika mafunzo haya tutapitia hatua, kuanzia mwanzo hadi mwisho, kupata mwangaza wa LED ukitumia Raspberry PI 3, ubao wa mkate, kontena, iliyoongozwa, na kadi tupu ya SD.

Kwa hivyo metali ya BARE ni nini? BARE METAL hakuna programu ya kuburudisha. Bare chuma inamaanisha kuwa tunasimamia kikamilifu kile kompyuta itafanya mpaka kidogo. Kwa hivyo inamaanisha kimsingi kwamba nambari itaandikwa kabisa katika mkusanyiko, kwa kutumia seti ya maagizo ya Arm. Mwisho tutakuwa tumeunda programu ambayo itamulika taa ya LED kwa kupata anwani ya moja ya pini za Gaspio ya Raspberry Pi na kuisanidi ili itoe na kisha kuibadilisha na kuzima. Kujaribu mradi huu, ni njia nzuri ya kuanza na programu iliyoingia na tunatumai kutoa ufahamu mzuri wa jinsi kompyuta inavyofanya kazi.

Unahitaji nini?

Vifaa

  • Raspberry PI 3
  • Kadi ya SD imepakiwa mapema na picha ya bootable
  • Bodi ya mkate
  • Waya wa kiume wa kuruka
  • Waya wa kiume wa kuruka
  • LED
  • Kinga ya 220 ohm (haifai kuwa sawa na ohms 220, kinzani yoyote itafanya kazi)
  • kadi ndogo ya sd
  • kadi ndogo ya sd iliyobeba mfumo wa uendeshaji wa rasipberry pi (kawaida hujumuishwa na pi)

Programu

  • Mkusanyaji wa GCC
  • Chombo cha zana kilichopachikwa cha GNU
  • mhariri wa maandishi
  • fomati ya kadi ya sd

Sawa lets anza!

Hatua ya 1: KUWEKA MAMBO / KUJIMA

KUWEKA MAMBO / KUJIMA
KUWEKA MAMBO / KUJIMA

Sawa hivyo… hatua ya kwanza ni kupata vifaa. Unaweza kununua sehemu hizo kando au kuna kit ambacho huja na sehemu zaidi ya ya kutosha. KIUNGO

Kit hiki kinakuja na kila kitu kinachohitajika ili kusanidi rasipberry pi 3 na zaidi! kitu pekee ambacho hakijajumuishwa kwenye kit hiki ni kadi ya ziada ya mini sd. Subiri! Usinunue nyingine bado. Ikiwa huna mpango wa kutumia usanikishaji wa linux uliopakiwa mapema kwenye kadi basi nakala tu yaliyomo kwenye kadi ya mini ya sd iliyojumuishwa baadaye na upange tena kadi (zaidi hapo baadaye). TAARIFA MUHIMU: hakikisha unaweka faili kwenye kadi iliyojumuishwa utazihitaji baadaye!

Ifuatayo ni wakati wa kuanzisha programu. Mafunzo haya hayatajumuisha maagizo ya kina juu ya jinsi ya kusanikisha programu. Kuna rasilimali nyingi na mafunzo kwenye mtandao juu ya jinsi ya kusanikisha hizi:

Watumiaji wa Dirisha:

Pakua na usakinishe gcc

Ifuatayo, pakua na usakinishe zana ya zana iliyowekwa ndani ya ARM

LINUX / MAC

  • Usambazaji wa Linux huja na gcc iliyosanikishwa mapema
  • Pakua na usakinishe zana ya zana iliyowekwa ndani ya ARM.

Sawa kwa hivyo ikiwa yote yatakwenda sawa basi unapaswa kuweza kufungua terminal (linux / mac) au cmd line (windows) na ujaribu kuandika

mkono-hakuna-eabi-gcc

Pato linapaswa kuonekana sawa na picha ya kwanza. Hii ni kuhakikisha tu kuwa imewekwa kwa usahihi.

Sawa sasa kwa kuwa mahitaji ya awali yametoka, ni wakati wa kuanza na vitu vya kupendeza.

Hatua ya 2: MZUNGUKO

MZUNGUKO
MZUNGUKO
MZUNGUKO
MZUNGUKO
MZUNGUKO
MZUNGUKO

Wakati wa mzunguko! Mzunguko wa hii ni rahisi. Tutaunganisha iliyoongozwa kwa GPIO 21 (pini 40) kwenye pi (angalia picha 2 na 3). Kinzani pia imeunganishwa katika safu ili kuzuia kuongozwa kuharibiwa. Kontena litaunganishwa na safu hasi kwenye ubao wa mkate ambayo itaunganishwa na GND (pini 39) kwenye pi. Wakati wa kuunganisha iliyoongozwa hakikisha unganisha mwisho mfupi kwa upande hasi. Tazama picha ya mwisho

Hatua ya 3: BOOTABLE Mini SD

BOOTABLE Mini SD
BOOTABLE Mini SD
BOOTABLE Mini SD
BOOTABLE Mini SD
BOOTABLE Mini SD
BOOTABLE Mini SD

Kuna hatua tatu za kumfanya pi 3 atambue kadi yako tupu ya sd mini. Tunahitaji kupata na kunakili bootcode.bin, start.elf, na fixup.dat. Unaweza kupata faili hizi kwenye kadi ya mini ya sd ikiwa umeinunua canakit au tengeneza sd kadi ya boot ya pi 3 na usambazaji wa linux. Kwa vyovyote vile faili hizi ni muhimu kuruhusu pi kutambua kadi ya sd kama kifaa cha bootable. Ifuatayo, fomati sd mini hadi fat32 (kadi nyingi za mini sd zinapangiliwa katika fat32. Nilitumia kadi ndogo ya mini sd kutoka sandisk), songa bootcode.bin, start.elf, fixup.dat kwenye kadi ya sd. Na umemaliza! Sawa mara moja zaidi na kwa mpangilio wa picha hatua ni:

  1. Pata bootcode.bin, anza.elf, fixup.dat.
  2. Hakikisha kadi yako ya sd imeundwa kwa fat32.
  3. Sogeza bootcode.bin, start.elf, na fixup.dat kwenye kadi ya sd iliyoumbizwa.

Hivi ndivyo nilivyogundua hii, kiunga.

Hatua ya 4: CHECK Mini SD

CHEKI Mini SD
CHEKI Mini SD
CHEKI Mini SD
CHEKI Mini SD

Sawa, tuna kadi ndogo ya sd inayoweza kushonwa, na tunatumai una pi 3 wakati huu. Kwa hivyo sasa tunapaswa kuijaribu ili kuhakikisha pi 3 inatambua kadi ndogo ya sd kama inayoweza kutumika.

Kwenye pi, karibu na bandari ya usb mini kuna mbili zilizoongozwa. Moja ni nyekundu. Hii ndio kiashiria cha nguvu. Wakati pi inapokea nguvu taa hii inapaswa kuwashwa. Kwa hivyo ukiziba pi yako hivi sasa bila kadi ndogo ya sd inapaswa kuwasha nyekundu. Sawa sasa ondoa pi yako na uweke kwenye sd kadi yako ya mini bootable ambayo iliundwa katika hatua iliyopita na ingiza pi ndani. Je! Unaona taa nyingine? Inapaswa kuwa na taa ya kijani, karibu na ile nyekundu, ambayo inaonyesha kuwa inasoma kadi ya sd. Uongozi huu unaitwa ACT iliyoongozwa. Itaangazia wakati kuna kadi inayofaa ya sd imeingizwa. Itaangaza wakati inapata kadi yako ndogo ya sd.

Sawa kwa hivyo vitu viwili vinapaswa kuwa vimetokea baada ya kuingiza kadi ndogo ya sd ya bootable na kuingiza pi ndani:

  1. Mwongozo mwekundu unapaswa kuangazwa kuonyesha upokeaji wa nguvu
  2. Kijani kilichoongozwa kinapaswa kuangazwa kuonyesha kwamba imeingia kwenye kadi ndogo ya sd

Ikiwa kitu kilienda vibaya jaribu kurudia hatua zilizopita au bonyeza kiungo hapo chini kwa habari zaidi.

Kiungo hapa ni kumbukumbu nzuri.

Hatua ya 5: CODE1

Mradi huu umeandikwa kwa lugha ya mkutano wa ARM. Uelewa wa kimsingi wa mkutano wa ARM unafikiriwa katika mafunzo haya, lakini hapa kuna mambo kadhaa ambayo unapaswa kujua:

. Equ: hutoa thamani kwa ishara, yaani abc.equ 5 abc sasa inawakilisha tano

  • ldr: mizigo kutoka kwa kumbukumbu
  • str: anaandika kwenye kumbukumbu
  • cmp: inalinganisha maadili mawili kwa kufanya kutoa. Inaweka bendera.
  • b: tawi la kuweka lebo
  • ongeza: hufanya hesabu

Ikiwa huna uzoefu wowote na Mkutano wa Arm tazama video hii. Itakupa uelewa mzuri wa lugha ya Mkutano wa Arm.

Sawa hivyo sasa hivi tuna mzunguko ambao umeunganishwa na rasipiberi pi 3 na tuna kadi ya sd ambayo pi inatambua, kwa hivyo jukumu letu linalofuata ni kujua jinsi ya kuingiliana na mzunguko kwa kupakia pi na programu inayoweza kutekelezwa. Kwa ujumla, tunachohitaji kufanya ni kumwambia pi atoe voltage kutoka GPIO 21 (pini iliyounganishwa na waya nyekundu). Kisha tunahitaji njia ya kugeuza iliyoongozwa kuifanya iweze kupepesa. Ili kufanya hivyo tunahitaji habari zaidi. Kwa wakati huu hatujui jinsi ya kuwaambia GPIO 21 ili kutoa ndio sababu lazima tusome data ya data. Watawala-wadogo wengi wana karatasi za data ambazo zinabainisha jinsi kila kitu hufanya kazi. Kwa bahati mbaya, pi 3 haina hati rasmi! Walakini, kuna karatasi ya data isiyo rasmi. Hapa kuna viungo viwili:

  1. github.com/raspberrypi/documentation/files…
  2. web.stanford.edu/class/cs140e/docs/BCM2837…

Sawa kwa wakati huu, unapaswa kuchukua dakika chache kabla ya kuhamia kwenye hatua inayofuata kuangalia kupitia karatasi ya data na uone ni habari gani unayoweza kupata.

Hatua ya 6: CODE2: Turn_Led_ON

CODE2: Turn_Led_ON
CODE2: Turn_Led_ON
CODE2: Turn_Led_ON
CODE2: Turn_Led_ON
CODE2: Turn_Led_ON
CODE2: Turn_Led_ON

Risiberi pi 3 53 husajili kudhibiti pini / pini za kuingiza (vifaa vya pembezoni). Pini zimewekwa pamoja na kila kikundi kimepewa sajili. Kwa GPIO tunahitaji kuweza kupata sajili ya CHAGUA, sajili ya SET, na sajili za WAZI. Ili kupata sajili hizi tunahitaji anwani halisi za sajili hizi. Unaposoma karatasi-ya data unataka tu kuona kipengee cha anwani (lo byte) na uongeze kwenye anwani ya msingi. Lazima ufanye hivi kwa sababu data imeorodhesha anwani halisi ya linux ambayo kimsingi ni maadili ambayo mifumo ya uendeshaji inapeana. Hatutumii mfumo wa kufanya kazi kwa hivyo tunahitaji kupata sajili hizi moja kwa moja kwa kutumia anwani halisi. Kwa hili unahitaji habari ifuatayo:

  • Anwani ya Msingi ya Pembeni: 0x3f200000. Pdf (ukurasa6) inasema kuwa anwani ya msingi ni 0x3f000000, hata hivyo, anwani hii haitafanya kazi. Tumia 0x3f200000
  • Mpangilio wa FSEL2 (CHAGUA) sio anwani kamili ya sajili. Orodha ya pdf FSEL2 kwa 0x7E20008 lakini anwani hii inahusu anwani halisi ya linux. Malipo yatakuwa sawa kwa hivyo ndivyo tunataka kutambua. 0x08
  • Mpangilio wa GPSET0 (SET): 0x1c
  • Malipo ya GPCLR0 (WAZI): 0x28

Kwa hivyo labda umegundua kuwa orodha ya karatasi-daftari orodha 4 za SELECT, rejista 2 za SET, na rejista 2 ZA WAZI kwa nini nilichagua zile nilizofanya? Hii ni kwa sababu tunataka kutumia udhibiti wa GPIO 21 na FSEL2 GPIO 20-29, SET0 na CLR0 udhibiti GPIO 0-31. Sajili ya FSEL inapeana bits tatu kwa kila pini ya GPIO. Kwa kuwa tunatumia FSEL2 hiyo inamaanisha bits 0-2 kudhibiti GPIO 20, na bits 3-5 kudhibiti GPIO 21 na kadhalika. Sajili za Seti na CLR zinagawa kidogo kwa kila pini. Kwa mfano, kidogo 0 katika udhibiti wa SET0 na CLR0 GPIO 1. Kudhibiti GPIO 21 ungeweka 21 katika SET0 na CLR0.

Sawa kwa hivyo tumezungumza juu ya jinsi ya kupata rejista hizi, lakini yote inamaanisha nini?

  • Rejista ya FSEL2 itatumika kuweka GPIO 21 kutoa. Kuweka pini kwenye pato unahitaji kuweka mpangilio wa utaratibu wa bits tatu kwa 1. Kwa hivyo ikiwa bits 3-5 inadhibiti GPIO 21 hiyo inamaanisha tunahitaji kuweka kwanza, kidogo 3 hadi 1. Hii itamwambia pi kwamba tunataka kutumia GPIO 21 kama pato. Kwa hivyo ikiwa tungeangalia bits 3 za GPIO 21 zinapaswa kuonekana kama hii baada ya kuiweka kwa pato, b001.
  • GPSET0 inamwambia pi kuwasha pini (pato la voltage). Ili kufanya hivyo tunabadilisha kidogo ambayo inalingana na pini ya GPIO tunayotaka. Kwa upande wetu, kesi 21.
  • GPCLR0 inamwambia pi azime pini (hakuna voltage). Ili kuzima pini weka kidogo kwenye pini inayolingana ya GPIO. Kwa upande wetu kidogo 21

Kabla hatujafika kwenye mwangaza wa kupepesa, kwanza tufanye programu rahisi ambayo itawasha tu iliyoongozwa.

Kuanza tunahitaji kuongeza maagizo mawili juu ya nambari yetu ya chanzo.

  • kifungu.init inaambia pi mahali pa kuweka nambari
  • mwanzo wa kimataifa

Ifuatayo, tunahitaji kupanga anwani zote tutakazotumia. Tumia.equ kupeana alama zinazosomeka kwa maadili.

  • .ququ GPFSEL2, 0x08
  • .ququ GPSET0, 0x1c
  • .ququ GPCLR0, 0x28
  • .quo BASE, 0x3f200000

Sasa tutaunda vinyago kuweka seti ambazo tunahitaji kuweka.

  • .ququ SET_BIT3, 0x08 Hii itaweka kidogo 0000_1000
  • .ququ SET_BIT21, 0x200000

Kisha tunahitaji kuongeza lebo yetu ya _start

_ anza:

Weka anwani ya msingi kwenye rejista

ldr r0, = Msingi

Sasa tunahitaji kuweka bit3 ya GPFSEL2

  • ldr r1, SET_BIT3
  • str r1, [r0, # GPFSEL2] Maagizo haya yanasema kuandika kidogo 0x08 kwa anwani ya GPFSEL2

Mwishowe tunahitaji kuweka GPIO 21 kwa kuweka 21 kwenye rejista ya GPSET0

  • ldr r1, = SET_BIT21
  • str r1, [r0, # GPSET0]

Bidhaa ya mwisho inapaswa kuangalia kitu kama nambari iliyoonyeshwa.

Hatua inayofuata ni kukusanya nambari na kuunda faili ya.img ambayo pi inaweza kuendesha.

  • Pakua faili iliyoambatanishwa, na kernel.ld na ikiwa unataka msimbo wa chanzo wa turn_led_on.s.
  • Weka faili zote kwenye folda moja.
  • Ikiwa unatumia msimbo wako wa chanzo hariri faili ya faili na ubadilishe nambari = turn_led_on.s na code =.s
  • Hifadhi faili ya kutengeneza.
  • Tumia terminal (linux) au cmd windows (windows) kuelekea kwenye folda yako iliyo na faili na andika tengeneza na hit Enter
  • Faili ya kutengeneza inapaswa kutoa faili inayoitwa kernel.img
  • Nakili kernel.img kwenye kadi yako ndogo ya sd. Yaliyomo kwenye kadi zako yanapaswa kuwa kama picha (picha 3): bootcode.bin, start.elf, fixup.dat, na kernel.img.
  • Toa kadi ndogo ya sd na uiingize kwenye pi
  • Chomeka pi kwenye chanzo cha umeme
  • LED inapaswa kuangaza !!!

KUMBUKA MUHIMU KWA KIASI: Inavyoonekana kuwa mafundisho yalikuwa na shida na faili ya kutokuwa na ugani, kwa hivyo niliipakia tena na ugani wa.txt. Tafadhali ondoa kiendelezi unapopakua ili kifanye kazi vizuri.

Ilipendekeza: