A n kọ bootloader OTA kan fun ATmega128RFA1 (gẹgẹbi apakan ti ẹrọ Idahun Smart XE)

A n kọ bootloader OTA kan fun ATmega128RFA1 (gẹgẹbi apakan ti ẹrọ Idahun Smart XE)

Gbogbo rẹ bẹrẹ pẹlu onkọwe rira ohun elo ti o nifẹ lori ọja Atẹle - Idahun Smart XE (kukuru apejuwe). O jẹ ipinnu fun awọn ile-iwe: ọmọ ile-iwe kọọkan ninu kilasi gba ẹrọ kan ti o jọra si iwe-kikọ itanna tabi onitumọ lati awọn ọgọrun ọdun, olukọ beere ibeere kan, ati awọn ọmọ ile-iwe tẹ awọn idahun lori awọn bọtini itẹwe ti awọn ẹrọ, eyiti o gba nipasẹ a ikanni redio (802.15.4) si olugba ti a ti sopọ si PC olukọ.

Awọn ẹrọ wọnyi ti dawọ duro ni ọpọlọpọ ọdun sẹyin, ati pe kini awọn ile-iwe ti o ra fun $100-$200 ọkọọkan ti n gbe jade lori eBay fun $10 tabi kere si. Ohun elo ti o wa nibẹ dara pupọ fun awọn idanwo geeky:

  • 60 bọtini itẹwe
  • ifihan pẹlu ipinnu ti 384×136, 2 die-die fun ẹbun - iru si BC, CGA, ṣugbọn 4 kii ṣe awọn awọ, ṣugbọn awọn gradations ti imọlẹ
  • microcontroller ATmega128RFA1 (128 kB filasi iranti, 4 kB ROM, 16 kB Ramu, 802.15.4 transceiver)
  • ita (ni ibatan si microcontroller, kii ṣe gbogbo ẹrọ) 1 megabit (128 kilobyte) iranti filasi pẹlu wiwo SPI
  • kompaktimenti fun 4 AAA eroja.

Lati orukọ microcontroller o han gbangba pe o jẹ ti idile AVR, eyiti o tumọ si ṣiṣe ẹrọ Arduino-ibaramu jẹ diẹ sii ju iṣẹ ṣiṣe bintin lọ…

Lati awọn iroyin lori Hackaday onkowe ri jade ohun ti o jẹ ti ṣe tẹlẹ (ọna asopọ kanna sọ fun ọ kini lati sopọ nibiti), ni aye lati ṣiṣe awọn ere fun Arduboy:


Ṣugbọn onkọwe nifẹ diẹ sii ni aye kii ṣe lati ṣere lori ẹrọ, ṣugbọn lati kawe:

  • filasi iranti pẹlu ni tẹlentẹle SPI ni wiwo
  • bootloaders fun AVR
  • boṣewa 802.15.4

Onkọwe bẹrẹ nipasẹ kikọ .иблиотеки (GPL v3), eyiti o fun ọ laaye lati ṣe ipilẹṣẹ ifihan, ọrọ ti o jade ati awọn igun onigun, ati wọle si iranti filasi SPI. Lẹhinna o bẹrẹ lati wa pẹlu awọn imọran fun lilo adaṣe ti ẹrọ naa: ebute apo ibaramu VT-100, awọn ere elere pupọ. Lẹhin ti tun awọn ẹrọ mẹta ṣe, o pinnu lati “kọ” wọn lati gba awọn aworan afọwọya “lori afẹfẹ.” Ohun ti kii yoo jẹ ohun ti o nifẹ nikan, ṣugbọn tun rọrun pupọ: ọran ẹrọ naa nira lati ṣii ni gbogbo igba, ati labẹ ideri iyẹwu batiri awọn iho nikan wa ti o gba ọ laaye lati sopọ olupilẹṣẹ JTAG kan si igbimọ.

A n kọ bootloader OTA kan fun ATmega128RFA1 (gẹgẹbi apakan ti ẹrọ Idahun Smart XE)

Eyi to lati gbejade bootloader Arduino, ṣugbọn kii ṣe aworan afọwọya - ibudo ni tẹlentẹle ko ni asopọ sibẹ, nitorinaa o tun ko le ṣe laisi ṣiṣi ọran naa. Pẹlupẹlu, awọn laini TX0 ati RX0 ti ibudo ni tẹlentẹle akọkọ ni idapo pẹlu awọn laini idibo ti matrix keyboard, eyun awọn ti o ṣe ibo awọn bọtini iṣẹ ni awọn ẹgbẹ ti ifihan. Ṣugbọn kini o le ṣe - onkọwe kọ eyi:

A n kọ bootloader OTA kan fun ATmega128RFA1 (gẹgẹbi apakan ti ẹrọ Idahun Smart XE)

