Мазмұны:

Жалаңаш металл таңқурай Pi 3: жыпылықтайтын жарық диоды: 8 қадам
Жалаңаш металл таңқурай Pi 3: жыпылықтайтын жарық диоды: 8 қадам

Бейне: Жалаңаш металл таңқурай Pi 3: жыпылықтайтын жарық диоды: 8 қадам

Бейне: Жалаңаш металл таңқурай Pi 3: жыпылықтайтын жарық диоды: 8 қадам
Бейне: Титаниктің құпиясы: олар айсбергті қалай байқамады?! Ең егжей-тегжейлі оқиға! 2024, Шілде
Anonim
Жалаңаш металл таңқурай Pi 3: жыпылықтайтын жарық диоды
Жалаңаш металл таңқурай Pi 3: жыпылықтайтын жарық диоды

MoldypizzaFollow Автордың толығырақ:

Жарықсыз диодты жарық диодтары бар Raspberry Pi басу түймесі
Жарықсыз диодты жарық диодтары бар Raspberry Pi басу түймесі
Жарық диодты жарық диодтары бар Raspberry Pi басу түймесі
Жарық диодты жарық диодтары бар Raspberry Pi басу түймесі
Жәшіктер
Жәшіктер
Жәшіктер
Жәшіктер
Ардагерлер күніне арналған бедерлі оюды қалай жасауға болады
Ардагерлер күніне арналған бедерлі оюды қалай жасауға болады
Ардагерлер күніне арналған бедерлі оюды қалай жасауға болады
Ардагерлер күніне арналған бедерлі оюды қалай жасауға болады

Туралы:.oO0Oo. Moldypizza туралы толығырақ »

BARE METAL pi 3 Blinking LED оқулығына қош келдіңіз!

Бұл оқулықта біз Raspberry PI 3, нан тақтасы, резистор, светодиод және бос SD картаның көмегімен жарық диодты жыпылықтау үшін басынан аяғына дейін қадамдарды өтеміз.

Сонымен BARE METAL дегеніміз не? BARE METAL - бұл ешқандай бағдарламалау. Жалаң металл - бұл біз компьютердің не істейтінін толық бақылауда екенімізді білдіреді. Демек, бұл негізінен Arm нұсқаулықтар жиынтығын қолдана отырып, код толығымен құрастырылатынын білдіреді. Соңында біз Raspberry Pi GPIO түйреуіштерінің бірінің физикалық мекенжайына кіріп, оны шығуға конфигурациялау, содан кейін оны қосу және өшіру арқылы жарық диодты жыпылықтайтын бағдарлама құрамыз. Бұл жобаны қолдану - бұл кіріктірілген бағдарламалауды бастаудың жақсы әдісі және компьютердің қалай жұмыс істейтіні туралы жақсы түсінік береді деп үміттенемін.

Саған не қажет?

Аппараттық құрал

  • Таңқурай PI 3
  • SD картасы жүктелетін кескінмен алдын ала жүктелген
  • Нан тақтасы
  • Еркек әйел секіргіш сымдар
  • Еркек еркек сымдары
  • ЖАРЫҚ ДИОДТЫ ИНДИКАТОР
  • 220 Ом резистор (дәл 220 Ом болуы міндетті емес, кез келген резистор жұмыс істейді)
  • шағын SD картасы
  • mini sd картасы алдын ала жүктелген raspberry pi операциялық жүйесімен (әдетте pi -ге қосылады)

Бағдарламалық қамтамасыз ету

  • GCC компиляторы
  • GNU ендірілген құралдар тізбегі
  • мәтіндік редактор
  • sd картасын форматтаушы

Жарайды, бастауға рұқсат етіңіз!

1 -қадам: ЗАТТАРДЫ ОРНАТУ/ҚОСУ

ЗАТТАРДЫ ОРНАТУ/ҚАМТАУ
ЗАТТАРДЫ ОРНАТУ/ҚАМТАУ

Жақсы … бірінші қадам - бұл аппараттық құралдарды алу. Бөлшектерді бөлек сатып алуға болады немесе бөлшектері жететін жиынтық бар. СІЛТЕМЕ

