{"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\/nl\/blog\/administrirovanie\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe","title":{"rendered":"Een OTA-bootloader schrijven voor ATmega128RFA1 (onderdeel van het apparaat Smart Response XE)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Een OTA-bootloader schrijven voor ATmega128RFA1 (onderdeel van het apparaat Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/c3c47048a601bcd0a79b44535de2f36f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAlles begon met de aankoop door de auteur van een interessant apparaat op de tweedehandsmarkt \u2014 Smart Response XE (<noindex><a rel=\"nofollow\" href=\"http:\/\/downloads.smarttech.com\/media\/sitecore\/en\/support\/product\/smartresponse\/smartresponsexe\/specsheets\/specsresponsexev18mar13.pdf\">korte beschrijving<\/a><\/noindex>). Het is bedoeld voor scholen: elke student in de klas ontvangt een apparaat dat lijkt op een elektronisch notitieboek of een vertaler uit de jaren negentig, de leraar stelt een vraag en de studenten typen hun antwoorden op de toetsenborden van de apparaten, die via een radiokanaal (802.15.4) naar een ontvanger worden gestuurd die is aangesloten op de computer van de leraar.<\/p>\n<p>De ondersteuning voor deze apparaten werd enkele jaren geleden gestopt, en wat scholen voor 100-200 dollar per stuk kochten, verschijnt nu op eBay voor 10 dollar of minder. De 'hardware' is zeer geschikt voor geek-experimenten:<\/p>\n<ul>\n<li>een toetsenbord met 60 toetsen<\/li>\n<li>Een scherm met een resolutie van 384\u00d7136, 2 bits per pixel \u2014 vergelijkbaar met BK, CGA, maar 4 geen kleuren, maar helderheidsgradaties<\/li>\n<li>ATmega128RFA1 microcontroller (128 kB flashgeheugen, 4 kB ROM, 16 kB RAM, zender-ontvanger volgens de 802.15.4 standaard)<\/li>\n<li>externe (ten opzichte van de microcontroller, niet van het hele apparaat) flashgeheugen van 1 megabit (128 kilobyte) met SPI-interface<\/li>\n<li>compartiment voor 4 AAA-batterijen.<\/li>\n<\/ul>\n<p>\nUit de naam van de microcontroller is duidelijk dat deze tot de AVR-familie behoort, wat betekent dat het maken van een Arduino-compatibel apparaat een meer dan triviale taak is\u2026<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Uit het nieuws op <noindex><a rel=\"nofollow\" href=\"https:\/\/hackaday.com\/2018\/07\/22\/classroom-gadget-turned-arduino-compatible\/\">Hackaday<\/a><\/noindex> leerde de auteur dat dit <noindex><a rel=\"nofollow\" href=\"https:\/\/community.arduboy.com\/t\/smart-response-xe-re-purposed-into-arduboy\/6094\/\">al is gedaan<\/a><\/noindex> (op dezelfde link staat hoe en waar je het moet aansluiten), wat de mogelijkheid biedt om spellen voor Arduboy te spelen:<\/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=\"Video afspelen\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\n Maar de auteur is meer ge\u00efnteresseerd in de mogelijkheid om niet op het apparaat te spelen, maar te onderzoeken:<\/p>\n<ul>\n<li>flashgeheugen met seri\u00eble SPI-interface<\/li>\n<li>bootloaders voor AVR<\/li>\n<li>de 802.15.4 standaard<\/li>\n<\/ul>\n<p>\nDe auteur begon met het schrijven van <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitbank2\/SmartResponseXE\">bibliotheek<\/a><\/noindex> (GPL v3), waarmee je het display kunt initialiseren, tekst en rechthoeken kunt weergeven, evenals toegang kunt krijgen tot het flashgeheugen via de SPI-interface. Daarna begon hij na te denken over praktische toepassingen van het apparaat: een draagbare VT-100-compatibele terminal, multiplayer spellen. Nadat hij drie apparaten had aangepast, besloot hij ze 'te leren' om sketches 'via de lucht' te ontvangen. Dat zou niet alleen interessant zijn, maar ook erg handig: het is moeilijk om de behuizing van het apparaat elke keer te openen, en onder het deksel van het batterijcompartiment bevinden zich alleen gaten voor het aansluiten van een JTAG-programmeur op de printplaat.<\/p>\n<p><img decoding=\"async\" alt=\"Een OTA-bootloader schrijven voor ATmega128RFA1 (onderdeel van het apparaat Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/eb928013737c34e50e6a49e7d41d5bd7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDit is genoeg om de Arduino-bootloader te uploaden, maar niet de sketch \u2014 de seri\u00eble poort is daar niet op aangesloten, zonder de behuizing open te maken kan het niet. Ook zijn de TX0- en RX0-lijnen van de eerste seri\u00eble poort samengevoegd met de lijnen voor het toetsenbord, namelijk die welke worden gebruikt voor de functietoetsen aan de zijden van het scherm. Maar wat kan je doen \u2014 de auteur heeft dit gemaakt:<\/p>\n<p><img decoding=\"async\" alt=\"Een OTA-bootloader schrijven voor ATmega128RFA1 (onderdeel van het apparaat Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/8989f4057806b83ff2eb11b6f1ed2d57.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHij heeft de JTAG-lijnen daarheen geleid, en nu is het niet meer noodzakelijk om het batterijcompartiment te openen. Om ook sketches te kunnen uploaden, heeft hij beide seri\u00eble poorten op dezelfde aansluiting geleid, en ook een schakelaar toegevoegd, omdat het apparaat met ge\u00efnstalleerde batterijen op een andere manier fysiek niet kan worden uitgeschakeld.<\/p>\n<p>Het kostte een behoorlijke tijd om te solderen met een soldeerbout, een hobbymes en een lijmpistool. Kortom, het uploaden van sketches 'door de lucht' is veel handiger, er moet snel iets uitgevonden worden om dit mogelijk te maken.<\/p>\n<p>Arduino IDE gebruikt het programma voor het uploaden van sketches <noindex><a rel=\"nofollow\" href=\"http:\/\/www.ladyada.net\/learn\/avr\/avrdude.html\">avrdude<\/a><\/noindex>. Het communiceert met de microcontroller via het protocol <noindex><a rel=\"nofollow\" href=\"http:\/\/www.tuxgraphics.org\/common\/src2\/article05101\/stk500_spec_AVR068.pdf\">STK500<\/a><\/noindex>, waarmee bestanden in beide richtingen kunnen worden verzonden. Het is slecht compatibel met kanalen waar variabele vertragingen, vervorming en dataverlies mogelijk zijn. Als er iets los zit of ruis maakt in de seri\u00eble verbinding, kun je gek worden op zoek naar de oorzaak. Een keer heeft de auteur een halve dag gefrustreerd totdat hij begreep dat het lag aan een slechte kabel, evenals aan de grillige CP2102-interfaceconverter. Zelfs een microcontroller met een ingebouwde interfaceconverter, zoals de ATmega32u4, kan soms zo 'aanstellerig' zijn. Elke Arduino-gebruiker heeft opgemerkt dat fouten bij het uploaden van sketches niet zo zeldzaam zijn. Soms verloopt de opname normaal, maar bij het controleren van de lezing wordt een fout ontdekt. Dit betekent niet dat er een fout was bij het schrijven \u2014 de storing was bij het lezen. En stel je nu voor dat dit ook 'door de lucht' vaak hetzelfde zal gebeuren, maar veel vaker.<\/p>\n<p>Na verschillende manieren geprobeerd te hebben om dit probleem te overwinnen, heeft de auteur het volgende bedacht. Het apparaat heeft 128 kilobyte flashgeheugen met een SPI-interface \u2014 gegevens ontvangen via draden (we herinneren ons dat de auteur al \u00e9\u00e9n apparaat met een aansluiting aan de zijkant heeft), we gebruiken dit geheugen als buffer en sturen de gegevens via de radioverbinding naar een ander apparaat. Een groet van Cybiko.<\/p>\n<p>Na het schrijven van de code voor het werken met de radiokanalen en het lettertype is de bootloader langer dan 4 kilobyte geworden. Daarom moest de waarde van HFUSE worden gewijzigd van 0xDA naar 0xD8. Nu kan de bootloader tot 8 kilobyte lang zijn en is het startadres gelijk aan 0x1E000. Dit is vastgelegd in het Makefile, maar het moet ook in aanmerking worden genomen bij het uploaden. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.arduino.cc\/en\/Hacking\/Bootloader?from=Tutorial.Bootloader\">bootloader<\/a><\/noindex> met behulp van avrdude.<\/p>\n<p>De zenderontvanger van de 802.15.4 standaard in de ATmega128RFA1 is oorspronkelijk ontworpen om te werken volgens het protocol <noindex><a rel=\"nofollow\" href=\"https:\/\/www.zigbee.org\/what-is-zigbee\/\">ZigBee<\/a><\/noindex>, dat vrij ingewikkeld is. Daarom besloot de auteur in plaats daarvan eenvoudigweg pakketten te verzenden. Dit is hardwarematig ge\u00efmplementeerd in de ATmega128RFA1, zodat er weinig code nodig is. Ook besloot de auteur voor de eenvoud een vaste kanaal te gebruiken, zonder de mogelijkheid om deze zelfs handmatig te kiezen. De 802.15.4 standaard ondersteunt 16 kanalen, genummerd van 11 tot 26. Ze zijn behoorlijk drukbezorgd, sommige overlappen ook met WiFi-kanalen (de ZigBee-kanalen zijn in het rood aangegeven, de WiFi-kanalen in het blauw, groen en geel).<\/p>\n<p><img decoding=\"async\" alt=\"Een OTA-bootloader schrijven voor ATmega128RFA1 (onderdeel van het apparaat Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/650166fdb8e1d0361d015e4c2e85d7f1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHet bleek dat de kanalen 15 en 26 het minst gevoelig zijn voor interferentie van WiFi. De auteur koos de tweede. Disclaimer: de vertaler weet niet of het toegestaan is om ZigBee zo te vereenvoudigen. Misschien is het de moeite waard om nog wat meer te programmeren en het volledig te implementeren?<\/p>\n<p>Op het eerste apparaat moet een eindtoestandmachine worden ge\u00efmplementeerd, die gegevens verzendt volgens het STK500-protocol. In de meeste gevallen zijn de verzonden en ontvangen berichten zelfvoorzienend, maar sommige zijn afhankelijk van eerder verzonden berichten via het kanaal. Een beschrijving van de dialoog wordt gegeven. <noindex><a rel=\"nofollow\" href=\"http:\/\/baldwisdom.com\/bootloading\/\">hier<\/a><\/noindex>.<\/p>\n<p>Een belangrijk aspect van deze dialoog is de overdracht van pakketten die bedoeld zijn om in het flash-geheugen van het doelsysteem te worden geschreven. Bij eenvoudige microcontrollers van de AVR-familie bedraagt de paginagrootte 128 bytes, maar bij de ATmega128RFA1 is dit 256. Dit geldt ook voor de flash-geheugen die via het SPI-protocol is aangesloten. Het programma in het eerste apparaat stuurt de sketch niet meteen naar het tweede, maar schrijft deze in dit geheugen. Wanneer de Arduino IDE de nauwkeurigheid van de opname controleert, worden de gegevens die daar zijn geschreven verzonden. Nu moeten de ontvangen gegevens via de radiokanaal naar het tweede apparaat worden overgedragen. De schakeling van ontvangst naar verzending en vice versa gebeurt vrij vaak. Het STK500-protocol is ongevoelig voor vertragingen, maar kan geen gegevensverlies tolereren (vreemd, want eerder werd gezegd dat vertragingen bij gegevensoverdracht ook effect hebben). En gegevensverlies bij draadloze overdracht is onvermijdelijk. De ATmega128RFA1 heeft een hardware-implementatie van herhaalverzoeken bij twijfel over de correctheid van de overdracht, maar de auteur besloot dit ook zelf programmatisch te implementeren. Hij heeft een protocol ontwikkeld waarbij in \u00e9\u00e9n richting veel meer gegevens worden verzonden dan in de andere.<\/p>\n<p>Het is niet perfect, maar alles werkt. De 256-byte pagina wordt opgesplitst in vier segmenten, die elk als een pakket via de radiokanaal worden verzonden. Een pakket kan tot 125 bytes aan gegevens bevatten plus \u00e9\u00e9n byte voor de lengte en twee voor CRC. Fragmenten van 64 bytes, samen met paginanummers en segmentnummers (van 0 tot 3), worden daar geplaatst. In het ontvangende apparaat is er een variabele om bij te houden hoeveel segmenten zijn ontvangen, en wanneer alle vier aankomen, ontvangt het verzendende apparaat een bevestiging dat de hele pagina is ontvangen. Geen bevestiging (CRC komt niet overeen) \u2014 we verzenden de hele pagina opnieuw. De snelheid is zelfs hoger dan bij overdracht via een kabel. Kijk:<\/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=\"Video afspelen\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\nOver het algemeen moet er een makkelijke manier worden voorzien om de kabel voor het uploaden van sketches aan te sluiten op de apparaten. Bijvoorbeeld, plaats een interfaceconverter zoals de CP2102, zoals op de foto, binnenin en bevestig deze aan de printplaat zodat hij de kracht bij het aansluiten en loskoppelen van de Micro USB-kabel kan weerstaan.<\/p>\n<p><img decoding=\"async\" alt=\"Een OTA-bootloader schrijven voor ATmega128RFA1 (onderdeel van het apparaat Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/e03563fcd985467abb236475cbbf9e3f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDaarnaast bevat het een 3,3-volt stabilisator (en hoe deze toe te passen in een apparaat met een 6-volt voeding - op voorwaarde dat er een vergelijkbare stabilisator aanwezig is, en dat er twee diodes kunnen worden toegevoegd om automatisch te kiezen van welke de voeding aan het apparaat geleverd wordt). Alle drie de LEDs op de interface converterplaat moeten worden verwijderd, anders zullen ze de batterijen extra belasten wanneer ze van kracht zijn, en ook het scannen van het toetsenbord en het werken met flashgeheugen via de SPI-interface verstoren.<\/p>\n<p>Het nastreven van het doel bleek zelfs interessanter dan het bereiken ervan (en die mop over de bus hoeft niet). De auteur leerde veel nieuwe dingen over bootloaders voor AVR, flashgeheugen met een SPI-interface, het STK500-protocol en de standaard 802.15.4.<\/p>\n<p>De rest van de code die aanvullend is op de hierboven beschreven bibliotheek - <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitbank2\/SMART_bootloader\">hier<\/a><\/noindex>, en deze is ook onder GPL v3. De Twitter van de auteur - <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/fast_code_r_us\">hier<\/a><\/noindex>.<br \/>\n<br \/>Bron: <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\/nl\/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=\"nl_NL\" \/>\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\/nl\/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 schrijven een OTA-bootloader voor de ATmega128RFA1 (in het Smart Response XE apparaat) | ProHoster","description":"Alles begon.","canonical_url":"https:\/\/prohoster.info\/nl\/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":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/31101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=31101"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/31101\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/23069"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=31101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=31101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=31101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}