Après plusieurs mois d'absence et un nouvel hobby qui prend du temps: être Papa ;-) je reviens pour compléter mon blog sur les systèmes embarqués.
Ce billet sera simplement consacré à la création d'un environnement embarqué complet à partir de la dernière version de buildroot 2013.08.1.
Cette nouvelle version de buildroot va apporter beaucoup plus de simplicité que les précédentes versions ...
Nous allons utiliser cette config validée par les devs de buildroot.
Cette version de buildroot a la particularité d'avoir supprimé la gestion de la chaîne de compilation croisée par l'outil externe crosstool-ng et dispose de son propre outil de création de chaîne de compilation basé sur une uclibc (micro-c libc).
puis faire un petit make pour la génération de l'environnement complet. N'hésitez pas à aller chercher un café, ça peut prendre du temps.
En inspectant le dossier output/images, on retrouve deux fichiers et un dossier :
Voila, pas plus, pas moins. Amusez-vous bien.
Ce billet sera simplement consacré à la création d'un environnement embarqué complet à partir de la dernière version de buildroot 2013.08.1.
Cette nouvelle version de buildroot va apporter beaucoup plus de simplicité que les précédentes versions ...
Au revoir Crosstool-NG, bonjour Buildroot toolchain ...
La dernière version de buildroot (2013.08.1) est téléchargeable ici.
Après décompression, si on inspecte le dossier configs comprenant toutes les configurations fournies avec l'environnement, on se rend compte qu'il existe le fichier : rpi_defconfig.
# tar xvzf buildroot-2013.08.1.tar.gz # cd buildroot-2013.08.1 # cd configs/ # ls arm_foundationv8_defconfig atngw100_defconfig fdi3250_defconfig pandaboard_defconfig qemu_ppc_mpc8544ds_defconfig armadeus_apf27_defconfig atstk100x_defconfig freescale_mpc8315erdb_defconfig phy3250_defconfig qemu_ppc_virtex_ml507_defconfig armadeus_apf28_defconfig beaglebone_defconfig freescale_p1010rdb_defconfig qemu_arm_nuri_defconfig qemu_sh4_r2d_defconfig armadeus_apf9328_defconfig calao_qil_a9260_defconfig gnublin_defconfig qemu_arm_versatile_defconfig qemu_sparc_ss10_defconfig at91rm9200df_defconfig calao_snowball_defconfig integrator926_defconfig qemu_arm_vexpress_defconfig qemu_x86_64_defconfig at91sam9260dfc_defconfig calao_tny_a9g20_lpw_defconfig kb9202_defconfig qemu_microblazebe_mmu_defconfig qemu_x86_defconfig at91sam9260eknf_defconfig calao_usb_a9260_defconfig mini2440_defconfig qemu_microblazeel_mmu_defconfig rpi_defconfig at91sam9261ek_defconfig calao_usb_a9263_defconfig mx53loco_defconfig qemu_mips64_malta_defconfig s6lx9_microboard_defconfig at91sam9263ek_defconfig calao_usb_a9g20_lpw_defconfig nitrogen6x_defconfig qemu_mips_malta_defconfig sheevaplug_defconfig at91sam9g20dfc_defconfig cubieboard_defconfig olimex_imx233_olinuxino_defconfig qemu_mipsel_malta_defconfig telit_evk_pro3_defconfig at91sam9g45m10ek_defconfig ea3250_defconfig openblocks_a6_defconfig qemu_ppc_g3beige_defconfig
Nous allons utiliser cette config validée par les devs de buildroot.
Cette version de buildroot a la particularité d'avoir supprimé la gestion de la chaîne de compilation croisée par l'outil externe crosstool-ng et dispose de son propre outil de création de chaîne de compilation basé sur une uclibc (micro-c libc).
# make rpi_defconfig mkdir -p /home/vbenoit/PERSO/raspberry_pi/buildroot/buildroot_python/output/build/buildroot-config/lxdialog make CC="/usr/bin/gcc" HOSTCC="/usr/bin/gcc" obj=/home/vbenoit/PERSO/raspberry_pi/buildroot/buildroot_python/output/build/buildroot-config -C support/kconfig -f Makefile.br conf make[1]: Entering directory '/home/vbenoit/PERSO/raspberry_pi/buildroot/buildroot_python/support/kconfig' /usr/bin/gcc -DCURSES_LOC="" -DLOCALE -I/home/vbenoit/PERSO/raspberry_pi/buildroot/buildroot_python/output/build/buildroot-config -DCONFIG_=\"\" -MM *.c > /home/vbenoit/PERSO/raspberry_pi/buildroot/buildroot_python/output/build/buildroot-config/.depend 2>/dev/null || : /usr/bin/gcc -DCURSES_LOC=" " -DLOCALE -I/home/vbenoit/PERSO/raspberry_pi/buildroot/buildroot_python/output/build/buildroot-config -DCONFIG_=\"\" -c conf.c -o /home/vbenoit/PERSO/raspberry_pi/buildroot/buildroot_python/output/build/buildroot-config/conf.o /usr/bin/gcc -DCURSES_LOC=" " -DLOCALE -I/home/vbenoit/PERSO/raspberry_pi/buildroot/buildroot_python/output/build/buildroot-config -DCONFIG_=\"\" -I. -c /home/vbenoit/PERSO/raspberry_pi/buildroot/buildroot_python/output/build/buildroot-config/zconf.tab.c -o /home/vbenoit/PERSO/raspberry_pi/buildroot/buildroot_python/output/build/buildroot-config/zconf.tab.o In file included from /home/vbenoit/PERSO/raspberry_pi/buildroot/buildroot_python/output/build/buildroot-config/zconf.tab.c:2500:0: ./confdata.c: In function ‘conf_split_config’: ./confdata.c:849:6: attention : assignment makes pointer from integer without a cast [enabled by default] dir = dirname(_name); ^ /usr/bin/gcc -DCURSES_LOC=" " -DLOCALE -I/home/vbenoit/PERSO/raspberry_pi/buildroot/buildroot_python/output/build/buildroot-config -DCONFIG_=\"\" /home/vbenoit/PERSO/raspberry_pi/buildroot/buildroot_python/output/build/buildroot-config/conf.o /home/vbenoit/PERSO/raspberry_pi/buildroot/buildroot_python/output/build/buildroot-config/zconf.tab.o -o /home/vbenoit/PERSO/raspberry_pi/buildroot/buildroot_python/output/build/buildroot-config/conf rm /home/vbenoit/PERSO/raspberry_pi/buildroot/buildroot_python/output/build/buildroot-config/zconf.tab.c make[1]: Leaving directory '/home/vbenoit/PERSO/raspberry_pi/buildroot/buildroot_python/support/kconfig' # # configuration written to /home/vbenoit/PERSO/raspberry_pi/buildroot/buildroot_python/.config #
puis faire un petit make pour la génération de l'environnement complet. N'hésitez pas à aller chercher un café, ça peut prendre du temps.
# make
finalement ...
En inspectant le dossier output/images, on retrouve deux fichiers et un dossier :
- zImage : Le noyau linux a copier dans la partition boot (fat32) de la carte SD.
- rootfs.tar : Le système de fichiers archivé à désarchiver dans la partition rootfs (ext4) de la carte SD.
- rpi-firmware : Les binaires a copier dans la partition boot (fat32) de la carte SD.
Voila, pas plus, pas moins. Amusez-vous bien.
Salut,
RépondreSupprimerMerci pour le tuto, j'essaye d'installer le driver 8188cu pour une carte wifi, et je commence donc par Buildroot, mais lorsque je rentre :
[...]/configs # make rpi_defconfig
Je reçois :
make : Nothing to be done for `rpi_defconfig'.
Que puis-je faire ?
falco
Alors, dans un premier temps, vérifie que le fichier de configuration rpi_defconfig existe bien dans le dossier dl de buildroot et dans un second temps, tu peux supprimer ta config actuelle en faisant un make clean ou make distclean (cela supprimera tout) puis relancer la commande make rpi_defconfig
SupprimerLe fichier rpi_deconfig existe bien dans le dossier buildroot-2013.08.1/configs.
SupprimerC'est ce à quoi tu faisais référence en l'appelant dossier ddl ?
Je tente ce soir le make clean (distclean).
Merci de ta rapidité.
falco
autan pour moi, c'est pas le dossier buildroot-2013.08.1/dl mais buildroot-2013.08.1/configs que je voulais faire référence.
SupprimerSalut
RépondreSupprimerPour commencer merci beaucoup pour ce tuto, il est vraiment agréable à suivre.
Je l'ai suivi étape par étape (parfaitement je pense), par la suite j'ai donc compilé un petit programme (type hello world) sur mon pc avec la commande arm-linux-gcc -g -o.
Tout s'est bien passé sans soucis.
Mais une fois sur ma pi, lorsque je veux lancé le programme avec ./ (idem avec sudo en plus), je reçois le message suivant: No such file or directoy
Pourtant je suis dans le bon répertoire et je vois bien le programme avec ls de même les droits sont bons, je ne comprend vraiment pas.
Aurais-tu une idée ?
Merci d'avance
Florian