Бұл жиынтықта таңқурай pi 3 және одан да көп қондыруға қажетті барлық заттар бар! бұл жинаққа кірмейтін жалғыз нәрсе - бұл қосымша шағын sd картасы. Күте тұрыңыз! Тағы біреуін сатып алмаңыз. Егер сіз картаға алдын ала жүктелген Linux қондырғысын пайдалануды жоспарламасаңыз, енгізілген шағын SD картасының мазмұнын кейінірек көшіріп, картаны қайта пішімдеңіз (бұл туралы кейінірек). МАҢЫЗДЫ ЕСКЕРТПЕ: файлдарды енгізілген картада сақтағаныңызға көз жеткізіңіз, олар сізге кейінірек қажет болады!

Содан кейін бағдарламалық жасақтаманы орнату уақыты келді. Бұл оқулықта бағдарламалық жасақтаманы орнату туралы толық нұсқаулар болмайды. Оларды орнату туралы Интернетте көптеген ресурстар мен оқулықтар бар:

WINDOWS ПАЙДАЛАНУШЫЛАРЫ:

Gcc жүктеп алыңыз және орнатыңыз

Содан кейін GNU ARM ендірілген құралдар тізбегін жүктеп, орнатыңыз

LINUX/MAC

  • Linux дистрибуциясы gcc алдын ала орнатылған
  • GNU ARM ендірілген құралдар тізбегін жүктеңіз және орнатыңыз.

Жарайды, егер бәрі жақсы болса, онда сіз терминалды (linux/mac) немесе cmd жолын (терезелер) ашып, теріп көріңіз.

arm-none-eabi-gcc

Шығару бірінші суретке ұқсас болуы керек. Бұл оның дұрыс орнатылғанын тексеру үшін.

Жарайды, қазір алдын ала талап етілмегендіктен, қызықты нәрселерді бастау керек.

2 -қадам: ЦИРКУИТ

ЦИРКУТ
ЦИРКУТ
ЦИРКУТ
ЦИРКУТ
ЦИРКУТ
ЦИРКУТ

Айналым уақыты! Бұл схема қарапайым. Біз пи -ге GPIO 21 -ге (түйреуіш 40) сымды қосамыз (2 және 3 -суретті қараңыз). Электр сымының зақымдалуын болдырмау үшін резистор да тізбектей қосылады. Резистор нан тақтасындағы теріс бағанға қосылады, ол GND -ге қосылады (пин 39). Светодиодты қосқанда қысқа жағын теріс жағына жалғауды ұмытпаңыз. Соңғы суретті қараңыз

3 -қадам: BOOTABLE Mini SD

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

Пи 3 -тің бос SD -картаны тану үшін үш қадам бар. Біз bootcode.bin, start.elf және fixup.dat файлдарын тауып көшіруіміз керек. Егер сіз canakit сатып алсаңыз немесе linux дистрибуциясымен pi 3 үшін жүктелетін sd картасын жасасаңыз, сіз бұл файлдарды қоса берілген sd картасынан ала аласыз. Қалай болғанда да, бұл файлдар sd картасын жүктелетін құрылғы ретінде тануға рұқсат беру үшін қажет. Содан кейін, mini sd -ді fat32 -ге пішімдеңіз (көптеген шағын SD -карталар fat32 форматында келеді. Мен sandisk -тен арзан шағын SD -картаны қолдандым), bootcode.bin, start.elf, fixup.dat файлдарын sd картасына жылжытыңыз. Ал сен жасадың! Жарайды, тағы бір рет және суреттер ретімен қадамдар:

  1. Bootcode.bin, start.elf, fixup.dat табыңыз.
  2. SD картасының fat32 пішімделгеніне көз жеткізіңіз.
  3. Bootcode.bin, start.elf және fixup.dat форматталған SD картасына жылжытыңыз.

Міне, мен мұны қалай түсіндім, сілтеме.

4 -қадам: Mini SD картасын тексеріңіз

Mini SD картасын тексеріңіз
Mini SD картасын тексеріңіз
Mini SD картасын тексеріңіз
Mini SD картасын тексеріңіз

Жақсы, бізде жүктелетін шағын sd картасы бар, және сізде бұл жерде pi 3 бар деп үміттенеміз. Енді біз Pi 3 mini sd картасын жүктелетін деп танитынына көз жеткізу үшін оны тексеруіміз керек.

