Sibhala i-OTA bootloader ye-ATmega128RFA1 (njengengxenye yedivayisi ye-Smart Response XE)

Sibhala i-OTA bootloader ye-ATmega128RFA1 (njengengxenye yedivayisi ye-Smart Response XE)

Konke kwaqala lapho umbhali ethenga idivaysi ethokozisayo emakethe yesibili - Smart Response XE (incazelo emfushane). Ihloselwe izikole: umfundi ngamunye ekilasini uthola idivaysi efana ne-electronic notebook noma umhumushi kusukela eminyakeni yamashumi ayisishiyagalolunye, uthisha ubuza umbuzo, futhi abafundi babhale izimpendulo kumakhibhodi emishini, etholwa nge- isiteshi somsakazo (802.15.4) kumamukeli oxhunywe ku-PC kathisha.

Lawa madivaysi ayekwa ukusebenza eminyakeni embalwa edlule, futhi lokho izikole ezithengwe ngo-$100-$200 ngasinye manje seziyavela ku-eBay ngo-$10 noma ngaphansi. Izingxenyekazi zekhompuyutha ezikhona zilungele kakhulu izivivinyo ze-geeky:

  • 60 key keyboard
  • bonisa ngesixazululo esingu-384×136, amabhithi angu-2 ngephikseli ngayinye - efana ne-BC, CGA, kodwa engu-4 hhayi imibala, kodwa ukuhlukaniswa kokukhanya
  • i-microcontroller ATmega128RFA1 (128 kB flash memory, 4 kB ROM, 16 kB RAM, 802.15.4 transceiver)
  • yangaphandle (ngokuphathelene nesilawuli esincane, hhayi yonke idivayisi) inkumbulo ye-flash engu-1 megabit (128 kilobyte) ene-SPI interface
  • Igumbi lezinto ezi-4 ze-AAA.

Kusukela egameni lesilawuli esincane kuyacaca ukuthi singesomndeni wakwa-AVR, okusho ukuthi ukwenza idivayisi ye-Arduino-ihambisane kuwumsebenzi ongaphezu kokuncane...

Kusukela ezindabeni kuqhubeke I-Hackaday umbhali wathola ukuthi kuyini sebekwenzile (isixhumanisi esifanayo sikutshela ukuthi uxhume kuphi), unethuba lokugijima imidlalo ye-Arduboy:


Kodwa umbhali unesithakazelo kakhulu ithuba lokungadlali kudivayisi, kodwa ukufunda:

  • inkumbulo ye-flash ene-serial SPI interface
  • ama-bootloaders we-AVR
  • ejwayelekile 802.15.4

Umbhali waqala ngokubhala imitapo yolwazi (GPL v3), ekuvumela ukuthi uqalise isibonisi, umbhalo ophumayo nonxande, futhi ufinyelele imemori ye-flash ye-SPI. Wabe eseqala ukuqhamuka nemibono yokusetshenziswa ngokoqobo kwedivayisi: i-VT-100-compatible pocket terminal, imidlalo yabadlali abaningi. Ngemva kokwakha kabusha amathuluzi amathathu, wanquma “ukubafundisa” ukwamukela imidwebo “emoyeni.” Okungeke kube okuthakazelisayo kuphela, kodwa futhi kulula kakhulu: ikesi yedivayisi kunzima ukuyivula njalo, futhi ngaphansi kwesembozo segumbi lebhethri kunezimbobo kuphela ezikuvumela ukuthi uxhume umklami we-JTAG ebhodini.

Sibhala i-OTA bootloader ye-ATmega128RFA1 (njengengxenye yedivayisi ye-Smart Response XE)

Lokhu kwanele ukulayisha i-bootloader ye-Arduino, kodwa hhayi umdwebo - imbobo ye-serial ayixhunyiwe lapho, ngakho awukwazi ukwenza ngaphandle kokuvula icala. Futhi, imigqa ye-TX0 kanye ne-RX0 yembobo ye-serial yokuqala ihlanganiswa nemigqa yokuvota ye-matrix yekhibhodi, okuyilabo abavotela okhiye bomsebenzi ezinhlangothini zesibonisi. Kodwa yini ongayenza - umbhali wakha lokhu:

Sibhala i-OTA bootloader ye-ATmega128RFA1 (njengengxenye yedivayisi ye-Smart Response XE)

Ulethe imigqa ye-JTAG lapho, futhi manje asikho isidingo sokuvula indawo yebhethri. Futhi ukuze imidwebo ingalayishwa, ngixhume zombili izimbobo ze-serial kusixhumi esifanayo, futhi ngengeza iswishi, ngoba ngamabhethri afakiwe, akunakwenzeka ngokomzimba ukuvala idivayisi nganoma iyiphi enye indlela.

