Sibhala i-OTA bootloader ye-ATmega128RFA1 (njengenxalenye yesixhobo se-Smart Response XE)

Sibhala i-OTA bootloader ye-ATmega128RFA1 (njengenxalenye yesixhobo se-Smart Response XE)

Yonke le nto yaqala ngombhali ethenga isixhobo esinomdla kwimarike yesibini- iSmart Response XE (inkcazo emfutshane). Yenzelwe izikolo: umfundi ngamnye eklasini ufumana isixhobo esifana ne-electronic notebook okanye umguquleli ukususela kwiminyaka yamashumi alithoba, utitshala ubuza umbuzo, baze abafundi bachwetheze iimpendulo kwiikhibhodi zezixhobo, ezifunyanwa nge- Ijelo lerediyo (802.15.4) kumamkeli aqhagamshelwe kwiPC katitshala.

Ezi zixhobo ziye zayekiswa kwiminyaka eliqela eyadlulayo, kwaye yintoni izikolo ezithengelwe i-$ 100-$200 nganye ngoku zivela kwi-eBay nge-$ 10 okanye ngaphantsi. I-hardware ekhoyo ilungele kakhulu imifuniselo ye-geeky:

  • 60 isitshixo sekhibhodi
  • bonisa ngesisombululo se-384 × 136, iibhithi ezi-2 nge-pixel nganye - efana ne-BC, CGA, kodwa i-4 ingekho imibala, kodwa i-gradations yokukhanya
  • microcontroller ATmega128RFA1 (128 kB flash memory, 4 kB ROM, 16 kB RAM, 802.15.4 transceiver)
  • yangaphandle (ngokunxulumene nomlawuli omncinci, hayi isixhobo sonke) 1 megabit (128 kilobyte) inkumbulo yeflash ene-SPI interface
  • indawo ye-4 AAA element.

Ukususela kwigama le-microcontroller kucacile ukuba yeyentsapho ye-AVR, oku kuthetha ukuba ukwenza isixhobo se-Arduino-ehambelanayo ngumsebenzi ongaphezu komncinci ...

Ukususela ezindabeni ukuya phambili I-Hackaday umbhali wafumanisa ukuba yintoni na sele ndenze (ikhonkco elifanayo likuxelela ukuba udibanise phi), ukuba nethuba lokuqhuba imidlalo ye-Arduboy:


Kodwa umbhali unomdla ngakumbi kwithuba lokungadlali kwisixhobo, kodwa ukufunda:

  • inkumbulo flash kunye serial SPI interface
  • ii-bootloaders ze-AVR
  • 802.15.4 umgangatho

Umbhali waqala ngokubhala iilayibrari (GPL v3), ekuvumela ukuba uqalise umboniso, isicatshulwa esiphumayo kunye noxande, kunye nokufikelela kwimemori ye-SPI flash. Emva koko waqala ukuza nemibono yokusetyenziswa ngokufanelekileyo kwesi sixhobo: i-terminal ye-pocket ye-VT-100 ehambelanayo, imidlalo yabadlali abaninzi. Emva kokuba ephinde wakha izixhobo ezithathu, wagqiba ekubeni “azifundise” ukufumana imizobo “emoyeni.” Yintoni eya kuba yinto enomdla kuphela, kodwa ilungele kakhulu: i-case case inzima ukuyivula rhoqo, kwaye phantsi kwekhava yegumbi lebhetri kukho imingxuma kuphela evumela ukuba udibanise umdwelisi we-JTAG ebhodini.

Sibhala i-OTA bootloader ye-ATmega128RFA1 (njengenxalenye yesixhobo se-Smart Response XE)

Oku kwanele ukulayisha iArduino bootloader, kodwa hayi umzobo - izibuko lothotho alidityaniswanga apho, ngoko awukwazi ukwenza ngaphandle kokuvula ityala. Kwakhona, imigca ye-TX0 kunye ne-RX0 ye-port yokuqala ye-serial idityaniswe kunye nemigca yokuvota ye-matrix yebhodibhodi, ezizezi zikhetha izitshixo zokusebenza kumacala omboniso. Kodwa unokwenza ntoni - umbhali wakha oku:

Sibhala i-OTA bootloader ye-ATmega128RFA1 (njengenxalenye yesixhobo se-Smart Response XE)

Wazisa imigca yeJTAG apho, kwaye ngoku akukho sidingo sokuvula indawo yebhetri. Kwaye ukuze i-sketches ilayishwe, ndidibanise zombini izibuko ze-serial kwisinxibelelanisi esifanayo, kwaye ndongeza iswitshi, kuba ngeebhetri ezifakiweyo, akunakwenzeka ngokwasemzimbeni ukucima isixhobo nangayiphi na enye indlela.

