Tartalomjegyzék:

Csupasz fém Raspberry Pi 3: Villogó LED: 8 lépés
Csupasz fém Raspberry Pi 3: Villogó LED: 8 lépés

Videó: Csupasz fém Raspberry Pi 3: Villogó LED: 8 lépés

Videó: Csupasz fém Raspberry Pi 3: Villogó LED: 8 lépés
Videó: Начало работы с QLC+ Управление цветомузыкой с компьютера. Как управлять светом. 2024, November
Anonim
Csupasz fém Raspberry Pi 3: Villogó LED
Csupasz fém Raspberry Pi 3: Villogó LED

Kövesse a szerző további információit:

Raspberry Pi nyomógomb, csupasz fém LED -ekkel
Raspberry Pi nyomógomb, csupasz fém LED -ekkel
Raspberry Pi nyomógomb, csupasz fém LED -ekkel
Raspberry Pi nyomógomb, csupasz fém LED -ekkel
Ládák
Ládák
Ládák
Ládák
Hogyan készítsünk segítő faragást a veteránok napjára
Hogyan készítsünk segítő faragást a veteránok napjára
Hogyan készítsünk segítő faragást a veteránok napjára
Hogyan készítsünk segítő faragást a veteránok napjára

Körülbelül:.oO0Oo. További információ a moldypizza -ról »

Üdvözöljük a BARE METAL pi 3 villogó LED bemutatójában!

Ebben az oktatóanyagban végigjárjuk a lépéseket az elejétől a végéig, hogy egy LED villogjon egy Raspberry PI 3, egy kenyérlap, egy ellenállás, egy led és egy üres SD -kártya segítségével.

Tehát mi az a BARE METAL? A BARE METAL nem sallang programozás. A csupasz fém azt jelenti, hogy teljes mértékben mi irányítjuk, hogy a számítógép mit fog tenni. Ez tehát alapvetően azt jelenti, hogy a kódot az összeállításban, az élesítési utasításkészlet segítségével írják le. A végére létrehoztunk egy programot, amely villogni kezd egy LED -et, elérve a Raspberry Pi egyik GPIO lábának fizikai címét, és konfigurálva a kimenetet, majd be- és kikapcsolva. Ennek a projektnek a kipróbálása nagyszerű módja annak, hogy elkezdjük a beágyazott programozást, és remélhetőleg jobban megértsük a számítógép működését.

Mire van szükséged?

Hardver

  • Málna PI 3
  • SD-kártya, előre telepített rendszerindító képpel
  • Kenyeretábla
  • Férfi Női jumper vezetékek
  • Férfi Férfi jumper vezetékek
  • VEZETTE
  • 220 ohmos ellenállás (nem kell pontosan 220 ohm, a legtöbb ellenállás működik)
  • mini sd kártya
  • mini sd kártya, előre telepítve málna pi operációs rendszerrel (általában a pi -vel együtt)

Szoftver

  • GCC fordító
  • GNU beágyazott eszköztár
  • szöveg szerkesztő
  • sd kártya formázó

Rendben, kezdjük el!

1. lépés: DOLGOK BEÁLLÍTÁSA/TÖLTÉS

DOLGOK BEÁLLÍTÁSA/TÖLTÉS
DOLGOK BEÁLLÍTÁSA/TÖLTÉS

Oké… az első lépés a hardver megszerzése. Az alkatrészeket külön is megvásárolhatja, vagy van egy készlet, amely több mint elegendő alkatrészt tartalmaz. LINK

Ez a készlet mindent tartalmaz, ami a málna pi 3 és több beállításához szükséges! az egyetlen dolog, ami nem szerepel ebben a készletben, egy extra mini sd kártya. Várjon! Ne vásároljon még egyet. Ha nem tervezi a kártyára előre betöltött linux telepítés használatát, akkor csak másolja át a mellékelt mini sd kártya tartalmát későbbre, és formázza újra a kártyát (erről később). FONTOS MEGJEGYZÉS: ügyeljen arra, hogy a fájlokat a mellékelt kártyán őrizze meg, és később szükségük lesz rájuk!

A következő lépés a szoftver beállítása. Ez az oktatóanyag nem tartalmaz részletes utasításokat a szoftver telepítéséhez. Az interneten sok forrás és oktatóanyag található ezek telepítésére:

WINDOWS FELHASZNÁLÓK:

