是否有适合BeagleBone Black平台任何地方的Linux内核的可靠构建?我遵循了here指令以及其他许多地方,但都没有。这两个模块都没有构建(.ko文件只是没有构建,在上面的链接的情况下找不到),或者缺少内核的构建目标。我在32位x86 Ubuntu 14.04上使用Linaro ARM编译器(arm-linux-gnueabihf-gcc)交叉编译。
具体来说,我已经检查了BeagleBone Git repository,分支3.8,3.11,3.12,2.13和3.14的来源。我还检查了第三方git clone here。我遇到的问题如下:
在我可以编译内核的情况下,我使用U-Boot中的TFTP引导服务器将其复制到内存中的新鲜的vanilla板,然后在内存中引导内核。但是,没有一个成功编译的内核可以正常工作,因为它们缺少模块/ firmware / dtbs。什么可能导致不正确的修补?当然,编写代码和补丁的开发人员必须对其进行测试,因此我的工作空间可能有问题,但我无法想象此时的情况。我使用的命令与链接1的命令相同。
答案 0 :(得分:8)
我也按照你提到的链接,我能够启动BBB。我正在使用https://www.kernel.org/中的主线内核。以下是我遵循的步骤
创建命令
make ARCH = arm CROSS_COMPILE = arm-linux-gnueabi- omap2plus_defconfig -j4
make ARCH = arm CROSS_COMPILE = arm-linux-gnueabi- uImage dtbs LOADADDR = 0x80008000 -j4。
产生的图像存在于以下路径中。
arch / arm / boot / uImage uImage
拱/臂/引导/ DTS / am335x-boneblack.dtb
此后编译模块。
make ARCH = arm CROSS_COMPILE = arm-linux-gnueabi- modules -j4
使用的编译器是arm-linux-gnueabi-gcc。有了这个,我能够成功启动并运行模块。它的优点是我们使用的是最新的内核。
答案 1 :(得分:4)
我终于能够使用新的内核3.14启动BBB
我正在安装debian的beagleboneblack rev C上。
我基本上都遵循这里的步骤 http://dev.ardupilot.com/wiki/building-for-beaglebone-black-on-linux/
内核下载:(我没有使用git,带宽有限......) https://github.com/beagleboard/linux/archive/3.14.tar.gz
构建(在Ubuntu 14.04上完成):(我不确定某些步骤是否相关或冗余)
安装mkimage
sudo apt-get install libssl-dev
wget ftp://ftp.denx.de/pub/u-boot/u-boot-latest.tar.bz2
tar -xjf u-boot-latest.tar.bz2
cd u-boot-2014.10/
make sandbox_defconfig tools-only
sudo install tools/mkimage /usr/local/bin
从http://arago-project.org/git/projects/?p=am33x-cm3.git;a=tree;f=bin;h=75a5de7aa94ff6ccbfb1b3b9dc80bc2fe5b423bf;hb=refs/heads/master下载am335x-pm-firmware.bin并复制到内核目录
构建内核
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- bb.org_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- uImage dtbs LOADADDR=0x80008000 -j4
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules -j4
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- am335x-boneblack.dtb -j4
安装模块
mkdir -p ../export/rootfs
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=../export/rootfs/ modules_install
现在将模块复制到beaglebone black中的/ lib / modules /目录(为模块创建一个新目录)
cd ../export/rootfs/lib/modules/
rsync -avz 3.14.25/ root@192.168.1.3:/lib/modules/3.14.25/
接下来是将 zImage和am335x-boneblack.dtb 复制到BBB
将 zImage 从arch/arm/boot
复制到BBB的/boot/uboot/
将 am335x-boneblack.dtb 从arch/arm/boot/dts
复制到/boot/uboot/dtbs
如果您直接用新的zImage和am335x-boneblack.dtb替换现有的zImage和am335x-boneblack.dtb并且它们无法正常工作,那么您将遇到麻烦。我将新映像存储在/ boot / uboot中的文件夹中,并在uboot中操作环境变量以选择我想要的那个。
我知道,我本可以使用tftpserver ..
我希望它有助于某人。我花了很多时间在这上面应该非常简单:(
答案 2 :(得分:1)
是的,文档确实已经过时(大约在2011年或2012年初)并且非常令人困惑。首先,github / beagleboard / kernel区域表示不推荐使用beagleboard / linux作为内核。但是,它仍然被积极地使用1)添加尚未被内核树接受的补丁,以及2)专门为beaglebone devel构建添加内核配置。内核树中的bb.org_defconfig没有打开一些调试内容。
所以... github / beagleboard / linux和github / beagleboard / kernel在BBB上为我(3.14)工作。如果您想要标准图像,请使用" linux&#34 ;;如果你想要一个铃声和口哨图像使用"内核"。
此外,更新的交叉编译器在APT的gcc-arm-linux-gnueabihf中。确保你有" hf" (硬浮点单位)版本。无需依赖linaro。
我让项目滚动后我会更新文档....