Skip to content
 

Kompilácia OpenOCD

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 configuremakemake 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:

  1. Súbor openocd.exe (po kompilácii sa nachádza v adresári src) skopírujeme tam, kde ho chceme mať.
  2. 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áru mingw64/bin
  3. obsah adresára tcl skopírujeme do adresára %APPDATA%\OpenOCD, tj. niečo ako C:\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.

openocd11

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.
openocd10

Print Friendly, PDF & Email
18 272 zobrazení