Projekt BROB - 2014 S2. Vytvoření Windows balíku pro vývoj na STM32 architektuře Autor práce: Jakub Žďárský, UAMT VUT FEKT Vedoucí práce: Ing. František Burian 1
Obsah Obsah... 2 Zadání... 3 Úvod... 3 1 Instalátor Inno Setup... 4 1.1 Tvorba instalace...4 1.1.1 Za pomoci průvodce...4 1.1.2 Čistý skript...4 2 Průběh instalace... 5 2.1 Spuštění instalátoru...5 2.2 Výběr balíků instalace a jejich umístění...5 2.3 Instalace...6 2.4 Dokončení instalace...6 3 Použité instalační balíky... 7 3.1 Unixové příkazy...7 3.1.1 MinGW32...7 3.2 Kompilátor...7 3.2.1 ARM Toolchain...7 3.3 Jazyk Perl...8 3.3.1 Strawberry Perl...8 3.4 Jazyk Python...8 3.4.1 Python...8 3.5 Drivery...9 3.5.1 Code::Blocks...9 3.6 Debuger...9 3.6.1 BlackMagic...9 4 Ukázky kódu... 10 5 Závěr... 11 Seznam použitých zdrojů... 12 Seznam obrázků... 13 2
Zadání Nastudujte princip funkce základních vývojových nástrojů pro cross-compiling zdrojových souborů na jiné architektury. Vytvořte instalační soubor, který automaticky stáhne všechny potřebné a vzájemně kompatibilní balíky pro vývoj v C pro stm32 a nainstaluje uživateli všechny potřebné nástroje. Výsledný balík otestujte na virtuálním stroji. Úvod Tento instalátor by měl sloužit pro usnadnění vývoje na architektuře STM32 a byl také vytvořen jako univerzální instalátor, což znamená, že se do něj později dají přidávat další potřebné balíky. Podobné instalátory se dají najít na internetu, ale každý z nich je unikátní a specifický v tom, co obsahuje a co dělá, zda pouze stahuje potřebné soubory a balíky nebo je i instaluje. Mnou vytvořený instalátor dokáže nejen balíčky stáhnout, ale i nainstalovat tak, že není potřeba skoro žádného zásahu uživatele, což většina instalátorů neumožňuje a při instalaci každého balíku musíte vše jednotlivě odkliknout. 3
1 Instalátor Inno Setup Inno Setup je volně šiřitelný program pro tvorbu instalací vytvořených aplikací a programů. Ačkoli je tento program pro tvorbu instalací starý už 17 let, je velice populární i v dnešní době, protože je uživatelsky velice přívětivý a snadno se ovládá. Mně samotnému trvalo pouze chvíli, než jsem se naučil vše ovládat, protože je zde možnost psát skript instalátoru v jazyku Pascal a s tím jsem se dříve už setkal. 1.1 Tvorba instalace V Inno Setup jsou dvě možnosti jak vytvořit instalaci. 1.1.1 Za pomoci průvodce Průvodce Vás provede krok za krokem všemi kroky tvorby instalátoru. Tento instalátor po dokončení můžete nadále upravovat, jak budete potřebovat. Tuto metodu jsem použil i já, přičemž jsem si v průvodci zvolil základní nastavení instalátoru a nechal si ho vygenerovat. Potom už jsem ale pokračoval pouze v upravování skriptu instalátoru, protože složitější funkce se v průvodci udělat nedají. Obr. 1. Inno Setup Wizard 1.1.2 Čistý skript Při této možnosti začínáte s čistým skriptem a píšete celý instalátor od začátku sami. Tato možnost je ale jen pro ty, kteří již mají dostatečné znalosti v používání tohoto programu. 4
2 Průběh instalace 2.1 Spuštění instalátoru Po spuštění instalátoru se objeví okno, ve kterém si vyberete jazyk instalace. Tento instalátor obsahuje instalaci pouze v češtině a angličtině, jelikož v zadání projektu nebylo napsáno, v kolika jazycích má instalace být. Obr. 2. Výběr jazyka 2.2 Výběr balíků instalace a jejich umístění Po odsouhlasení přečtení pokynů instalace MinGW32 se volí umístění, kam se mají nainstalovat balíky, které se v další části instalace vybírají. Výběr balíků je tvořen stromovým výběrem, protože je zde možnost pozdějšího přidání dalších balíků do jednotlivých kategorií v instalátoru. Obr. 3. Výběr balíků 5
2.3 Instalace Po potvrzení výběru se spustí stahování vybraných balíků. Po stáhnutí veškerých součástí se spustí instalace balíků ve stejném pořadí, jako je při výběru balíků. Obr. 4. Stahování balíků 2.4 Dokončení instalace Po nainstalování všech balíků a ukončení instalátoru se otevře soubor Readme, ve kterém se nacházejí informace o tom, jak postupovat při dokončení instalace MinGW32. Obr. 5. Dokončení instalacess 6
3 Použité instalační balíky 3.1 Unixové příkazy 3.1.1 MinGW32 První ze šesti instalovaných balíků je MinGW32. Tento balík slouží jako vývojové prostředí pro tvorbu různých aplikací pro operační systém Microsoft Windows. 3.1.1.1 Instalace MinGW32 Instalátor MinGW32 jako jediný nepodporuje funkci Silent install, což znamená, že se nedokáže sám nainstalovat bez jediného zásahu uživatele. Proto jsou na začátku instalátoru STM32 dodatečné pokyny k instalaci MinGW32 a následně i na konci instalátoru jsou instrukce, které se musí provést po dokončení instalace veškerých balíků, aby vše správně fungovalo. Obr. 6. Pokyny pro MinGW32 3.2 Kompilátor 3.2.1 ARM Toolchain Dalším z balíků je ARM Toolchain. Jedná se o kompilátor pro procesory ARM, který umožňuje programování v různých jazycích, jako je C, C++, Java a další. 7
3.2.1.1 Instalace ARM Toolchain Instalátor tohoto balíku již má funkci Silent install, která automaticky nainstaluje stažený balík do složky, která se volí na začátku instalátoru STM32, aniž by uživatel musel nějakým způsobem zasahovat. Po dokončení instalace je balík již plně funkční a je připraven k použití. 3.3 Jazyk Perl 3.3.1 Strawberry Perl Tento balík slouží jako Perl-ové prostředí pro Microsoft Windows a obsahuje vše potřebné pro vývoj a spuštění aplikací v jazyku Perl. 3.3.1.1 Instalace Strawberry Perl Při instalaci Strawberry Perl nastal problém při otevření instalace, který sem ale nakonec vyřešil. Problémem bylo, že na instalaci tohoto balíku jsem jako uživatel neměl dostatečná práva a spustit celý instalátor jako správce nepomohlo, jelikož se toto oprávnění nepřenášelo na instalátory balíků, které instalátor STM32 stáhnul a posléze spustil. Řešení nakonec bylo ve skriptu instalátoru, kde se nespouštěl stažený instalátor pomocí parametru /i, což znamená install, ale musel se spouštět s parametrem /a, což je administrativní instalace, takže instalátor se pak spustí s administrátorskými právy. Tento instalátor rovněž podporuje funkci Silent install, takže se nainstaluje automaticky. Obr. 7. Příklad přidání parametrů Perl 3.4 Jazyk Python 3.4.1 Python Čtvrtým balíkem je Python. Python je sám o sobě objektový programovací jazyk a tato instalace obsahuje prostředí, ve kterém se dá programovat pomocí tohoto jazyka. 8
3.4.1.1 Instalace Python Instalace Python fungovala ze všech ostatních instalací nejlépe, tedy nebylo potřeba zabývat se oprávněním uživatele pro instalaci a dalšími problémy. I tato instalace má funkci Silent install, takže vše je automatické. 3.5 Drivery 3.5.1 Code::Blocks Balík Code:Blcoks obsahuje integrované vývojové prostředí pro jazyky C, C++ a Fortan. 3.5.1.1 Instalace Code::Blocks U této instalace nastal problém, který se mi nepodařilo vyřešit. Tento instalátor sice podporuje Silent install, ale ve skriptu instalátoru STM32 nelze nastavit cestu, kam se má nainstalovat Code::Blocks, takže vše proběhne automaticky, ale balík se nainstaluje do standardní složky C:\Program Files. 3.6 Debuger 3.6.1 BlackMagic Tento balík obsahuje ladící nástroje pro vestavěné mikroprocesory a microkontroléry jako je STM32 či ARM. Umožňuje vidět co se děje uvnitř aplikace za běhu. 3.6.1.1 Instalace BlackMagic Tento balík je jako jediný zabalený v archivu s příponou.zip. Jelikož jsem ale nepřišel na způsob, jakým bych archiv dokázal rozbalit pomocí nějakého příkazu nebo funkce, musel jsem archiv manuálně rozbalit a vyextrahované soubory pak přidat do instalátoru, který je při instalaci vloží do zvolené složky. To tedy znamená, že instalátor bude mít o něco větší velikost, ale tato velikost je v zanedbatelná, protože soubory balíku BlackMagic mají velikost asi 0,9 megabajtů, ale tato velikost je ještě zkomprimována a instalátor se tak zvětší o pár kilobajtů. Obr. 8. Instalace BlackMagic 9
4 Ukázky kódu Obr. 9. Přidání komponent Obr. 10. Instalační funkce Obr. 11. Přidání umístění balíků Obr. 12. Inicializace stažení balíků 10
5 Závěr Cílem tohoto projektu bylo seznámit se s programem Inno Setup a vytvořit plně automatickou instalaci všech potřebných balíků pro vývoj na architektuře STM32. Tento cíl se podařilo splnit až na jednu malou drobnost, která se vyřešila umístěním podrobných instrukcí na začátek instalátoru. Jedinou a zároveň největší slabinou tohoto instalátoru je závislost na rychlém připojení k internetu, jelikož některé instalační balíky mají velikost v řádech stovek megabajtů a při nízké rychlosti stahování se tak může doba instalace protáhnout až na několik minut nebo dokonce i hodin v nejhorším případě. Instalátor se podařil vytvořit tak, aby byl přehledný a zároveň se do něj dali přidat případně další instalační balíky. Instalátor byl odzkoušen na operačním systému Microsoft Windows 7 Ultimate x64 a x86. V obou případech fungoval bez problémů. 11
Seznam použitých zdrojů [1] Inno Setup help [online]. Dostupné z WWW: < http://www.jrsoftware.org/ishelp> [2] STM32 návod k instalaci [online]. Dostupné z WWW: <https://sites.google.com/site/vutrobotika/navody/stm32/2> [3] MinGW Installation notes [online]. Dostupné z WWW: <http://www.mingw.org/wiki/getting_started> [4] Strawberry Perl Explanatory notes [online]. Dostupné z WWW: <http://strawberryperl.com/releases.html> [5] Python Non-interactive Installation [online]. Dostupné z WWW: <https://www.python.org/download/releases/2.4/msi/> [6] GNU Tools for ARM Embedded Processors [online]. Dostupné z WWW: <https://launchpad.net/gcc-arm-embedded> [7] Code::Blocks Help Silent install [online]. Dostupné z WWW: <http://forums.codeblocks.org/index.php/topic,9221.0.html> 12
Seznam obrázků Obr. 1. Inno Setup Wizard...4 Obr. 2. Výběr jazyka...5 Obr. 3. Výběr balíků...5 Obr. 4. Stahování balíků...6 Obr. 5. Dokončení instalacess...6 Obr. 6. Pokyny pro MinGW32...7 Obr. 7. Příklad přidání parametrů Perl...8 Obr. 8. Instalace BlackMagic...9 Obr. 9. Přidání komponent...10 Obr. 10. Instalační funkce...10 Obr. 11. Přidání umístění balíků...10 Obr. 12. Inicializace stažení balíků...10 13