Kwathatha isikhathi eside ukusebenza ngensimbi yokunamathisela, ummese wokusetshenziswa kanye nesibhamu seglue. Ngokuvamile, ukulayisha imidwebo "emoyeni" kulula kakhulu; sidinga ngokuphuthumayo ukusungula okuthile kwalokhu.

I-Arduino IDE isebenzisa uhlelo ukulayisha imidwebo avrdude. Isebenzisana ne-microcontroller isebenzisa umthetho olandelwayo STK500, okukuvumela ukuthi udlulisele amafayela kuzo zombili izinkomba. Akuhambisani kahle neziteshi lapho ukubambezeleka okuguquguqukayo, ukuhlanekezela nokulahleka kwedatha kungenzeka khona. Uma kukhona okuxegayo noma kuduma kusiteshi se-serial, ungahlanya ufuna imbangela. Lapho umbhali ehlupheka isigamu sosuku waze waqaphela ukuthi inkinga kwakuyikhebula elibi, kanye nesiguquli esibonakalayo se-CP2102 esingenangqondo. Ngisho ne-microcontroller ene-interface converter eyakhelwe ngaphakathi, isibonelo, i-ATmega32u4, ngezinye izikhathi ingenza kanje. Wonke umsebenzisi we-Arduino uqaphele ukuthi amaphutha lapho ulayisha imidwebo ayivelakancane. Kwesinye isikhathi ukurekhoda kuhamba kahle, kodwa ngesikhathi sokuhlolwa kutholwa iphutha. Lokhu akusho ukuthi kube nephutha ngesikhathi sokubhala - kube khona ukuhluleka ngesikhathi sokufunda. Manje ake ucabange ukuthi lapho usebenza "emoyeni" into efanayo izokwenzeka, kodwa kaningi.

Ngemva kokuzama izindlela ezahlukene zokunqoba le nkinga, umbhali uqhamuke nalokhu okulandelayo. Idivayisi inememori ye-flash engu-128 KB ene-interface ye-SPI - sithola idatha phezu kwezintambo (khumbula ukuthi umbhali usevele unedivayisi eyodwa enesixhumanisi eceleni), sebenzisa le nkumbulo njengebhafa, futhi uthumele idatha ngomsakazo. isiteshi kwenye idivayisi. Sawubona kusuka ku-Cybiko.

Ngemva kokubhala ikhodi ukuze isebenze nesiteshi somsakazo, kanye nefonti, isilayishi sibe sinde kunamakhilobhayithi angu-4. Ngakho-ke, inani le-HFUSE bekufanele lishintshwe lisuka ku-0xDA liye ku-0xD8. Manje i-bootloader ingaba ubude obungamakhilobhayithi angu-8, futhi ikheli lokuqala manje lithi 0x1E000. Lokhu kubonakala ku-Makefile, kodwa kufanele futhi kucatshangelwe lapho ugcwalisa ukulanda nge-avrdude.

I-transceiver engu-802.15.4 ku-ATmega128RFA1 ekuqaleni yakhelwe ukusebenza kusetshenziswa umthetho olandelwayo. I-ZigBee, okuyinto eyinkimbinkimbi, ngakho umbhali wanquma ukudlulisa amaphakethe esikhundleni. Lokhu kusetshenziswa kuhadiwe ku-ATmega128RFA1, ngakho-ke ikhodi encane iyadingeka. Futhi, ukuze kube lula, umbhali uthathe isinqumo sokusebenzisa isiteshi esingashintshi, singakuvumeli ukuthi usikhethe ngisho nangokuzenzela. Izinga le-802.15.4 lisekela iziteshi eziyi-16 ezinezinombolo ezisuka ku-11 kuye ku-26. Ziminyene impela, ezinye zibuye zidlulele eziteshini ze-WiFi (ezibomvu ziyiziteshi ze-ZigBee, eziluhlaza okwesibhakabhaka, eziluhlaza okotshani kanye nephuzi yi-WiFi).

Sibhala i-OTA bootloader ye-ATmega128RFA1 (njengengxenye yedivayisi ye-Smart Response XE)

Kuvele ukuthi iziteshi 15 kanye no-26 zisengozini encane yokuphazanyiswa yi-WiFi. Umbhali ukhethe esesibili kuzo. Umshwana wokuzihlangula: umhumushi akazi noma kuvunyelwe ukwenza i-ZigBee ibe lula ngale ndlela. Mhlawumbe kufanele senze uhlelo oluthe xaxa futhi silusebenzise ngokuphelele?

Edivayisini yokuqala, kuyadingeka ukusebenzisa umshini wesimo esilinganiselwe odlulisela idatha ngephrothokholi ye-STK500. Ngokwengxenye enkulu, imilayezo edluliswayo neyamukelwe iyakwazi ukuzimela, kodwa eminye iboshelwe kuleyo edlule esiteshini ngaphambili. Incazelo yenkhulumomphendvulwano inikeziwe lapha.

