Įvadas
Dirbant su embedded sistemomis, tenka kompiliuoti programas atitinkamoms architektūroms. Net tiesiog norint pabandyti pažaisti su plokštę qemu aplinkoje, tenka kompiliuoti programas. Norint tai daryti, reikia pas save pasistatyti cross compilerį, arba toolchan’ą. Panagrinėkim kaip tai viskas atrodo ARM tipo sistemoms.
Rankinis kompiliavimas
Visą tą džiaugsmą galima pasigaminti namų sąlygomis. Kadangi sistema nėra standartinė, o bildinama iš standartinių source’ų, ją reikia truputi palopyti. Kodėl pavadinau rankinis? Nes visus source’us reikia parsisiųsti, sukonfigūruoti ir tik tada sukompilinti. Realiai visą tą reikalą atlieka vienas skriptas. Kadangi lopymai padaryti būtent tokios versijos programiniai įrangai ( o kitų neradau ), tai kompiliavimo eigoje turėtų išmesti tam tikras klaidas, kurias galima lengvai ištaisyti, kaip ld ir as versijų tikrinimo.
Šaltinis: Charles M. “Chip” Coldwell.
Buildroot kompiliavimas
Su buildroot yra truputi kitaip. Buildroot iš esmės yra make failų rinkinys. Ir jis savyje turi visus reikiamus lopus. Ką tereikia padaryti, tai jį atsisiųsti, išarchyvuoti, sukonfigūruoti ir paleisti:
wget http://buildroot.net/downloads/buildroot-2010.02.tar.gz
tar -xvf buildroot-2010.02.tar.gz
cd buildroot-2010.02
make integrator926_defconfig
make menuconfig
Konfigūraciniam meniu rekomenduojama pasirinkti:
- Toolchain
- Build/install c++ compiler and libstdc++
- Target filesystem options
- tar the root filesystem
- Compression method
- gzip
- Compression method
- Das U-Boot Boot Monitor
- board name
- versatilepb
- board name
- tar the root filesystem
- Kernel
- kernel binary format
- zImage
- kernel binary format
O visa kita jau fantazijos ir eksperimentų šaltinis. Aš asmeniškai dar iš filesystem options pasirinkau cpio rootfs formatą, romfs outputą, kad man iškart sugeneruotų tvarkingą arm-linux’ą. Bet čia jau ne į tą pusę.
Telieka tik sukompiliuoti
make source && make
Toliau viską darys make failai. Bet kai kada ir jie nežinos ką daryti, tai stebėkit procesą. :) Toliau reiks pasileisti sistemą kokiam nors emuliatoriuje ( qemu ) ir turim normalų gcc savo stichijoje. Apie qemu + arm linux kernel papasakosiu kitam savo įraše. Dabar galiu pateikti tik boot’o video:
Šaltinis: Jim Thomas.
Sourcery G++ Lite
Turbūt pats lengviausias ir jokio konfigūravimo nereikalaujantis sprendimas. Rekomenduoju visiems pradedantiesiems. Tereikia tik nueiti į Sourcery G++ Lite parsiuntimo puslapį, jį atsisiųsti, suteikti +x teises, paleisti ir “Next, next” stiliumi viską įdiegti.
Šaltinis: Balau.
Išvados
Yra ir daugiau būdu susikurti sau cross compilerį, bet turbūt kiekvienam tai savas patogumo pasirinkimas. Aš asmeniškai naudoju visus tris, kaip ir nebūtų keista. Sourcery G++ pliusas tame, kad jis turi EABI support’ą, tai mes galim linux branduolį sukompilinti su EABI supportu. Rankinių būtų sukompilintas cross compileris to negali, nes linux kernelis tiesiog per senas.
Išbandykit viską ir elkitės pagal situaciją. :)
Ne į temą, bet rašybos klaidų truputi yra. :)
Atsiprašau. :(
Kitą kart rašysiu su spell-checker pagalba.
O kam tau viso to reikia, jei ne paslaptis?
Atlikinėjau praktiką įmonėje, kuri tiekia medicininius įrenginius; Man ten davė pažaisti su plokšte, kurioje sukasi ARM tipo procesorius;
Sekančią informaciją rašiau į savo blogą, kadangi praktikos darbo ataskaita pas mane buvo ir taip labai ilga, tai papildomos informacijos ten tiesiog nereikėjo. O ir pamiršti šito nenoriu. :)
Taip ARM’ai paplitę ;-) Galvojau gal ką savo Nokia telefonui programuoji.
Kai dirbsiu nokia, tada paprograminsiu. ;)