O mu awọn ila JTAG wa nibẹ, ati nisisiyi ko si ye lati ṣii yara batiri naa. Ati pe ki awọn aworan afọwọya le gbejade, Mo ti so awọn ebute oko oju omi mejeeji pọ si asopo kanna, tun ṣafikun iyipada kan, nitori pẹlu awọn batiri ti a fi sii, ko ṣee ṣe ni ti ara lati pa ẹrọ naa ni ọna miiran.

O gba akoko diẹ lati ṣiṣẹ pẹlu irin tita, ọbẹ ohun elo ati ibon lẹ pọ. Ni gbogbogbo, ikojọpọ awọn aworan afọwọya “lori afẹfẹ” jẹ irọrun diẹ sii;

Arduino IDE nlo eto naa lati gbejade awọn aworan afọwọya avrdude. O nlo pẹlu microcontroller nipa lilo ilana naa STK500, eyiti o fun ọ laaye lati gbe awọn faili ni awọn itọnisọna mejeeji. Ko ni ibamu pẹlu awọn ikanni nibiti awọn idaduro oniyipada, ipadapọ ati pipadanu data ṣee ṣe. Ti nkan ba wa alaimuṣinṣin tabi rustles ni ikanni tẹlentẹle, o le lọ irikuri wiwa idi naa. Ni kete ti onkọwe jiya fun idaji ọjọ kan titi o fi rii pe iṣoro naa jẹ okun buburu, bakanna bi oluyipada wiwo wiwo CP2102 kan. Paapaa microcontroller pẹlu oluyipada wiwo ti a ṣe sinu, fun apẹẹrẹ, ATmega32u4, le ṣe bii eyi nigbakan. Gbogbo olumulo Arduino ti ṣe akiyesi pe awọn aṣiṣe nigba ikojọpọ awọn aworan afọwọya ko ṣọwọn. Nigba miiran igbasilẹ naa lọ daradara, ṣugbọn lakoko idanwo kan ka aṣiṣe kan rii. Eyi ko tumọ si pe aṣiṣe kan wa lakoko kikọ - ikuna kan wa lakoko kika. Bayi ro pe nigba ṣiṣẹ "lori afẹfẹ" ohun kanna yoo ṣẹlẹ, ṣugbọn pupọ diẹ sii nigbagbogbo.

Lẹhin igbiyanju awọn ọna oriṣiriṣi lati bori iṣoro yii, onkọwe wa pẹlu atẹle naa. Ẹrọ naa ni iranti filasi 128 KB pẹlu wiwo SPI - a gba data lori awọn okun waya (ranti pe onkọwe ti ni ẹrọ kan tẹlẹ pẹlu asopo kan ni ẹgbẹ), lo iranti yii bi ifipamọ, ati firanṣẹ data lori redio. ikanni si ẹrọ miiran. Kaabo lati Cybiko.

Lẹhin kikọ koodu lati ṣiṣẹ pẹlu ikanni redio, bakanna bi fonti, agberu naa gun ju 4 kilobytes. Nitorinaa, iye HFUSE ni lati yipada lati 0xDA si 0xD8. Bayi bootloader le to 8 kilobytes gigun, ati pe adirẹsi ibẹrẹ ti wa ni bayi 0x1E000. Eyi jẹ afihan ninu Makefile, ṣugbọn o yẹ ki o tun ṣe akiyesi nigbati o ba kun bootloader nipasẹ avrdude.

802.15.4 transceiver ninu ATmega128RFA1 jẹ apẹrẹ akọkọ lati ṣiṣẹ nipa lilo ilana naa Zigbee, eyi ti o jẹ ohun idiju, ki awọn onkowe pinnu kan atagba awọn apo-iwe dipo. Eyi ni imuse ni ohun elo ni ATmega128RFA1, nitorinaa koodu kekere ni o nilo. Pẹlupẹlu, fun ayedero, onkọwe pinnu lati lo ikanni ti o wa titi, ko gba ọ laaye lati yan paapaa pẹlu ọwọ. Iwọn 802.15.4 ṣe atilẹyin awọn ikanni 16 pẹlu awọn nọmba lati 11 si 26. Wọn ti kun pupọ, diẹ ninu awọn tun ni lqkan awọn ikanni WiFi (pupa jẹ awọn ikanni ZigBee, bulu, alawọ ewe ati ofeefee jẹ WiFi).

A n kọ bootloader OTA kan fun ATmega128RFA1 (gẹgẹbi apakan ti ẹrọ Idahun Smart XE)

O wa jade pe awọn ikanni 15 ati 26 ko ni ifaragba si kikọlu lati WiFi. AlAIgBA: onitumọ ko mọ boya o gba ọ laaye lati rọ ZigBee ni ọna yii. Boya o yẹ ki a ṣe siseto diẹ sii ki a ṣe imuse rẹ patapata?

Lori ẹrọ akọkọ, o jẹ dandan lati ṣe imuse ẹrọ ipinlẹ ti o ni opin ti o gbejade data nipasẹ ilana STK500. Fun apakan pupọ julọ, awọn ifiranṣẹ ti a firanṣẹ ati ti o gba jẹ ti ara ẹni, ṣugbọn diẹ ninu awọn ti so mọ awọn ti o kọja nipasẹ ikanni tẹlẹ. Apejuwe ti ibaraẹnisọrọ ti wa ni fun nibi.

