beaglebone black 编译buildroot和kernel(SD启动和emmc烧写方法)

网上其他教程十有八九各种问题,要么拿着debian官方的固件,花了40分钟烧完,有什么意思呢,还是要自己完全编译固件并烧写进去才有意思,这个教程应该没有任何问题,国产版的没有emmc的请绕道



buildroot编译方法:

可能很多人并不知道buildroot是什么东西,以前很多人说起定制文件系统,就想起怎么一步一步拷贝文件最后生成rootfs,这种方式太原始了,有更先进的方式来生成文件系统,那就是buildroot,以后再不要提定制文件系统怎么弄怎么弄,直接上buildroot

下载最新版本buildroot

1、修改buildroot/configs/beaglebone_defconfig内容如下:
BR2_arm=y
BR2_cortex_a8=y
BR2_TARGET_GENERIC_GETTY_PORT=“console”
BR2_GLOBAL_PATCH_DIR=“board/beaglebone/patches”
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y
BR2_ROOTFS_POST_IMAGE_SCRIPT=“board/beaglebone/post-image.sh”
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
BR2_TARGET_UBOOT_CUSTOM_VERSION=y
BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE=“2018.07”
BR2_TARGET_UBOOT_BOARD_DEFCONFIG=“am335x_evm”
BR2_TARGET_UBOOT_NEEDS_DTC=y
BR2_TARGET_UBOOT_FORMAT_IMG=y
BR2_TARGET_UBOOT_SPL=y
BR2_TARGET_UBOOT_SPL_NAME=“MLO”
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_MTOOLS=y
BR2_PACKAGE_HOST_UBOOT_TOOLS=y
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y
BR2_PACKAGE_GLIBC=y
BR2_KERNEL_HEADERS_4_14=y
BR2_KERNEL_MIRROR=“http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/”
BR2_GNU_MIRROR=“https://mirrors.tuna.tsinghua.edu.cn/gnu/”
#BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_TOOLCHAIN=y
BR2_TOOLCHAIN_USES_GLIBC=y
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL=“toolchain-external-linaro-arm”
BR2_TOOLCHAIN_EXTERNAL_PREFIX=“arm-linux-gnueabihf”
BR2_PACKAGE_UTIL_LINUX=y
BR2_PACKAGE_UTIL_LINUX_BINARIES=y
BR2_PACKAGE_BC=y

2、make beaglebone_defconfig

3、修改buildroot/package/busybox目录的busybox.config文件,内容如下
CONFIG_MKFS_EXT2=y
CONFIG_MKFS_VFAT=y

3、make -j8

4、等待一段时间,有错误,需要编译Kernel,之后将kernel编译后的zImage和am335x-boneblack.dtb文件复制到buildroot/output/images/目录下重新make -j8

编译kernel前先配置交叉工具链:

1、下载交叉工具链

2、解压到指定的目录,然后gedit ~./profile将gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf/bin目录添加到PATH路径,之后source ~/.profile使能,或者重启系统(不懂的用户自行搜索)

kernel编译其他步骤:

1、kernel 下载路径:github地址国际惯例

2、配置,修改Makefile如下
VERSION = 4
PATCHLEVEL = 14
SUBLEVEL = 108
EXTRAVERSION =
NAME = Petit Gorille

ARCH=arm
CROSS_COMPILE=ccache arm-linux-gnueabihf-

3、make -j8,等待结束,在arch/arm/boot目录下会生成zImage文件,在arch/arm/boot/dts目录中下生成am335x-boneblack.dtb

SD卡烧写方法:

1、输入如下命令,格式化并一键分区SD卡
#sudo sfdisk --force /dev/sdb << EOF
1,104447,b,*
,
EOF

#sudo mkfs.vfat /dev/sdb1
#sudo mkfs.ext4 /dev/sdb2

2、拷贝buildroot/output/images目录下的这几个文件到/dev/sdb1分区(该分区大约50MB左右)
├── am335x-boneblack.dtb
├── MLO
├── u-boot.img
├── uEnv.txt
└── zImage

3、烧写rootfs.ext2到/dev/sdb2分区
#sudo umount /dev/sdb2
#sudo dd if=rootfs.ext2 of=/dev/sdb2 bs=128
#sync

4、修改uEnv.txt为如下内容,给emmc启动使用:
bootpart=0:1
devtype=mmc
bootdir=
bootfile=zImage
bootpartition=mmcblk1p2
set_mmc1=if test b o a r d n a m e = A 33515 B B ; t h e n s e t e n v b o o t p a r t i t i o n m m c b l k 1 p 2 ; f i s e t b o o t a r g s = s e t e n v b o o t a r g s c o n s o l e = t t y O 0 , 115200 n 8 r o o t = / d e v / board_name = A33515BB; then setenv bootpartition mmcblk1p2; fi set_bootargs=setenv bootargs console=ttyO0,115200n8 root=/dev/ boardname=A33515BB;thensetenvbootpartitionmmcblk1p2;fisetbootargs=setenvbootargsconsole=ttyO0,115200n8root=/dev/{bootpartition} rw rootfstype=ext4 rootwait
uenvcmd=run set_mmc1; run set_bootargs;run loadimage;run loadfdt;printenv bootargs;bootz ${loadaddr} - ${fdtaddr}

4、打包MLO和u-boot.img和uEnv.txt到boot_partition.tar
sudo tar -cf boot_partition.tar MLO u-boot.img uEnv.txt

5、拷贝rootfs.ext2、boot_partition.tar、am335x-boneblack.dtb和zImage到/dev/sdb2分区

至此,SD卡工作完毕

emmc烧写方法:

1、插入SD卡,按住S2按键,给板子上电,就会从SD卡启动系统,输入root进系统

2、给emmc一键分区
#sfdisk --force /dev/mmcblk1 << EOF
1,104447,b,*
,
EOF

3、格式化emmc分区
#mkfs.vfat /dev/mmcblk1p1
#mkfs.ext2 /dev/mmcblk1p2

4、解压boot_partition.tar到emmc p1分区
#mount /dev/mmcblk1p1 /tmp/
#tar -xf /boot_partition.tar -C /tmp/
#sync
#umount /tmp

5、解压rootfs.ext2到emmc p2分区
#dd if=/rootfs.ext2 of=/dev/mmcblk1p2 bs=128
#sync

6、其他收尾工作
#mount /dev/mmcblk1p2 /tmp/
#mkdir /tmp/boot/
#cp /am335x-boneblack.dtb /zImage /tmp/boot
#sync

7、拔掉SD卡,重启系统

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值