abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 17:55 | Komunita

    Na čem aktuálně pracují vývojáři GNOME a KDE? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE.

    Ladislav Hagara | Komentářů: 0
    7.6. 14:55 | IT novinky

    Před 70 lety, 7. června 1954, ve věku 41 let, zemřel Alan Turing, britský matematik, logik, kryptoanalytik a zakladatel moderní informatiky.

    Ladislav Hagara | Komentářů: 8
    7.6. 11:44 | Zajímavý software

    NiceGUI umožňuje používat webový prohlížeč jako frontend pro kód v Pythonu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

    Ladislav Hagara | Komentářů: 1
    7.6. 10:55 | Nová verze

    Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána ve verzi 2024.6. Z novinek lze vypíchnout lepší integraci LLM (OpenAI, Google AI, Ollama) nebo podporu Matter 1.3.

    Ladislav Hagara | Komentářů: 0
    6.6. 20:55 | IT novinky

    IKEA ve Spojeném království hledá zaměstnance do své nové pobočky. Do pobočky v počítačové hře Roblox. Nástupní mzda je 13,15 liber na hodinu.

    Ladislav Hagara | Komentářů: 0
    6.6. 10:44 | Zajímavý článek

    Alyssa Rosenzweig se v příspěvku na svém blogu Vulkan 1.3 na M1 za 1 měsíc rozepsala o novém Vulkan 1.3 ovladači Honeykrisp pro Apple M1 splňujícím specifikaci Khronosu. Vychází z ovladače NVK pro GPU od Nvidie. V plánu je dále rozchodit DXVK a vkd3d-proton a tím pádem Direct3D, aby na Apple M1 s Asahi Linuxem běžely hry pro Microsoft Windows.

    Ladislav Hagara | Komentářů: 41
    6.6. 01:00 | Nová verze

    Byla vydána (𝕏) květnová aktualizace aneb nová verze 1.90 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Ve verzi 1.90 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    6.6. 00:44 | Nová verze

    Byla vydána (Mastodon, 𝕏) nová verze 2024.2 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem nových nástrojů v oficiálním oznámení.

    Ladislav Hagara | Komentářů: 0
    5.6. 16:44 | IT novinky

    Počítačová hra Tetris slaví 40 let. Alexej Pažitnov dokončil první hratelnou verzi 6. června 1984. Mezitím vznikla celá řada variant. Například Peklo nebo Nebe. Loni měl premiéru film Tetris.

    Ladislav Hagara | Komentářů: 10
    5.6. 10:44 | Nová verze

    MicroPython (Wikipedie), tj. implementace Pythonu 3 optimalizovaná pro jednočipové počítače, byl vydán ve verzi 1.23.0. V přehledu novinek je vypíchnuta podpora dynamických USB zařízení nebo nové moduly openamp, tls a vfs.

    Ladislav Hagara | Komentářů: 0
    Rozcestník

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

    22.12.2015 00:59 | Přečteno: 2786× | 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.