Pred časom sme publikovali článok Stellaris LaunchPad a OpenOCD, v ktorom sme popísali aj postup kompilácie vlastnej verzie OpenOCD. Ako čas pokročil, mnohé veci sa zmenili. V tomto článku sa teda pozrieme na kompiláciu OpenOCD opäť.
Linux
Príprava
Pre úspešnú kompiláciu potrebujeme nainštalovať niekoľko balíkov. Vzhľadom k množstvu Linuxových distribúcií je ťažké poskytnúť univerzálny postup, resp. zoznam. Potrebujeme nasledujúce balíky (ich presné mená nebude problém zistiť):
- GCC toolchain
- GNU make
- autotools: libtool, autoconf, automake
- pomocné nástroje: texinfo, telnet, git
- knižnice a hlavičkové súbory (devel balíky): libusb-1.0, libusb-0.1, hidapi
Kompilácia a inštalácia
Najprv si naklonujeme vývojovú verziu OpenOCD z GIT repozitára:
git clone git://git.code.sf.net/p/openocd/code openocd-code
alebo – ak SourceForge nefunguje, ako to býva v poslednom čase zvykom:
git clone git://repo.or.cz/openocd.git
V prvom prípade sa zdrojový kód stiahne do adresára openocd-code, v druhom prípade do adresára openocd.
Ak stiahnutie zdrojových textov prebehlo bez chýb, môžeme sa pustiť do automatickej konfigurácie, kompilácie a inštalácie. Do výsledku sme zahrnuli ovládače pre Stellaris LaunchPad s TI ICDI (ti-icdi), pre Segger J-Link a STLink. Takže môžeme spustiť kompiláciu a inštaláciu:
./bootstrap ./configure --prefix=/usr/local --enable-maintainer-mode --enable-jlink --enable-stlink --enable-ti-icdi make sudo make install
Príkazom bootstrap sa vygenerujú súbory pre autokonfiguráciu. Parameter –enable-maintainer-mode je potrebný pre prípravu dokumentácie, bez neho kompilácia zlyhá.
Po úspešnej kompilácii a inštalácii sa samotná aplikácia bude nachádzať v adresári /usr/local/bin
(adresár by sa mal nachádzať v ceste – premenná PATH) a skripty v adresári /usr/local/share/openocd
.
Windows
Príprava
Windows po inštalácii neobsahuje nič užitočné, preto potrebujeme nainštalovať celú sadu vývojových nástrojov. V prvom rade potrebujeme nainštalovať GCC toolchain a POSIX prostredie, umožňujúce kompiláciu s pomocou autotools. Na výber je niekoľko možností, avšak najjednoduchší sa ukazuje projekt MSYS2, ktorý obsahuje aj POSIX prostredie a súčasne vytvára natívne Windows aplikácie (bez potrebyemulačných knižníc).
Čo je vlastne MSYS2? 64-bitová verzia MSYS2 obsahuje nasledovné komponenty:
- MSYS obsahuje takzvaný minimálny systém. Ide o implementáciu POSIX prostredia pod Windows – inými slovami, je to taký malý UNIX pod Windows. Ak vidíte istú podobnosť s projektom Cygwin, nie je to náhoda; MSYS plní rovnakú úlohu. MSYS potrebujeme, ak chceme napríklad kompilovať produkty pomocou autotools – známa trojica configure – make – make install, tak ako sme ich kompilovali na Linuxe.
- MinGW32 a MinGW64 sú prostredia pre vývoj natívnych 32-bitových a 64-bitových aplikácií. Každé z nich obsahuje vlastný kompilátor a knižnice. Ostatné nástroje sú obvykle preberané z prostredia MSYS, aj keď v niektorých prípadoch existujú aj verzie pre prostredia MinGW32 a MinGW64. To môže pôsobiť mätúco – hlavný rozdiel je v tom, že tieto verzie sú natívne Windows aplikácie. Na jednej strane dokážu pracovať bez podpory MSYS, avšak v kombinácii s autotools nepracujú správne.
Inštalátor stiahneme zo stránky https://msys2.github.io/ – my sme sa rozhodli pre 64-bitovú verziu. Postup inštalácie je uvedený na uvedenej stránke, stručne si ho zhrnieme a doplníme:
- Pomocou inštalátora nainštalujeme základ MSYS2
- Po inštalácii upravíme všetky tri BAT súbory spúšťajúce jednotlivé prostredia (msys2_shell.bat, mingw32_shell.bat a mingw64_shell.bat) – za druhý riadok vložíme riadok
PATH=""
- Spustíme MSYS shell a a aktualizujeme základné balíky a databázy balíkov:
pacman --needed -Sy bash pacman pacman-mirrors msys2-runtime
- Zavrieme MSYS shell (prípadné chyby môžeme ignorovať) a spustíme ho znova. Aktualizujeme zostávajúce balíky:
pacman -Su
Nastavenie premennej PATH slúži na vymazanie všetkých ciest prebratých z Windows. Tieto cesty môžu smerovať na iné nainštalované toolchainy a napriek tomu, že cesta k MinGW64 a MSYS binárkam je vsunutá na začiatok, môže sa stať, že sa pri kompilácii použijú programy z iného toolchainu. Toto je nepríjemná skúsenosť aj s OpenOCD – jeden z komponentov (jimtcl) pri automatickej konfigurácii hľadá ako prvý kompilátor cc. Ten sa v MinGW64 nenachádza, ale môže sa nachádzať v inom toolchaine (napríklad TDM-GCC). Takýto typ problémov sa veľmi ťažko identifikuje, preto je lepšie premennú PATH preventívne sanitizovať.
Teraz môžeme pristúpiť k inštalácii MinGW64 toolchainu, podporných nástrojov a knižníc:
pacman -S git autoconf automake make libtool pkg-config pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-gcc-libs pacman -S mingw-w64-x86_64-libusb mingw-w64-x86_64-libusb-compat-git mingw-w64-x86_64-hidapi
Kompilácia
Teraz môžeme spustiť MinGW64 shell a stiahnuť zdrojové texty OpenOCD:
git clone git://git.code.sf.net/p/openocd/code openocd-code
alebo – ak SourceForge nefunguje, ako to býva v poslednom čase zvykom:
git clone git://repo.or.cz/openocd.git
V prvom prípade sa zdrojový kód stiahne do adresára openocd-code, v druhom prípade do adresára openocd.
Ak stiahnutie zdrojových textov prebehlo bez chýb, môžeme sa pustiť do automatickej konfigurácie, kompilácie a inštalácie. Do výsledku sme zahrnuli ovládače pre Stellaris LaunchPad s TI ICDI (ti-icdi), pre J-Link a STLink. Takže môžeme spustiť kompiláciu a inštaláciu:
./bootstrap ./configure --prefix=/usr/local --enable-maintainer-mode --enable-jlink --enable-stlink --enable-ti-icdi --disable-werror make
Príkazom bootstrap sa vygenerujú súbory pre autokonfiguráciu. Parameter –enable-maintainer-mode je potrebný pre prípravu dokumentácie, bez neho kompilácia zlyhá.
Inštalácia OpenOCD
Inštalácia spočíva v ručnom skopírovaní súborov:
- Súbor openocd.exe (po kompilácii sa nachádza v adresári
src
) skopírujeme tam, kde ho chceme mať. - DLL knižnice pre libusb1.0, libusb 0.1 a hidapi (v čase písania článku to sú súbory libusb-1.0.dll, libusb-0-1-4.dll a libhidapi-0.dll) prekopírujeme z podadresára MSYS2
mingw64/bin
na to isté miesto; iné riešenie je skopírovať ich do adresára, kde Windows hľadá knižnice (napr.%WINDIR%\system32
), prípadne nastaviť cestu k podadresárumingw64/bin
- obsah adresára
tcl
skopírujeme do adresára%APPDATA%\OpenOCD
, tj. niečo akoC:\Users\ferko\AppData\Roaming\OpenOCD
. Prípadne ho môžeme skopírovať k súboru openocd.exe (ak chceme mať všetko na jednom mieste), ale v tom prípade budeme OpenOCD musieť vždy štartovať z adresára, kde sa openocd.exe nachádza.
Inštalácia ovládačov
Predtým, ako spustíme OpenOCD potrebujeme nainštalovať ovládače kompatibilné s libusb. Najjednoduchším riešením je použiť nástroj Zadig. Zadig môžeme stiahnuť zo stránok zadig.akeo.ie.
Po pripojení nášho ladiaceho adaptéra a spustení programu Zadig v menu Options aktivujeme položku List all devices, vyberieme zo zoznamu náš adaptér, zvolíme ovládač WinUSB a ovládače nainštalujeme či preinštalujeme.
Teraz môžeme OpenOCD spustiť. Ak dostaneme výsledok podľa nasledovného obrázku, tak sa nám všetko podarilo.