abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 15:22 | Komunita

    V Bostonu probíhá konference Red Hat Summit 2025. Vybrané přednášky lze sledovat na YouTube. Dění lze sledovat na síti 𝕏 (#RHSummit).

    Ladislav Hagara | Komentářů: 0
    dnes 15:00 | Nová verze

    Společnost Red Hat oficiálně oznámila vydání Red Hat Enterprise Linuxu 10. Vedle nových vlastností přináší také aktualizaci ovladačů a předběžné ukázky budoucích technologií. Podrobnosti v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    dnes 12:22 | Pozvánky

    Tuto sobotu 24. května se koná historicky první komunitní den projektu Home Assistant. Zváni jsou všichni příznivci, nadšenci a uživatelé tohoto projektu. Pro účast je potřebná registrace. Odkazy na akce v Praze a v Bratislavě.

    jose17 | Komentářů: 0
    dnes 04:44 | IT novinky

    Troy Hunt představil Have I Been Pwned 2.0, tj. nový vylepšený web služby, kde si uživatelé mohou zkontrolovat, zda se jejich hesla a osobní údaje neobjevili v únicích dat a případně se nechat na další úniky upozorňovat.

    Ladislav Hagara | Komentářů: 12
    včera 23:22 | Zajímavý software

    Microsoft představil open source textový editor Edit bežící v terminálu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

    Ladislav Hagara | Komentářů: 7
    včera 22:22 | Zajímavý software

    V Seattlu a také online probíhá konference Microsoft Build 2025. Microsoft představuje své novinky. Windows Subsystem for Linux je nově open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

    Ladislav Hagara | Komentářů: 0
    včera 13:11 | Zajímavý článek

    Z příspěvku Turris Sentinel – co přinesl rok 2024 na blogu CZ.NIC: "Za poslední rok (únor 2024 – únor 2025) jsme zachytili 8,3 miliardy incidentů a to z 232 zemí a z jejich závislých území. Tyto útoky přišly od 6,2 milionu útočníků (respektive unikátních adres). SMTP minipot je stále nejlákavější pastí, zhruba 79 % útoků bylo směřováno na tento minipot, 16 % útoků směřovalo na minipot Telnet, 3 % útoků směřovaly na minipot HTTP a 2 % na minipot FTP. Dále jsme zaznamenali 3,2 milionu unikátních hesel a 318 tisíc unikátních loginů, které útočníci zkoušeli."

    Ladislav Hagara | Komentářů: 1
    včera 12:44 | Nová verze

    Byla vydána (Mastodon, 𝕏) nová verze 3.0.4 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání a v souboru NEWS na GitLabu. Nový GIMP je již k dispozici také na Flathubu.

    Ladislav Hagara | Komentářů: 0
    včera 12:33 | Nová verze

    Byla vydána nová stabilní verze 7.4 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 136. Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    včera 12:22 | Nasazení Linuxu

    Spolek vpsFree.cz vydal statistiky týkající se distribucí nasazených na serverech členů. V dlouhodobém pohledu je zřejmé, že většina uživatelů z původního CentOS přechází na Rocky Linux. Pozoruhodný je také nárůst obliby distribuce NixOS, která dnes zaujímá třetí místo po Debianu a Ubuntu.

    Petr Krčmář | Komentářů: 0
    Jaký je váš oblíbený skriptovací jazyk?
     (59%)
     (23%)
     (10%)
     (0%)
     (0%)
     (0%)
     (8%)
    Celkem 39 hlasů
     Komentářů: 4, poslední včera 22:41
    Rozcestník

    Programování hardware přes JTAG opensource nástroji

    22.12.2015 00:59 | Přečteno: 2859× | programování | Výběrový blog | poslední úprava: 24.12.2015 00:11

    Když se člověk trochu věnuje hardware a embedded systémům, pod rukama mu projdou různé desky. Nástroje od výrobců nebývají vždy ideální a často nebývá verze pro Linux nebo programování desky nelze naskriptovat. Malý přehled debugování, flashování a "unbrickování" přes JTAG adaptéry v Linuxu.

    O JTAG adaptérech

    Když jsem flashoval poprvé ddwrt před roky do Asus wl500g, byla tam pro mě mysteriózní poznámka "pokud to bricknete, unbrickněte to JTAG adapterem", která mě dost znervózňovala než router nenabootoval s novým firmware. Tehdy mi nic neříkala. Ale postupně jsem zjistil, jak se s JTAG adaptery zachází.

    Jak takový JTAG adapter vypadá - zde jsou moje dva nejoblíbenější z důvodu jejich univerzality (jinak jich mám tak minimálně 5): Pozor na používání software původních výrobců s čínskými klony, tento software vám velmi rád klon brickne. Už jsem jednou unbrickoval samotný JTAG adaptér, protože jinak by to nebylo dost meta :-) Vevnitř byl opět ARM procesor implementující JTAG adaptér.

    Jako JTAG může posloužit i třeba Raspberry Pi, ale osobně jsem z té bitbang implementace přes GPIO moc dobrý pocit neměl. Někdy to fungovalo, někdy tak úplně ne.

    JTAG ve skutečnosti definuje jenom "transportní vrstvu", po které se posílají různé instrukce. Jenom mít JTAG adaptér nestačí, člověk k tomu musí mít konfigurák pro daný hardware, nebo ten konfigurák napsat podle datasheetu. Pokud máte konfigurák, máte téměř vyhráno. Pokud ne, lze to podle definice podobného hardware a datasheetu nějak ohackovat a napsat, ale může to být dost náročné.

    Softwarové nástroje

    Tyto tři nástroje jsou nejužitečnější pro flashování/unbrickování a hardwarové debugování: OpenOCD funguje v zásadě na všechny běžné singlecore ARMy. Multicore podporováno oficiálně není, ale povedlo se mi rozchodit OpenOCD+GDB na Armada 385, což je dual-core ARM. Funguje debugování jen jednoho jádra, ale na kernelové a bootovací záseky to stačí. ARMy na mobilech jsou multicore, ale hlavně musíte z datasheetu napsat ten konfigurák (nevím, zda jsou vůbec jednoduše získatelné).

    Rozchodit to na různých ARM procesorech je s návodem relativně jednoduché. K GDB můžete použít na debugování IDE jako Qt Creator, cokoliv co podporuje remote GDB.

    Flashování je vyzkoušeno i pro Lattice CPLD. Mělo by to jít i pro Xilinx FPGA, ale vyzkoušení jsem se ještě nedostal.

    Programování MIPS by mělo fungovat taky, ale výrobci routrů mají jeden nehezký zvyk: často fyzicky přerušují spojení na desce k JTAG konektoru ve výrobních sériích a dělají další psí kusy.

    UrJTAG

    Z příkladu Lattice CPLD výše je vidět dvě komponenty, které potřebujete k flashnutí zařízení: BSDL soubor popisující hardware a SVF program bitbangující jednotlivé piny. Bez BSDL se obejdete, pokud UrJTAG zná zařízení nativně - nese si jistou malou databázi zařízení sebou. Jinak se musí z webu výrobce stáhnout BSDL. SVF soubor vám musí vygenerovat nějaký nástroj a tady se často bez programu od výrobce neobejdete. Navíc UrJTAG rozparsuje jenom SVF revizi D a současná je myslím revize E. Když exportujete, hledejte magický checkbox, kterým řeknete, že chcete revizi D.

    Příklad flashnutí přes Jlink:

    jtag> cable jlink
    J-Link initial read failed, don't worry (result=0)
    Vref = 3.352 TCK=1 TDI=0 TDO=1 TMS=0 TRES=1 TRST=1
    J-Link JTAG Interface ready
    jtag> bsdl path /path/to/bsdl/
    jtag> detect
    IR length: 4
    Chain length: 1
    Device Id: 01001001011101000100000000111111 (0x4974403F)
      Filename:     /path/to/bsdl/ATxmega192A3_v3.bsd
    jtag> svf data_compiled.svf progress stop
    

    Osobně doporučuji použít UrJTAG jenom když OpenOCD nestačí. UrJTAG je mnohem víc nízkoúrovňový.

    ATxmega přes Jlink adaptér

    Tohle jde mnohem snáze vyřešit, pokud máte AVR Dragon adaptér. Jenže já ho nemám zrovna po ruce a dostal jsem Chameleon 14443 na debugování. Chameleon je přístroj simulující bezkontaktní karty založené na standardu ISO 14443, např. Mifare Classic, Desfire. Je řízen procesorem ATxmega192a3.

    Debugování přes OpenOCD házelo segfaulty, až jsem zjistil, že některé funkce nejsou implementovány v OpenOCD pro tuto architekturu a hází NULL, jehož dereference způsobí segfault. Debugování debuggeru je taky sranda.

    Pro tento procesor nešlo z webu Atmelu stáhnout fungující BSDL, tak jsem musel trocha "čarovat" s magickými konstantami. Musí se v BSDL upravit pro ATxmega konstanta IDCODE odpovídající procesoru:
    attribute IDCODE_REGISTER of ATxmega192A3 : entity is
      "0100" &
      "1001011101000100" &
      "00000011111" &
      "1";
    

    Bohužel co se týče SVF Atmelí vlastní nástroje (avrsvf) segfaultí a jsou navíc jen pro Windows. Vygenerované SVF není kompletní. Nicméně někdo napsal nástroj, co z hex obrazu generuje SVF pro ATxmega. A generuje SVF novější revize, bez zdrojáků.

    Zde jsem chtěl mít rozluštění, ale zatím není (kromě toho počkat si na AVR Dragon). UrJTAG ještě podporuje různé jiné typy programování flash na procesoru, ale to se mu nejdříve musí vysvětlit mapování paměti atd. Ale mít univerzální JTAG zařízení místo speficických programátorů je prostě lepší :-)

    Závěr

    Pokud vás zajímá hardware, budete na tom mnohem lépe, pokud použijete lépe standardizované architektury jako ARM. S ním to fakt funguje jako po másle a nebudete závislý na nástrojech výrobce. Ostatní architektury lze rozchodit, ale může to být dost práce.        

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    22.12.2015 05:12 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji
    Jo já si udělal vlastní protokol pro programování FPGA. Funguje jako TCP server/klient, takže funguje na libovolném stroji s ethernetem. FPGA s ním naprogramuju skoro dvakrát rychleji než jejich XVCD protokol (ten házel segfaulty v xilinx debuggeru). Samozřejmě je na GPIO :-D.
    22.12.2015 08:40 Analphabet
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji
    Kde najdem zdrojaky ?
    22.12.2015 15:47 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji
    Chystal jsem se napsat blog :-/. Ale já jsem hodně pomalej na psaní. Klidně ho můžu někam nahrát, ale není to finální verze protokolu (je to napevno udělaný pro Xilinx parport emulaci) a ten zdroják něco jako formátování kódu neslyšel ani náhodou. Chystal jsem se udělat plugin do openocd, ale zatím to chcíplo na značné nekompatibilitě.
    22.12.2015 08:39 R
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji
    Najjednoduchsi JTAG adapter je unbuffered wiggler - 5 odporov na paralelnom porte. OpenOCD to podporuje.
    limit_false avatar 22.12.2015 13:58 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji
    A jak se to používá? Přes USB-parport redukci nebo normální parport na desktopu?

    Vím, že původní JTAG adaptery byly právě takhle jednoduché, ale dnes už paralelní port na počítačích defaultně není.

    BTW CodeWarrior TAP JTAG adaptér od Freescale má v sobě ARM na kterém běží embedded linux. Povedlo se mi to i dumpnout komplet, protože jsme zkoušeli nějak rozběhnout to jako remote GDB. Právě ten CodeWarrior měl dost podivné bugy, které ale zabraňovali použít to na seriózní debugování (například nešlo maskovat na mpc85xx idle interrupt, což byla výrobci známá chyba).
    When people want prime order group, give them prime order group.
    22.12.2015 14:52 R
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji
    Cez klasicky paralelny port. Mohlo by to fungovat aj cez nejaky USB prevodnik, ale musel by skutocne vytvarat paralelny port a nie USB tlaciaren.
    Josef Kufner avatar 22.12.2015 16:37 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji
    Takové paralelní porty do USB ale prakticky neexistují.

    V dnešní době je nejlepší pořídit USB programátor s malým AVR uvnitř, které z jedné strany řeší USB a z druhé SPI pro jednočip – např. toto. Má to dokonce propojku, která když se propojí, tak to jde připojit k druhému programátoru a přeprogramovat.
    Hello world ! Segmentation fault (core dumped)
    mirec avatar 22.12.2015 17:18 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji

    USB má priveľkú latenciu na to, aby dokázalo ovládať rozumnou rýchlosťou paralelný port. Raz som nemal poruke žiaden AVR programátor, chcel som si nahrať aspoň jednoduchý asp programátor do AVR ktorých mám v šuflíku hŕbu a bolo to cez USB hub utrpenie.

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    Josef Kufner avatar 22.12.2015 17:33 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji
    To je celkem šílené, ale svým způsobem krásné využití USB hubu :-D
    Hello world ! Segmentation fault (core dumped)
    23.12.2015 00:00 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji
    OMG a já si maximálně blikal myší :-D. Akorát FPGA (32Mbit) bych tímhle programovat půl roku :-D.
    mirec avatar 23.12.2015 08:29 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji

    Je to šialené, ale nie je to najpomalší programátor, ktorý som zostrojil. V ten istý deň som vyrobil programátor s RS232 prevodníku (z toho čo som našiel doma, nečakal som, že nájdem tú správnu zenerovú diódu ale nakoniec som všetko potrebné našiel doma). USB má hnusne vysokú latenciu, neznášam ich protokol a neznášam výrobcov, ktorí z notebookov odstránili express card rozhranie.

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    Dreit avatar 23.12.2015 13:14 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji

    Tak to jsem ještě nežral O_O  Ale vzpomněl jsem si na tohle - http://tuxgraphics.org/electronics/200705/article07052.shtml, kapitola "Solving the chicken and egg problem"

    Nope
    23.12.2015 18:37 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji
    Nejvtipnější je, když si člověk na PIC32MX nahraje firmware přes JTAG, kterej ten JTAG zakáže :-D.

    Jinak bootstrapping je dobrej taky pro flashování firmware čipu pro FPGA. Ten je napojenej na dedikované piny, co umí jenom načíst data při power on (pak jsou GPIO). Programování funguje tak, že tam ofiko programátor nahraje hardware, co implementuje SPI řadič a až pomocí něj přes ty GPIO piny tu flash naprogramuje :-D.
    Dreit avatar 23.12.2015 13:15 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji

    Skoro bych se vsadil, že uvnit bude USBasp

    Nope
    Josef Kufner avatar 23.12.2015 14:22 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji
    Ano, je. Více či méně zprasený, podle toho, jaký kousek chytneš a jaký firmware to zrovna má. Pořídil jsem si dva a oba jsem musel přeprogramovat aby to fungovalo s avrdude. Vzhledem k tomu, že jiný programátor jsem neměl, tak jsem měl o zábavu postaráno.
    Hello world ! Segmentation fault (core dumped)
    Josef Kufner avatar 23.12.2015 14:25 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji
    ... co je fajn, je to hliníkové pouzdro. Ten oficiální vypadá, že kryt nemá a asi bych se bál, že to přijde při přenášení k úhoně.
    Hello world ! Segmentation fault (core dumped)
    22.12.2015 15:40 tom
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji
    A jak se to používá? Přes USB-parport redukci nebo normální parport na desktopu?

    Vím, že původní JTAG adaptery byly právě takhle jednoduché, ale dnes už paralelní port na počítačích defaultně není.

    Muj laptop s i7 ho ma, staci na to myslet pri nakupu.
    22.12.2015 16:09 R
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji
    Viem, ze dock k Latitude E ma paralelny port (a tiez seriovy a dva PS/2). Existuje nieco dalsie?
    23.12.2015 09:57 tom
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji
    Jo, paralelni port pro ExpressCard.
    22.12.2015 15:44 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji
    openocd může použít /dev/ppdev XOR porty. A na USB by to jet mělo. V obou případech to bude super pomalý, protože parport dá tak 100kHz TCK. Hlavně když máš USB, tak už můžeš rovnou FTDI.
    22.12.2015 15:49 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji
    To může blbnout, na LPT jsem míval i 4V a navíc většina mých JTAG věcí je stejně na 3.3V.
    22.12.2015 16:04 R
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji
    Moze, ale mne sa to celkom osvedcilo - ozivil som tym par mrtvych tlaciarni Samsung. Maju vlastny ARM procesor Jupiter4E.
    22.12.2015 10:09 tom
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji
    Pouzivam v Linux komerecni Trace32 a jsem vcelku spokojen.
    22.12.2015 16:02 BFU
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji
    +1
    23.12.2015 22:47 Roman Došek | skóre: 17 | blog: flare
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji
    Kromě OpenOCD existuje také PyOCD, který funguje jako drop-in replacement za OpenOCD, nebo ho lze použít i přímo z Pythonu.

    Zmíněný QtCreator také v posledních verzích obsahuje BareMetal plugin, ve kterém je přímo podpora pro STLink a OpenOCD(PyOCD) a lze přes to velmi jednoduše ARMy programovat. Na buildování projektu je pak možné použít QMake(ale ten potřebuje fake Qt instalaci), CMake nebo QBS(který se mi zatím libí nejvíc). Zatím jsem s tím zkoušel vytvořit projekt pro STM32F4Discovery který používal CMSIS, STM32-HAL a µOS++. Jediné co mi zatím nefungovalo byl semihosting ale strávil jsem nad tím jen málo času... Kdyby byl zájem, tak o tom mohu něco sepsat. ;-)
    24.12.2015 16:51 Václav Vanc | skóre: 14
    Rozbalit Rozbalit vše Re: Programování hardware přes JTAG opensource nástroji
    Ahoj, u mne by zájem byl... :)

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.