Töltse le és telepítse a gcc -t

Ezután töltse le és telepítse a GNU ARM beágyazott eszköztárat

LINUX/MAC

  • A Linux disztribúciókhoz előre telepített gcc tartozik
  • Töltse le és telepítse a GNU ARM beágyazott eszköztárat.

Rendben, tehát ha minden jól megy, akkor képesnek kell lennie megnyitni a terminált (linux/mac) vagy a cmd sort (Windows), és megpróbálni gépelni

kar-nincs-eabi-gcc

A kimenetnek hasonlónak kell lennie az első képhez. Ez csak annak ellenőrzése, hogy helyesen van -e telepítve.

Rendben, most, hogy az előfeltételek nem állnak rendelkezésre, ideje elkezdeni a szórakoztató dolgokat.

2. lépés: ÁRAMKÖR

ÁRAMKÖR
ÁRAMKÖR
ÁRAMKÖR
ÁRAMKÖR
ÁRAMKÖR
ÁRAMKÖR

Köridő! Ennek áramköre egyszerű. Csatlakoztatunk egy led -et a GPIO 21 -hez (40 -es tű) a pi -n (lásd a 2. és 3. képet). Egy ellenállás is sorba van kötve, hogy megakadályozza a led sérülését. Az ellenállás a kenyértáblán lévő negatív oszlophoz lesz csatlakoztatva, amely a GND -hez (39. láb) csatlakozik. A LED csatlakoztatásakor feltétlenül csatlakoztassa a rövid végét a negatív oldalhoz. Lásd az utolsó képet

3. lépés: BOOTABLE Mini SD

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

Három lépésben lehet elérni, hogy a pi 3 felismerje az üres mini sd kártyát. Meg kell találnunk és másolnunk kell a bootcode.bin, start.elf és fixup.dat fájlokat. Ezeket a fájlokat a mellékelt mini sd -kártyán szerezheti be, ha megvásárolta a canakit -ot, vagy készít egy indítható sd -kártyát a pi 3 -hoz linuxos elosztással. Akárhogy is, ezek a fájlok szükségesek ahhoz, hogy a pi felismerje az SD -kártyát indítható eszközként. Ezután formázza a mini sd -t fat32 -be (a legtöbb mini sd -kártya fat32 -ben van formázva. Olcsó mini sd -kártyát használtam a sandisk -ból), helyezze át a bootcode.bin, start.elf, fixup.dat fájlt az sd -kártyára. És kész! Még egyszer, és a képek sorrendjében a lépések a következők:

  1. Keresse meg a bootcode.bin, start.elf, fixup.dat fájlt.
  2. Győződjön meg róla, hogy az SD -kártya fat32 formátumú.
  3. Mozgassa a bootcode.bin, start.elf és fixup.dat fájlokat a formázott sd kártyára.

Ezt így találtam ki, link.

4. lépés: ELLENŐRIZZE a Mini SD -t

CHECK Mini SD
CHECK Mini SD
CHECK Mini SD
CHECK Mini SD

Rendben, van egy indítható mini sd kártya, és remélhetőleg ezen a ponton van pi 3. Tehát most tesztelnünk kell, hogy megbizonyosodjunk arról, hogy a pi 3 felismeri a mini sd kártyát indíthatóként.

A pi -n, a mini usb port közelében két kis led van. Az egyik vörös. Ez a teljesítményjelző. Amikor a pi áramot kap, ennek a lámpának világítania kell. Tehát ha most csatlakoztatja a pi -t mini sd kártya nélkül, akkor pirosan kell világítania. Rendben, most húzza ki a pi -t, és tegye be az előző lépésben létrehozott indítható mini sd -kártyáját, és csatlakoztassa a pi -t. Lát egy másik fényt? Közvetlenül a piros mellett zöld jelzőfénynek kell lennie, amely azt jelzi, hogy az SD kártyát olvassa. Ezt a ledet ACT lednek hívják. Akkor világít, ha életképes SD -kártyát helyez be. Villogni fog, amikor a mini sd kártyához fér hozzá.

Oké, tehát két dolognak kellett volna történnie, miután behelyezte a bootolható mini sd kártyát és csatlakoztatta a pi -t:

  1. A piros LED -nek világítania kell, jelezve a tápellátást
  2. A zöld LED -nek világítania kell, jelezve, hogy betöltődött a mini sd kártyára

