{"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\/ro\/blog\/administrirovanie\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe","title":{"rendered":"Scriem un bootloader OTA pentru ATmega128RFA1 (parte din dispozitivul Smart Response XE)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Scriem un bootloader OTA pentru ATmega128RFA1 (parte din dispozitivul Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/c3c47048a601bcd0a79b44535de2f36f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTotul a \u00eenceput cu achizi\u021bia de c\u0103tre autor, pe pia\u021ba secundar\u0103, a unui dispozitiv interesant \u2014 Smart Response XE (<noindex><a rel=\"nofollow\" href=\"http:\/\/downloads.smarttech.com\/media\/sitecore\/en\/support\/product\/smartresponse\/smartresponsexe\/specsheets\/specsresponsexev18mar13.pdf\">descriere scurt\u0103<\/a><\/noindex>). Acesta este destinat \u0219colilor: fiecare elev din clas\u0103 prime\u0219te un dispozitiv asem\u0103n\u0103tor cu un caiet electronic sau un traduc\u0103tor din anii '90, profesorul pune o \u00eentrebare, iar elevii tasteaz\u0103 r\u0103spunsurile pe tastaturile dispozitivelor, care sunt transmise prin canal radio (802.15.4) c\u0103tre un receptor conectat la PC-ul profesorului.<\/p>\n<p>Suportul pentru aceste dispozitive a fost oprit cu c\u00e2\u021biva ani \u00een urm\u0103, iar ceea ce \u0219colile achizi\u021bionau cu 100-200 de dolari bucata, acum apare pe eBay cu 10 dolari sau chiar mai pu\u021bin. \u201eHardware\u201d-ul este extrem de potrivit pentru experimente geek:<\/p>\n<ul>\n<li>o tastatur\u0103 cu 60 de taste<\/li>\n<li>display cu o rezolu\u021bie de 384\u00d7136, 2 bi\u021bi pe pixel \u2014 similar cu BK, CGA, dar 4 nuan\u021be de culoare, ci grada\u021bii de luminozitate<\/li>\n<li>un microcontroler ATmega128RFA1 (128 kB memorie flash, 4 kB EEPROM, 16 kB SRAM, transceiver standard 802.15.4)<\/li>\n<li>memorie flash extern\u0103 (\u00een raport cu microcontrolerul, nu cu \u00eentregul dispozitiv) de 1 megabit (128 kilobytes) cu interfa\u021b\u0103 SPI<\/li>\n<li>un compartiment pentru 4 elemente AAA.<\/li>\n<\/ul>\n<p>\nDin numele microcontrolerului, este clar c\u0103 acesta apar\u021bine familiei AVR, ceea ce face ca sarcina de a face un dispozitiv compatibil cu Arduino s\u0103 fie mai mult dec\u00e2t trivial\u0103\u2026<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Din \u0219tirea de pe <noindex><a rel=\"nofollow\" href=\"https:\/\/hackaday.com\/2018\/07\/22\/classroom-gadget-turned-arduino-compatible\/\">Hackaday<\/a><\/noindex> autorul a aflat c\u0103 aceasta <noindex><a rel=\"nofollow\" href=\"https:\/\/community.arduboy.com\/t\/smart-response-xe-re-purposed-into-arduboy\/6094\/\">deja s-a f\u0103cut<\/a><\/noindex> (la acela\u0219i link este explicat unde s\u0103 se conecteze), av\u00e2nd posibilitatea de a rula jocuri pentru Arduboy:<\/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=\"Reda\u021bi video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\n Dar autorul este mai interesat de posibilitatea de a studia dispozitivul, nu de a juca:<\/p>\n<ul>\n<li>memorie flash cu interfa\u021b\u0103 secven\u021bial\u0103 SPI<\/li>\n<li>bootloadere pentru AVR<\/li>\n<li>standardul 802.15.4<\/li>\n<\/ul>\n<p>\nAutorul a \u00eenceput s\u0103 scrie <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitbank2\/SmartResponseXE\">NanoGUI<\/a><\/noindex> (GPL v3), care permite ini\u021bializarea display-ului, afi\u0219area textului \u0219i a dreptunghiurilor, precum \u0219i accesul la memoria flash cu interfa\u021b\u0103 SPI. Apoi, a \u00eenceput s\u0103 conceap\u0103 idei de utilizare practic\u0103 a dispozitivului: un terminal portabil compatibil cu VT-100, jocuri multiplayer. Dup\u0103 ce a modificat trei dispozitive, a decis s\u0103 le \u201e\u00eenv\u0103\u021be\u201d s\u0103 primeasc\u0103 sketch-uri \u201eaerian\u201d. Ce ar fi nu doar interesant, ci \u0219i foarte convenabil: deschiderea carcasa dispozitivului este dificil\u0103 de fiecare dat\u0103, iar sub capacul compartimentului pentru baterii se afl\u0103 doar orificii care permit conectarea unui programator JTAG la plac\u0103.<\/p>\n<p><img decoding=\"async\" alt=\"Scriem un bootloader OTA pentru ATmega128RFA1 (parte din dispozitivul Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/eb928013737c34e50e6a49e7d41d5bd7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEste suficient pentru a \u00eenc\u0103rca bootloaderul Arduino, dar nu \u0219i sketch-ul \u2014 portul serial nu este accesibil, f\u0103r\u0103 a deschide carcasa nu se poate. De asemenea, liniile TX0 \u0219i RX0 ale primului port serial sunt combinate cu liniile de interogare ale matricei de tastatur\u0103, \u0219i anume \u2014 cele prin care sunt interogate tastele func\u021bionale de pe laturile ecranului. Dar ce s\u0103 facem \u2014 autorul a construit urm\u0103toarea solu\u021bie:<\/p>\n<p><img decoding=\"async\" alt=\"Scriem un bootloader OTA pentru ATmega128RFA1 (parte din dispozitivul Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/8989f4057806b83ff2eb11b6f1ed2d57.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAcolo a scos liniile JTAG, \u0219i acum nu mai este necesar s\u0103 deschidem compartimentul bateriei. Iar pentru a putea \u00eenc\u0103rca \u0219i sketch-uri, a scos pe acest conector \u0219i cele dou\u0103 porturi seriale, ad\u0103ug\u00e2nd \u0219i un comutator, deoarece cu bateriile instalate, dispozitivul nu poate fi stins fizic \u00een alt mod.<\/p>\n<p>A fost nevoie s\u0103 lucrez destul de mult cu un pistol de lipit, un cu\u021bit de birou \u0219i un pistol de lipit. \u00cen general, a \u00eenc\u0103rca sketch-uri \u201epe aer\u201d este mult mai convenabil, trebuie urgent s\u0103 inventez ceva pentru asta.<\/p>\n<p>Arduino IDE folose\u0219te programul <noindex><a rel=\"nofollow\" href=\"http:\/\/www.ladyada.net\/learn\/avr\/avrdude.html\">avrdude<\/a><\/noindex>. Acesta interac\u021bioneaz\u0103 cu microcontrolerul prin protocolul <noindex><a rel=\"nofollow\" href=\"http:\/\/www.tuxgraphics.org\/common\/src2\/article05101\/stk500_spec_AVR068.pdf\">STK500<\/a><\/noindex>, care permite transferul de fi\u0219iere \u00een ambele direc\u021bii. Este slab compatibil cu canalele unde pot ap\u0103rea \u00eent\u00e2rzieri variabile, distorsionare \u0219i pierdere de date. Dac\u0103 \u00een canalul serial ceva nu func\u021bioneaz\u0103 sau se aude zgomote, po\u021bi s\u0103 \u00eennebune\u0219ti c\u0103ut\u00e2nd cauza. Odat\u0103, autorul a suferit jum\u0103tate de zi p\u00e2n\u0103 c\u00e2nd a \u00een\u021beles c\u0103 totul se datora unui cablu defect, precum \u0219i unui convertor de interfa\u021b\u0103 CP2102 capricios. Chiar \u0219i un microcontroler cu convertor de interfa\u021b\u0103 incorporat, de exemplu, ATmega32u4, poate uneori s\u0103 se comporte ciudat. Fiecare utilizator Arduino a observat c\u0103 erorile la \u00eenc\u0103rcarea sketch-urilor nu sunt at\u00e2t de rare. Uneori, \u00eenregistrarea decurge normal, iar la citirea de verificare apare o eroare. Asta nu \u00eenseamn\u0103 c\u0103 a fost o eroare la \u00eenregistrare \u2014 a fost o defec\u021biune la citire. \u0218i acum imagina\u021bi-v\u0103 c\u0103, lucr\u00e2nd \u201epe aer\u201d, se va \u00eent\u00e2mpla acela\u0219i lucru, dar mult mai des.<\/p>\n<p>Dup\u0103 ce am \u00eencercat diferite metode de a dep\u0103\u0219i aceast\u0103 problem\u0103, autorul a g\u0103sit urm\u0103toarea solu\u021bie. Dispozitivul are o memorie flash de 128 kilobyte cu interfa\u021b\u0103 SPI \u2014 primim datele pe fire (s\u0103 ne amintim c\u0103 autorul are deja un dispozitiv cu un conector pe lateral), folosim aceast\u0103 memorie ca buffer, \u0219i trimitem datele prin canal radio c\u0103tre un alt dispozitiv. Un salut de la Cybiko.<\/p>\n<p>Dup\u0103 scrierea codului pentru a lucra cu canalul radio, precum \u0219i a fontului, \u00eenc\u0103rc\u0103torul a devenit mai lung de 4 kilobi\u021bi. Prin urmare, valoarea HFUSE a trebuit schimbat\u0103 de la 0xDA la 0xD8. Acum, \u00eenc\u0103rc\u0103torul poate avea o lungime de p\u00e2n\u0103 la 8 kilobi\u021bi, iar adresa de \u00eenceput a devenit 0x1E000. Acest lucru este reflectat \u00een Makefile, dar trebuie avut \u00een vedere \u0219i la \u00eenc\u0103rcare. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.arduino.cc\/en\/Hacking\/Bootloader?from=Tutorial.Bootloader\">\u00eenc\u0103rc\u0103torului<\/a><\/noindex> folosind avrdude.<\/p>\n<p>Transceptorul standard 802.15.4 \u00een ATmega128RFA1 a fost ini\u021bial conceput pentru a func\u021biona pe protocolul <noindex><a rel=\"nofollow\" href=\"https:\/\/www.zigbee.org\/what-is-zigbee\/\">ZigBee<\/a><\/noindex>, care este destul de complex, a\u0219a c\u0103 autorul a decis s\u0103 transmit\u0103 pur \u0219i simplu pachete. Acest lucru este implementat hardware \u00een ATmega128RFA1, a\u0219a c\u0103 va fi nevoie de pu\u021bin cod. De asemenea, pentru a simplifica, autorul a decis s\u0103 foloseasc\u0103 un canal fix, f\u0103r\u0103 a permite chiar \u0219i alegerea manual\u0103. Standardul 802.15.4 suport\u0103 16 canale numite de la 11 la 26. Acestea sunt destul de aglomerate, unele suprapun\u00e2ndu-se cu canalele WiFi (canalele ZigBee sunt marcate cu ro\u0219u, iar cele WiFi cu albastru, verde \u0219i galben).<\/p>\n<p><img decoding=\"async\" alt=\"Scriem un bootloader OTA pentru ATmega128RFA1 (parte din dispozitivul Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/650166fdb8e1d0361d015e4c2e85d7f1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS-a dovedit c\u0103 cele mai pu\u021bin afectate de interferen\u021bele WiFi sunt canalele 15 \u0219i 26. Autorul a ales canalul 26. Disclaimer: traduc\u0103torul nu \u0219tie dac\u0103 este permis s\u0103 simplifice astfel ZigBee. Poate c\u0103 ar trebui s\u0103 programeze pu\u021bin mai mult \u0219i s\u0103-l implementeze complet?<\/p>\n<p>Pe primul dintre dispozitive trebuie implementat un automat finit care transmite date prin protocolul STK500. \u00cen mare parte, mesajele trimise \u0219i primite sunt autocon\u021binute, dar unele sunt legate de cele care au trecut anterior prin canal. Descrierea dialogului este oferit\u0103. <noindex><a rel=\"nofollow\" href=\"http:\/\/baldwisdom.com\/bootloading\/\">aici<\/a><\/noindex>.<\/p>\n<p>O component\u0103 important\u0103 a acestui dialog este transmiterea pachetelor destinate scrierii \u00een memoria flash a dispozitivului de destina\u021bie. La microcontrolerele simple din familia AVR, dimensiunea paginii este de 128 de bi\u021bi, dar la ATmega128RFA1 este de 256. Iar pentru acea memorie flash care se conecteaz\u0103 prin protocolul SPI, este aceea\u0219i. Programul din primul dispozitiv, atunci c\u00e2nd \u00eencarc\u0103 un sketch, nu \u00eel trimite imediat la al doilea, ci \u00eel scrie \u00een aceast\u0103 memorie. Atunci c\u00e2nd Arduino IDE verific\u0103 corectitudinea scrierii, i se trimite ceea ce a fost scris acolo. Acum, trebuie s\u0103 transmitem datele ob\u021binute prin canalul radio c\u0103tre al doilea dispozitiv. \u00cen acest proces, comutarea de la recep\u021bie la transmisie \u0219i invers se \u00eent\u00e2mpl\u0103 destul de des. Protocolul STK500 este indiferent la \u00eent\u00e2rzieri, dar nu suport\u0103 pierderi de date (ciudat, av\u00e2nd \u00een vedere c\u0103 mai sus s-a spus c\u0103 \u00eent\u00e2rzierile \u00een transmiterea datelor au efecte). \u0218i pierderile \u00een transmiterea wireless sunt inevitabile. \u00cen ATmega128RFA1 exist\u0103 o implementare hardware a solicit\u0103rilor de retransmitere \u00een caz de \u00eendoieli asupra corectitudinii transmiterii, dar autorul a decis s\u0103 implementeze acela\u0219i lucru programatic. El a dezvoltat un protocol prin care, \u00eentr-o direc\u021bie, trec mult mai multe date dec\u00e2t \u00een cealalt\u0103.<\/p>\n<p>Nu este ideal, dar totul func\u021bioneaz\u0103. Pagina de 256 de bi\u021bi este \u00eemp\u0103r\u021bit\u0103 \u00een patru segmente, fiecare dintre ele fiind transmis prin canalul radio sub form\u0103 de pachet. Pachetul poate con\u021bine p\u00e2n\u0103 la 125 de bi\u021bi de date plus un biit - lungimea \u0219i dou\u0103 - CRC. Astfel, fragmentele cu lungimea de 64 de bi\u021bi, \u00eempreun\u0103 cu numerele paginilor \u0219i segmentelor (de la 0 la 3), sunt incluse acolo. \u00cen dispozitivul receptor este prev\u0103zut\u0103 o variabil\u0103 care permite urm\u0103rirea c\u00e2tor segmente au fost primite, iar c\u00e2nd vin toate cele patru, dispozitivul de transmitere prime\u0219te o confirmare c\u0103 \u00eentreaga pagin\u0103 a fost primit\u0103. F\u0103r\u0103 confirmare (dac\u0103 CRC nu coincide) - trimitem \u00eentreaga pagin\u0103 din nou. Viteza ob\u021binut\u0103 este chiar mai mare dec\u00e2t \u00een cazul transmiterii prin cablu. Vede\u021bi:<\/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=\"Reda\u021bi video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\nDar, \u00een general, ar fi bine s\u0103 se prevad\u0103 o modalitate convenabil\u0103 de conectare a dispozitivelor cu un cablu pentru \u00eenc\u0103rcarea sketch-urilor \u0219i prin acesta. De exemplu, s\u0103 se plaseze \u00een interior un astfel de convertor de interfe\u021be pe CP2102, ca \u00een fotografie, \u0219i s\u0103 fie lipit pe plac\u0103 astfel \u00eenc\u00e2t s\u0103 suporte for\u021ba de conectare \u0219i deconectare a cablului Micro USB.<\/p>\n<p><img decoding=\"async\" alt=\"Scriem un bootloader OTA pentru ATmega128RFA1 (parte din dispozitivul Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/e03563fcd985467abb236475cbbf9e3f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe asemenea, acesta dispune de un stabilizator de 3,3 vol\u021bi (\u0219i cum s\u0103-l aplici \u00eentr-un dispozitiv cu alimentare de 6 vol\u021bi \u2013 doar dac\u0103 exist\u0103 un stabilizator similar, \u0219i se pot ad\u0103uga dou\u0103 diode pentru a alege automat de la care s\u0103 primeasc\u0103 alimentarea dispozitivul). De pe placa converterului de interfa\u021b\u0103 trebuie s\u0103 se scoat\u0103 cele trei LED-uri, altfel acestea vor \u00eenc\u0103rca suplimentar bateriile c\u00e2nd se lucreaz\u0103 cu ele, \u0219i vor \u00eempiedica interogarea tastaturii \u0219i func\u021bionarea memoriei flash cu interfa\u021ba SPI.<\/p>\n<p>Urm\u0103rirea scopului s-a dovedit a fi chiar mai interesant\u0103 dec\u00e2t atingerea acestuia (\u0219i nu trebuie s\u0103 spunem anecdota aceea despre autobuz). Autorul a \u00eenv\u0103\u021bat multe lucruri noi despre bootloade-urile pentru AVR, memoria flash cu interfa\u021ba SPI, protocolul STK500 \u0219i standardul 802.15.4.<\/p>\n<p>Toat\u0103 restul codului \u00een plus fa\u021b\u0103 de biblioteca descris\u0103 mai sus \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitbank2\/SMART_bootloader\">aici<\/a><\/noindex>, \u0219i acesta este de asemenea sub GPL v3. Twitter-ul autorului \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/fast_code_r_us\">aici<\/a><\/noindex>.<br \/>\n<br \/>Sursa: <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.2.1 - 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\/ro\/blog\/administrirovanie\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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\udd47Scriem un bootloader OTA pentru ATmega128RFA1 (\u00een cadrul dispozitivului Smart Response XE) | ProHoster","description":"Totul a \u00eenceput.","canonical_url":"https:\/\/prohoster.info\/ro\/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":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/31101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=31101"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/31101\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/23069"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=31101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=31101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=31101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}