Kwathatha ixesha elide ukusebenza ngentsimbi yokuthambisa, imela eluncedo kunye nompu weglu. Ngokubanzi, ukulayisha imizobo "emoyeni" kulula ngakumbi; sidinga ukuyila into ngokungxamisekileyo.

I-Arduino IDE isebenzisa inkqubo yokulayisha imizobo ngqi. Isebenzisana ne-microcontroller isebenzisa iprotocol STK500, ekuvumela ukuba uthumele iifayile kumacala omabini. Ayihambelani kakuhle namajelo apho ukulibaziseka okuguquguqukayo, ukuphazamiseka kunye nokulahleka kwedatha kunokwenzeka. Ukuba kukho into ephumayo okanye i-rustles kwijelo le-serial, ungaphambana ujonge unobangela. Emva kokuba umbhali ehlupheke isiqingatha sosuku de waqonda ukuba ingxaki yayiyintambo embi, kunye ne-converter interface ye-CP2102 engabonakaliyo. Nokuba i-microcontroller ene-converter eyakhelwe-ngaphakathi, umzekelo, i-ATmega32u4, ngamanye amaxesha inokwenza ngolu hlobo. Wonke umsebenzisi we-Arduino uye waqaphela ukuba iimpazamo xa ulayisha imizobo ayinqabile. Ngamanye amaxesha ukurekhoda kuhamba kakuhle, kodwa ngexesha lovavanyo lokufunda iphutha lifunyenwe. Oku akuthethi ukuba bekukho impazamo ngexesha lokubhala - bekukho ukungaphumeleli ngexesha lokufunda. Ngoku khawucinge ukuba xa usebenza "emoyeni" kuya kwenzeka into efanayo, kodwa ngokuphindaphindiweyo.

Emva kokuzama iindlela ezahlukeneyo zokoyisa le ngxaki, umbhali weza nezi zilandelayo. Isixhobo sinememori ye-128 KB flash kunye nojongano lwe-SPI - sifumana idatha phezu kweengcingo (khumbula ukuba umbhali sele enesixhobo esinye esinekhonkco ecaleni), sebenzisa le memori njenge-buffer, kwaye uthumele idatha kwirediyo. itshaneli kwesinye isixhobo. Molo waseCybiko.

Emva kokubhala ikhowudi yokusebenza kunye nejelo lomsakazo, kunye nefonti, umlayishi waba ngubude ngaphezu kwe-4 kilobytes. Ke ngoko, ixabiso le-HFUSE kwafuneka litshintshwe ukusuka ku-0xDA ukuya ku-0xD8. Ngoku i-bootloader ingafikelela kwi-8 kilobytes ubude, kwaye idilesi yokuqala ngoku ngu-0x1E000. Oku kubonakaliswa kwi-Makefile, kodwa kufuneka kwakhona kuthathelwe ingqalelo xa ugcwalisa Ukukhuphela iifayile kwi-bootloader nge avrdude.

I-802.15.4 i-transceiver kwi-ATmega128RFA1 ekuqaleni yenzelwe ukusebenza ngokusebenzisa iprotocol. Zigbee, enzima kakhulu, ngoko umbhali wagqiba ekubeni athumele iipakethi endaweni yoko. Oku kuphunyezwa kwi-hardware kwi-ATmega128RFA1, ngoko ke ikhowudi encinci iyafuneka. Kwakhona, ukuze kube lula, umbhali wagqiba ekubeni asebenzise itshaneli esisigxina, engakuvumeli ukuba uyikhethe nangesandla. Umgangatho we-802.15.4 uxhasa amajelo ali-16 anamanani ukusuka ku-11 ukuya ku-26. Axinene kakhulu, amanye aphindenelelana kwiitshaneli ze-WiFi (ezibomvu zizitshaneli zeZigBee, ezibhlowu, eziluhlaza nezityheli yiWiFi).

Sibhala i-OTA bootloader ye-ATmega128RFA1 (njengenxalenye yesixhobo se-Smart Response XE)

Kuye kwavela ukuba amajelo 15 kunye ne-26 angenako ukuphazamiseka kwi-WiFi.Umbhali wakhetha okwesibini kubo. I-Disclaimer: umguquli akazi nokuba kuvunyelwe ukwenza lula i-ZigBee ngale ndlela. Mhlawumbi kufuneka senze inkqubo encinci kwaye siyiphumeze ngokupheleleyo?

Kwisixhobo sokuqala, kuyimfuneko ukuphumeza umatshini wombuso ogqityiweyo ohambisa idatha nge-STK500 protocol. Ubukhulu becala, imiyalezo ethunyelweyo kwaye efunyenweyo iyakwazi ukuzimela, kodwa eminye ibotshelelwe kuleyo idlule kwisitishi ngaphambili. Inkcazo yengxoxo inikwe apha.