Ẹya pataki ti ibaraẹnisọrọ yii ni gbigbe awọn apo-iwe ti a pinnu lati kọ si iranti filasi ti ẹrọ ti nlo. Fun awọn microcontrollers ti o rọrun ti idile AVR, iwọn oju-iwe jẹ awọn baiti 128, ṣugbọn fun ATmega128RFA1 o jẹ 256. Ati fun iranti filasi ti o ni asopọ nipasẹ ilana SPI, o jẹ kanna. Eto ti o wa ninu ẹrọ akọkọ, nigbati o ba n gbe aworan kan, ko gbe lọ lẹsẹkẹsẹ si keji, ṣugbọn o kọwe si iranti yii. Nigbati Arduino IDE ba ṣayẹwo deede titẹ sii, a firanṣẹ ohun ti a kọ sibẹ. Bayi a nilo lati atagba data ti o gba nipasẹ ikanni redio si ẹrọ keji. Ni akoko kanna, iyipada lati gbigba si gbigbe ati ẹhin waye ni igbagbogbo. Ilana STK500 jẹ aibikita si awọn idaduro, ṣugbọn ko fi aaye gba pipadanu data (ajeji, ṣugbọn o sọ loke pe awọn idaduro tun ni ipa lori gbigbe data). Ati awọn adanu lakoko gbigbe alailowaya jẹ eyiti ko ṣeeṣe. ATmega128RFA1 ni imuse ohun elo ti a ṣe sinu ti awọn ibeere ti o tun ṣe nigbati awọn iyemeji wa nipa atunse gbigbe, ṣugbọn onkọwe pinnu lati ṣe kanna ni sọfitiwia funrararẹ. O ṣe agbekalẹ ilana kan ninu eyiti ọpọlọpọ data nṣan ni ọna kan ju ekeji lọ.

Ko pe, ṣugbọn o ṣiṣẹ. Oju-iwe 256-baiti ti pin si awọn apakan mẹrin, ọkọọkan eyiti a gbejade lori afẹfẹ bi apo. Pakẹti le gba to awọn baiti 125 ti data pẹlu baiti kan fun gigun ati awọn baiti meji fun CRC. Nitorina awọn ajẹkù 64 awọn baiti gigun pẹlu oju-iwe ati awọn nọmba apakan (lati 0 si 3) ni a gbe sibẹ. Ẹrọ gbigba ni o ni iyipada ti o fun laaye laaye lati tọpinpin iye awọn apakan ti o ti gba, ati nigbati gbogbo awọn mẹrin ba de, ẹrọ fifiranṣẹ gba ijẹrisi pe gbogbo oju-iwe ti gba. Ko si idaniloju (CRC ko baramu) - tun fi gbogbo oju-iwe naa ranṣẹ. Iyara paapaa tobi ju nigba gbigbe nipasẹ okun. Wo:


Ṣugbọn ni gbogbogbo, yoo jẹ pataki lati pese ọna ti o rọrun lati so okun pọ si awọn ẹrọ fun ikojọpọ awọn aworan afọwọya ati nipasẹ rẹ. Fun apẹẹrẹ, gbe inu iru oluyipada wiwo lori CP2102, bi ninu fọto, ki o lẹ pọ mọ igbimọ naa ki o le koju agbara naa nigbati o ba n ṣopọ ati ge asopọ okun USB Micro.

A n kọ bootloader OTA kan fun ATmega128RFA1 (gẹgẹbi apakan ti ẹrọ Idahun Smart XE)

O tun ni amuduro 3,3-volt (ati bii o ṣe le lo ninu ẹrọ ti o ni ipese agbara 6-volt - ti o ba jẹ amuduro kanna, ati pe o le ṣafikun awọn diodes meji lati yan eyi ti wọn yoo fi agbara ẹrọ naa laifọwọyi) . Gbogbo awọn LED mẹta gbọdọ wa ni ṣiṣi silẹ lati inu igbimọ oluyipada wiwo, bibẹẹkọ wọn yoo ṣe afikun awọn batiri nigbati wọn ba ṣiṣẹ lori wọn, ati tun dabaru pẹlu idibo keyboard ati ṣiṣẹ pẹlu iranti filasi pẹlu wiwo SPI.

Lilepa ibi-afẹde kan ti jade lati jẹ iyanilenu paapaa ju ṣiṣe aṣeyọri rẹ (ati pe ko nilo awada yẹn nipa ọkọ akero). Onkọwe kọ ẹkọ pupọ nipa AVR bootloaders, SPI filasi iranti, ilana STK500 ati boṣewa 802.15.4.

Gbogbo koodu miiran ni afikun si ile-ikawe ti a ṣalaye loke jẹ - nibi, ati pe o tun wa labẹ GPL v3. Twitter onkọwe - nibi.

orisun: www.habr.com

Fi ọrọìwòye kun