Ingxenye ebalulekile yale ngxoxo ukudluliselwa kwamaphakethe okuhloswe ukuthi abhalwe kumemori ye-flash yedivayisi okuyiwa kuyo. Kuma-microcontrollers alula omndeni we-AVR, usayizi wekhasi ungamabhayithi angu-128, kodwa ku-ATmega128RFA1 ngu-256. Futhi kwimemori ye-flash exhunywe ngephrothokholi ye-SPI, kuyafana. Uhlelo kudivayisi yokuqala, lapho ulayisha umdwebo, awuwudluliseli ngokushesha kweyesibili, kodwa ubhala kule nkumbulo. Uma i-Arduino IDE ihlola ukufaneleka kokufakiwe, ithunyelwa lokho okulotshwe lapho. Manje sidinga ukudlulisa idatha eyamukelwe ngesiteshi somsakazo kudivayisi yesibili. Ngesikhathi esifanayo, ukushintsha kusuka ekutholeni kuya ekudluliseni nasekubuyiseleni kwenzeka kaningi. Iphrothokholi ye-STK500 ayinandaba nokubambezeleka, kodwa ayikubekezeleli ukulahleka kwedatha (okumangalisayo, kodwa kushiwo ngenhla ukuthi ukubambezeleka kuphinde kuthinte ukudluliswa kwedatha). Futhi ukulahlekelwa ngesikhathi sokudlulisa okungenantambo akunakugwenywa. I-ATmega128RFA1 inokuqaliswa kwe-hardware eyakhelwe ngaphakathi kwezicelo eziphindaphindiwe lapho kunokungabaza ngokunemba kokudluliselwa, kodwa umbhali wanquma ukwenza okufanayo kusofthiwe ngokwakhe. Wakha umthetho olandelwayo lapho idatha eningi igeleza ngendlela eyodwa kunenye.

Ayiphelele, kodwa iyasebenza. Ikhasi le-256-byte lihlukaniswe izingxenye ezine, ngayinye yazo isakazwa emoyeni njengephakethe. Iphakethe lingabamba kufikela ku-125 byte wedatha kanye nebhayithi eyodwa ngobude namabhayithi amabili e-CRC. Ngakho izingcezu ezingamabhayithi angu-64 ubude kanye nezinombolo zekhasi nezengxenye (kusuka ku-0 kuye ku-3) zibekwe lapho. Idivayisi eyamukelayo inoguquko oluvumela ukuthi ilandelele ukuthi mangaki amasegimenti atholiwe, futhi lapho omane efika, idivayisi yokuthumela ithola isiqinisekiso sokuthi lonke ikhasi lamukelwe. Asikho isiqinisekiso (i-CRC ayifani) - thumela kabusha lonke ikhasi. Isivinini sikhulu nakakhulu kunalapho uthumela ngekhebula. Bona:


Kodwa ngokuvamile, kuzodingeka ukuthi unikeze indlela elula yokuxhuma ikhebula kumadivayisi wokulayisha imidwebo nangayo. Isibonelo, faka ngaphakathi kwesiguquli esibonakalayo ku-CP2102, njengasesithombeni, bese usinamathisela ebhodini ukuze sikwazi ukumelana namandla lapho uxhuma futhi unqamula intambo ye-Micro USB.

Sibhala i-OTA bootloader ye-ATmega128RFA1 (njengengxenye yedivayisi ye-Smart Response XE)

Iphinde ibe ne-stabilizer engu-3,3-volt (nokuthi isetshenziswa kanjani kudivayisi enamandla angu-6-volt - uma kuphela ine-stabilizer efanayo, futhi ungakwazi ukwengeza ama-diode amabili ukuze ukhethe ngokuzenzakalelayo ukuthi iyiphi kuzo ezonika amandla idivayisi) . Womathathu ama-LED kumele angadalulwa ebhodini lokuguqula isikhombimsebenzisi, ngaphandle kwalokho azolayisha amabhethri uma esebenza kuwo, futhi aphazamise ukuvota kwekhibhodi futhi asebenze ngememori ye-flash ene-SPI esibonakalayo.

Ukuphishekela umgomo kubonakale kuthakazelisa kakhulu kunokuwufinyelela (futhi angilidingi lelo hlaya ngebhasi). Umbhali ufunde okuningi mayelana nama-bootloaders e-AVR, inkumbulo ye-flash ye-SPI, iphrothokholi ye-STK500 kanye nezinga le-802.15.4.

Wonke amanye amakhodi ngaphezu komtapo wolwazi ochazwe ngenhla − lapha, futhi ingaphansi kwe-GPL v3. I-Twitter yombhali - lapha.

Source: www.habr.com

Engeza amazwana