Inxalenye ebalulekileyo yale ncoko yababini kukuhanjiswa kweepakethi ezijoliswe ukuba zibhalwe kwimemori edanyazayo yesixhobo ekuyiwa kuso. Kwii-microcontrollers ezilula zentsapho ye-AVR, ubungakanani bephepha buyi-128 bytes, kodwa i-ATmega128RFA1 yi-256. Kwaye kwimemori ye-flash edibeneyo nge-SPI protocol, iyafana. Inkqubo kwisixhobo sokuqala, xa ulayisha umzobo, awugqithiseli ngokukhawuleza kwisibini, kodwa ubhala kule nkumbulo. Xa i-Arduino IDE ihlola ukuchaneka kokungena, ithunyelwa oko kubhaliweyo apho. Ngoku kufuneka sidlulise idatha efunyenweyo ngetshaneli yerediyo kwisixhobo sesibini. Kwangaxeshanye, ukutshintsha ukusuka ekufumaneni ukuya ekugqithiseleni kwaye umva kwenzeka rhoqo. Iprotocol ye-STK500 ayinandaba nokulibaziseka, kodwa ayikunyamezeli ukulahleka kwedatha (engaqhelekanga, kodwa kwathiwa ngasentla ukuba ukulibaziseka kuchaphazela ukudluliselwa kwedatha). Kwaye ilahleko ngexesha lokudluliselwa kwamacingo ayinakuphepheka. I-ATmega128RFA1 inokuphunyezwa kwe-hardware eyakhelwe-ngaphakathi yezicelo eziphindaphindiweyo xa kukho ukuthandabuza malunga nokuchaneka kokudluliselwa, kodwa umbhali wagqiba ekubeni enze okufanayo kwisofthiwe ngokwakhe. Waqulunqa iprotocol apho idatha eninzi ihamba ngendlela enye kunenye.

Ayigqibelelanga, kodwa iyasebenza. Iphepha le-256-byte lihlulwe libe ngamacandelo amane, ngalinye lihanjiswa emoyeni njengepakethi. Ipakethi inokubamba ukuya kuthi ga kwi-125 bytes yedatha kunye ne-byte enye yobude kunye ne-byte ezimbini ze-CRC. Ngoko ke amaqhekeza angama-64 ebhayithi ubude kunye nephepha kunye namanani ecandelo (ukusuka ku-0 ukuya ku-3) abekwe apho. Isixhobo esifumanayo sinoguquko oluvumela ukuba ilandelele ukuba mangaphi amacandelo afunyenweyo, kwaye xa omane efika, isixhobo esithumelayo sifumana isiqinisekiso sokuba iphepha lonke lifunyenwe. Akukho siqinisekiso (i-CRC ayingqamananga) - thumela kwakhona lonke iphepha. Isantya sikhulu ngakumbi kunaxa uthumela ngentambo. Bona:


Kodwa ngokubanzi, kuya kufuneka ukubonelela ngendlela efanelekileyo yokudibanisa ikhebula kwizixhobo zokulayisha imizobo kunye nayo. Umzekelo, beka ngaphakathi kwesiguquli sojongano olunjalo kwi-CP2102, njengakwifoto, kwaye uyincamathelise ebhodini ukuze ikwazi ukumelana namandla xa uqhagamshelwa kwaye uqhawula intambo ye-Micro USB.

Sibhala i-OTA bootloader ye-ATmega128RFA1 (njengenxalenye yesixhobo se-Smart Response XE)

Kwakhona ine-3,3-volt stabilizer (kunye nendlela yokuyisebenzisa kwisixhobo esine-volt-6-volt-ukuba nje ine-stabilizer efanayo, kwaye unokongeza ii-diode ezimbini ukuze ukhethe ngokuzenzekelayo ukuba yeyiphi kuzo eya kunika amandla isixhobo) . Zonke ii-LED ezintathu kufuneka zingabikho kwibhodi yokuguqula i-interface, ngaphandle koko ziya kulayisha ngakumbi iibhetri xa zisebenza kuzo, kwaye ziphazamise ukuvota kwebhodibhodi kunye nokusebenza ngememori ye-flash kunye ne-SPI interface.

Ukusukela injongo kuye kwanomdla ngakumbi kunokuphumelela (kwaye awudingi loo joke malunga nebhasi). Umbhali wafunda okuninzi malunga nee-bootloaders ze-AVR, imemori ye-flash ye-SPI, iprotocol ye-STK500 kunye nomgangatho we-802.15.4.

Yonke enye ikhowudi ukongeza kwithala leencwadi elichazwe ngentla apha − apha, kwaye iphantsi kweGPL v3. UTwitter wombhali - apha.

umthombo: www.habr.com

Yongeza izimvo