{"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\/it\/blog\/administrirovanie\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe","title":{"rendered":"Scriviamo un caricatore OTA per ATmega128RFA1 (nella composizione del dispositivo Smart Response XE)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Scriviamo un caricatore OTA per ATmega128RFA1 (nella composizione del dispositivo Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/c3c47048a601bcd0a79b44535de2f36f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTutto \u00e8 iniziato con l'acquisto da parte dell'autore, sul mercato secondario, di un interessante dispositivo: Smart Response XE (<noindex><a rel=\"nofollow\" href=\"http:\/\/downloads.smarttech.com\/media\/sitecore\/en\/support\/product\/smartresponse\/smartresponsexe\/specsheets\/specsresponsexev18mar13.pdf\">breve descrizione<\/a><\/noindex>). \u00c8 destinato alle scuole: ogni alunno in classe riceve un dispositivo simile a un quaderno elettronico o a un traduttore degli anni '90, l'insegnante pone una domanda e gli alunni digitano le risposte sulle tastiere dei dispositivi, che vengono trasmesse via radio (802.15.4) a un ricevitore collegato al PC dell'insegnante.<\/p>\n<p>Il supporto per questi dispositivi \u00e8 cessato diversi anni fa, e quello che le scuole acquistavano a 100-200 dollari l'uno, ora riemerge su eBay a 10 o meno. L'hardware \u00e8 davvero perfetto per esperimenti da geek:<\/p>\n<ul>\n<li>una tastiera con 60 tasti<\/li>\n<li>display con risoluzione di 384&#215;136, 2 bit per pixel \u2014 simile a BK, CGA, ma 4 non colori, bens\u00ec gradazioni di luminosit\u00e0<\/li>\n<li>microcontrollore ATmega128RFA1 (128 kB di memoria flash, 4 kB di EEPROM, 16 kB di RAM, trasmettitore\/ricevitore standard 802.15.4)<\/li>\n<li>memoria flash esterna (rispetto al microcontrollore, non all'intero dispositivo) da 1 megabit (128 kilobyte) con interfaccia SPI<\/li>\n<li>scomparto per 4 elementi AAA.<\/li>\n<\/ul>\n<p>\nDal nome del microcontrollore \u00e8 chiaro che appartiene alla famiglia AVR, quindi rendere un dispositivo compatibile con Arduino \u00e8 un compito pi\u00f9 che banale\u2026<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Dalla notizia su <noindex><a rel=\"nofollow\" href=\"https:\/\/hackaday.com\/2018\/07\/22\/classroom-gadget-turned-arduino-compatible\/\">Hackaday<\/a><\/noindex> l'autore ha appreso che questo <noindex><a rel=\"nofollow\" href=\"https:\/\/community.arduboy.com\/t\/smart-response-xe-re-purposed-into-arduboy\/6094\/\">\u00e8 gi\u00e0 stato fatto<\/a><\/noindex> (allo stesso link \u00e8 descritto come collegarlo), ottenendo la possibilit\u00e0 di lanciare giochi per 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=\"Guarda il 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 Ma l'autore \u00e8 pi\u00f9 interessato alla possibilit\u00e0 non di giocare con il dispositivo, ma di studiarlo:<\/p>\n<ul>\n<li>memoria flash con interfaccia seriale SPI<\/li>\n<li>loader per AVR<\/li>\n<li>standard 802.15.4<\/li>\n<\/ul>\n<p>\nL'autore ha iniziato a scrivere <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitbank2\/SmartResponseXE\">una libreria<\/a><\/noindex> (GPL v3), che consente di inizializzare il display, visualizzare testo e rettangoli, oltre a ottenere accesso alla memoria flash con interfaccia SPI. Poi ha iniziato a ideare idee per utilizzi pratici del dispositivo: un terminale portatile compatibile con VT-100, giochi multiplayer. Dopo aver modificato tre dispositivi, ha deciso di \"insegnarli\" a ricevere sketch \"via etere\". Sarebbe stato non solo interessante, ma anche molto conveniente: aprire il corpo del dispositivo ogni volta \u00e8 difficile, e sotto il coperchio del vano batterie ci sono solo fori che permettono di collegare un programmatore JTAG alla scheda.<\/p>\n<p><img decoding=\"async\" alt=\"Scriviamo un caricatore OTA per ATmega128RFA1 (nella composizione del dispositivo Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/eb928013737c34e50e6a49e7d41d5bd7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuesto \u00e8 sufficiente per caricare il caricatore Arduino, ma non lo sketch: la porta seriale non \u00e8 disponibile, e senza aprire il case non si pu\u00f2 fare altrimenti. Inoltre, le linee TX0 e RX0 della prima porta seriale sono unite alle linee di interrogazione della matrice della tastiera, vale a dire, quelle che interrogano i tasti funzione sui lati del display. Ma cosa si pu\u00f2 fare? L'autore ha realizzato quanto segue:<\/p>\n<p><img decoding=\"async\" alt=\"Scriviamo un caricatore OTA per ATmega128RFA1 (nella composizione del dispositivo Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/8989f4057806b83ff2eb11b6f1ed2d57.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEcco che ha portato le linee JTAG, quindi non \u00e8 pi\u00f9 necessario aprire il vano delle batterie. E per poter caricare anche gli sketch, ha collegato anche entrambe le porte seriali a questo connettore, aggiungendo un interruttore, perch\u00e9 con le batterie installate l'apparecchio non pu\u00f2 essere spento fisicamente in altro modo.<\/p>\n<p>\u00c8 stato necessario lavorare a lungo con il saldatore, un cutter e una pistola per colla. In generale, caricare gli sketch 'via aria' \u00e8 decisamente pi\u00f9 comodo, bisogna inventare qualcosa d'urgenza per questo.<\/p>\n<p>L'IDE Arduino per caricare gli sketch utilizza il programma <noindex><a rel=\"nofollow\" href=\"http:\/\/www.ladyada.net\/learn\/avr\/avrdude.html\">avrdude<\/a><\/noindex>. Questo interagisce con il microcontrollore tramite il protocollo <noindex><a rel=\"nofollow\" href=\"http:\/\/www.tuxgraphics.org\/common\/src2\/article05101\/stk500_spec_AVR068.pdf\">STK500<\/a><\/noindex>, che consente di trasferire file in entrambe le direzioni. \u00c8 mal compatibile con i canali dove sono possibili ritardi variabili, distorsioni e perdita di dati. Se nel canale seriale c'\u00e8 qualche problema o rumore, si pu\u00f2 perdere la testa alla ricerca della causa. Una volta l'autore ha passato mezza giornata a capire che era colpa di un cattivo cavo e di un capriccioso convertitore di interfaccia CP2102. Anche un microcontrollore con convertitore di interfaccia integrato, come l'ATmega32u4, a volte pu\u00f2 comportarsi cos\u00ec. Ogni utente Arduino ha notato che gli errori durante il caricamento degli sketch non sono cos\u00ec rari. A volte la scrittura avviene correttamente, ma durante la lettura di controllo si riscontra un errore. Questo non significa che ci sia stato un errore durante la scrittura: il fallimento \u00e8 avvenuto durante la lettura. E ora immaginate che durante il funzionamento 'via aria' possa succedere lo stesso, ma molto pi\u00f9 spesso.<\/p>\n<p>Dopo aver provato vari modi per superare questo problema, l'autore ha pensato a quanto segue. Il dispositivo ha una memoria flash da 128 kilobyte con interfaccia SPI: accetta i dati tramite cavi (ricordiamo che l'autore ha gi\u00e0 un dispositivo con connettore laterale), utilizziamo questa memoria come buffer e inviamo i dati a un altro dispositivo attraverso il canale radio. Un saluto da Cybiko.<\/p>\n<p>Dopo aver scritto il codice per lavorare con il canale radio, il bootloader \u00e8 diventato pi\u00f9 lungo di 4 kilobyte. Pertanto, il valore di HFUSE \u00e8 stato cambiato da 0xDA a 0xD8. Ora il bootloader pu\u00f2 avere una lunghezza fino a 8 kilobyte, e l'indirizzo iniziale \u00e8 diventato 0x1E000. Questo \u00e8 riflesso nel Makefile, ma deve essere considerato anche durante il caricamento. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.arduino.cc\/en\/Hacking\/Bootloader?from=Tutorial.Bootloader\">bootloader<\/a><\/noindex> utilizzando avrdude.<\/p>\n<p>Il trasmettitore e ricevitore standard 802.15.4 nell'ATmega128RFA1 \u00e8 inizialmente progettato per lavorare con il protocollo <noindex><a rel=\"nofollow\" href=\"https:\/\/www.zigbee.org\/what-is-zigbee\/\">ZigBee<\/a><\/noindex>, che \u00e8 abbastanza complesso, quindi l'autore ha deciso di trasmettere semplicemente i pacchetti. Questo \u00e8 implementato a livello hardware nell'ATmega128RFA1, quindi sar\u00e0 necessario poco codice. Inoltre, per semplificare, l'autore ha deciso di utilizzare un canale fisso, senza permettere nemmeno la selezione manuale. Lo standard 802.15.4 supporta 16 canali con numeri da 11 a 26. Sono piuttosto congestionati, alcuni sovrappongono anche i canali WiFi (i canali ZigBee sono indicati in rosso, quelli WiFi in blu, verde e giallo).<\/p>\n<p><img decoding=\"async\" alt=\"Scriviamo un caricatore OTA per ATmega128RFA1 (nella composizione del dispositivo Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/650166fdb8e1d0361d015e4c2e85d7f1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSi \u00e8 scoperto che i canali 15 e 26 sono i meno soggetti a interferenze da WiFi. L'autore ha scelto il secondo di essi. Dichiarazione: il traduttore non sa se sia permesso semplificare cos\u00ec lo ZigBee. Forse sarebbe meglio programmare ancora un po' e implementarlo completamente?<\/p>\n<p>Sul primo dei dispositivi deve essere implementata una macchina a stati finiti che trasmette dati tramite il protocollo STK500. Nella maggior parte dei casi, i messaggi trasmessi e ricevuti sono autosufficienti, ma alcuni sono legati a quelli gi\u00e0 passati attraverso il canale. La descrizione del dialogo \u00e8 fornita <noindex><a rel=\"nofollow\" href=\"http:\/\/baldwisdom.com\/bootloading\/\">qui<\/a><\/noindex>.<\/p>\n<p>Una componente importante di questo dialogo \u00e8 la trasmissione di pacchetti destinati alla registrazione nella memoria flash del dispositivo di destinazione. Nei semplici microcontrollori della famiglia AVR, la dimensione della pagina \u00e8 di 128 byte, ma nel caso dell'ATmega128RFA1 \u00e8 di 256. Anche per quella memoria flash che si collega tramite il protocollo SPI, la dimensione \u00e8 identica. Quando il programma nel primo dispositivo carica lo sketch, non lo invia direttamente al secondo, ma lo scrive in questa memoria. Quando l'Arduino IDE verifica la correttezza della registrazione, riceve ci\u00f2 che \u00e8 stato memorizzato. Ora \u00e8 necessario trasferire i dati ottenuti attraverso il canale radio al secondo dispositivo. In questo processo, la commutazione dalla ricezione alla trasmissione e viceversa avviene abbastanza spesso. Il protocollo STK500 \u00e8 indifferente ai ritardi, ma non tollera la perdita di dati (strano, ma sopra si \u00e8 detto che anche i ritardi nella trasmissione dei dati hanno un impatto). Ma le perdite nella trasmissione wireless sono inevitabili. L'ATmega128RFA1 include un'implementazione hardware delle richieste ripetute in caso di dubbi sulla correttezza della trasmissione, ma l'autore ha deciso di implementare la stessa cosa a livello software. Ha sviluppato un protocollo in cui in una direzione passano molti pi\u00f9 dati rispetto all'altra.<\/p>\n<p>Non \u00e8 perfetto, ma tutto funziona. La pagina di 256 byte \u00e8 suddivisa in quattro segmenti, ciascuno dei quali viene trasmesso attraverso il canale radio come un pacchetto. Un pacchetto contiene fino a 125 byte di dati pi\u00f9 un byte per la lunghezza e due per il CRC. Dunque, frammenti di 64 byte insieme ai numeri di pagina e di segmento (da 0 a 3) vengono inseriti l\u00ec. Nel dispositivo ricevente \u00e8 prevista una variabile che tiene traccia di quanti segmenti sono stati ricevuti, e quando tutti e quattro arrivano, va al dispositivo trasmittente una conferma che l'intera pagina \u00e8 stata ricevuta. Se non c'\u00e8 conferma (il CRC non corrisponde), inviamo l'intera pagina di nuovo. La velocit\u00e0 risulta persino maggiore che durante la trasmissione via cavo. Vedi:<\/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=\"Guarda il video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\nMa in effetti, sarebbe opportuno prevedere un modo comodo per collegare un cavo ai dispositivi per caricare gli sketch anche tramite esso. Ad esempio, inserire un convertitore di interfaccia come il CP2102, come nell'immagine, e attaccarlo alla scheda in modo che resista alla pressione durante il collegamento e lo scollegamento del cavo Micro USB.<\/p>\n<p><img decoding=\"async\" alt=\"Scriviamo un caricatore OTA per ATmega128RFA1 (nella composizione del dispositivo Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/e03563fcd985467abb236475cbbf9e3f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nC'\u00e8 anche un regolatore di tensione a 3,3 volt (e come utilizzarlo in un dispositivo alimentato a 6 volt \u2014 a meno che non ci sia lo stesso regolatore, e si possano aggiungere due diodi per scegliere automaticamente da quale di essi il dispositivo verr\u00e0 alimentato). Dalla scheda del convertitore di interfaccia bisogna dissaldare i tre LED, altrimenti caricheranno ulteriormente le batterie quando si utilizza quell'alimentazione e interferiranno con la lettura della tastiera e il funzionamento della memoria flash con interfaccia SPI.<\/p>\n<p>La caccia all'obiettivo si \u00e8 rivelata addirittura pi\u00f9 interessante del suo raggiungimento (e non serve quella barzelletta sull'autobus). L'autore ha appreso molte cose nuove sui bootloader per AVR, sulla memoria flash con interfaccia SPI, sul protocollo STK500 e sullo standard 802.15.4.<\/p>\n<p>Tutto il resto del codice in aggiunta alla libreria descritta sopra \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitbank2\/SMART_bootloader\">qui<\/a><\/noindex>, ed \u00e8 anch'esso sotto GPL v3. Il Twitter dell'autore \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/fast_code_r_us\">qui<\/a><\/noindex>.<br \/>\n<br \/>Fonte: <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.1.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\/it\/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.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/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\udd47Creiamo un bootloader OTA per ATmega128RFA1 (nell'ambito del dispositivo Smart Response XE) | ProHoster","description":"\u00c8 tutto iniziato.","canonical_url":"https:\/\/prohoster.info\/it\/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":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/31101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=31101"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/31101\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/23069"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=31101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=31101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=31101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}