{"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\/fr\/blog\/administrirovanie\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe","title":{"rendered":"Cr\u00e9ons un programme de t\u00e9l\u00e9chargement OTA pour ATmega128RFA1 (dans l'appareil Smart Response XE)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Cr\u00e9ons un programme de t\u00e9l\u00e9chargement OTA pour ATmega128RFA1 (dans l&#039;appareil Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/c3c47048a601bcd0a79b44535de2f36f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTout a commenc\u00e9 par l'achat par l'auteur d'un appareil int\u00e9ressant sur le march\u00e9 de l'occasion \u2014 Smart Response XE (<noindex><a rel=\"nofollow\" href=\"http:\/\/downloads.smarttech.com\/media\/sitecore\/en\/support\/product\/smartresponse\/smartresponsexe\/specsheets\/specsresponsexev18mar13.pdf\">description br\u00e8ve<\/a><\/noindex>). Il est destin\u00e9 aux \u00e9coles : chaque \u00e9l\u00e8ve de la classe re\u00e7oit un appareil semblable \u00e0 un carnet \u00e9lectronique ou un traducteur des ann\u00e9es 90, l'enseignant pose une question, et les \u00e9l\u00e8ves saisissent les r\u00e9ponses sur les claviers des appareils, qui sont transmises par radio (802.15.4) \u00e0 un r\u00e9cepteur connect\u00e9 \u00e0 l'ordinateur de l'enseignant.<\/p>\n<p>Le support de ces appareils a \u00e9t\u00e9 arr\u00eat\u00e9 il y a quelques ann\u00e9es, et ce que les \u00e9coles achetaient entre 100 et 200 dollars pi\u00e8ce, appara\u00eet maintenant sur eBay \u00e0 10 dollars ou moins. Le \u00ab mat\u00e9riel \u00bb est tr\u00e8s adapt\u00e9 aux exp\u00e9riences de passionn\u00e9s :<\/p>\n<ul>\n<li>un clavier de 60 touches<\/li>\n<li>affichage avec une r\u00e9solution de 384\u00d7136, 2 bits par pixel \u2014 similaire au BK, CGA, mais 4 ne sont pas des couleurs, mais des nuances de luminosit\u00e9<\/li>\n<li>microcontr\u00f4leur ATmega128RFA1 (128 Ko de m\u00e9moire flash, 4 Ko de ROM, 16 Ko de RAM, \u00e9metteur-r\u00e9cepteur conforme \u00e0 802.15.4)<\/li>\n<li>m\u00e9moire flash externe (par rapport au microcontr\u00f4leur, et non \u00e0 l'ensemble de l'appareil) de 1 m\u00e9gabit (128 Ko) avec interface SPI<\/li>\n<li>compartiment pour 4 piles AAA.<\/li>\n<\/ul>\n<p>\nPar le nom du microcontr\u00f4leur, il est \u00e9vident qu'il appartient \u00e0 la famille AVR, donc rendre un appareil compatible avec Arduino est une t\u00e2che plus que triviale\u2026<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>D'une nouvelle sur <noindex><a rel=\"nofollow\" href=\"https:\/\/hackaday.com\/2018\/07\/22\/classroom-gadget-turned-arduino-compatible\/\">Hackaday<\/a><\/noindex> l'auteur a appris que cela <noindex><a rel=\"nofollow\" href=\"https:\/\/community.arduboy.com\/t\/smart-response-xe-re-purposed-into-arduboy\/6094\/\">a d\u00e9j\u00e0 \u00e9t\u00e9 fait<\/a><\/noindex> (le m\u00eame lien parle des connexions), permettant de lancer des jeux pour 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=\"Lire la vid\u00e9o\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\n Mais l'auteur est plus int\u00e9ress\u00e9 par la possibilit\u00e9 d'apprendre, plut\u00f4t que de jouer sur l'appareil :<\/p>\n<ul>\n<li>m\u00e9moire flash avec interface s\u00e9rie SPI<\/li>\n<li>bootloaders pour AVR<\/li>\n<li>norme 802.15.4<\/li>\n<\/ul>\n<p>\nL'auteur a commenc\u00e9 par \u00e9crire <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitbank2\/SmartResponseXE\">biblioth\u00e8ques<\/a><\/noindex> (GPL v3), permettant d'initialiser l'affichage, d'afficher du texte et des rectangles, ainsi que d'acc\u00e9der \u00e0 la m\u00e9moire flash avec l'interface SPI. Ensuite, il a commenc\u00e9 \u00e0 imaginer des id\u00e9es d'utilisation pratique de l'appareil : un terminal compatible VT-100 de poche, des jeux multijoueurs. Apr\u00e8s avoir modifi\u00e9 trois appareils, il a d\u00e9cid\u00e9 de \u00ab les apprendre \u00bb \u00e0 recevoir des sketches \u00ab par voie a\u00e9rienne \u00bb. Ce qui serait non seulement int\u00e9ressant, mais aussi tr\u00e8s pratique : le bo\u00eetier de l'appareil est difficile \u00e0 ouvrir \u00e0 chaque fois, et sous le capot du compartiment des piles se trouvent seulement des trous permettant de connecter un programmateur JTAG \u00e0 la carte.<\/p>\n<p><img decoding=\"async\" alt=\"Cr\u00e9ons un programme de t\u00e9l\u00e9chargement OTA pour ATmega128RFA1 (dans l&#039;appareil Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/eb928013737c34e50e6a49e7d41d5bd7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nC'est suffisant pour t\u00e9l\u00e9charger le chargeur Arduino, mais pas le sketch \u2014 le port s\u00e9rie n'est pas accessible, il faudra tout de m\u00eame ouvrir le bo\u00eetier. De plus, les lignes TX0 et RX0 du premier port s\u00e9rie sont associ\u00e9es aux lignes de sondage de la matrice du clavier, c'est-\u00e0-dire celles par lesquelles se fait l'interrogation des touches fonctionnelles de chaque c\u00f4t\u00e9 de l'\u00e9cran. Mais que faire \u2014 l'auteur a fabriqu\u00e9 ceci :<\/p>\n<p><img decoding=\"async\" alt=\"Cr\u00e9ons un programme de t\u00e9l\u00e9chargement OTA pour ATmega128RFA1 (dans l&#039;appareil Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/8989f4057806b83ff2eb11b6f1ed2d57.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl a donc connect\u00e9 les lignes JTAG, et maintenant l'ouverture du compartiment des piles n'est plus n\u00e9cessaire. Et pour pouvoir t\u00e9l\u00e9charger aussi des sketches, il a connect\u00e9 \u00e0 ce m\u00eame port les deux ports s\u00e9rie, ajoutant \u00e9galement un interrupteur, car avec les piles install\u00e9es, il est physiquement impossible d'\u00e9teindre l'appareil autrement.<\/p>\n<p>Il a fallu pas mal de temps pour travailler avec un fer \u00e0 souder, un cutter et un pistolet \u00e0 colle. En g\u00e9n\u00e9ral, il est beaucoup plus pratique de t\u00e9l\u00e9charger des sketches 'sans fil', il faut donc rapidement inventer quelque chose.<\/p>\n<p>L'IDE Arduino utilise le programme <noindex><a rel=\"nofollow\" href=\"http:\/\/www.ladyada.net\/learn\/avr\/avrdude.html\">avrdude<\/a><\/noindex>. Il interagit avec le microcontr\u00f4leur via le protocole <noindex><a rel=\"nofollow\" href=\"http:\/\/www.tuxgraphics.org\/common\/src2\/article05101\/stk500_spec_AVR068.pdf\">STK500<\/a><\/noindex>, qui permet de transmettre des fichiers dans les deux sens. Il est mal compatible avec les canaux o\u00f9 des d\u00e9lais variables, des distorsions et des pertes de donn\u00e9es peuvent se produire. Si quelque chose dans le canal s\u00e9rie s'entrechoque ou gr\u00e9sille, on peut devenir fou en cherchant la raison. Une fois, l'auteur a pass\u00e9 la moiti\u00e9 de la journ\u00e9e \u00e0 se rendre compte que c'\u00e9tait \u00e0 cause d'un mauvais c\u00e2ble, ainsi qu'un convertisseur de signal capricieux CP2102. M\u00eame un microcontr\u00f4leur avec un convertisseur de signal int\u00e9gr\u00e9, par exemple, l'ATmega32u4, peut parfois avoir ce genre de 'caprices'. Chaque utilisateur d'Arduino a remarqu\u00e9 que les erreurs lors du t\u00e9l\u00e9chargement de sketches ne sont pas si rares. Parfois, l'enregistrement se passe bien, mais lors de la lecture de v\u00e9rification, une erreur est d\u00e9tect\u00e9e. Cela ne signifie pas qu'il y a eu une erreur lors de l'enregistrement \u2014 la d\u00e9faillance s'est produite lors de la lecture. Et maintenant, imaginez qu'en 'sans fil', cela se produira de la m\u00eame mani\u00e8re, mais beaucoup plus souvent.<\/p>\n<p>Apr\u00e8s avoir essay\u00e9 diff\u00e9rentes mani\u00e8res de surmonter ce probl\u00e8me, l'auteur a invent\u00e9 ce qui suit. L'appareil dispose de 128 Ko de m\u00e9moire flash avec interface SPI \u2014 nous recevons des donn\u00e9es par c\u00e2bles (nous nous souvenons qu'un appareil avec un port sur le c\u00f4t\u00e9 que l'auteur poss\u00e8de d\u00e9j\u00e0), nous utilisons cette m\u00e9moire comme tampon, et nous envoyons les donn\u00e9es \u00e0 un autre appareil par voie radio. Une petite salutation de Cybiko.<\/p>\n<p>Apr\u00e8s avoir \u00e9crit le code pour fonctionner avec le canal radio, ainsi que la police, le chargeur est devenu plus long de 4 kilo-octets. Par cons\u00e9quent, la valeur de HFUSE a d\u00fb \u00eatre chang\u00e9e de 0xDA \u00e0 0xD8. D\u00e9sormais, le chargeur peut avoir une longueur allant jusqu'\u00e0 8 kilo-octets, et l'adresse de d\u00e9part est devenue 0x1E000. Cela est refl\u00e9t\u00e9 dans le Makefile, mais doit \u00e9galement \u00eatre pris en compte lors du t\u00e9l\u00e9chargement. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.arduino.cc\/en\/Hacking\/Bootloader?from=Tutorial.Bootloader\">chargeur<\/a><\/noindex> avec avrdude.<\/p>\n<p>Le r\u00e9cepteur \u00e9metteur standard 802.15.4 dans l'ATmega128RFA1 \u00e9tait \u00e0 l'origine con\u00e7u pour fonctionner selon le protocole <noindex><a rel=\"nofollow\" href=\"https:\/\/www.zigbee.org\/what-is-zigbee\/\">ZigBee<\/a><\/noindex>, qui est assez complexe, c'est pourquoi l'auteur a d\u00e9cid\u00e9 de simplement transmettre des paquets \u00e0 la place. Cela est impl\u00e9ment\u00e9 mat\u00e9riellement dans l'ATmega128RFA1, donc peu de code sera n\u00e9cessaire. Pour plus de simplicit\u00e9, l'auteur a \u00e9galement choisi d'utiliser un canal fixe, sans permettre de le s\u00e9lectionner manuellement. La norme 802.15.4 prend en charge 16 canaux num\u00e9rot\u00e9s de 11 \u00e0 26. Ils sont assez charg\u00e9s, certains chevauchent \u00e9galement les canaux WiFi (les canaux ZigBee sont indiqu\u00e9s en rouge, ceux de WiFi en bleu, vert et jaune).<\/p>\n<p><img decoding=\"async\" alt=\"Cr\u00e9ons un programme de t\u00e9l\u00e9chargement OTA pour ATmega128RFA1 (dans l&#039;appareil Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/650166fdb8e1d0361d015e4c2e85d7f1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl s'est av\u00e9r\u00e9 que les canaux 15 et 26 sont les moins sensibles aux interf\u00e9rences WiFi. C'est le second que l'auteur a choisi. Avertissement : le traducteur ne sait pas s'il est permis de simplifier ainsi ZigBee. Peut-\u00eatre vaut-il encore la peine de programmer un peu plus et de le r\u00e9aliser compl\u00e8tement ?<\/p>\n<p>Sur le premier des appareils, il faut impl\u00e9menter une machine \u00e0 \u00e9tats qui transmet des donn\u00e9es selon le protocole STK500. Dans la plupart des cas, les messages transmis et re\u00e7us sont autonomes, mais certains sont li\u00e9s \u00e0 ceux qui ont d\u00e9j\u00e0 pass\u00e9 le canal. La description du dialogue est fournie. <noindex><a rel=\"nofollow\" href=\"http:\/\/baldwisdom.com\/bootloading\/\">ici<\/a><\/noindex>.<\/p>\n<p>Un \u00e9l\u00e9ment important de ce dialogue est la transmission des paquets destin\u00e9s \u00e0 \u00eatre enregistr\u00e9s dans la m\u00e9moire flash de l'appareil cible. Pour les microcontr\u00f4leurs simples de la famille AVR, la taille de la page est de 128 octets, mais pour l'ATmega128RFA1, elle est de 256. La m\u00e9moire flash qui se connecte via le protocole SPI a la m\u00eame taille. Lorsque le programme dans le premier appareil t\u00e9l\u00e9charge le sketch, il ne l'envoie pas imm\u00e9diatement au second, mais l'\u00e9crit dans cette m\u00e9moire. Lorsque l'Arduino IDE v\u00e9rifie l'exactitude de l'enregistrement, il re\u00e7oit ce qui y a \u00e9t\u00e9 \u00e9crit. Il faut maintenant transmettre les donn\u00e9es re\u00e7ues par radio au second appareil. \u00c0 cet \u00e9gard, le passage de la r\u00e9ception \u00e0 l'envoi et vice versa se produit assez souvent. Le protocole STK500 est indiff\u00e9rent aux d\u00e9lais, mais ne tol\u00e8re pas la perte de donn\u00e9es (\u00e9trangement, il est dit plus haut que les d\u00e9lais de transmission des donn\u00e9es ont aussi un impact). Et les pertes lors de la transmission sans fil sont in\u00e9vitables. L'ATmega128RFA1 int\u00e8gre une r\u00e9alisation mat\u00e9rielle des demandes de r\u00e9p\u00e9tition en cas de doutes sur l'exactitude de la transmission, mais l'auteur a d\u00e9cid\u00e9 de le r\u00e9aliser lui-m\u00eame par voie logicielle. Il a d\u00e9velopp\u00e9 un protocole dans lequel beaucoup plus de donn\u00e9es passent dans un sens que dans l'autre.<\/p>\n<p>Il n'est pas parfait, mais tout fonctionne. La page de 256 octets est divis\u00e9e en quatre segments, chacun \u00e9tant transmis par radio sous forme de paquet. Le paquet contient jusqu'\u00e0 125 octets de donn\u00e9es plus un octet pour la longueur et deux pour le CRC. Ainsi, les fragments de 64 octets avec les num\u00e9ros de pages et de segments (de 0 \u00e0 3) y sont inclus. Dans l'appareil r\u00e9cepteur, une variable est pr\u00e9vue pour suivre combien de segments ont \u00e9t\u00e9 re\u00e7us, et lorsque les quatre arrivent, un accus\u00e9 de r\u00e9ception est envoy\u00e9 \u00e0 l'appareil \u00e9metteur confirmant que l'ensemble de la page a \u00e9t\u00e9 re\u00e7ue. Pas de confirmation (le CRC ne correspond pas) \u2014 renvoyons toute la page. La vitesse est m\u00eame sup\u00e9rieure \u00e0 celle de la transmission par c\u00e2ble. Regardez :<\/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=\"Lire la vid\u00e9o\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\nMais en fait, il serait bon de pr\u00e9voir un moyen pratique de connecter un c\u00e2ble aux appareils pour t\u00e9l\u00e9charger des sketches par ce biais. Par exemple, placer \u00e0 l'int\u00e9rieur un tel convertisseur d'interface CP2102, comme sur la photo, et le coller \u00e0 la carte de mani\u00e8re \u00e0 ce qu'il r\u00e9siste \u00e0 la pression lors de la connexion et d\u00e9connexion du c\u00e2ble Micro USB.<\/p>\n<p><img decoding=\"async\" alt=\"Cr\u00e9ons un programme de t\u00e9l\u00e9chargement OTA pour ATmega128RFA1 (dans l&#039;appareil Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/e03563fcd985467abb236475cbbf9e3f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl y a \u00e9galement un r\u00e9gulateur de 3,3 volts (et comment l'utiliser dans un appareil aliment\u00e9 par 6 volts \u2014 \u00e0 condition qu'il y ait un r\u00e9gulateur similaire, et que l'on puisse ajouter deux diodes pour s\u00e9lectionner automatiquement l'une ou l'autre source d'alimentation). Tous les trois LED de la carte du convertisseur d'interface doivent \u00eatre d\u00e9soud\u00e9s, sinon elles vont surcharger la batterie lorsqu'elles y sont aliment\u00e9es, et nuire au sondage du clavier et \u00e0 l'utilisation de la m\u00e9moire flash avec l'interface SPI.<\/p>\n<p>Poursuivre l'objectif s'est r\u00e9v\u00e9l\u00e9 encore plus int\u00e9ressant que de l'atteindre (et pas besoin de cette blague sur le bus). L'auteur a appris beaucoup de choses sur les chargeurs pour AVR, la m\u00e9moire flash avec l'interface SPI, le protocole STK500 et la norme 802.15.4.<\/p>\n<p>Tout le reste du code en plus de la biblioth\u00e8que d\u00e9crite ci-dessus \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitbank2\/SMART_bootloader\">ici<\/a><\/noindex>, et il est aussi sous GPL v3. Twitter de l'auteur \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/fast_code_r_us\">ici<\/a><\/noindex>.<br \/>\n<br \/>Source : <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 - 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\/fr\/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\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\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\/fr\/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\udd47R\u00e9daction d'un bootloader OTA pour l'ATmega128RFA1 (dans l'appareil Smart Response XE) | ProHoster","description":"Tout a commenc\u00e9.","canonical_url":"https:\/\/prohoster.info\/fr\/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":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/31101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=31101"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/31101\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/23069"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=31101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=31101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=31101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}