可靠构建BeagleBone Black的Linux内核

Ale*_*all 9 linux-kernel beagleboneblack

是否可以在任何地方为BeagleBone Black平台构建可靠的Linux内核?我按照这里的说明,以及许多其他地方,没有一个工作.这两个模块都没有构建(.ko文件只是没有构建,在上面的链接的情况下找不到),或者缺少内核的构建目标.我在32位x86 Ubuntu 14.04上使用Linaro ARM编译器(arm-linux-gnueabihf-gcc)交叉编译.

具体来说,我已经检查了BeagleBone Git存储库的源代码,分支3.8,3.11,3.12,3.13和3.14.我也检查了第三方混帐克隆这里.我遇到的问题如下:

  • 3.8:内核将编译(带有大量警告),但由于修补程序中运行patch.sh时修补程序中的错误导致模块无法编译.
  • 3.11:内核将编译(带有大量警告),但uImage-dtb.am335x-boneblack Make目标不会.编译模块失败,因为至少有一个文件具有不正确的补丁,导致产生错误的C语法.
  • 3.12:内核将与模块一起编译(带有大量警告).将内核和模块复制到电路板成功.引导内核失败,一旦启动从U-Boot中的引导命令开始,就会冻结.
  • 3.13,3.14:内核编译因许多语法错误而失败.
  • 来自TowerTech的3.8.13+:内核编译成功(有大量警告),模块编译失败,同样是由于patch.sh的补丁不正确.

在我可以编译内核的情况下,我使用U-Boot中的TFTP引导服务器将其复制到内存中的新鲜的vanilla板上,并在内存中引导内核.但是,没有一个成功编译的内核可以正常工作,因为它们缺少模块/ firmware/dtbs.什么可能导致不正确的修补?当然,编写代码和补丁的开发人员必须对其进行测试,因此我的工作区可能有问题,但我无法想象此时的情况.我使用的命令与链接1的命令相同.

小智 8

我也按照你提到的链接,我能够启动BBB.我正在使用https://www.kernel.org/中的主线内核.以下是我遵循的步骤

  1. 下载最新的内核.我的版本是3.18-rc4
  2. 使用"omap2plus_defconfig"这是beaglebone black的默认配置
  3. 命令是

    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

    弓/ ARM /开机/ DTS/am335x-boneblack.dtb

  4. 在此之后编译模块.

    make ARCH = arm CROSS_COMPILE = arm-linux-gnueabi- modules -j4

  5. 我以root用户身份使用busybox和NFS服务器

使用的编译器是arm-linux-gnueabi-gcc.有了这个,我能够成功启动并运行模块.它的优点是我们使用的是最新的内核.


pys*_*sup 5

我终于能够使用新内核 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
Run Code Online (Sandbox Code Playgroud)

http://arago-project.org/git/projects/?p=am33x-cm3.git;a=tree;f=bin;h=75a5de7aa94ff6ccbfb1b3b9dc80bc2fe5b423bf;hb=refs/heads/下载 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
Run Code Online (Sandbox Code Playgroud)

安装模块

mkdir -p ../export/rootfs
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=../export/rootfs/ modules_install
Run Code Online (Sandbox Code Playgroud)

现在将模块复制到 beaglebone black 中的 /lib/modules/ 目录(为模块创建一个新目录)

cd ../export/rootfs/lib/modules/
rsync -avz 3.14.25/ root@192.168.1.3:/lib/modules/3.14.25/
Run Code Online (Sandbox Code Playgroud)

接下来是将zImage和am335x-boneblack.dtb复制到BBB

复制的zImagearch/arm/boot/boot/uboot/BBB的

am335x-boneblack.dtb从复制arch/arm/boot/dts/boot/uboot/dtbs

如果你直接用新的替换现有的zImage和am335x-boneblack.dtb,它们不起作用,你会遇到麻烦。我将新图像存储在 /boot/uboot 的文件夹中,并在 uboot 中操作环境变量以选择我想要的。

我知道,我可以使用 tftpserver ..

我希望它可以帮助某人。我花了很多时间在这上面应该很简单:(


dtu*_*ene 1

是的,文档确实已经过时了(大约 2011 年或 2012 年初)并且非常令人困惑。首先,github/beagleboard/kernel 区域表示已弃用并使用 beagleboard/linux 作为内核。但是,它仍然被积极使用:1)添加尚未被内核树接受的补丁,2)专门为 beaglebone 开发版本添加内核配置。内核树中的 bb.org_defconfig 不会打开某些调试内容。

所以.. github/beagleboard/linux 和 github/beagleboard/kernel 都在 BBB 上为我(3.14)工作。如果你想要标准镜像,请使用“linux”;如果你想要一个花里胡哨的图像,请使用“kernel”。

此外,APT 中还有一个更新的交叉编译器,位于 gcc-arm-linux-gnueabihf。确保您有“hf”(硬浮点单元)版本。无需依赖 linaro。

项目启动后我将更新文档......