Ha valami nem sikerült, ismételje meg az előző lépéseket, vagy kattintson az alábbi linkre további információkért.

A link itt jó referencia.

5. lépés: KÓD1

Ez a projekt ARM összeállítási nyelven íródott. Ebben az oktatóanyagban feltételezzük az ARM összeállítás alapvető ismereteit, de itt van néhány dolog, amit tudnia kell:

.equ: értéket rendel egy szimbólumhoz, azaz abc.equ 5 abc most ötöt jelent

  • ldr: memóriából töltődik be
  • str: memóriába ír
  • cmp: két értéket hasonlít össze kivonással. Zászlókat állít be.
  • b: ág a címkéhez
  • add: számtant végez

Ha nincs tapasztalata a kar szerelésével kapcsolatban, nézze meg ezt a videót. Ez jól fogja érteni a kar szerelési nyelvét.

Rendben, most van egy áramkörünk, amely a málna pi 3 -hoz van csatlakoztatva, és van egy sd -kártyánk, amelyet a pi felismer, így a következő feladatunk az, hogy kitaláljuk, hogyan léphetünk kapcsolatba az áramkörrel a pi betöltésével egy futtatható programmal. Általában azt kell tennünk, hogy meg kell mondanunk a pi -nek, hogy feszültséget adjon ki a GPIO 21 -ből (a piros vezetékhez csatlakoztatott érintkező). Ezután szükség van egy módra, hogy kapcsoljuk a ledet, hogy villogjon. Ehhez további információkra van szükségünk. Ezen a ponton fogalmunk sincs, hogyan mondhatjuk a GPIO 21 -nek a kimenetet, ezért el kell olvasnunk az adatlapot. A legtöbb mikro-vezérlő rendelkezik adatlappal, amely pontosan meghatározza, hogyan működik minden. Sajnos a pi 3 -nak nincs hivatalos dokumentációja! Van azonban egy nem hivatalos adatlap. Itt van két link hozzá:

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

Rendben, ezen a ponton tartson néhány percet, mielőtt a következő lépésre lépne, és nézze át az adatlapot, és nézze meg, milyen információkat talál.

6. lépés: 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

A málna pi 3 53 regisztrál a kimeneti/bemeneti érintkezők (perifériák) vezérlésére. A csapok össze vannak csoportosítva, és minden csoport hozzá van rendelve egy regiszterhez. A GPIO esetében hozzá kell férnünk a SELECT regiszterhez, a SET regiszterhez és a CLEAR regiszterekhez. Ezekhez a nyilvántartásokhoz való hozzáféréshez szükségünk van a nyilvántartások fizikai címére. Az adatlap olvasásakor csak a cím eltolását (lo bájt) szeretné megjegyezni, és hozzáadni az alapcímhez. Ezt meg kell tennie, mert az adatlap felsorolja a linux virtuális címét, amelyek alapvetően az operációs rendszerek által hozzárendelt értékek. Nem operációs rendszert használunk, ezért közvetlenül hozzá kell férnünk ezekhez a nyilvántartásokhoz a fizikai cím használatával. Ehhez a következő információkra van szüksége:

  • Perifériák alapcíme: 0x3f200000. A pdf (6. oldal) azt mondja, hogy az alapcím 0x3f000000, azonban ez a cím nem fog működni. Használjon 0x3f200000
  • A FSEL2 eltolása (SELECT) nem a regiszter teljes címe. A pdf felsorolja az FSEL2 -t 0x7E20008 -ban, de ez a cím a linux virtuális címére vonatkozik. Az eltolás ugyanaz lesz, ezért ezt szeretnénk megjegyezni. 0x08
  • A GPSET0 (SET) eltolása: 0x1c
  • GPCLR0 eltolása (CLEAR): 0x28

Tehát valószínűleg észrevette, hogy az adatlap 4 SELECT regisztert, 2 SET regisztert és 2 CLEAR regisztert tartalmaz, akkor miért választottam azokat, amelyeket tettem? Ennek oka az, hogy a GPIO 21 és a FSEL2 vezérlőket szeretnénk használni a GPIO 20-29, a SET0 és a CLR0 vezérlőket a GPIO 0-31. Az FSEL regiszterek három bitet rendelnek minden GPIO -pinhez. Mivel FSEL2-t használunk, ez azt jelenti, hogy a 0-2 bitek vezérlik a GPIO 20-at, és a 3-5 bitek a GPIO 21-et és így tovább. A Set és a CLR regiszterek egyetlen bitet rendelnek minden tűhöz. Például a SET0 és a CLR0 0. bitje vezérli a GPIO 1 -et. A GPIO 21 vezérléséhez a SIT0 és a CLR0 21. bitjét kell beállítani.

