{"id":31101,"date":"2019-10-31T21:39:28","date_gmt":"2019-10-31T18:39:28","guid":{"rendered":"https:\/\/prohoster.info\/blog\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe\/"},"modified":"2019-10-31T21:39:28","modified_gmt":"2019-10-31T18:39:28","slug":"pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe","title":{"rendered":"OTA-ind\u00edt\u00f3 \u00edr\u00e1sa ATmega128RFA1-hez (a Smart Response XE eszk\u00f6z r\u00e9szek\u00e9nt)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"OTA-ind\u00edt\u00f3 \u00edr\u00e1sa ATmega128RFA1-hez (a Smart Response XE eszk\u00f6z r\u00e9szek\u00e9nt)\" src=\"\/wp-content\/uploads\/2019\/04\/c3c47048a601bcd0a79b44535de2f36f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMinden azzal kezd\u0151d\u00f6tt, hogy a szerz\u0151 egy \u00e9rdekes eszk\u00f6zt v\u00e1s\u00e1rolt a m\u00e1sodlagos piacon \u2014 Smart Response XE (<noindex><a rel=\"nofollow\" href=\"http:\/\/downloads.smarttech.com\/media\/sitecore\/en\/support\/product\/smartresponse\/smartresponsexe\/specsheets\/specsresponsexev18mar13.pdf\">r\u00f6vid le\u00edr\u00e1s<\/a><\/noindex>). Az iskol\u00e1k sz\u00e1m\u00e1ra k\u00e9sz\u00fclt: minden tanul\u00f3nak jut egy k\u00e9sz\u00fcl\u00e9k, amely hasonl\u00edt egy elektronikus jegyzetf\u00fczetre vagy a kilencvenes \u00e9vek ford\u00edt\u00f3j\u00e1ra, a tan\u00e1r k\u00e9rd\u00e9st tesz fel, \u00e9s a tanul\u00f3k be\u00edrj\u00e1k a v\u00e1laszaikat az eszk\u00f6z\u00f6k billenty\u0171zet\u00e9n, amelyek r\u00e1di\u00f3frekvenci\u00e1n (802.15.4) \u00e9rkeznek a tan\u00e1ri sz\u00e1m\u00edt\u00f3g\u00e9phez csatlakoz\u00f3 vev\u0151egys\u00e9ghez.<\/p>\n<p>Ezeknek az eszk\u00f6z\u00f6knek a t\u00e1mogat\u00e1sa m\u00e1r n\u00e9h\u00e1ny \u00e9ve megsz\u0171nt, \u00e9s ami\u00e9rt az iskol\u00e1k 100-200 doll\u00e1rt k\u00f6lt\u00f6ttek darabonk\u00e9nt, az most az eBay-en 10 doll\u00e1r\u00e9rt vagy ann\u00e1l kevesebb\u00e9rt kaphat\u00f3. Az \u201ealkatr\u00e9szek\u201d val\u00f3ban a geekek k\u00eds\u00e9rletez\u00e9s\u00e9re alkalmasak:<\/p>\n<ul>\n<li>60 billenty\u0171s billenty\u0171zet<\/li>\n<li>384&#215;136 felbont\u00e1s\u00fa kijelz\u0151, 2 bit\/pixel \u2014 hasonl\u00f3an a BK-hoz, CGA-hoz, de 4 sz\u00edn helyett f\u00e9nyess\u00e9gi fokozatok.<\/li>\n<li>ATmega128RFA1 mikrokontroller (128 kB flash mem\u00f3ria, 4 kB EEPROM, 16 kB RAM, 802.15.4 szabv\u00e1ny\u00fa ad\u00f3-vev\u0151)<\/li>\n<li>k\u00fcls\u0151 (a mikrokontrollerhez k\u00e9pest, nem az eg\u00e9sz eszk\u00f6zh\u00f6z) 1 megabites (128 kilob\u00e1jt) flash mem\u00f3ria SPI interf\u00e9sszel<\/li>\n<li>rekesz 4 AAA elemmel.<\/li>\n<\/ul>\n<p>\nA mikrokontroller nev\u00e9b\u0151l egy\u00e9rtelm\u0171, hogy az AVR csal\u00e1dhoz tartozik, \u00edgy az Arduino-kompatibilis eszk\u00f6z k\u00e9sz\u00edt\u00e9se t\u00f6bb mint trivi\u00e1lis feladat\u2026<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>A <noindex><a rel=\"nofollow\" href=\"https:\/\/hackaday.com\/2018\/07\/22\/classroom-gadget-turned-arduino-compatible\/\">Hackaday<\/a><\/noindex> cikkb\u0151l a szerz\u0151 megtudta, hogy ezt <noindex><a rel=\"nofollow\" href=\"https:\/\/community.arduboy.com\/t\/smart-response-xe-re-purposed-into-arduboy\/6094\/\">m\u00e1r megval\u00f3s\u00edtott\u00e1k<\/a><\/noindex> (ugyanott tal\u00e1lhat\u00f3 a csatlakoztat\u00e1si \u00fatmutat\u00f3), \u00edgy lehet\u0151s\u00e9g ny\u00edlt Arduboy j\u00e1t\u00e9kok ind\u00edt\u00e1s\u00e1ra:<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"6VqPGFtIT8Q\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/6VqPGFtIT8Q\/hqdefault.jpg\" alt=\"Vide\u00f3 lej\u00e1tsz\u00e1sa\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\n De a szerz\u0151t jobban \u00e9rdekli az a lehet\u0151s\u00e9g, hogy ne csak j\u00e1tsszon az eszk\u00f6zzel, hanem tanulm\u00e1nyozza:<\/p>\n<ul>\n<li>soros SPI interf\u00e9szes flash mem\u00f3ria<\/li>\n<li>AVR bootloaderek<\/li>\n<li>802.15.4 szabv\u00e1ny<\/li>\n<\/ul>\n<p>\nA szerz\u0151 azzal kezdte, hogy meg\u00edrta <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitbank2\/SmartResponseXE\">k\u00f6nyvt\u00e1r<\/a><\/noindex> (GPL v3), amely lehet\u0151v\u00e9 teszi a kijelz\u0151 inicializ\u00e1l\u00e1s\u00e1t, sz\u00f6veg \u00e9s t\u00e9glalapok megjelen\u00edt\u00e9s\u00e9t, valamint a flash mem\u00f3ria el\u00e9r\u00e9s\u00e9t SPI interf\u00e9szen kereszt\u00fcl. Ezut\u00e1n elkezdte kigondolni az eszk\u00f6z gyakorlati felhaszn\u00e1l\u00e1s\u00e1nak \u00f6tleteit: zsebre rakhat\u00f3 VT-100 kompatibilis termin\u00e1l, t\u00f6bbj\u00e1t\u00e9kos j\u00e1t\u00e9kok. H\u00e1rom eszk\u00f6z \u00e1talak\u00edt\u00e1sa ut\u00e1n \u00fagy d\u00f6nt\u00f6tt, hogy \u201emegtan\u00edtja\u201d \u0151ket, hogy \u201el\u00e9g\u00faton\u201d kapj\u00e1k meg a sketch-eket. Ez nemcsak izgalmas lenne, hanem rendk\u00edv\u00fcl k\u00e9nyelmes is: az eszk\u00f6z h\u00e1z\u00e1t minden alkalommal neh\u00e9z kinyitni, \u00e9s az akkumul\u00e1torrekesz fedele alatt csak ny\u00edl\u00e1sok vannak, amelyek lehet\u0151v\u00e9 teszik a JTAG programoz\u00f3 csatlakoztat\u00e1s\u00e1t a nyomtatott \u00e1ramk\u00f6rh\u00f6z.<\/p>\n<p><img decoding=\"async\" alt=\"OTA-ind\u00edt\u00f3 \u00edr\u00e1sa ATmega128RFA1-hez (a Smart Response XE eszk\u00f6z r\u00e9szek\u00e9nt)\" src=\"\/wp-content\/uploads\/2019\/04\/eb928013737c34e50e6a49e7d41d5bd7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEz elegend\u0151 az Arduino bootloader felt\u00f6lt\u00e9s\u00e9hez, de nem a sketch-hez \u2013 a soros port nem ker\u00fclt kivezet\u00e9sre, h\u00e1z bont\u00e1sa n\u00e9lk\u00fcl nem lehet megoldani. A TX0 \u00e9s RX0 vonalak az els\u0151 soros portn\u00e1l a billenty\u0171zet m\u00e1trix k\u00e9r\u00e9s\u00e9vel \u00f6sszevonva vannak, m\u00e9gpedig azokkal, amelyeken a funkci\u00f3gombok k\u00e9rdez\u00e9se t\u00f6rt\u00e9nik a kijelz\u0151 k\u00e9t oldal\u00e1n. De mit lehet tenni \u2013 a szerz\u0151 ezt alkotta:<\/p>\n<p><img decoding=\"async\" alt=\"OTA-ind\u00edt\u00f3 \u00edr\u00e1sa ATmega128RFA1-hez (a Smart Response XE eszk\u00f6z r\u00e9szek\u00e9nt)\" src=\"\/wp-content\/uploads\/2019\/04\/8989f4057806b83ff2eb11b6f1ed2d57.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEzeket JTAG vonalakat kivezetett oda, \u00edgy most m\u00e1r nem sz\u00fcks\u00e9ges a elem t\u00e1rol\u00f3j\u00e1t kinyitni. Annak \u00e9rdek\u00e9ben, hogy a sketch-eket is felt\u00f6lthess\u00fck, a soros portokat is a csatlakoz\u00f3ra vezette ki, hozz\u00e1adva egy kapcsol\u00f3t, mivel az akkumul\u00e1torok telep\u00edt\u00e9sekor a k\u00e9sz\u00fcl\u00e9ket fizikailag m\u00e1sk\u00e9nt nem lehet kikapcsolni.<\/p>\n<p>El\u00e9g sok\u00e1ig kellett dolgozni a forraszt\u00f3p\u00e1kkal, pap\u00edrv\u00e1g\u00f3 k\u00e9ssel \u00e9s ragaszt\u00f3pisztollyal. \u00d6sszess\u00e9g\u00e9ben a sketch-ek \"a leveg\u0151n\" val\u00f3 felt\u00f6lt\u00e9se sokkal k\u00e9nyelmesebb, s\u00fcrg\u0151sen valami \u00faj\u00edt\u00e1st kell kital\u00e1lni.<\/p>\n<p>Az Arduino IDE a sketch-ek felt\u00f6lt\u00e9s\u00e9re a k\u00f6vetkez\u0151 programot haszn\u00e1lja: <noindex><a rel=\"nofollow\" href=\"http:\/\/www.ladyada.net\/learn\/avr\/avrdude.html\">avrdude<\/a><\/noindex>. Ez a mikrokontrollerrel STK500 protokollon kereszt\u00fcl kommunik\u00e1l, amely lehet\u0151v\u00e9 teszi a f\u00e1jlok k\u00e9t ir\u00e1nyban t\u00f6rt\u00e9n\u0151 \u00e1tad\u00e1s\u00e1t. Rosszul kompatibilis azokkal a csatorn\u00e1kkal, ahol v\u00e1ltoz\u00f3 k\u00e9sleltet\u00e9sek, torz\u00edt\u00e1s \u00e9s adatok elveszt\u00e9se lehets\u00e9ges. Ha a soros csatorn\u00e1ban valami nem j\u00f3l m\u0171k\u00f6dik vagy serceg, meg\u0151r\u00fclhet\u00fcnk a hiba keres\u00e9se k\u00f6zben. Egyszer a szerz\u0151 f\u00e9l napig szenvedett, m\u00edg r\u00e1j\u00f6tt, hogy a probl\u00e9ma egy rossz k\u00e1bellel \u00e9s a CP2102 interf\u00e9sz-konverter szesz\u00e9lyeivel f\u00fcgg \u00f6ssze. M\u00e9g a be\u00e9p\u00edtett interf\u00e9sz-konverterrel rendelkez\u0151 mikrokontrollerek, p\u00e9ld\u00e1ul az ATmega32u4 is n\u00e9ha \u00edgy viselkedhetnek. Minden Arduino-felhaszn\u00e1l\u00f3 \u00e9szrevette, hogy a sketch-ek felt\u00f6lt\u00e9s\u00e9n\u00e9l a hib\u00e1k nem olyan ritk\u00e1k. N\u00e9ha a felv\u00e9tel sim\u00e1n zajlik, de a tesztel\u00e9skor hib\u00e1t tal\u00e1lunk. Ez nem azt jelenti, hogy a hiba a felv\u00e9telkor volt \u2013 a probl\u00e9ma az olvas\u00e1sn\u00e1l jelentkezett. Most pedig k\u00e9pzelj\u00e9k el, hogy \"a leveg\u0151n\" t\u00f6rt\u00e9n\u0151 m\u0171k\u00f6d\u00e9s sor\u00e1n ugyanez gyakrabban fog bek\u00f6vetkezni. <noindex><a rel=\"nofollow\" href=\"http:\/\/www.tuxgraphics.org\/common\/src2\/article05101\/stk500_spec_AVR068.pdf\">Miut\u00e1n k\u00fcl\u00f6nb\u00f6z\u0151 m\u00f3dszereket pr\u00f3b\u00e1lt ki a probl\u00e9ma lek\u00fczd\u00e9s\u00e9re, a szerz\u0151 a k\u00f6vetkez\u0151t tal\u00e1lta ki. Az eszk\u00f6znek van 128 kilob\u00e1jtos flash mem\u00f3ri\u00e1ja SPI interf\u00e9szen \u2013 az adatokat vezet\u00e9keken kereszt\u00fcl fogadjuk (ne feledj\u00fck, hogy egy k\u00e9sz\u00fcl\u00e9k a szerz\u0151 oldal\u00e1n m\u00e1r l\u00e9tezik), ezt a mem\u00f3ri\u00e1t haszn\u00e1ljuk pufferk\u00e9nt, \u00e9s r\u00e1di\u00f3csatorn\u00e1n kereszt\u00fcl adatokat k\u00fcld\u00fcnk egy m\u00e1sik eszk\u00f6zbe. Ez egy \u00fcdv\u00f6zlet a Cybiko-t\u00f3l.<\/a><\/noindex>, amely lehet\u0151v\u00e9 teszi a f\u00e1jlok k\u00e9tir\u00e1ny\u00fa tov\u00e1bb\u00edt\u00e1s\u00e1t. Rosszul kompatibilis az olyan csatorn\u00e1kkal, ahol v\u00e1ltoz\u00f3 k\u00e9s\u00e9sek, torz\u00edt\u00e1s \u00e9s adatveszt\u00e9s fordulhat el\u0151. Ha egy soros csatorn\u00e1n valami remeg vagy \u00fagy z\u00f6ty\u00f6g, az \u0151r\u00fcletbe kergetheti az embert a hiba ok\u00e1nak keres\u00e9s\u00e9ben. Egyszer a szerz\u0151 f\u00e9l napig szenvedett, am\u00edg r\u00e1j\u00f6tt, hogy a probl\u00e9ma a rossz k\u00e1belben \u00e9s a k\u00e9nyes CP2102 interf\u00e9szkonvert\u00e1l\u00f3ban rejlik. M\u00e9g egy be\u00e9p\u00edtett interf\u00e9szkonvert\u00e1l\u00f3val rendelkez\u0151 mikrokontroller, p\u00e9ld\u00e1ul az ATmega32u4 is n\u00e9ha hasonl\u00f3an viselkedhet. Minden Arduino-felhaszn\u00e1l\u00f3 \u00e9szrevette, hogy a szkennek felt\u00f6lt\u00e9sekor a hib\u00e1k nem annyira ritk\u00e1k. N\u00e9ha a felv\u00e9tel rendben zajlik, de a visszaellen\u0151rz\u00e9skor hiba l\u00e9p fel. Ez nem jelenti azt, hogy a hiba a felv\u00e9tel sor\u00e1n t\u00f6rt\u00e9nt \u2013 a hiba az olvas\u00e1skor t\u00f6rt\u00e9nt. Most k\u00e9pzelj\u00e9tek el, hogy a 'l\u00e9gies' m\u0171k\u00f6d\u00e9skor ugyanez fog megt\u00f6rt\u00e9nni, de sokkal gyakoribb gyakoris\u00e1ggal.<\/p>\n<p>K\u00fcl\u00f6nf\u00e9le m\u00f3dszerek kipr\u00f3b\u00e1l\u00e1sa ut\u00e1n a szerz\u0151 a k\u00f6vetkez\u0151t tal\u00e1lta ki. Az eszk\u00f6znek van egy 128 kilob\u00e1jtos SPI interf\u00e9sz\u0171 flashmem\u00f3ri\u00e1ja \u2013 adatokat fogadunk a vezet\u00e9keken (ne felejts\u00fck el, hogy m\u00e1r van egy eszk\u00f6z\u00f6m oldals\u00f3 csatlakoz\u00f3val), ezt a mem\u00f3ri\u00e1t pufferk\u00e9nt haszn\u00e1ljuk, \u00e9s r\u00e1di\u00f3csatorn\u00e1n kereszt\u00fcl k\u00fcldj\u00fck az adatokat egy m\u00e1sik eszk\u00f6zbe. Itt egy \u00fcdv\u00f6zlet a Cybiko-t\u00f3l.<\/p>\n<p>A k\u00f3d meg\u00edr\u00e1sa ut\u00e1n, amely a r\u00e1di\u00f3csatorn\u00e1val dolgozik, valamint a bet\u0171t\u00edpus, a bet\u00f6lt\u0151 hossza meghaladta a 4 kilob\u00e1jtot. Ez\u00e9rt a HFUSE \u00e9rt\u00e9k\u00e9t 0xDA-r\u00f3l 0xD8-ra kellett v\u00e1ltoztatni. Most a bet\u00f6lt\u0151 hossza ak\u00e1r 8 kilob\u00e1jt is lehet, \u00e9s a kezdeti c\u00edm 0x1E000-ra v\u00e1ltozott. Ez a Makefile-ben is t\u00fckr\u00f6z\u0151dik, de figyelembe kell venni a felt\u00f6lt\u00e9s sor\u00e1n is. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.arduino.cc\/en\/Hacking\/Bootloader?from=Tutorial.Bootloader\">bet\u00f6lt\u0151<\/a><\/noindex> avrdude seg\u00edts\u00e9g\u00e9vel.<\/p>\n<p>Az ATmega128RFA1 802.15.4 szabv\u00e1nynak megfelel\u0151 ad\u00f3-vev\u0151je eredetileg a <noindex><a rel=\"nofollow\" href=\"https:\/\/www.zigbee.org\/what-is-zigbee\/\">ZigBee<\/a><\/noindex>-protokoll m\u0171k\u00f6dtet\u00e9s\u00e9re lett tervezve, ami meglehet\u0151sen \u00f6sszetett, ez\u00e9rt a szerz\u0151 \u00fagy d\u00f6nt\u00f6tt, hogy egyszer\u0171en csak csomagokat tov\u00e1bb\u00edt. Ez az ATmega128RFA1-en hardveresen van megval\u00f3s\u00edtva, \u00edgy a k\u00f3dra csak kis mennyis\u00e9gben van sz\u00fcks\u00e9g. A szerz\u0151 a egyszer\u0171s\u00e9g kedv\u00e9\u00e9rt \u00fagy d\u00f6nt\u00f6tt, hogy r\u00f6gz\u00edtett csatorn\u00e1t haszn\u00e1l, nem engedve meg annak manu\u00e1lis kiv\u00e1laszt\u00e1s\u00e1t. Az 802.15.4 szabv\u00e1ny 11-t\u0151l 26-ig terjed\u0151 16 csatorn\u00e1t t\u00e1mogat. Ezek viszonylag zs\u00fafoltak, n\u00e9melyek a WiFi csatorn\u00e1ival is \u00e1tfedik egym\u00e1st (a ZigBee csatorn\u00e1k pirossal, a WiFi csatorn\u00e1k k\u00e9k, z\u00f6ld \u00e9s s\u00e1rga sz\u00ednnel jel\u00f6lve).<\/p>\n<p><img decoding=\"async\" alt=\"OTA-ind\u00edt\u00f3 \u00edr\u00e1sa ATmega128RFA1-hez (a Smart Response XE eszk\u00f6z r\u00e9szek\u00e9nt)\" src=\"\/wp-content\/uploads\/2019\/04\/650166fdb8e1d0361d015e4c2e85d7f1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKider\u00fclt, hogy a WiFi zavaraira a legkev\u00e9sb\u00e9 \u00e9rz\u00e9keny csatorn\u00e1k a 15 \u00e9s 26. A szerz\u0151 a m\u00e1sodik csatorn\u00e1t v\u00e1lasztotta. K\u00e9rj\u00fck, vegye figyelembe: a ford\u00edt\u00f3 nem tudja, hogy lehet-e \u00edgy egyszer\u0171s\u00edteni a ZigBee-t. Tal\u00e1n \u00e9rdemes lenne m\u00e9g egy kicsit programozni, \u00e9s teljes m\u00e9rt\u00e9kben megval\u00f3s\u00edtani?<\/p>\n<p>Az els\u0151 eszk\u00f6z\u00f6n egy \u00e1llapotautomat\u00e1t kell megval\u00f3s\u00edtani, amely adatokat k\u00fcld az STK500 protokoll szerint. Nagy r\u00e9szt az \u00e1tk\u00fcld\u00f6tt \u00e9s \u00e1tvett \u00fczenetek \u00f6n\u00e1ll\u00f3ak, de egyesek kor\u00e1bban a csatorn\u00e1n \u00e1thalad\u00f3khoz vannak k\u00f6tve. A p\u00e1rbesz\u00e9d le\u00edr\u00e1sa al\u00e1bb tal\u00e1lhat\u00f3. <noindex><a rel=\"nofollow\" href=\"http:\/\/baldwisdom.com\/bootloading\/\">itt<\/a><\/noindex>.<\/p>\n<p>A p\u00e1rbesz\u00e9d fontos r\u00e9sze a c\u00e9lk\u00e9sz\u00fcl\u00e9k flash mem\u00f3ri\u00e1j\u00e1ba val\u00f3 \u00edr\u00e1sra sz\u00e1nt csomagok \u00e1tad\u00e1sa. Az AVR mikrovez\u00e9rl\u0151k egyszer\u0171bb t\u00edpusaiban az oldalm\u00e9ret 128 b\u00e1jt, de az ATmega128RFA1 eset\u00e9ben 256. A SPI protokollal csatlakoz\u00f3 flash mem\u00f3ri\u00e1nak is ugyanakkora. Az els\u0151 eszk\u00f6zben a program, amikor a k\u00f3dot t\u00f6lti, nem k\u00fcldi azonnal a m\u00e1sodiknak, hanem az el\u0151sz\u00f6r a mem\u00f3ri\u00e1ba \u00edrja. Amikor az Arduino IDE ellen\u0151rzi a helyes \u00edr\u00e1st, azt k\u00fcldi el, ami oda ker\u00fclt. Most a kapott adatokat \u00e1t kell adni a r\u00e1di\u00f3csatorn\u00e1n a m\u00e1sodik k\u00e9sz\u00fcl\u00e9knek. Ekkor a v\u00e9tel \u00e9s a k\u00fcld\u00e9s k\u00f6zti v\u00e1lt\u00e1s viszonylag gyakran megt\u00f6rt\u00e9nik. Az STK500 protokoll nem \u00e9rz\u00e9keny a k\u00e9s\u00e9sekre, de nem toler\u00e1lja az adatveszt\u00e9st (furcsa, pedig fentebb azt \u00edrt\u00e1k, hogy a k\u00e9s\u00e9sek is hat\u00e1ssal vannak az adatok \u00e1tvitel\u00e9re). Azonban a vezet\u00e9k n\u00e9lk\u00fcli \u00e1tvitel eset\u00e9n az adatveszt\u00e9s elker\u00fclhetetlen. Az ATmega128RFA1-ben van egy hardveres implemNet\u00e1ci\u00f3ja a megk\u00e9rd\u0151jelezett \u00e1tvitel \u00fajrak\u00e9r\u00e9s\u00e9nek, de a szerz\u0151 \u00fagy d\u00f6nt\u00f6tt, hogy ugyanazt programozott m\u00f3don val\u00f3s\u00edtja meg. Kidolgozott egy protokollt, amelyn\u00e9l az egyik ir\u00e1nyban sokkal t\u00f6bb adat halad \u00e1t, mint a m\u00e1sik.<\/p>\n<p>Nem t\u00f6k\u00e9letes, de minden m\u0171k\u00f6dik. A 256 b\u00e1jtos oldal n\u00e9gy szegmensre van osztva, amelyeket mindegyik\u00e9t csomagk\u00e9nt k\u00fcldenek \u00e1t a r\u00e1di\u00f3csatorn\u00e1n. A csomag legfeljebb 125 b\u00e1jt adatot, plusz egy b\u00e1jt \u2013 hossz\u00fas\u00e1g \u00e9s k\u00e9t b\u00e1jt \u2013 CRC. \u00cdgy a 64 b\u00e1jt hossz\u00fas\u00e1g\u00fa darabok a lapok \u00e9s szegmensek sz\u00e1maival (0-t\u00f3l 3-ig) egy\u00fctt ker\u00fclnek k\u00fcld\u00e9sre. A vev\u0151egys\u00e9gben van egy v\u00e1ltoz\u00f3, amely nyomon k\u00f6veti, h\u00e1ny szegmens \u00e9rkezett, \u00e9s amikor mind a n\u00e9gy meg\u00e9rkezik, a k\u00fcld\u0151 egys\u00e9g egy meger\u0151s\u00edt\u00e9st kap arr\u00f3l, hogy az eg\u00e9sz oldal meg\u00e9rkezett. Ha nem \u00e9rkezik meger\u0151s\u00edt\u00e9s (ha a CRC nem egyezik), akkor az eg\u00e9sz oldalt \u00fajra elk\u00fcldj\u00fck. Ilyenkor a sebess\u00e9g m\u00e9g nagyobb, mint vezet\u00e9kes \u00e1tvitel eset\u00e9n. N\u00e9zd:<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"d-ObUCnRmQU\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/d-ObUCnRmQU\/hqdefault.jpg\" alt=\"Vide\u00f3 lej\u00e1tsz\u00e1sa\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\nDe egy\u00e9bk\u00e9nt \u00e9rdemes lenne k\u00e9nyelmes csatlakoz\u00e1si m\u00f3dot biztos\u00edtani a k\u00e9sz\u00fcl\u00e9kekhez, hogy k\u00e1belen tudjunk k\u00f3dokat felt\u00f6lteni. P\u00e9ld\u00e1ul be\u00e9p\u00edteni egy olyan CP2102 interf\u00e9sz-\u00e1talak\u00edt\u00f3t, mint a k\u00e9pen, \u00e9s r\u00f6gz\u00edteni a panelhez \u00fagy, hogy b\u00edrja a Micro USB k\u00e1bel csatlakoztat\u00e1sakor \u00e9s elt\u00e1vol\u00edtanakor fell\u00e9p\u0151 er\u0151t.<\/p>\n<p><img decoding=\"async\" alt=\"OTA-ind\u00edt\u00f3 \u00edr\u00e1sa ATmega128RFA1-hez (a Smart Response XE eszk\u00f6z r\u00e9szek\u00e9nt)\" src=\"\/wp-content\/uploads\/2019\/04\/e03563fcd985467abb236475cbbf9e3f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA 3.3-volt stabilizer is also included (and how to use it in a 6-volt powered device \u2014 only if there is a similar stabilizer present, and two diodes can be added to automatically select which one the device will draw power from). All three LEDs on the interface converter board must be desoldered; otherwise, they will additionally load the batteries when powered from them, and also interfere with the keyboard polling and operation with flash memory using the SPI interface.<\/p>\n<p>The pursuit of the goal turned out to be even more interesting than achieving it (and let\u2019s not mention that anecdote about the bus). The author learned a lot about bootloaders for AVR, flash memory with SPI interface, STK500 protocol, and the 802.15.4 standard.<\/p>\n<p>The rest of the code in addition to the library described above \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitbank2\/SMART_bootloader\">itt<\/a><\/noindex>, and it is also licensed under GPL v3. The author's Twitter \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/fast_code_r_us\">itt<\/a><\/noindex>.<br \/>\n<br \/>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/447026\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0451 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c \u0441 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u0440\u043e\u043c \u043d\u0430 \u0432\u0442\u043e\u0440\u0438\u0447\u043d\u043e\u043c \u0440\u044b\u043d\u043a\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u2014 Smart Response XE (\u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435). \u041f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u043e\u043d\u043e \u0434\u043b\u044f \u0448\u043a\u043e\u043b: \u043a\u0430\u0436\u0434\u044b\u0439 \u0443\u0447\u0435\u043d\u0438\u043a \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u043e \u0434\u0435\u0432\u0430\u0439\u0441\u0443, \u043f\u043e\u0445\u043e\u0436\u0435\u043c\u0443 \u043d\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u043d\u0443\u044e \u043a\u043d\u0438\u0436\u043a\u0443 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a \u0434\u0435\u0432\u044f\u043d\u043e\u0441\u0442\u044b\u0445, \u0443\u0447\u0438\u0442\u0435\u043b\u044c \u0437\u0430\u0434\u0430\u0451\u0442 \u0432\u043e\u043f\u0440\u043e\u0441, \u0438 \u0443\u0447\u0435\u043d\u0438\u043a\u0438 \u043d\u0430\u0431\u0438\u0440\u0430\u044e\u0442 \u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043e\u0442\u0432\u0435\u0442\u044b, \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0438\u0435 \u043f\u043e \u0440\u0430\u0434\u0438\u043e\u043a\u0430\u043d\u0430\u043b\u0443 (802.15.4) \u0432 \u043f\u0440\u0438\u0451\u043c\u043d\u0438\u043a, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0439 \u043a \u0443\u0447\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c\u0443 \u041f\u041a. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":23069,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31101","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0451 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u0438\u0448\u0435\u043c OTA-\u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0434\u043b\u044f ATmega128RFA1 (\u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 Smart Response XE) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0451 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:39:28+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:39:28+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47We are writing an OTA bootloader for ATmega128RFA1 (part of the Smart Response XE device) | ProHoster","description":"It all started.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u0438\u0448\u0435\u043c OTA-\u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0434\u043b\u044f ATmega128RFA1 (\u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 Smart Response XE) | ProHoster","og:description":"\u0412\u0441\u0451 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c.","og:url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:39:28+00:00","article:modified_time":"2019-10-31T18:39:28+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31101","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 04:31:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:22:35","updated":"2026-01-21 04:31:21","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/31101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=31101"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/31101\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/23069"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=31101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=31101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=31101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}