ARM a Makefile
Josef Štengl
ok1ced na nagano.cz
Neděle Leden 27 10:40:17 CET 2013
Určitě bude fungovat, když přiložíte jednoduchý textový soubor s popisem
adresářů. Buď to /fw, nebo do /fw/doc.
Každý projekt to má trošku jinak a je velmi užitečné, když má projekt
specifikovanou adresářovou (hmm, nebo dneska složkovou?) strukturu,
které se drží. Ani moc nezáleží na tom, jak ve skutečnosti vypadá.
Přikláním se k makefile (gnumake). Sic nástroj nedokonalý, ale rozšířený
a pracuje snad na všech platformách. A dají se udržet změny v
parametrech kompilátorů a podobně na snesitelné míře různorodosti (občas
je potřeba přeložit kód jinak).
Pokud půjdete cestou IDE, pak je nutné aby všichni ostatní pracovali v
tom samém IDE a z důvodu nastavení voleb pro překlad sdílely stejné
nastavení. Ještě jsem nezažil, aby se nastavení neustále vzájemně
nepřepisovalo a přináší spoustu problémů pro ty, co používají pro vývoj
specifičtější nástroje (VIM, EMACS ale i eclipse).
ced
Dne 26.1.2013 22:46, František Burian napsal(a):
> No možná jste nepochopili můj dotaz. Neptal jsem se na to zdali se mám
> naučit Makefile (ten už
> umím ze zkušeností s AVR i jiných projektů, a vím že se mi s ním pracuje
> lépe), šlo mi o to zdali
> pokud budu publikovat nějakou konstrukci, řekněme i se zdrojáky, zdali
> by bylo pro osazenstvo
> konference lepší kdyby to byl Makefile projekt v C::B nebo nativní
> projekt v C::B. S tím souvisel i
> dotaz na adresářovou strukturu.
>
> Jelikož je to nový procesor který se učím, chci si zavést už od počátku
> "společně-uznávaný" návyk.
> A cesty Makefile i CodeBlocksích "škrtátek" jsou si dost odlišné a
> znamená to jinak myslet při stavbě
> projektu. Proto se ptám na počátku těch zkušenějších.
>
> Co se týče struktury, tak zatím se přikláním po radě p. Labaje k
> následujícímu:
>
> /fw ... složka s obsahem firmware, obsahuje Makefile, *.cbp, případně
> projektové soubory jiných IDE
>
> /fw/src/ ... zde jsou *.c, *.S zdrojáky
> /fw/include/ ... bylo doporučeno p. Labajem dávat sem headery (*.h). U
> knihovny chápu ale u exe (bin, elf)
> se mi zdá že to stačí mít v src.
> /fw/lib/ ... zde jsou zkompilované knihovny třetích stran (*.a) (možná
> se povede i ty knihovny
> /fw/ld/ ... zde jsou linker skripty (*.ld) pro každý target zvlášť
> (přebírám doporučení p. Labaje)
> /fw/tmp/ ... zde se generují *.o, *.lst, *.aux pro hledání chyb v asm
> atd ...
> /fw/doc/ ... zde je dokumentace chování projektu (*.tex soubory), pdf
> generován do ../bin/
> /fw/bin/ ... zde je "binárka" programu (*.elf, *.bin, *.hex), případně
> PDF s dokumentací chování programu
>
> /sw ... ovládací SW pro PC (struktura podadresářů viz výše)
> /dps ... desky s plošnými spoji (nesouvisí se zdrojáky, spíš jde o
> záznam ve verzovacím systému projektu)
> /doc ... hlavní dokumentace celé sestavy (tex)
> /ds ... ? datasheety k čipům ? (autorská práva ?)
>
> Myslíte že by to mohlo fungovat ? (Už teď vím že ne - co když budou dva
> odlišné branche pro fw s různou funkcionalitou,
> ale pro inspiraci toho co se snažím vymyslet ve volném čase by to mohlo
> stačit)
>
> Chtěl jsem to probírat na hw-listovici ale byl jsem churav :-(
>
> Dík,
>
> Franta.
>
> ---------- Původní zpráva ----------
> Od: Miroslav Mraz <mraz na seznam.cz>
> Datum: 26. 1. 2013
> Předmět: Re: ARM a Makefile
>
>
> Naučit se psát ručně makefile je velmi významné plus, pokud to myslíte s
> programováním vážně. Zase to není tak velké drama a jednou napsané
> "kopyto" dobře poslouží jak pro jiný projekt, tak i při portování na
> jiný typ procesoru. A už vůbec nemluvím o tom, že nejste závislý na
> jednom IDE. Třeba to C::B je dobrý kus kódu, ale překlad se nastavuje na
> 3 různých místech a tak se výsledek může i o dost lišit.
> Co se týče knihoven, u jednočipů se snažím vše, co se týče hardware
> udržet na úrovni zdrojáků v rámci projektu. Vlastně je pouze důležité si
> rozmyslet, kde je ta pofidérní hranice, kde končí obsluha periférií a
> začíná můj vlastní výkonný kód. Vždycky musím mít na mysli, že třeba za
> rok budu muset použít jiný procesor a mělo by to dát co nejmíň práce.
> Takže třeba se nebát používat callback funkce, i když to není zrovna
> přehledné.
> Někdy se může vyplatit mít v projektu i vlastní (tedy od výrobce čipu)
> stdio, math atd. a nepoužívat třeba tu newlib. U jednočipů to bývá
> daleko lépe optimalizováno. Nehledě na to, že ta obecná knihovna je
> přeložena s nějakými parametry a v projektu se hodí úplně jiné - pak to
> vůbec neslinkujete (typicky math funkce ve spolupráci s fpu).
> Verzovací systém se taky vyplatí, není na tom nic složitého, používám
> SVN a i když na tom dělám sám, někdy se to hodí.
>
> Mrazík
>
>
> Petr Labaj píše v So 26. 01. 2013 v 20:41 +0100:
> >
> > Proc lidi nepouzivaji Makefile? Protoze spousta lidi ani nevi, co to
> > je (tim ted zrovna
> > nemyslim vzorek lidi z hw.cz, i kdyz i tady se obcas vyskytuji
> nazory,
> > ze je vhodnejsi
> > pouzit predchystany example, nez se snazit problemtiku nastudovat).
> > Kdyz se podivate do prakticky libovolneho fora o programovani
> nejakeho
> > procesoru,
> > tak kazda druha otazka tam je "pod Eclipse to chodi, ale pod mym XYZ
> > to nejde".
> > Nikdo z nich nepremysli nad tim, ze preklad je veci kompilatoru, tedy
> > toolchainu,
> > a ze s tim ma barevna klikaci nadstavba IDE spojitost jen okrajovou.
> >
> > Konkretne:
> > - knihovny prekladam predem a delam z nich jednu knihovnu (*.a)
> > - knihovny jsou ulozene v pevne definovanem adresari, ktery je
> > spolecny pro
> > vsechny projekty
> > - adresar projektu ma shodne jseno s projektem, v nem jsou
> > podadresare:
> > - src
> > - include
> > - ld
> > - tmp
> > - v adresari projektu je jen Makefile, vystup "projekt.elf" a
> soubor s
> > opisem hlasek
> > z prekladu "projekt.txt", vcetne vypisu o delce code a data
> > - v podadresari tmp jsou *.obj, *,lst ke kazdemu modulu,
> "projekt.map"
> > a "projekt.dis",
> > coz je nejkompletnejsi mozny disassembler vysledneho projektu,
> > vcetne hexdumpu,
> > tedy veskera informace pro pripadne hledani
> > - Makefile ma krome obvykleho "clean" jeste "clean_tmp", ktery maze
> > pracovni soubory,
> > ale ponecha "projekt.elf" a "projekt.txt".
> >
> > Diky predkompilovanym knihovnam je build projektu velmi rychly.
> > Na urovni systemu je pradnastavena volba -j pro paralelni
> preklad. Mym
> > cilem
> > vzdy je, aby jedno kolo preklad+link nikdy netrvalo dele nez 2
> sekundy
> > (na Linuxu, kde
> > mi soucasne toolchainy, natr. pro STM32, chodi vyrazne rychleji
> nez na
> > Windows).
> > Pokud by to melo u hodne velkeho projektu trvat dele, je treba se
> > zamyslet a rozlozit to.
> > Knihovny pouzivam jen naprosto minimalne, vetsinu veci si radeji
> > napisu sam a vim,
> > co a jak tam je. A muzu to snadno preportovat jinam.
> > Vyjimkou jsou hodne komplexni periferie jako USB a Ethernet.
> > S verzovacimi SW jsem se nikdy neszil (coz povazuji za svou chybu).
> > Takze verzovani
> > pomoci pojmenovanych *.zip.
> >
> > PL
> >
>
>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list