Qed niktbu bootloader OTA għal ATmega128RFA1 (bħala parti mill-apparat Smart Response XE)

Qed niktbu bootloader OTA għal ATmega128RFA1 (bħala parti mill-apparat Smart Response XE)

Kollox beda bl-awtur jixtri apparat interessanti fis-suq sekondarju - Smart Response XE (deskrizzjoni qasira). Huwa maħsub għall-iskejjel: kull student fil-klassi jirċievi apparat simili għal notebook elettroniku jew traduttur mis-snin disgħin, l-għalliem jistaqsi mistoqsija, u l-istudenti jittajpja t-tweġibiet fuq it-tastieri tal-apparati, li jaslu permezz ta’ kanal tar-radju (802.15.4) għal riċevitur konness mal-PC tal-għalliem.

Dawn l-apparati twaqqfu bosta snin ilu, u dak l-iskejjel mixtrija għal $100-$200 kull wieħed issa qed jitfaċċa fuq eBay għal $10 jew inqas. Il-ħardwer hemm huwa adattat ħafna għal esperimenti geeky:

  • 60 keyboard
  • wiri b'riżoluzzjoni ta '384 × 136, 2 bits għal kull pixel - simili għal BC, CGA, iżda 4 mhux kuluri, iżda gradazzjonijiet ta' luminożità
  • mikrokontrollur ATmega128RFA1 (memorja flash 128 kB, ROM 4 kB, RAM 16 kB, transceiver 802.15.4)
  • esterna (b'relazzjoni mal-mikrokontrollur, mhux l-apparat kollu) 1 megabit (128 kilobyte) memorja flash b'interface SPI
  • kompartiment għal 4 elementi AAA.

Mill-isem tal-mikrokontrollur huwa ċar li jappartjeni għall-familja AVR, li jfisser li tagħmel l-apparat kompatibbli ma 'Arduino huwa kompitu aktar minn trivjali...

Mill-aħbarijiet fuq Hackaday l-awtur sab x'inhu diġà għamlu (l-istess link jgħidlek x'għandek tikkonnettja fejn), li jkollok l-opportunità li tmexxi logħob għal Arduboy:


Iżda l-awtur huwa aktar interessat fl-opportunità li ma jilgħabx fuq l-apparat, iżda li jistudja:

  • memorja flash b'interface SPI tas-serje
  • bootloaders għall-AVR
  • standard 802.15.4

L-awtur beda bil-miktub libreriji (GPL v3), li jippermettilek li tibda l-wiri, it-test tal-ħruġ u r-rettangoli, u taċċessa l-memorja flash SPI. Imbagħad beda joħroġ b'ideat għall-użu prattiku tal-apparat: terminal tal-but kompatibbli mal-VT-100, logħob multiplayer. Wara li bena mill-​ġdid tliet apparati, iddeċieda li “jgħallimhom” biex jirċievu abbozzi “fuq l-​arja.” Dak li jkun mhux biss interessanti, iżda wkoll konvenjenti ħafna: il-każ tal-apparat huwa diffiċli biex jinfetaħ kull darba, u taħt il-kopertura tal-kompartiment tal-batterija hemm biss toqob li jippermettulek tgħaqqad programmatur JTAG mal-bord.

Qed niktbu bootloader OTA għal ATmega128RFA1 (bħala parti mill-apparat Smart Response XE)

Dan huwa biżżejjed biex ittella 'l-Arduino bootloader, iżda mhux l-iskeċċ - il-port tas-serje mhuwiex konness hemm, għalhekk xorta ma tistax tagħmel mingħajr ma tiftaħ il-każ. Ukoll, il-linji TX0 u RX0 tal-ewwel port tas-serje huma kkombinati mal-linji tal-votazzjoni tal-matriċi tat-tastiera, jiġifieri dawk li jivvutaw it-tasti tal-funzjoni fuq il-ġnub tal-wiri. Imma x'tista 'tagħmel - l-awtur bena dan:

Qed niktbu bootloader OTA għal ATmega128RFA1 (bħala parti mill-apparat Smart Response XE)

Huwa ġab il-linji JTAG hemm, u issa m'hemmx bżonn li tiftaħ il-kompartiment tal-batterija. U sabiex ikunu jistgħu jittellgħu abbozzi, qabbad iż-żewġ portijiet tas-serje ma 'l-istess konnettur, u żidt ukoll swiċċ, għax bil-batteriji installati, huwa fiżikament impossibbli li titfi l-apparat b'xi mod ieħor.

Ħadet żmien mhux ħażin biex taħdem b'ħadida tal-issaldjar, sikkina ta 'utilità u pistola tal-kolla. B'mod ġenerali, it-tlugħ ta' skeċċijiet "fuq l-arja" huwa ħafna aktar konvenjenti; għandna bżonn urġenti li nivvintaw xi ħaġa għal dan.

Arduino IDE juża l-programm biex ittella skeċċijiet avrdude. Jinteraġixxi mal-mikrokontrollur billi juża l-protokoll STK500, li jippermettilek tittrasferixxi fajls fiż-żewġ direzzjonijiet. Huwa kompatibbli ħażin ma 'kanali fejn dewmien varjabbli, distorsjoni u telf ta' data huma possibbli. Jekk xi ħaġa tiġi maħlula jew rustles fil-kanal tas-serje, tista 'tmur crazy tfittex il-kawża. Ladarba l-awtur sofra għal nofs ġurnata sakemm induna li l-problema kienet kejbil ħażin, kif ukoll konvertitur tal-interface CP2102 kapriċjuż. Anke mikrokontrollur b'konvertitur ta 'interface integrat, pereżempju, ATmega32u4, kultant jista' jaġixxi bħal dan. Kull utent ta 'Arduino innota li l-iżbalji meta jtellgħu skeċċijiet mhumiex daqshekk rari. Xi drabi r-reġistrazzjoni tmur tajjeb, iżda waqt il-qari tat-test jinstab żball. Dan ma jfissirx li kien hemm żball waqt il-kitba – kien hemm nuqqas waqt il-qari. Issa immaġina li meta taħdem "fuq l-arja" se jiġri l-istess ħaġa, iżda ħafna aktar spiss.

Wara li pprova modi differenti biex tegħleb din il-problema, l-awtur ħareġ b'dan li ġej. L-apparat għandu memorja flash ta '128 KB b'interface SPI - nirċievu data fuq il-wajers (ftakar li l-awtur diġà għandu apparat wieħed b'konnettur fuq il-ġenb), uża din il-memorja bħala buffer, u tibgħat id-data fuq ir-radju kanal għal apparat ieħor. Hello minn Cybiko.

Wara li kitbet il-kodiċi biex taħdem mal-kanal tar-radju, kif ukoll it-tipa, il-loader sar itwal minn 4 kilobytes. Għalhekk, il-valur HFUSE kellu jinbidel minn 0xDA għal 0xD8. Issa l-bootloader jista 'jkun twil sa 8 kilobytes, u l-indirizz tal-bidu issa huwa 0x1E000. Dan huwa rifless fil-Makefile, iżda għandu jitqies ukoll meta timla bootloader via avrdude.

It-transceiver 802.15.4 fl-ATmega128RFA1 huwa oriġinarjament iddisinjat biex jaħdem bl-użu tal-protokoll Zigbee, li hija pjuttost ikkumplikata, għalhekk l-awtur iddeċieda li jittrasmetti biss pakketti minflok. Dan huwa implimentat fil-ħardwer fl-ATmega128RFA1, għalhekk ftit kodiċi huwa meħtieġ. Ukoll, għas-sempliċità, l-awtur iddeċieda li juża kanal fiss, li ma jippermettilekx tagħżelha anki manwalment. L-istandard 802.15.4 jappoġġja 16-il kanal b'numri minn 11 sa 26. Huma pjuttost iffullar, xi wħud jikkoinċidu wkoll kanali WiFi (aħmar huma kanali ZigBee, blu, aħdar u isfar huma WiFi).

Qed niktbu bootloader OTA għal ATmega128RFA1 (bħala parti mill-apparat Smart Response XE)

Irriżulta li l-kanali 15 u 26 huma l-inqas suxxettibbli għall-interferenza mill-WiFi. L-awtur għażel it-tieni wieħed minnhom. Ċaħda ta 'responsabbiltà: it-traduttur ma jafx jekk huwiex permess li jissimplifika ZigBee b'dan il-mod. Forsi għandna nagħmlu ftit aktar programmazzjoni u nimplimentawha kompletament?

Fuq l-ewwel apparat, huwa meħtieġ li tiġi implimentata magna ta 'stat finit li tittrasmetti data permezz tal-protokoll STK500. Fil-biċċa l-kbira, il-messaġġi trażmessi u riċevuti huma awtosuffiċjenti, iżda xi wħud huma marbuta ma 'dawk li għaddew mill-kanal qabel. Tingħata deskrizzjoni tad-djalogu hawn.

Komponent importanti ta' dan id-djalogu huwa t-trażmissjoni ta' pakketti maħsuba biex jinkitbu fil-memorja flash tal-apparat tad-destinazzjoni. Għal mikrokontrolluri sempliċi tal-familja AVR, id-daqs tal-paġna huwa 128 bytes, iżda għall-ATmega128RFA1 huwa 256. U għall-memorja flash li hija konnessa permezz tal-protokoll SPI, huwa l-istess. Il-programm fl-ewwel apparat, meta jtella' skeċċ, ma jittrasferihx immedjatament għat-tieni, iżda jikteb f'din il-memorja. Meta l-Arduino IDE jiċċekkja l-korrettezza tad-dħul, jintbagħat dak li kien miktub hemmhekk. Issa rridu nittrasmettu d-data riċevuta permezz tal-kanal tar-radju għat-tieni apparat. Fl-istess ħin, il-bidla minn riċeviment għal trażmissjoni u lura sseħħ pjuttost ta 'spiss. Il-protokoll STK500 huwa indifferenti għad-dewmien, iżda ma jittollerax it-telf tad-dejta (stramba, iżda ntqal hawn fuq li d-dewmien jaffettwa wkoll it-trasferiment tad-dejta). U t-telf waqt it-trasmissjoni bla fili huwa inevitabbli. L-ATmega128RFA1 għandu implimentazzjoni ta 'hardware integrata ta' talbiet ripetuti meta jkun hemm dubji dwar il-korrettezza tat-trasferiment, iżda l-awtur iddeċieda li jimplimenta l-istess fis-softwer huwa stess. Huwa żviluppa protokoll li fih ħafna aktar dejta tiċċirkola b'mod mill-ieħor.

Mhuwiex perfett, iżda jaħdem. Il-paġna ta’ 256 byte hija maqsuma f’erba’ segmenti, li kull wieħed minnhom jiġi trażmess fl-ajru bħala pakkett. Pakkett jista 'jżomm sa 125 bytes ta' data flimkien ma 'byte wieħed għat-tul u żewġ bytes għal CRC. Allura frammenti 64 bytes twal flimkien man-numri tal-paġna u tas-segmenti (minn 0 sa 3) jitqiegħdu hemmhekk. L-apparat li jirċievi għandu varjabbli li jippermettilu jsegwi kemm ġew riċevuti segmenti, u meta jaslu l-erbgħa kollha, l-apparat li jibgħat jirċievi konferma li l-paġna kollha ġiet riċevuta. L-ebda konferma (CRC ma qabbilx) - ibgħat mill-ġdid il-paġna kollha. Il-veloċità hija saħansitra akbar minn meta tittrasmetti permezz tal-kejbil. Ara:


Iżda b'mod ġenerali, ikun meħtieġ li jiġi pprovdut mod konvenjenti biex tikkonnettja l-kejbil mal-apparati għat-tlugħ ta 'skeċċi u permezz tiegħu. Pereżempju, poġġi ġewwa tali konvertitur tal-interface fuq il-CP2102, bħal fir-ritratt, u waħħalha mal-bord sabiex tkun tista 'tiflaħ il-forza meta tikkonnettja u skonnettja l-kejbil Mikro USB.

Qed niktbu bootloader OTA għal ATmega128RFA1 (bħala parti mill-apparat Smart Response XE)

Għandu wkoll stabilizzatur ta '3,3 volts (u kif tużah f'apparat b'provvista ta' enerġija ta '6 volts - jekk biss ikollu l-istess stabilizzatur, u tista' żżid żewġ dajowds biex tagħżel awtomatikament liema minnhom se jħaddem l-apparat) . It-tliet LEDs għandhom ikunu mhux issaldjati mill-bord tal-konvertitur tal-interface, inkella se jgħabbu l-batteriji addizzjonalment meta joperaw fuqhom, u jinterferixxu wkoll mal-votazzjoni tat-tastiera u jaħdmu b'memorja flash b'interface SPI.

Li ssegwi għan irriżulta li kien saħansitra aktar interessanti milli jintlaħaq (u m'għandekx bżonn dik iċ-ċajta dwar ix-xarabank). L-awtur tgħallem ħafna dwar bootloaders AVR, memorja flash SPI, protokoll STK500 u standard 802.15.4.

Il-kodiċi l-ieħor kollu minbarra l-librerija deskritta hawn fuq huwa - hawn, u huwa wkoll taħt GPL v3. Twitter tal-awtur - hawn.

Sors: www.habr.com

Żid kumment