{"id":311,"date":"2024-02-16T11:34:22","date_gmt":"2024-02-16T10:34:22","guid":{"rendered":"http:\/\/bennie.hu\/?p=311"},"modified":"2024-06-13T11:58:38","modified_gmt":"2024-06-13T10:58:38","slug":"ota-bootloader-esp32-re","status":"publish","type":"post","link":"https:\/\/bennie.hu\/?p=311","title":{"rendered":"OTA bootloader ESP32-re"},"content":{"rendered":"\n<p> Mik\u00f6zben dolgoztam egy ESP32-re \u00e9p\u00fcl\u0151 projektemen (l\u00e1sd <a href=\"http:\/\/sem.sch.bme.hu\/switch1_resz1\/\">el\u0151z\u0151 cikk<\/a>), pontosabban a firmware-en, t\u00f6rt\u00e9nt egyszer, hogy meghalt a <a href=\"https:\/\/www.ebay.com\/itm\/CP2102-MICRO-USB-to-UART-TTL-Module-6Pin-Serial-Converter-STC-Replace-FT232-NEW\/401088539687\">programoz\u00f3m<\/a>. Ami az\u00e9rt fordulhatott el\u0151, mert valahogy kimaradt bel\u0151le a gy\u00e1rt\u00f3 \u00e1ltal (valamilyen okb\u00f3l) aj\u00e1nlott ESD v\u00e9d\u0151di\u00f3da. Ez m\u00e1r a m\u00e1sodik, ami \u00edgy halt meg \u00e9s egyben az utols\u00f3 is. J\u00f6tt az \u00f6tlet, hogy ha m\u00e1r \u00fagyis akarok bele saj\u00e1t bootloader-t, meg WiFi-n (vagyis vezet\u00e9k n\u00e9lk\u00fcl) firmware-t friss\u00edteni, akkor annak most lenne itt az ideje. Neki\u00fcltem reggel \u00e9s hajnali h\u00e1romig megvolt a dolog.<\/p>\n\n\n\n<p>Kezdj\u00fck ott, hogy milyen <a href=\"https:\/\/github.com\/espressif\/arduino-esp32\">framework<\/a> van az ESP-hez \u00e9s hogy lehet fejleszteni r\u00e1. Kis keres\u00e9s ut\u00e1n r\u00e1akadtam (seg\u00edts\u00e9ggel, k\u00f6szi Simon!!) a <a href=\"https:\/\/code.visualstudio.com\/\">VS Code<\/a> nev\u0171 Visual Studio kl\u00f3nra (szint\u00e9n Microsoft), ami sokkal kisebb (kb 40MB) \u00e9s rengeteg kieg\u00e9sz\u00edt\u0151 plugin van hozz\u00e1, mint a <a href=\"https:\/\/platformio.org\/platformio-ide\">PlatformIO<\/a> is, amit kifejezetten IoT fejleszt\u00e9sre tal\u00e1ltak ki. A telep\u00edt\u00e9s nagyon egyszer\u0171, kis keres\u00e9ssel biztos lesz valahol <a href=\"http:\/\/docs.platformio.org\/en\/latest\/ide\/vscode.html\">tutorial<\/a>.<br>Ezek ut\u00e1n, hogy minden megvan, a PlatformIO-ban kikeresek egy ESP32 alap\u00fa feljleszt\u0151k\u00e1rty\u00e1t (nekem ESP32-Dev board vagy hasonl\u00f3), \u00e9s let\u00f6lti mell\u00e9 az ESP-IDF-et. Aki fejlesztett m\u00e1r STM32-re, annak ismer\u0151s lesz. Itt magas szinten lehet fejleszteni, ugyanakkor nem veszik el a r\u00e9szletes konfigur\u00e1lhat\u00f3s\u00e1g. Nem utols\u00f3 sorban eg\u00e9sz j\u00f3l van <a href=\"https:\/\/esp-idf.readthedocs.io\/en\/latest\/\">dokument\u00e1lva<\/a>. Itt van a forr\u00e1sf\u00e1jlok k\u00f6z\u00f6tt a bootloader is, \u00e9s minden ami csak \u00e9rdekelhet, \u00e9s ha nem is nagyon alaposan de \u00e9rthet\u0151en \u00e9s sz\u00e9pen meg van csin\u00e1lva a k\u00f3d. Igaz \u00edgy is \u00f3r\u00e1kat vett el hogy kiigazodjak rajtuk.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Mi is a c\u00e9l? Hal\u00e1l a k\u00e1belekre!<\/strong><\/h2>\n\n\n\n<p>A feladat az, hogy el\u00e9g legyen t\u00e1pfesz\u00fclts\u00e9get adni az eszk\u00f6zre, \u00e9s minden egy\u00e9b dolgot vezet\u00e9kek n\u00e9lk\u00fcl int\u00e9zni. Ahogy \u00f6regszek, egyre jobban megut\u00e1lom a k\u00e1beleket, a sok kontakthib\u00e1t, a csom\u00f3kat, amiket lehetetlen kibogozni \u00e9s hogy nincs m\u00e1r USB-port csak m\u00e9g egy eszk\u00f6znek. B\u0151vebben a feladat, hogy WiFi-n, mint csatorn\u00e1n \u00e1tvigyek p\u00e1r vez\u00e9rl\u00e9si adatot, \u00e9s f\u0151leg hogy a firmware bin\u00e1rist, hiba n\u00e9lk\u00fcl (b\u00edzzunk meg a TCP-ben).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>ESP32 boot folyamat<\/strong><\/h2>\n\n\n\n<p>Az ESP boot-ol\u00e1sa \u00edgy n\u00e9z ki, ezt persze nem dokument\u00e1lt\u00e1k, hanem a k\u00f3db\u00f3l \u00e9s egy\u00e9b helyekr\u0151l kellett r\u00e1j\u00f6nni, hogy mit hoz m\u0171k\u00f6d\u00e9sbe a v\u00e1r\u00e1zsf\u00fcst a lelk\u00e9ben:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>A 0x8000-es c\u00edmr\u0151l elindul a chip-be \u00edrt&nbsp;(2.szint\u0171) bootloader k\u00f3d.<\/li><li>UART0 inicializ\u00e1l\u00e1s, hardveres l\u00e1bak, 8bit, 0parit\u00e1s, 1stop, 115200 baud.<\/li><li>Flash inicializ\u00e1l\u00e1s az SPI0-n, ezt a c\u00edmteret hardveresen be-map-peli, \u00e9s gyors\u00edt\u00f3t\u00e1rb\u00f3l \u00e9ri el.<\/li><li>A 0x1000-es c\u00edmr\u0151l a bootloader program beolvassa a part\u00edci\u00f3s t\u00e1bl\u00e1t.<\/li><li>Ha van \u00e9rv\u00e9nyes OTA part\u00edci\u00f3 (2 van \/ 1 \u00e9rv\u00e9nyes) akkor ezt &#8222;t\u00f6lti be&#8221;.<\/li><li>Ha nincs \u00e9rv\u00e9nyes OTA part\u00edci\u00f3, akkor megn\u00e9zi, hogy van-e FACTORY part\u00edci\u00f3.<\/li><li>Ha semmit sem tal\u00e1l, akkor ezt kik\u00fcldi UART-on (nothing to load).<\/li><li>A kiv\u00e1lasztott part\u00edci\u00f3t (egy pointer) bet\u00f6lti, \u00e1tadja a vez\u00e9rl\u00e9st a programunknak.<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Kicsit b\u0151vebben<\/strong><\/h2>\n\n\n\n<p>Az IC-n bele\u00fcl elindul a bele\u00edrt bootloader k\u00f3d.\u00a0 Ide a megfelel\u0151 l\u00e1ba le-felh\u00faz\u00e1s\u00e1val lehet eljutni. Ebben a m\u00f3dban indulva tudunk felt\u00f6lteni k\u00f3dot, de ezt b\u00e1rmelyik oldalon elmagyar\u00e1zz\u00e1k. Ebben a m\u00f3dban kell felt\u00f6lteni 3 fontos bin\u00e1rist: a bootloadert, a futtatand\u00f3 k\u00f3dot \u00e9s opcion\u00e1lisan (de nagyon aj\u00e1nlottan egy part\u00edci\u00f3s t\u00e1bl\u00e1t (max 95 part\u00edci\u00f3val). Itt persze rengeteg feature van, mint cimk\u00e9k, part\u00edci\u00f3 t\u00edpusok, kulcsok, part\u00edci\u00f3 titkos\u00edt\u00e1s, <a href=\"https:\/\/esp-idf.readthedocs.io\/en\/latest\/api-guides\/partition-tables.html\">egyebek<\/a>. De persze en\u00e9lk\u00fcl is m\u0171k\u00f6dik a dolog, mint l\u00e1tjuk majd. Az egyetlen sz\u00e9ps\u00e9ghib\u00e1ja a dolognak, hogy pont az kell hozz\u00e1, aminek a hi\u00e1nya miatt elkezdt\u00fck a dolgot. Szerencs\u00e9re vak ty\u00fak is tal\u00e1l szemet, a SEM-es kuk\u00e1ban r\u00e1akadtam egy FTDI-os USB-UART \u00e1talak\u00edt\u00f3 m\u00e9g m\u0171k\u00f6d\u0151 p\u00e9ld\u00e1ny\u00e1ra, \u00e9s \u00edgy biztos\u00edtva volt a toj\u00e1s a ty\u00fakhoz.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Part\u00edci\u00f3k<\/strong><\/h2>\n\n\n\n<p>Mivel a specifik\u00e1ci\u00f3 megengedni a tetsz\u0151leges part\u00edci\u00f3 t\u00edpusokat (csak p\u00e1r foglalt van), \u00edgy l\u00e9trehoztam egy tetsz\u0151leges t\u00edpusk\u00f3dot. Ut\u00e1na ford\u00edtottam egy tetsz\u0151leges part\u00edci\u00f3s t\u00e1bl\u00e1t magamnak. Az alap part\u00edci\u00f3kon k\u00edv\u00fcl csak egy &#8222;firmware&#8221; t\u00edpus\u00fa \u00e9s egy &#8222;recovery&#8221; part\u00edci\u00f3 kapott helyet. Eldobtam az OTA elnevez\u00e9st, \u00e9s a factory-t megtartottam, mint recovery. A firmware \u00e9rtelem szer\u0171en az \u00fczemszer\u0171en haszn\u00e1lt program. A recovery (factory) pedig diagnosztik\u00e1hoz \u00e9s firmware felt\u00f6lt\u00e9shez haszn\u00e1lhat\u00f3 program. M\u00e9g egy sz\u00e9ps\u00e9ghib\u00e1ja a dolognak, hogy ehhez is vezet\u00e9k \u00e9s programoz\u00f3 kell. \u00cdgy egy fix bootlaoder \u00e9s part\u00edci\u00f3s t\u00e1bla ker\u00fcl bele, \u00e9s ha nagyobb flash &#8222;ker\u00fcl&#8221; a cuccba, akkor sem haszn\u00e1lhatunk t\u00e1gasabb part\u00edci\u00f3kat. B\u00e1r ha valaki ilyenekre vetemedik, tegy\u00fck fel, hogy nem okoz gondot neki \u00e1tprogramozni az ESP-t is.<br>Nincs kiz\u00e1rva, hogy felhaszn\u00e1l\u00f3i k\u00f3db\u00f3l is hozz\u00e1 lehetne f\u00e9rni a bels\u0151 c\u00edmtartom\u00e1nyhoz, vagyis a firmware k\u00f3db\u00f3l m\u00f3dos\u00edtani a 2. szint\u0171 bootloader-t (az els\u0151 szint\u0171 nem m\u00f3dos\u00edthat\u00f3\/hardveres) \u00e9s a part\u00edci\u00f3s t\u00e1bl\u00e1t is. Ez esetben ha m\u00e9gis megszakadna a kapcsolat friss\u00edt\u00e9s k\u00f6zben, akkor azt m\u00e1r csak vezet\u00e9kes m\u00f3dban lehetne kijav\u00edtani, az els\u0151 1. szint\u0171 bootloader-rel (ami pont az ilyenek miatt hardveres, hogy azt ne lehessen elrontani).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Boot-ol\u00e1s<\/strong><\/h2>\n\n\n\n<p>a a part\u00edci\u00f3k rendben, akkor m\u00e9g el kell d\u00f6nteni, hogy mi induljon el. A legegyszer\u0171bb megold\u00e1s egy kivezetett GPIO f\u00f6ldre h\u00faz\u00e1sa. Ha a f\u00f6ldre van h\u00fazva (vagyis a gomb benyomva), akkor induljon el a recovery ha pedig nincs, akkor pedig a firmware. Ez kell\u0151en egyszer\u0171. L\u00e1tsz\u00f3lag. Ez gyan\u00fas&#8230; Mindenki \u00e1ltal\u00e1nos b\u00e1nat\u00e1ra, hogy mivel a hardver inicializ\u00e1l\u00e1s\u00e1t pont a bootloader kezeli, \u00edgy itt nem \u00e9rhet\u0151k el a magas szint\u0171 f\u00fcggv\u00e9nyek. Csak nagyon alacsony szint\u0171 f\u00fcggv\u00e9nyeink vannak, amik gyakorlatilag k\u00f6zvetlen\u00fcl a megfelel\u0151 regiszterek bitjeit birizg\u00e1lj\u00e1k. Ami persze dokument\u00e1lva van a &#8216;<a href=\"https:\/\/www.espressif.com\/sites\/default\/files\/documentation\/esp32_technical_reference_manual_en.pdf\">technical reference manual<\/a>&#8216;-ban, ami \u00edgy is eszm\u00e9letlen t\u00f6m\u00f6ren fogalmaz. Most akkor hogy is van a direkt olvas\u00e1s? Akkor kell signal-t haszn\u00e1lni, kell-e GPIO matrix, vagy IOMUX-ot kell haszn\u00e1lni, de nem mert az a GPIO-t pont az anal\u00f3g r\u00e9sz kezeli, vagyis az az RTCMUX kell&#8230; Na akkor most mit kell \u00edrni? K\u00e9pzelj\u00fck el az el\u0151bbi opci\u00f3kat logikai oper\u00e1torok tetsz\u0151leges permut\u00e1ci\u00f3j\u00e1val \u00f6sszekapcsolva, \u00e9s keress\u00fck meg ezek alkotta line\u00e1ris f\u00fcggv\u00e9nyt\u00e9rb\u0151l a nek\u00fcnk megfelel\u0151t. \u00c9s akkor honnan, melyik bitet kell olvasni, melyiket \u00edrni, hogy\u00a0 bemenet legyen? Sok\u00e1ig tartott \u00e9s sok hajsz\u00e1l vett v\u00e9gs\u0151 b\u00facs\u00fat fejemt\u0151l, m\u00edg r\u00e1j\u00f6ttem, hogy melyik bitet kell egybe \u00edrni, \u00e9s melyiket kell olvasni. R\u00e1ad\u00e1sul a bels\u0151 felh\u00faz\u00f3 ellen\u00e1ll\u00e1s \u00edgy sem megy (m\u00e9g). Ez csak \u00edzel\u00edt\u0151, hogy milyen nem trivi\u00e1lis dolgok j\u00f6nnek el\u0151 hasonl\u00f3 esetekben.<\/p>\n\n\n\n<p>A part\u00edci\u00f3s t\u00e1bl\u00e1k \u00e9s a m\u00f3dos\u00edtott bootloader k\u00f3d a recovery forr\u00e1sk\u00f3dj\u00e1val egy\u00fctt van, mint az ESP oldali k\u00f3dok. A m\u00f3dos\u00edtott f\u00e1jlt ha ford\u00edtani szeretn\u00e9tek, akkor aj\u00e1nlom ments\u00e9tek le a r\u00e9git, \u00e9s \u00edrj\u00e1tok fel\u00fcl az \u00fajjal (vagyis a csatolttal). Nekem itt van a bootloader_start.c :<br>C:\\Users\\Bennie\\.platformio\\packages\\framework-espidf\\components\\bootloader\\src\\main<br>Innen m\u00e1r csak egy sima program ford\u00edt\u00e1sa (teh\u00e1t ak\u00e1rmelyik projekt) , \u00e9s vele egy\u00fctt lefordul bin\u00e1risra ez is.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Recovery<\/strong><\/h2>\n\n\n\n<p>Ez a program int\u00e9zi els\u0151sorban a program felt\u00f6lt\u00e9s\u00e9t, m\u00e1sodsorban a tesztfunkci\u00f3kat. Jelenleg csak GPIO-kat lehet konfigur\u00e1lni ki\/bemenetnek \u00e9s a szinteket \u00e1ll\u00edtani (HIGH\/LOW) mint kimenet. Ez l\u00e1ssuk be el\u00e9g hasznos, de most nem kellett, \u00edgy nagyon nem mentem bele a lehet\u0151s\u00e9gek kiakn\u00e1z\u00e1s\u00e1ba. A l\u00e9nyeg a bin\u00e1ris \u00e1tjuttat\u00e1sa a csatorn\u00e1n. Erre a legegyszer\u0171bb kitaposott \u00fat egy TCP kiszolg\u00e1l\u00f3 ind\u00edt\u00e1sa egy WiFi hozz\u00e1f\u00e9r\u00e9si ponton. Erre csatlakozva egy egyszer\u0171 alkalmaz\u00e1sr\u00e9tegbeli protokollon kereszt\u00fcl k\u00fcldhet\u00fcnk parancsokat \u00e9s adatcsomagokat.<\/p>\n\n\n\n<p>Az ESP oldali k\u00f3dok \u00e9s bin\u00e1risok, vagyis a bootloader, a part\u00edci\u00f3s t\u00e1bla \u00e9s a recovery: <a href=\"http:\/\/sem.sch.bme.hu\/wp-content\/uploads\/2018\/04\/hxsw_recovery.7z\">hxsw_recovery<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>PC oldal<\/strong><\/h2>\n\n\n\n<p>Mivel sokat haszn\u00e1lok fejleszt\u0151k\u00f6rnyezeteket, szempont volt, hogy integr\u00e1lni lehessen. Ez majdnem \u00f6sszej\u00f6tt. Annyi a b\u00f6kken\u0151, hogy csak &#8216;firmware.bin&#8217; nev\u0171 f\u00e1jlokat t\u00f6lt fel. Ami persze kap\u00f3ra j\u00f6n; dupla kattint\u00e1s \u00e9s felt\u00f6lt\u00f6tte a f\u00e1jlt, nem kell param\u00e9tereket adni \u00e1t. M\u00e1sik h\u00e1tr\u00e1ny, hogy ezzel nem igaz\u00e1n lehet kihaszn\u00e1lni a tesztel\u00e9si funkci\u00f3kat. Egy\u00e9bk\u00e9nt az eg\u00e9szet egy PacketSender programmal teszteltem, ami tetsz\u0151leges IP csomagokat tud k\u00fcldeni a h\u00e1l\u00f3ra. Az eg\u00e9sz winsock2 k\u00f6nyvt\u00e1rra \u00e9p\u00fcl.\u00a0 R\u00f6viden: csatlakozik a 192.168.4.1:271828 TCP szerverre (a DHCP ezt a c\u00edmet adja mindig) -> elk\u00fcldi az update parancsot -> elk\u00fcldi a csomagokat -> kil\u00e9p. Ezt term\u00e9szetesen hibakezel\u00e9ssel. Fogjuk r\u00e1, hogy hiba &#8222;kezel\u00e9ssel&#8221;. Olyan hit&amp;run-f\u00e9le hibakezel\u00e9s, ha hiba van, akkor sz\u00e9ttessz\u00fck\/mossuk kis kezeinket \u00e9s feladjuk. Azonban a gyakorlatban \u00e1ltal\u00e1ban nincs hiba, csak olyan \u00f6sszeh\u00e1nyt, de m\u00e1r m\u0171k\u00f6d\u0151 dolog, a sz\u00fcks\u00e9g sz\u00f6rnysz\u00fcl\u00f6tte.<br>A forr\u00e1sk\u00f3d \u00e9s egy\u00e9b sz\u00fcks\u00e9ges f\u00e1jlok: <a href=\"http:\/\/sem.sch.bme.hu\/wp-content\/uploads\/2018\/04\/hxsw_pc_side.7z\">hxsw_pc_side<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u00c9s mindezek megval\u00f3s\u00edt\u00e1sa, avagy ahol az elm\u00e9let elv\u00e1lik a gyakorlatt\u00f3l<\/strong><\/h2>\n\n\n\n<p>A part\u00edci\u00f3s t\u00e1bl\u00e1val semmi gond nem akadt, \u00edgy nem \u00e9rdemel k\u00fcl\u00f6n\u00f6sebb \u00e9rdekl\u0151d\u00e9st. A k\u00f3dol\u00e1st kezdtem a v\u00e9g\u00e9n, teh\u00e1t el\u0151sz\u00f6r a recovery k\u00f3dot \u00edrtam meg, amit m\u00e9g hagyom\u00e1nyos factory part\u00edci\u00f3k\u00e9nt t\u00f6lt\u00f6ttem fel \u00e9s foltozgattam. Els\u0151 probl\u00e9ma ott akadt, hogy mikor m\u00e9g a hardvert terveztem, nem igaz\u00e1n hallottam m\u00e9g olyat, hogy antenna m\u00e9retez\u00e9s, sem olyat, hogy hull\u00e1mimpedancia, \u00e9s piros szivecsk\u00e9kbe sem karcoltam m\u00e9g labmdanegyedet (nem mintha az\u00f3ta igen). Sz\u00f3val csod\u00e1val hat\u00e1ros m\u00f3don \u00fagy ad\u00f3dott, hogy \u00edgy is &#8222;t\u00f6k j\u00f3l&#8221; m\u0171k\u00f6dik valahogy ez a (mellesleg rosszul) m\u00e1solt antenna . Ut\u00e1na p\u00e1r sor k\u00f3d volt csak az AP l\u00e9trehoz\u00e1sa. A TCP szerver m\u00e1r kicsit bonyolultabb volt, mivel ez nem r\u00e9sze az ESP-IDF-nek, de r\u00e1akadtam egy oldalra, \u00e9s hivat\u00e1sos programoz\u00f3k\u00e9nt \u00f6sszeoll\u00f3ztam ezt is. Vannak ugyan sz\u00e9ps\u00e9ghib\u00e1i, mint hogy egy kapcsol\u00f3d\u00e1s ut\u00e1n m\u00e1sodik kapcsolatot nem tud kezelni, \u00fajra kell ind\u00edtani. Ut\u00e1na csak p\u00e1r sor, hogy \u00e9rtelmezze a parancsokat, \u00e9s visszajelezzen (OK\/ERROR). Megint kap\u00f3ra j\u00f6tt az ESP-IDF k\u00f6nyvt\u00e1r, ami teljes t\u00e1mogat\u00e1st ad a part\u00edci\u00f3k kezel\u00e9s\u00e9hez. Egy f\u00fcggv\u00e9nyh\u00edv\u00e1s, \u00e9s form\u00e1zza a part\u00edci\u00f3t (amire az\u00e9rt van sz\u00fcks\u00e9g mert a flash mem\u00f3ria \u00fcres \u00e1llapotban csupa 1-est (255) tartalmaz, \u00e9s ezt k\u00e9s\u0151bb k\u00f6nnyebb kinull\u00e1zni). M\u00e9g egy f\u00fcggv\u00e9nyh\u00edv\u00e1s, \u00e9s a be\u00e9rkezett csomagot a megfelel\u0151 offset-re m\u00e1solja majd visszajelez. Ha k\u00e9sz, akkor megszak\u00edtja a kapcsolatot. T\u00f6k egyszer\u0171 \u00e9s meglep\u0151 m\u00f3don els\u0151re m\u0171k\u00f6d\u00f6tt. Az\u00f3ta csak egyszer fordult el\u0151, hogy meg\u00e1llt felt\u00f6lt\u00e9s k\u00f6zben. Gondolom k\u00f6ze lehet hozz\u00e1, hogy a koli el\u00e9gg\u00e9 szennyezett a 2.4GHz-es s\u00e1vban \u00e9s az antenna is majd\/nem alkalmas h\u00edrk\u00f6zl\u00e9si alkalmaz\u00e1sokra.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"369\" height=\"593\" src=\"https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_connected.jpg\" alt=\"\" class=\"wp-image-312\" srcset=\"https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_connected.jpg 369w, https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_connected-187x300.jpg 187w, https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_connected-300x482.jpg 300w\" sizes=\"(max-width: 369px) 100vw, 369px\" \/><figcaption> Ezt l\u00e1tni az AP-hoz csatlakoz\u00e1skor, illetve felt\u00f6lt\u00e9s el\u0151tt <\/figcaption><\/figure><\/div>\n\n\n\n<figure class=\"wp-block-gallery columns-3 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_firmware-1024x576.jpg\" alt=\"\" data-id=\"314\" data-full-url=\"https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_firmware.jpg\" data-link=\"https:\/\/bennie.hu\/?attachment_id=314\" class=\"wp-image-314\" srcset=\"https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_firmware-1024x576.jpg 1024w, https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_firmware-300x169.jpg 300w, https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_firmware-768x432.jpg 768w, https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_firmware-1536x864.jpg 1536w, https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_firmware-850x478.jpg 850w, https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_firmware.jpg 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" width=\"989\" height=\"524\" src=\"https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_in_progress.jpg\" alt=\"\" data-id=\"315\" data-full-url=\"https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_in_progress.jpg\" data-link=\"https:\/\/bennie.hu\/?attachment_id=315\" class=\"wp-image-315\" srcset=\"https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_in_progress.jpg 989w, https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_in_progress-300x159.jpg 300w, https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_in_progress-768x407.jpg 768w, https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_in_progress-850x450.jpg 850w\" sizes=\"(max-width: 989px) 100vw, 989px\" \/><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" decoding=\"async\" width=\"994\" height=\"527\" src=\"https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_done.jpg\" alt=\"\" data-id=\"313\" data-full-url=\"https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_done.jpg\" data-link=\"https:\/\/bennie.hu\/?attachment_id=313\" class=\"wp-image-313\" srcset=\"https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_done.jpg 994w, https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_done-300x159.jpg 300w, https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_done-768x407.jpg 768w, https:\/\/bennie.hu\/wp-content\/uploads\/2024\/02\/hxsw_done-850x451.jpg 850w\" sizes=\"(max-width: 994px) 100vw, 994px\" \/><\/figure><\/li><\/ul><figcaption class=\"blocks-gallery-caption\"> \u00c9s egy (sikeres) firmware felt\u00f6lt\u00e9s <\/figcaption><\/figure>\n\n\n\n<p>Term\u00e9szetesen amit lesz id\u0151m, ig\u00e9nyesebb k\u00f3d is kiker\u00fcl majd ide. \u00cdgy is le kellett adnom az eszt\u00e9tikai \u00e9s egy\u00e9b ig\u00e9nyeimb\u0151l, hogy egy\u00e1ltal\u00e1n megsz\u00fclethessen a m\u0171k\u00f6d\u0151 szoftver r\u00e9sz.<\/p>\n\n\n\n<p>Mivel a CNC \u00fajra m\u0171k\u00f6dik, hamarosan k\u00f6vetkezik a folytat\u00e1s is, ahol a kapcsol\u00f3nak elk\u00e9sz\u00fcl a doboza. Ezzel p\u00e1rhuzamosan elk\u00e9sz\u00fclt a ny\u00e1k jav\u00edtott \u00e9s fejlettebb verzi\u00f3ja, t\u00f6bbek k\u00f6z\u00f6tt NFC-vel \u00e9s kompaktabb szenzorokkal. Rem\u00e9lem addigra \u00e9p hardware-ben \u00e9s software-lesz!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mik\u00f6zben dolgoztam egy ESP32-re \u00e9p\u00fcl\u0151 projektemen (l\u00e1sd el\u0151z\u0151 cikk), pontosabban a firmware-en, t\u00f6rt\u00e9nt egyszer, hogy meghalt a programoz\u00f3m. Ami az\u00e9rt fordulhatott el\u0151, mert valahogy kimaradt bel\u0151le a gy\u00e1rt\u00f3 \u00e1ltal (valamilyen okb\u00f3l) aj\u00e1nlott ESD v\u00e9d\u0151di\u00f3da. Ez m\u00e1r a m\u00e1sodik, ami \u00edgy halt meg \u00e9s egyben az utols\u00f3 is. J\u00f6tt az \u00f6tlet,&#8230;<\/p>\n","protected":false},"author":1,"featured_media":316,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,8],"tags":[],"class_list":["post-311","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-electronics","category-smarthome"],"_links":{"self":[{"href":"https:\/\/bennie.hu\/index.php?rest_route=\/wp\/v2\/posts\/311","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bennie.hu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bennie.hu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bennie.hu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bennie.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=311"}],"version-history":[{"count":1,"href":"https:\/\/bennie.hu\/index.php?rest_route=\/wp\/v2\/posts\/311\/revisions"}],"predecessor-version":[{"id":317,"href":"https:\/\/bennie.hu\/index.php?rest_route=\/wp\/v2\/posts\/311\/revisions\/317"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bennie.hu\/index.php?rest_route=\/wp\/v2\/media\/316"}],"wp:attachment":[{"href":"https:\/\/bennie.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=311"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bennie.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=311"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bennie.hu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=311"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}