Пи -де, шағын USB портының жанында екі кішкентай LED бар. Біреуі қызыл. Бұл қуат көрсеткіші. Пи қуат алатын кезде бұл жарық жанып тұруы керек. Егер сіз дәл қазір шағын sd картасыз пиыңызды қоссаңыз, ол қызыл түспен жанады. Жарайды, енді пиді ажыратып, алдыңғы қадамда жасалған жүктелетін шағын sd картасын салыңыз және пиді қосыңыз. Басқа жарық көріп тұрсыз ба? Қызыл түстің жанында жасыл шам болуы керек, бұл оның SD картасын оқып жатқанын көрсетеді. Бұл жарықдиодты ACT led деп атайды. Сәйкес SD картасы салынған кезде ол жанып тұрады. Ол шағын sd картасына кірген кезде жыпылықтайды.

Жақсы, жүктелетін шағын sd картасын салып, пиді қосқаннан кейін екі нәрсе болуы керек еді:

  1. Қызыл светодиод қуат алуды көрсететін жарықтандырылуы керек
  2. Жасыл светодиод жарықтандырылуы керек, бұл оның шағын SD картасына қосылғанын көрсетеді

Егер бірдеңе дұрыс болмаса, алдыңғы әрекеттерді қайталап көріңіз немесе қосымша ақпарат алу үшін төмендегі сілтемені басыңыз.

Мұнда сілтеме - жақсы сілтеме.

5 -қадам: CODE1

Бұл жоба ARM ассемблер тілінде жазылған. Бұл оқулықта ARM құрастыру туралы негізгі түсінік бар, бірақ сіз білуіңіз керек бірнеше нәрсе:

.equ: символға мән береді, яғни abc.equ 5 abc енді беске тең

  • ldr: жадтан жүктеледі
  • str: жадқа жазады
  • cmp: азайтуды орындау арқылы екі мәнді салыстырады. Жалаушаларды орнатады.
  • б: жапсырмаға тармақ
  • қосу: арифметиканы орындайды

Егер сізде қол жинау тәжірибесі болмаса, бұл бейнені қараңыз. Бұл сізге Ассамблея тілін жақсы түсінуге мүмкіндік береді.

Жақсы, дәл қазір бізде таңқурай pi 3 -ке қосылған схема бар және бізде pi танитын sd картасы бар, сондықтан біздің келесі міндетіміз - pi -ді орындалатын бағдарламамен жүктеу арқылы схемамен қалай әрекеттесу керектігін анықтау. Жалпы алғанда, бізге pi -ге GPIO 21 -ден (қызыл сымға қосылған түйреуіш) кернеуді шығаруды айту керек. Содан кейін жарық диодты жыпылықтау үшін оны ауыстыру әдісі қажет. Мұны істеу үшін бізге қосымша ақпарат қажет. Бұл кезде біз GPIO 21 -ге шығуды қалай айту керектігін білмейміз, сондықтан біз деректер кестесін оқуымыз керек. Микроконтроллерлердің көпшілігінде барлығы қалай жұмыс істейтінін көрсететін деректер парақтары бар. Өкінішке орай, pi 3 ресми құжаттары жоқ! Алайда бейресми деректер парағы бар. Мұнда оған екі сілтеме бар:

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

Жарайды, келесі кезеңге өтпес бұрын бірнеше минут уақыт кетіп, мәліметтер парағын қарап шығыңыз және қандай ақпаратты таба аласыз.

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

Таңқурай pi 3 53 шығыс/кіріс түйреуіштерін (перифериялық құрылғыларды) басқаруға тіркейді. Түйреуіштер топтастырылады және әр топ реестрге тағайындалады. GPIO үшін біз SELECT регистріне, SET регистріне және CLEAR регистрлеріне қол жеткізе білуіміз керек. Бұл регистрлерге қол жеткізу үшін бізге осы регистрлердің физикалық адрестері қажет. Деректер парағын оқып жатқанда, сіз тек адрестің ығысуын (lo байт) атап, оны негізгі адреске қосқыңыз келеді. Сіз мұны істеуіңіз керек, себебі деректер кестесінде операциялық жүйелер тағайындаған мәндер болып табылатын Linux виртуалды мекен -жайы көрсетілген. Біз операциялық жүйені пайдаланбаймыз, сондықтан бұл регистрлерге физикалық адрес арқылы тікелей кіруіміз керек. Ол үшін сізге келесі ақпарат қажет:

  • Қосымша құрылғылардың негізгі мекенжайы: 0x3f200000. Pdf (6 -бет) базалық адрес 0x3f000000 екенін айтады, алайда бұл адрес жұмыс істемейді. 0x3f200000 қолданыңыз
  • FSEL2 (SELECT) офсеті регистрдің толық адресі емес. Pdf FSEL2 -ді 0x7E20008 тізімінде көрсетеді, бірақ бұл адрес linux виртуалды мекен -жайына сілтеме жасайды. Есептеу бірдей болады, сондықтан біз атап өткіміз келеді. 0x08
  • GPSET0 (SET) ығысуы: 0x1c
  • GPCLR0 ығысуы (CLEAR): 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 -ді басқару үшін SET0 мен CLR0 -де 21 -битті орнатар едіңіз.

