buildroot学习(一) 2016-08-21
我也是最近刚发现这个工具,刚开始弄,我把每天的学习笔记留下,后期用明白了在整理下。
目前项目一直用的是一款atmel的一款ARM9处理器,at91sam9g45相当老的一款处理器,但是只要满足项目需求就可以了,而且这款处理器算是MPU,而且架构清晰更易与学习,可以对照《深入理解计算机体系》的x86处理器来学习这块ARM处理器。
之前项目的linux移植,一直是在开发板提供的源码基础上,进行适应性修改,之前的版本是atmel_bootstrap1.13(atmel特有的一级启动,其实应该算作第二级了,因为芯片内置的ROM,才是第一级,只不过ROM中的程序无法修改而已),Uboot2010.06(这个版本,是自己升级的),linux2.6.30(这个版本也够老的),根文件系统是自己按照教程建立的目录,然后安装交叉编译工具的库、内核模块、busybox提供的基础命令包,根文件系统我也是花了大心思,升级了busybox,添加了ftp服务器,没有账目和密码管理哦,开通的telnet登陆,这个有密码登陆保护,后面还想加ssl的安全网络服务,感觉一个个移植好痛苦啊,毕竟这只是工具,花费太多时间了,就暂时搁置了。
近期由于想深入理解linux驱动和网络协议栈,所以打算更新软件平台,偶然间,在http://www.at91.com/linux4sam/bin/view/Linux4SAM/WebHome,也就是atmel的软件开发官网,发现了buildroot,最近开发一看,这不仅有我知道的工具,还有很多我不知道的工具可以安装到根文件系统中,这个工具的目的是:Makeing Embedded Linux Easy,官网的原话,https://buildroot.org/。这工具可以干嘛啊,可以编译bootstrap、uboot、linux-kernel、rootfs,自己看看就知道了,太强大了,不仅支持atmel,还有支持imx6q、还有很多我知道的处理器,自己找找吧。基本使用也很简单,
简单使用
1、下载
https://git.busybox.net/buildroot/refs/tags
我当前最新的稳定版是2016.05,下载
2、解压
tar xvjf buildroot-2016.05.tar.bz2
3、配置
make list-defconfigs 列举出当前支持的板子,还挺多的自己看看吧
acmesystems_aria_g25_128mb_defconfig - Build for acmesystems_aria_g25_128mb
acmesystems_aria_g25_256mb_defconfig - Build for acmesystems_aria_g25_256mb
acmesystems_arietta_g25_128mb_defconfig - Build for acmesystems_arietta_g25_128mb
acmesystems_arietta_g25_256mb_defconfig - Build for acmesystems_arietta_g25_256mb
altera_socdk_defconfig - Build for altera_socdk
altera_sockit_defconfig - Build for altera_sockit
arm_foundationv8_defconfig - Build for arm_foundationv8
arm_juno_defconfig - Build for arm_juno
armadeus_apf27_defconfig - Build for armadeus_apf27
armadeus_apf28_defconfig - Build for armadeus_apf28
armadeus_apf51_defconfig - Build for armadeus_apf51
armadeus_apf9328_defconfig - Build for armadeus_apf9328
at91sam9260eknf_defconfig - Build for at91sam9260eknf
at91sam9g20dfc_defconfig - Build for at91sam9g20dfc
at91sam9g45m10ek_defconfig - Build for at91sam9g45m10ek
at91sam9rlek_defconfig - Build for at91sam9rlek
at91sam9x5ek_defconfig - Build for at91sam9x5ek
atmel_sama5d2_xplained_mmc_defconfig - Build for atmel_sama5d2_xplained_mmc
atmel_sama5d3_xplained_defconfig - Build for atmel_sama5d3_xplained
atmel_sama5d3_xplained_mmc_defconfig - Build for atmel_sama5d3_xplained_mmc
atmel_sama5d3xek_defconfig - Build for atmel_sama5d3xek
atmel_sama5d4_xplained_defconfig - Build for atmel_sama5d4_xplained
atmel_sama5d4_xplained_mmc_defconfig - Build for atmel_sama5d4_xplained_mmc
atmel_sama5d4ek_defconfig - Build for atmel_sama5d4ek
beaglebone_defconfig - Build for beaglebone
calao_qil_a9260_defconfig - Build for calao_qil_a9260
calao_tny_a9g20_lpw_defconfig - Build for calao_tny_a9g20_lpw
calao_usb_a9260_defconfig - Build for calao_usb_a9260
calao_usb_a9263_defconfig - Build for calao_usb_a9263
calao_usb_a9g20_lpw_defconfig - Build for calao_usb_a9g20_lpw
ci20_defconfig - Build for ci20
cubieboard2_defconfig - Build for cubieboard2
cubieboard_defconfig - Build for cubieboard
firefly_rk3288_defconfig - Build for firefly_rk3288
firefly_rk3288_demo_defconfig - Build for firefly_rk3288_demo
freescale_imx28evk_defconfig - Build for freescale_imx28evk
freescale_imx31_3stack_defconfig - Build for freescale_imx31_3stack
freescale_imx6dlsabreauto_defconfig - Build for freescale_imx6dlsabreauto
freescale_imx6dlsabresd_defconfig - Build for freescale_imx6dlsabresd
freescale_imx6qsabreauto_defconfig - Build for freescale_imx6qsabreauto
freescale_imx6qsabresd_defconfig - Build for freescale_imx6qsabresd
freescale_imx6sololiteevk_defconfig - Build for freescale_imx6sololiteevk
freescale_imx6sxsabresd_defconfig - Build for freescale_imx6sxsabresd
freescale_imx6ulevk_defconfig - Build for freescale_imx6ulevk
freescale_mpc8315erdb_defconfig - Build for freescale_mpc8315erdb
freescale_p1010rdb_pa_defconfig - Build for freescale_p1010rdb_pa
freescale_p2020ds_defconfig - Build for freescale_p2020ds
galileo_defconfig - Build for galileo
kb9202_defconfig - Build for kb9202
lego_ev3_defconfig - Build for lego_ev3
mini2440_defconfig - Build for mini2440
minnowboard_defconfig - Build for minnowboard
minnowboard_max-graphical_defconfig - Build for minnowboard_max-graphical
minnowboard_max_defconfig - Build for minnowboard_max
mx53loco_defconfig - Build for mx53loco
nitrogen6sx_defconfig - Build for nitrogen6sx
nitrogen6x_defconfig - Build for nitrogen6x
nitrogen7_defconfig - Build for nitrogen7
odroidc2_defconfig - Build for odroidc2
olimex_a20_olinuxino_lime2_defconfig - Build for olimex_a20_olinuxino_lime2
olimex_a20_olinuxino_lime_defconfig - Build for olimex_a20_olinuxino_lime
olimex_a20_olinuxino_lime_mali_defconfig - Build for olimex_a20_olinuxino_lime_mali
olimex_a20_olinuxino_micro_defconfig - Build for olimex_a20_olinuxino_micro
olimex_imx233_olinuxino_defconfig - Build for olimex_imx233_olinuxino
openblocks_a6_defconfig - Build for openblocks_a6
orangepipc_defconfig - Build for orangepipc
pandaboard_defconfig - Build for pandaboard
qemu_aarch64_virt_defconfig - Build for qemu_aarch64_virt
qemu_arm_versatile_defconfig - Build for qemu_arm_versatile
qemu_arm_vexpress_defconfig - Build for qemu_arm_vexpress
qemu_m68k_mcf5208_defconfig - Build for qemu_m68k_mcf5208
qemu_m68k_q800_defconfig - Build for qemu_m68k_q800
qemu_microblazebe_mmu_defconfig - Build for qemu_microblazebe_mmu
qemu_microblazeel_mmu_defconfig - Build for qemu_microblazeel_mmu
qemu_mips64_malta_defconfig - Build for qemu_mips64_malta
qemu_mips64el_malta_defconfig - Build for qemu_mips64el_malta
qemu_mips_malta_defconfig - Build for qemu_mips_malta
qemu_mipsel_malta_defconfig - Build for qemu_mipsel_malta
qemu_ppc64_pseries_defconfig - Build for qemu_ppc64_pseries
qemu_ppc_g3beige_defconfig - Build for qemu_ppc_g3beige
qemu_ppc_mpc8544ds_defconfig - Build for qemu_ppc_mpc8544ds
qemu_ppc_virtex_ml507_defconfig - Build for qemu_ppc_virtex_ml507
qemu_sh4_r2d_defconfig - Build for qemu_sh4_r2d
qemu_sh4eb_r2d_defconfig - Build for qemu_sh4eb_r2d
qemu_sparc64_sun4u_defconfig - Build for qemu_sparc64_sun4u
qemu_sparc_ss10_defconfig - Build for qemu_sparc_ss10
qemu_x86_64_defconfig - Build for qemu_x86_64
qemu_x86_defconfig - Build for qemu_x86
qemu_xtensa_lx60_defconfig - Build for qemu_xtensa_lx60
qemu_xtensa_lx60_nommu_defconfig - Build for qemu_xtensa_lx60_nommu
qmx6_defconfig - Build for qmx6
raspberrypi0_defconfig - Build for raspberrypi0
raspberrypi2_defconfig - Build for raspberrypi2
raspberrypi3_defconfig - Build for raspberrypi3
raspberrypi_defconfig - Build for raspberrypi
riotboard_defconfig - Build for riotboard
s6lx9_microboard_defconfig - Build for s6lx9_microboard
sheevaplug_defconfig - Build for sheevaplug
snps_aarch64_vdk_defconfig - Build for snps_aarch64_vdk
snps_axs101_defconfig - Build for snps_axs101
snps_axs103_defconfig - Build for snps_axs103
snps_hs38_smp_vdk_defconfig - Build for snps_hs38_smp_vdk
snps_hs38_vdk_defconfig - Build for snps_hs38_vdk
stm32f429_disco_defconfig - Build for stm32f429_disco
stm32f469_disco_defconfig - Build for stm32f469_disco
telit_evk_pro3_defconfig - Build for telit_evk_pro3
ts5x00_defconfig - Build for ts5x00
udoo_quad_defconfig - Build for udoo_quad
via_imx6_vab820_defconfig - Build for via_imx6_vab820
wandboard_defconfig - Build for wandboard
warpboard_defconfig - Build for warpboard
zynq_microzed_defconfig - Build for zynq_microzed
zynq_zc706_defconfig - Build for zynq_zc706
zynq_zed_defconfig - Build for zynq_zed
我使用:make at91sam9g45m10ek_defconfig
编译:make
然后就等待他自己下载并安装了
然后在output/image/下生成烧写文件了
看到了吧,很简单吧,之光根文件系统就折腾了好久。
当然,现在编译的程序一般不能在板子上运行,不然还要移植工作的人怎么活。下面的任务就是探索这个buildroot并进行开发板的移植和linux的深入学习了