{"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\/de\/blog\/administrirovanie\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe","title":{"rendered":"OTA-Loader f\u00fcr ATmega128RFA1 (im Ger\u00e4t Smart Response XE) schreiben","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"OTA-Loader f\u00fcr ATmega128RFA1 (im Ger\u00e4t Smart Response XE) schreiben\" src=\"\/wp-content\/uploads\/2019\/04\/c3c47048a601bcd0a79b44535de2f36f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAlles begann mit dem Erwerb eines interessanten Ger\u00e4ts durch den Autor auf dem Sekund\u00e4rmarkt \u2014 Smart Response XE (<noindex><a rel=\"nofollow\" href=\"http:\/\/downloads.smarttech.com\/media\/sitecore\/en\/support\/product\/smartresponse\/smartresponsexe\/specsheets\/specsresponsexev18mar13.pdf\">kurze Beschreibung<\/a><\/noindex>). Es ist f\u00fcr Schulen gedacht: Jeder Sch\u00fcler in der Klasse erh\u00e4lt ein Ger\u00e4t, das einer elektronischen Notizbuch oder einem \u00dcbersetzer aus den 90ern \u00e4hnelt, der Lehrer stellt eine Frage, und die Sch\u00fcler geben ihre Antworten \u00fcber die Tastaturen der Ger\u00e4te ein, die kabellos (802.15.4) an einen Empf\u00e4nger gesendet werden, der mit dem PC des Lehrers verbunden ist.<\/p>\n<p>Die Unterst\u00fctzung dieser Ger\u00e4te wurde vor einigen Jahren eingestellt, und das, was Schulen f\u00fcr 100-200 Dollar pro St\u00fcck kauften, taucht jetzt f\u00fcr 10 Dollar oder weniger auf eBay auf. Die Hardware ist sehr gut f\u00fcr Geek-Experimente geeignet:<\/p>\n<ul>\n<li>60-Tasten-Tastatur<\/li>\n<li>Display mit einer Aufl\u00f6sung von 384&#215;136, 2 Bit pro Pixel \u2013 \u00e4hnlich wie BK, CGA, jedoch 4 keine Farben, sondern Helligkeitsstufen<\/li>\n<li>Microcontroller ATmega128RFA1 (128 kB Flash-Speicher, 4 kB EEPROM, 16 kB RAM, Transceiver vom Typ 802.15.4)<\/li>\n<li>externer (bez\u00fcglich des Mikrocontrollers, nicht des gesamten Ger\u00e4ts) Flash-Speicher mit 1 Megabit (128 Kilobyte) mit SPI-Schnittstelle<\/li>\n<li>Fach f\u00fcr 4 AAA-Batterien.<\/li>\n<\/ul>\n<p>\nAnhand der Bezeichnung des Mikrocontrollers ist klar, dass er zur AVR-Familie geh\u00f6rt, und deshalb ist es mehr als trivial, ein Arduino-kompatibles Ger\u00e4t zu erstellen\u2026<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Aus einer Nachricht auf <noindex><a rel=\"nofollow\" href=\"https:\/\/hackaday.com\/2018\/07\/22\/classroom-gadget-turned-arduino-compatible\/\">Hackaday<\/a><\/noindex> erfuhr der Autor, dass dies <noindex><a rel=\"nofollow\" href=\"https:\/\/community.arduboy.com\/t\/smart-response-xe-re-purposed-into-arduboy\/6094\/\">bereits gemacht wurde<\/a><\/noindex> (der gleiche Link erkl\u00e4rt auch, wohin was angeschlossen werden muss), wodurch die M\u00f6glichkeit entstand, Spiele f\u00fcr Arduboy zu starten:<\/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 abspielen\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\n Der Autor ist jedoch mehr an der M\u00f6glichkeit interessiert, nicht auf dem Ger\u00e4t zu spielen, sondern es zu erforschen:<\/p>\n<ul>\n<li>Flash-Speicher mit serieller SPI-Schnittstelle<\/li>\n<li>Bootloader f\u00fcr AVR<\/li>\n<li>Standards 802.15.4<\/li>\n<\/ul>\n<p>\nDer Autor begann mit dem Schreiben von <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitbank2\/SmartResponseXE\">Bibliothek<\/a><\/noindex> (GPL v3), das die Initialisierung des Displays erm\u00f6glicht, Text und Rechtecke anzuzeigen und Zugriff auf den Flash-Speicher \u00fcber die SPI-Schnittstelle zu erhalten. Dann begann er, Ideen f\u00fcr die praktische Nutzung des Ger\u00e4ts zu entwickeln: ein tragbares VT-100-kompatibles Terminal, Mehrspielerspiele. Nachdem er drei Ger\u00e4te umgebaut hatte, beschloss er, sie \"zu lehren\", Sketche \"\u00fcber die Luft\" zu empfangen. Was nicht nur interessant, sondern auch sehr praktisch w\u00e4re: Das Geh\u00e4use des Ger\u00e4ts jedes Mal zu \u00f6ffnen, ist schwierig, und unter der Abdeckung des Batteriefachs befinden sich nur L\u00f6cher, die den Anschluss eines JTAG-Programmierers an die Platine erm\u00f6glichen.<\/p>\n<p><img decoding=\"async\" alt=\"OTA-Loader f\u00fcr ATmega128RFA1 (im Ger\u00e4t Smart Response XE) schreiben\" src=\"\/wp-content\/uploads\/2019\/04\/eb928013737c34e50e6a49e7d41d5bd7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas reicht aus, um den Arduino Bootloader zu flashen, aber nicht den Sketch \u2013 der serielle Port ist daf\u00fcr nicht bereitgestellt, ohne das Geh\u00e4use zu \u00f6ffnen, wird es trotzdem nicht gehen. Auch die TX0- und RX0-Leitungen des ersten seriellen Ports sind mit den Abtastleitungen des Tastaturrasters verbunden, und zwar genau den, \u00fcber die die Funktionstasten an den Seiten des Displays abgefragt werden. Aber was soll man machen \u2013 der Autor hat Folgendes gemacht:<\/p>\n<p><img decoding=\"async\" alt=\"OTA-Loader f\u00fcr ATmega128RFA1 (im Ger\u00e4t Smart Response XE) schreiben\" src=\"\/wp-content\/uploads\/2019\/04\/8989f4057806b83ff2eb11b6f1ed2d57.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEr hat die JTAG-Leitungen herausgef\u00fchrt, und jetzt ist es nicht mehr n\u00f6tig, das Batteriefach zu \u00f6ffnen. Um auch Sketches zu laden, hat er ebenfalls beide seriellen Ports an diesen Anschluss gelegt und zus\u00e4tzlich einen Schalter hinzugef\u00fcgt, da das Ger\u00e4t mit installierten Batterien physisch nicht anders ausgeschaltet werden kann.<\/p>\n<p>Es war notwendig, ziemlich lange mit dem L\u00f6tkolben, einem Cutter und einer Hei\u00dfklebepistole zu arbeiten. Insgesamt ist das Laden von Sketches \u201e\u00fcber die Luft\u201c viel bequemer, daf\u00fcr muss dringend etwas erfunden werden.<\/p>\n<p>Die Arduino IDE verwendet f\u00fcr das Flashen von Sketches ein Programm <noindex><a rel=\"nofollow\" href=\"http:\/\/www.ladyada.net\/learn\/avr\/avrdude.html\">avrdude<\/a><\/noindex>. Es interagiert mit dem Mikrocontroller \u00fcber das Protokoll <noindex><a rel=\"nofollow\" href=\"http:\/\/www.tuxgraphics.org\/common\/src2\/article05101\/stk500_spec_AVR068.pdf\">STK500<\/a><\/noindex>, das den Datenaustausch in beide Richtungen erm\u00f6glicht. Es ist schlecht kompatibel mit Kan\u00e4len, in denen variable Verz\u00f6gerungen, Verzerrungen und Datenverluste m\u00f6glich sind. Wenn im seriellen Kanal etwas st\u00f6rt oder knistert, kann man wahnsinnig werden auf der Suche nach der Ursache. Einmal hat der Autor einen halben Tag damit gek\u00e4mpft, bis er verstand, dass es am schlechten Kabel lag, sowie am w\u00e4hlerischen Interface-Wandler CP2102. Sogar Mikrocontroller mit integriertem Interface-Wandler, wie zum Beispiel der ATmega32u4, k\u00f6nnen manchmal so \u201ezicken\u201c. Jeder Arduino-Nutzer hat festgestellt, dass Fehler beim Flashen von Sketches nicht so selten sind. Manchmal l\u00e4uft das Schreiben normal, und beim \u00dcberpr\u00fcfen wird ein Fehler entdeckt. Das bedeutet nicht, dass beim Schreiben ein Fehler war \u2013 der Fehler trat beim Lesen auf. Und jetzt stellt euch vor, dass beim Arbeiten \u201e\u00fcber die Luft\u201c dasselbe viel h\u00e4ufiger passieren wird.<\/p>\n<p>Nachdem er verschiedene M\u00f6glichkeiten ausprobiert hat, um dieses Problem zu \u00fcberwinden, hat der Autor Folgendes erfunden. Das Ger\u00e4t verf\u00fcgt \u00fcber einen 128-Kilobyte-Flashspeicher mit SPI-Schnittstelle \u2013 Daten werden \u00fcber Leitungen empfangen (wir erinnern uns, dass der Autor bereits ein Ger\u00e4t mit seitlichem Anschluss hat), wir verwenden diesen Speicher als Puffer und senden die Daten \u00fcber den Funkkanal an ein anderes Ger\u00e4t. So eine Gr\u00fc\u00dfe von Cybiko.<\/p>\n<p>Nach dem Schreiben des Codes f\u00fcr die Arbeit mit dem Radio-Kanal sowie dem Schriftarten wurde der Bootloader l\u00e4nger als 4 Kilobyte. Daher musste der Wert von HFUSE von 0xDA auf 0xD8 ge\u00e4ndert werden. Nun kann der Bootloader bis zu 8 Kilobyte lang sein, und die Startadresse betr\u00e4gt 0x1E000. Dies ist im Makefile vermerkt, muss jedoch auch beim Flashen beachtet werden. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.arduino.cc\/en\/Hacking\/Bootloader?from=Tutorial.Bootloader\">Bootloader<\/a><\/noindex> mit avrdude.<\/p>\n<p>Der 802.15.4 Sender-Empf\u00e4nger im ATmega128RFA1 ist urspr\u00fcnglich f\u00fcr die Arbeit mit dem Protokoll <noindex><a rel=\"nofollow\" href=\"https:\/\/www.zigbee.org\/what-is-zigbee\/\">ZigBee<\/a><\/noindex>, das ziemlich komplex ist, daher entschied der Autor, stattdessen einfach Pakete zu \u00fcbertragen. Dies ist im ATmega128RFA1 hardwarem\u00e4\u00dfig implementiert, sodass nur wenig Code ben\u00f6tigt wird. Auch zur Vereinfachung entschied der Autor, einen festen Kanal zu verwenden und es nicht einmal manuell ausw\u00e4hlen zu lassen. Der Standard 802.15.4 unterst\u00fctzt 16 Kan\u00e4le mit den Nummern 11 bis 26. Diese sind ziemlich \u00fcberlastet, einige \u00fcberlappen auch mit WiFi-Kan\u00e4len (rote Kan\u00e4le sind ZigBee, blaue, gr\u00fcne und gelbe \u2013 WiFi).<\/p>\n<p><img decoding=\"async\" alt=\"OTA-Loader f\u00fcr ATmega128RFA1 (im Ger\u00e4t Smart Response XE) schreiben\" src=\"\/wp-content\/uploads\/2019\/04\/650166fdb8e1d0361d015e4c2e85d7f1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs stellte sich heraus, dass die am wenigsten st\u00f6ranf\u00e4lligen von WiFi-Kan\u00e4len 15 und 26 sind. Letzteren w\u00e4hlte der Autor aus. Disclaimer: Der \u00dcbersetzer wei\u00df nicht, ob es erlaubt ist, ZigBee auf diese Weise zu vereinfachen. Vielleicht sollte man noch ein wenig programmieren und es vollst\u00e4ndig umsetzen?<\/p>\n<p>Auf dem ersten Ger\u00e4t muss ein finite State Machine implementiert werden, die Daten \u00fcber das STK500-Protokoll \u00fcbertr\u00e4gt. In der Regel sind die \u00fcbertragenen und empfangenen Nachrichten eigenst\u00e4ndig, aber einige h\u00e4ngen von zuvor \u00fcber den Kanal gesendeten ab. Eine Beschreibung des Dialogs ist beigef\u00fcgt. <noindex><a rel=\"nofollow\" href=\"http:\/\/baldwisdom.com\/bootloading\/\">hier<\/a><\/noindex>.<\/p>\n<p>Ein wichtiger Bestandteil dieses Dialogs ist die \u00dcbertragung von Paketen, die zur Speicherung im Flash-Speicher des Zielger\u00e4ts vorgesehen sind. Bei einfachen Mikrocontrollern der AVR-Familie betr\u00e4gt die Seitenl\u00e4nge 128 Byte, w\u00e4hrend sie bei der ATmega128RFA1 256 Byte betr\u00e4gt. Bei dem Flash-Speicher, der \u00fcber das SPI-Protokoll angeschlossen wird, ist sie ebenfalls gleich. Das Programm im ersten Ger\u00e4t \u00fcbertr\u00e4gt den Sketch nicht sofort auf das zweite Ger\u00e4t, sondern schreibt ihn in diesen Speicher. Wenn die Arduino IDE dann die Korrektheit der Speicherung \u00fcberpr\u00fcft, erh\u00e4lt sie die Daten, die dorthin geschrieben wurden. Nun m\u00fcssen die erhaltenen Daten \u00fcber den Funkkanal an das zweite Ger\u00e4t \u00fcbertragen werden. Dabei erfolgt der Wechsel von Empfang auf Sendung und zur\u00fcck ziemlich h\u00e4ufig. Das STK500-Protokoll ist unempfindlich gegen\u00fcber Verz\u00f6gerungen, vertr\u00e4gt jedoch keinen Datenverlust (seltsam, denn zuvor wurde gesagt, dass Verz\u00f6gerungen bei der Daten\u00fcbertragung auch Auswirkungen haben). Aber Verluste bei der drahtlosen \u00dcbertragung sind unvermeidlich. In der ATmega128RFA1 ist eine Hardware-Implementierung von Wiederholungsanforderungen bei Zweifeln an der Korrektheit der \u00dcbertragung eingebaut, doch der Autor entschloss sich, das gleiche programmatisch selbst umzusetzen. Er entwickelte ein Protokoll, bei dem in eine Richtung deutlich mehr Daten \u00fcbertragen werden als in die andere.<\/p>\n<p>Es ist nicht ideal, aber alles funktioniert. Eine 256-Byte-Seite wird in vier Segmente unterteilt, von denen jedes \u00fcber den Funkkanal als Paket \u00fcbertragen wird. Das Paket fasst bis zu 125 Byte Daten plus ein Byte \u2013 f\u00fcr die L\u00e4nge und zwei \u2013 f\u00fcr CRC. So werden Fragmente mit einer L\u00e4nge von 64 Byte zusammen mit den Seiten- und Segmentnummern (von 0 bis 3) dort untergebracht. Im empfangenden Ger\u00e4t gibt es eine Variable, die verfolgt, wie viele Segmente empfangen wurden, und wenn alle vier eintreffen, geht eine Best\u00e4tigung an das sendende Ger\u00e4t, dass die gesamte Seite empfangen wurde. Wenn keine Best\u00e4tigung erfolgt (CRC stimmt nicht \u00fcberein), wird die gesamte Seite erneut gesendet. Die Geschwindigkeit ist dabei sogar h\u00f6her als bei der \u00dcbertragung \u00fcber Kabel. Siehe:<\/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 abspielen\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\nAber eigentlich sollte man eine bequeme M\u00f6glichkeit vorsehen, ein Kabel zum Hochladen von Sketches an die Ger\u00e4te anzuschlie\u00dfen. Zum Beispiel k\u00f6nnte man einen solchen Schnittstellenwandler auf CP2102, wie im Foto, in das Geh\u00e4use einbauen und so auf der Platine befestigen, dass er die Kraft beim Anschluss und Trennen des Micro-USB-Kabels aush\u00e4lt.<\/p>\n<p><img decoding=\"async\" alt=\"OTA-Loader f\u00fcr ATmega128RFA1 (im Ger\u00e4t Smart Response XE) schreiben\" src=\"\/wp-content\/uploads\/2019\/04\/e03563fcd985467abb236475cbbf9e3f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs gibt auch einen 3,3-Volt-Spannungsregler (und wie er in einem Ger\u00e4t mit 6-Volt-Stromversorgung angewendet werden kann - falls es einen \u00e4hnlichen Spannungsregler gibt, k\u00f6nnen zwei Dioden hinzugef\u00fcgt werden, um automatisch auszuw\u00e4hlen, von welchem der beiden das Ger\u00e4t gespeist wird). Alle drei LEDs auf der Schnittstellenwandlerplatine m\u00fcssen entfernt werden, da sie sonst die Batterien zus\u00e4tzlich belasten, wenn das Ger\u00e4t von ihnen betrieben wird, und das Abfragen der Tastatur sowie die Arbeit mit dem Flash-Speicher \u00fcber die SPI-Schnittstelle behindern.<\/p>\n<p>Das Verfolgen des Ziels war sogar interessanter als dessen Erreichung (und das mit dem Bus muss nicht erw\u00e4hnt werden). Der Autor hat viel Neues \u00fcber Bootloader f\u00fcr AVR, Flash-Speicher mit SPI-Schnittstelle, das STK500-Protokoll und den Standard 802.15.4 gelernt.<\/p>\n<p>Der gesamte \u00fcbrige Code zus\u00e4tzlich zur oben beschriebenen Bibliothek - <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitbank2\/SMART_bootloader\">hier<\/a><\/noindex>, und er steht ebenfalls unter GPL v3. Der Twitter des Autors - <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/fast_code_r_us\">hier<\/a><\/noindex>.<br \/>\n<br \/>Quelle: <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\/de\/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=\"de_DE\" \/>\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\/de\/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\udd47Wir programmieren einen OTA-Loader f\u00fcr ATmega128RFA1 (im Ger\u00e4t Smart Response XE) | ProHoster","description":"Alles begann.","canonical_url":"https:\/\/prohoster.info\/de\/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":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/31101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=31101"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/31101\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/23069"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=31101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=31101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=31101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}