Oké, szóltunk arról, hogyan lehet hozzáférni ezekhez a nyilvántartásokhoz, de mit jelent mindez?

  • A FSEL2 regiszter a GPIO 21 kimenetre állítására szolgál. Ahhoz, hogy egy tűt kimenetre állítson, a három bit lo sorrendjét 1-re kell állítani. Tehát ha a 3-5-ös bitek vezérlik a GPIO 21-et, akkor azt kell megadnunk, hogy az első bitet, a 3-as bitet 1-re kell állítanunk. hogy a GPIO 21 -et szeretnénk kimenetként használni. Tehát ha megnézzük a GPIO 21 3 bitjét, akkor ezeknek így kell kinézniük, miután kimenetre állítottuk, b001.
  • A GPSET0 azt mondja a pi -nek, hogy kapcsolja be a csapot (feszültséget ad ki). Ehhez csak a kívánt GPIO tűnek megfelelő bitet kapcsoljuk át. A mi esetünkben a 21. bit.
  • A GPCLR0 azt mondja a pi -nek, hogy kapcsolja ki a csapot (nincs feszültség). A tű kikapcsolásához állítsa a bitet a megfelelő GPIO tűre. Esetünkben a 21 -es bit

Mielőtt a villogó LED -hez érnénk, először készítsünk egy egyszerű programot, amely egyszerűen bekapcsolja a LED -et.

A kezdéshez két irányelvet kell hozzáadnunk a forráskódunk tetejéhez.

  • .szakasz.init megmondja a pi -nek, hogy hová tegye a kódot
  • .global _kezdje

Ezután el kell helyeznünk az összes használni kívánt címet. Az.equ használatával olvasható szimbólumokat rendelhet az értékekhez.

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

Most maszkokat készítünk a beállítandó bitek beállításához.

  • .equ SET_BIT3, 0x08 Ezzel beállítja a harmadik bitet 0000_1000
  • .equ SET_BIT21, 0x200000

Ezután hozzá kell adnunk a _start címkét

_Rajt:

Töltse be az alapcímet a regiszterbe

ldr r0, = BÁZIS

Most be kell állítanunk a GPFSEL2 bitjét 3

  • ldr r1, SET_BIT3
  • str r1, [r0, #GPFSEL2] Ez az utasítás azt írja, hogy írja vissza a 0x08 bitet a GPFSEL2 címére

Végül be kell kapcsolnunk a GPIO 21 -et úgy, hogy beállítjuk a 21. bitet a GPSET0 regiszterben

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

A végterméknek a képen láthatónak kell lennie.

A következő lépés a kód fordítása és egy.img fájl létrehozása, amelyet a pi futtathat.

  • Töltse le a csatolt makefile -t és a kernel.ld fájlt, és ha szeretné a turn_led_on.s forráskódot.
  • Tegye az összes fájlt ugyanabba a mappába.
  • Ha saját forráskódját használja, szerkessze a makefile -t, és cserélje le a = turn_led_on.s kódot a =.s kódra.
  • Mentse a makefile -t.
  • A terminál (linux) vagy a cmd ablak (Windows) segítségével navigáljon a fájlokat tartalmazó mappához, és írja be a make és nyomja le az enter billentyűt
  • A make fájlnak létre kell hoznia egy kernel.img nevű fájlt
  • Másolja a kernel.img fájlt a mini sd kártyára. A kártyák tartalma a képen látható legyen (3. kép): bootcode.bin, start.elf, fixup.dat és kernel.img.
  • Vegye ki a mini sd kártyát, és helyezze be a pi -be
  • Csatlakoztassa a pi -t az áramforráshoz
  • A LED -nek világítania kell !!!

KÖNNYEN FONTOS MEGJEGYZÉS: Nyilvánvalóan az utasításoknak problémája volt azzal, hogy a makefile nem rendelkezik kiterjesztéssel, ezért újra feltöltöttem.txt kiterjesztéssel. Kérjük, távolítsa el a bővítményt, amikor letölti, hogy megfelelően működjön.

Ajánlott: