Nagsulat kami og OTA bootloader para sa ATmega128RFA1 (isip bahin sa Smart Response XE device)

Nagsulat kami og OTA bootloader para sa ATmega128RFA1 (isip bahin sa Smart Response XE device)

Nagsugod ang tanan sa pagpalit sa tagsulat usa ka makapaikag nga aparato sa sekondaryang merkado - Smart Response XE (mubo nga paghulagway). Gituyo kini alang sa mga eskwelahan: ang matag estudyante sa klase makadawat og device nga susama sa electronic notebook o translator gikan sa nineties, ang magtutudlo mangutana, ug ang mga estudyante i-type ang mga tubag sa mga keyboard sa mga device, nga nadawat pinaagi sa usa ka channel sa radyo (802.15.4) sa receiver nga konektado sa PC sa magtutudlo.

Kini nga mga himan gihunong pipila ka tuig ang milabay, ug kung unsa ang gipalit sa mga eskwelahan sa $100-$200 matag usa karon nag-pop up sa eBay sa $10 o mas ubos. Ang hardware didto angayan kaayo alang sa geeky nga mga eksperimento:

  • 60 key nga keyboard
  • display nga adunay resolusyon nga 384 Γ— 136, 2 bits kada pixel - susama sa BC, CGA, apan 4 dili mga kolor, apan gradations sa kahayag
  • microcontroller ATmega128RFA1 (128 kB flash memory, 4 kB ROM, 16 kB RAM, 802.15.4 transceiver)
  • eksternal (nga may kalabutan sa microcontroller, dili ang tibuok device) 1 megabit (128 kilobyte) flash memory uban sa SPI interface
  • compartment alang sa 4 AAA nga mga elemento.

Gikan sa ngalan sa microcontroller klaro nga kini iya sa pamilyang AVR, nga nagpasabot nga ang paghimo sa device nga Arduino-compatible usa ka labaw pa sa walay hinungdan nga buluhaton ...

Gikan sa balita sa Hackaday nahibal-an sa tagsulat kung unsa kini nahimo na (ang parehas nga link nagsulti kanimo kung unsa ang ikonektar kung asa), adunay higayon nga magpadagan sa mga dula alang sa Arduboy:


Apan ang tagsulat mas interesado sa oportunidad nga dili magdula sa device, apan magtuon:

  • flash memory nga adunay serial SPI interface
  • mga bootloader alang sa AVR
  • sumbanan 802.15.4

Ang tagsulat nagsugod pinaagi sa pagsulat mga librarya (GPL v3), nga nagtugot kanimo sa pagsugod sa display, output nga teksto ug mga rektanggulo, ug pag-access sa SPI flash memory. Dayon nagsugod siya sa paghimo og mga ideya alang sa praktikal nga paggamit sa device: usa ka VT-100-compatible pocket terminal, multiplayer nga mga dula. Human natukod pag-usab ang tulo ka mga himan, nakahukom siya sa "pagtudlo" kanila sa pagdawat og mga sketch "sa hangin." Unsa ang dili lamang makapaikag, apan usab kaayo kombenyente: ang kaso sa aparato lisud nga ablihan sa matag higayon, ug sa ilawom sa tabon sa kompartamento sa baterya adunay mga lungag lamang nga nagtugot kanimo sa pagkonektar sa usa ka JTAG programmer sa board.

Nagsulat kami og OTA bootloader para sa ATmega128RFA1 (isip bahin sa Smart Response XE device)

Igo na kini aron ma-upload ang Arduino bootloader, apan dili ang sketch - ang serial port dili konektado didto, mao nga dili nimo mahimo kung wala gibuksan ang kaso. Usab, ang mga linya sa TX0 ug RX0 sa unang serial port gihiusa sa mga linya sa botohan sa keyboard matrix, nga mao kadtong nag-poll sa mga function key sa mga kilid sa display. Apan unsa ang imong mahimo - ang tagsulat naghimo niini:

Nagsulat kami og OTA bootloader para sa ATmega128RFA1 (isip bahin sa Smart Response XE device)

Gidala niya ang mga linya sa JTAG didto, ug karon dili na kinahanglan nga ablihan ang kompartamento sa baterya. Ug aron ma-upload ang mga sketch, gikonektar nako ang duha ka serial port sa parehas nga konektor, nagdugang usab usa ka switch, tungod kay sa pag-install sa mga baterya, imposible nga mapalong ang aparato sa bisan unsang paagi.

Nagkinahanglan kini og taas nga panahon sa pagtrabaho gamit ang usa ka soldering iron, usa ka utility nga kutsilyo ug usa ka glue gun. Sa kinatibuk-an, ang pag-upload sa mga sketch "sa hangin" labi ka kombenyente; kinahanglan namon nga mag-imbento og usa ka butang alang niini.

Gigamit sa Arduino IDE ang programa sa pag-upload sa mga sketch avrdude. Kini nakig-uban sa microcontroller gamit ang protocol STK500, nga nagtugot kanimo sa pagbalhin sa mga file sa duha ka direksyon. Dili kaayo kini katugma sa mga kanal diin posible ang variable nga paglangan, pagtuis ug pagkawala sa datos. Kung adunay usa ka butang nga wala’y kawala o nag-rustles sa serial channel, mahimo kang mabuang sa pagpangita sa hinungdan. Sa higayon nga ang tagsulat nag-antus sa tunga sa usa ka adlaw hangtud nga siya nakaamgo nga ang problema mao ang usa ka dili maayo nga cable, ingon man usab sa usa ka capricious CP2102 interface converter. Bisan ang usa ka microcontroller nga adunay built-in nga interface converter, pananglitan, ATmega32u4, usahay molihok sama niini. Ang matag tiggamit sa Arduino nakamatikod nga ang mga sayup sa pag-upload sa mga sketch dili kaayo talagsaon. Usahay ang pagrekord maayo, apan sa panahon sa usa ka pagsulay sa pagbasa usa ka sayup ang nakit-an. Wala kini magpasabot nga adunay sayup sa pagsulat - adunay kapakyasan sa pagbasa. Karon hunahunaa nga kung magtrabaho "sa hangin" parehas nga butang ang mahitabo, apan mas kanunay.

Human sa pagsulay sa lain-laing mga paagi sa pagbuntog niini nga problema, ang tagsulat miabut uban sa mosunod. Ang device adunay 128 KB flash memory nga adunay SPI interface - nakadawat kami og data sa mga wire (hinumdomi nga ang tagsulat adunay usa ka device nga adunay connector sa kilid), gamita kini nga memorya isip buffer, ug ipadala ang data sa radyo channel sa laing device. Hello gikan sa Cybiko.

Human sa pagsulat sa code sa pagtrabaho uban sa channel sa radyo, ingon man usab sa font, ang loader nahimong mas taas pa kay sa 4 kilobytes. Busa, ang kantidad sa HFUSE kinahanglang usbon gikan sa 0xDA ngadto sa 0xD8. Karon ang bootloader mahimong hangtod sa 8 kilobytes ang gitas-on, ug ang pagsugod nga adres karon 0x1E000. Gipakita kini sa Makefile, apan kinahanglan usab nga tagdon kung pun-on bootloader pinaagi sa avrdude.

Ang 802.15.4 transceiver sa ATmega128RFA1 orihinal nga gidisenyo sa pag-operate gamit ang protocol Zigbee, nga medyo komplikado, mao nga nakahukom ang tagsulat nga ipadala na lang ang mga pakete. Gipatuman kini sa hardware sa ATmega128RFA1, busa gamay nga code ang gikinahanglan. Usab, alang sa kayano, ang tagsulat nakahukom sa paggamit sa usa ka fixed channel, dili motugot kaninyo sa pagpili niini bisan sa kamut. Ang 802.15.4 standard nagsuporta sa 16 ka mga channel nga adunay mga numero gikan sa 11 ngadto sa 26. Medyo puno sila, ang uban nagsapaw usab sa mga channel sa WiFi (pula ang mga channel sa ZigBee, blue, green ug yellow ang WiFi).

Nagsulat kami og OTA bootloader para sa ATmega128RFA1 (isip bahin sa Smart Response XE device)

Nahibal-an nga ang mga channel 15 ug 26 labing gamay nga daling maapektuhan sa WiFi. Gipili sa tagsulat ang ikaduha niini. Disclaimer: wala mahibal-an sa maghuhubad kung gitugotan ba nga pasimplehon ang ZigBee niining paagiha. Tingali kinahanglan naton nga maghimo usa ka gamay nga pagprograma ug ipatuman kini sa hingpit?

Sa una nga aparato, kinahanglan nga ipatuman ang usa ka limitado nga makina sa estado nga nagpadala sa datos pinaagi sa protocol sa STK500. Sa kadaghanan nga bahin, ang mga mensahe nga gipasa ug nadawat igo ra sa kaugalingon, apan ang uban nahigot sa mga nakaagi sa channel kaniadto. Deskripsyon sa dayalogo gihatag dinhi.

Usa ka importante nga bahin niini nga dayalogo mao ang pagpasa sa mga pakete nga gituyo nga isulat sa flash memory sa destinasyon nga device. Alang sa yano nga mga microcontroller sa pamilyang AVR, ang gidak-on sa panid 128 bytes, apan alang sa ATmega128RFA1 kini 256. Ug alang sa flash memory nga konektado pinaagi sa SPI protocol, parehas kini. Ang programa sa una nga aparato, kung mag-upload sa usa ka sketch, dili dayon ibalhin kini sa ikaduha, apan isulat kini sa kini nga panumduman. Kung gisusi sa Arduino IDE ang pagkahusto sa entry, gipadala kung unsa ang gisulat didto. Karon kinahanglan namong ipadala ang nadawat nga datos pinaagi sa channel sa radyo ngadto sa ikaduhang device. Sa samang higayon, ang pagbalhin gikan sa pagdawat ngadto sa pagpasa ug pagbalik mahitabo kanunay. Ang protocol sa STK500 walay pagtagad sa mga paglangan, apan dili motugot sa pagkawala sa datos (katingad-an, apan giingon sa ibabaw nga ang mga paglangan makaapekto usab sa pagbalhin sa datos). Ug ang mga pagkawala sa panahon sa wireless transmission dili malikayan. Ang ATmega128RFA1 adunay built-in nga hardware nga pagpatuman sa gibalikbalik nga mga hangyo kung adunay mga pagduhaduha bahin sa pagkahusto sa pagbalhin, apan ang tagsulat nakahukom nga ipatuman ang parehas sa software mismo. Naghimo siya usa ka protocol diin daghang mga datos ang nag-agay sa usa ka paagi kaysa sa lain.

Dili kini perpekto, apan kini molihok. Ang 256-byte nga panid gibahin sa upat ka mga bahin, ang matag usa niini gipasa sa hangin ingon usa ka pakete. Ang usa ka pakete mahimong magkupot ug hangtod sa 125 ka byte sa datos ug usa ka byte alang sa gitas-on ug duha ka byte alang sa CRC. Busa ang mga tipik nga 64 bytes ang gitas-on uban sa mga numero sa panid ug bahin (gikan sa 0 ngadto sa 3) gibutang didto. Ang tigdawat nga himan adunay usa ka variable nga nagtugot niini sa pagsubay kung pila ang mga bahin nga nadawat, ug kung ang tanan nga upat moabut, ang nagpadala nga aparato makadawat kumpirmasyon nga ang tibuuk nga panid nadawat. Walay kumpirmasyon (CRC wala motakdo) - ipadala pag-usab ang tibuok panid. Ang katulin mas dako pa kaysa sa pagpadala pinaagi sa cable. Tan-awa:


Apan sa kinatibuk-an, kinahanglan nga maghatag usa ka kombenyente nga paagi aron makonektar ang cable sa mga aparato alang sa pag-upload sa mga sketch ug pinaagi niini. Pananglitan, ibutang sa sulod sa ingon nga interface converter sa CP2102, sama sa litrato, ug ipapilit kini sa board aron kini makasugakod sa puwersa sa dihang magkonektar ug magdiskonekta sa Micro USB cable.

Nagsulat kami og OTA bootloader para sa ATmega128RFA1 (isip bahin sa Smart Response XE device)

Adunay usab kini usa ka 3,3-volt stabilizer (ug kung giunsa kini gamiton sa usa ka aparato nga adunay 6-volt nga suplay sa kuryente - kung kini adunay parehas nga stabilizer, ug mahimo nimong idugang ang duha ka mga diode aron awtomatiko nga mapili kung kinsa sa kanila ang mogahom sa aparato) . Ang tanan nga tulo ka mga LED kinahanglan nga dili mabaligya gikan sa interface converter board, kung dili, dugangan nila ang pagkarga sa mga baterya kung mag-operate niini, ug makabalda usab sa polling sa keyboard ug magtrabaho uban ang flash memory nga adunay interface sa SPI.

Ang pagpadayon sa usa ka katuyoan nahimo nga labi ka makapaikag kaysa pagkab-ot niini (ug dili kinahanglan kana nga komedya bahin sa bus). Daghan ang nakat-unan sa tagsulat bahin sa AVR bootloaders, SPI flash memory, ang STK500 protocol ug ang 802.15.4 standard.

Ang tanan nga ubang code dugang sa librarya nga gihulagway sa ibabaw mao ang βˆ’ dinhi, ug kini ubos usab sa GPL v3. Twitter sa tagsulat - dinhi.

Source: www.habr.com

Idugang sa usa ka comment