Жарайды, біз бұл регистрлерге қалай қол жеткізуге болатыны туралы айттық, бірақ мұның бәрі нені білдіреді?

  • GPIO 21 шығысына орнату үшін FSEL2 регистрі қолданылады. Шығару үшін түйреуішті орнату үшін сізге үш биттің 1-реті бойынша реттелетін битті орнату қажет. Сонымен, егер 3-5 бит GPIO 21-ді басқарса, бұл біз бірінші битті 3-тен 1-ге дейін орнатуымыз керек дегенді білдіреді. біз GPIO 21 -ді шығыс ретінде қолданғымыз келеді. Егер біз GPIO 21 үшін 3 битке қарайтын болсақ, олар оны b001 шығаруға орнатқаннан кейін осылай болуы керек.
  • GPSET0 пи -ге түйреуішті қосуды (кернеуді шығару) айтады. Мұны істеу үшін біз қалаған GPIO түйреуішіне сәйкес келетін битке ауысамыз. Біздің жағдайда 21 -бит.
  • GPCLR0 пи -ге түйреуішті өшіруді айтады (кернеу жоқ). Ілмекті өшіру үшін битті сәйкес GPIO түйреуішіне орнатыңыз. Біздің жағдайда 21 бит

Жыпылықтайтын шамға жетпес бұрын, алдымен светодиодты қосатын қарапайым бағдарлама жасайық.

Бастау үшін бастапқы кодтың жоғарғы жағына екі директиваны қосу керек.

  • .init.init пи кодты қайда қою керектігін айтады
  • .global _start

Әрі қарай, біз қолданатын барлық адрестерді орналастыруымыз керек. Мәндерге оқылатын белгілерді тағайындау үшін.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, = BASE

Енді бізге GPFSEL2 бит3 орнату қажет

  • ldr r1, SET_BIT3
  • str r1, [r0, #GPFSEL2] Бұл нұсқаулықта 0x08 разрядын GPFSEL2 мекенжайына қайтару керек делінген.

Соңында GPSET0 регистріндегі 21 -битті орнату арқылы GPIO 21 -ді қосу керек

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

Соңғы өнім суреттегі кодқа ұқсас болуы керек.

Келесі қадам - кодты құрастыру және pi іске қосатын.img файлын құру.

  • Қосылған makefile файлын және kernel.ld жүктеңіз, егер turn_led_on.s бастапқы кодын алғыңыз келсе.
  • Барлық файлдарды бір қалтаға салыңыз.
  • Егер сіз өзіңіздің бастапқы кодты қолдансаңыз, makefile файлын өңдеңіз және = turn_led_on.s кодын код =.s -ке ауыстырыңыз.
  • Жасалған файлды сақтаңыз.
  • Файлдары бар қалтаңызға өту үшін терминалды (linux) немесе cmd терезесін (терезелерді) пайдаланыңыз және enter және enter пернесін басыңыз.
  • Жасау файлы kernel.img деп аталатын файлды құруы керек
  • Шағын sd картасына kernel.img көшіріңіз. Сіздің карталардың мазмұны суреттегідей болуы керек (3 -сурет): bootcode.bin, start.elf, fixup.dat және kernel.img.
  • Mini sd картасын шығарып, оны pi ұясына салыңыз
  • Қуат көзіне pi қосыңыз
  • Светодиод жануы керек !!!

МАҢЫЗДЫ ЕСКЕРТПЕ: Нұсқаулықта макияфайлдың кеңейтілмеуі болды, сондықтан мен оны.txt кеңейтімімен қайта жүктедім. Дұрыс жұмыс істеуі үшін кеңейтімді жүктеген кезде оны алып тастаңыз.

Ұсынылған: