Beaglebone Black开发环境搭建(uboot、kernel、文件系统、Xenomai)

Beaglebone Black开发环境搭建(2017/03/12)

UBoot 编译

  1. 安装交叉编译器:sudo apt-get install gcc-arm-linux-gnueabihf
    • arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
  2. 下载uboot源码:git clone git://git.denx.de/u-boot.git
    • 下载速度奇慢,只有10KB/s
      • [ ] 方案1:tsocks git clone git://git.denx.de/u-boot.git
        • 才40KB/s,偶尔会高一点,还是太慢。
      • [x] 方案2:用迅雷下载ftp://ftp.denx.de/pub/u-boot/u-boot-2016.09.tar.bz2
        • 几分钟就可以下载完成。
  3. 编译uboot
    make clean
    make distclean
    make am335x_boneblack_defconfig
    ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
    make
  4. 制作UBoot SD启动卡
    • 清空SD分区表:sudo dd if=/dev/zero of=/dev/mmcblk0 bs=1024 count=1024
    • fdisk
      1. 输入x(extra functionality),设置sector=63、heads=255、cylinders=
      2. 输入n,创建大小为1G的分区(我们的boot分区)。
      3. 输入t->c,改变分区为fat32格式。
      4. 输入a,设置磁盘可启动。
      5. mkfs.vfat /dev/mmcblk0p1
    • 复制MLO到新创建的分区,然后再复制u-boot.img过去。
    • 插入SD卡即可启动uboot。
  5. 待了解问题:
    • [ ] u-boot.img和u-boot.bin的区别
    • [ ] u-boot环境变量存放的位置如何设置

文件系统

  1. 下载:https://rcn-ee.com/rootfs/eewiki/minfs/debian-8.6-minimal-armhf-2016-09-17.tar.xz
  2. fdisk,在SD卡上创建ext4分区,创建完需要调用mkfs.ext4初始化分区。
  3. 挂载刚刚创建的分区
  4. 解压debian-8.6-minimal-armhf-2016-09-17.tar.xz,解压出来的内容是一个.tar文件包,和另外两个文件。将.tar文件解压到挂载点。
  5. umount挂载点。

内核编译

流程

  1. 下载源码

    • [ ] tsocks git clone https://github.com/beagleboard/linux.git
    • [x] 下载: https://codeload.github.com/beagleboard/linux/zip/4.4
  2. 编译uImage、dtb
    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bb.org_defconfig
    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage dtbs LOADADDR=0x80008000 -j4

  3. 复制镜像文件和设备树二进制文件到boot分区
    sudo cp arch/arm/boot/dts/am335x-boneblack.dtb ../mnt_boot/
    sudo cp arch/arm/boot/uImage ../mnt_boot/

  4. 设置uboot环境变量
    loadaddr=0x80008000
    fdtaddr=0x80F80000
    loadimage=fatload mmc 0 ${loadaddr} uImage
    loadfdt=fatload mmc 0 ${fdtaddr} am335x-boneblack.dtb
    bootcmd=run loadimage; run loadfdt; bootm ${loadaddr} - ${fdtaddr}
    bootargs=console=ttyS0,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait

  5. 插入内存卡,启动!

遇到的问题:

  • 步骤2
    • [x]arch/arm/boot/compressed/Makefile:178: recipe for target 'arch/arm/boot/compressed/piggy.lzo' failed
      • sudo apt-get install liblzo2-dev(没有用)
      • sudo apt-get install lzop
    • [x] "mkimage" command not found - U-Boot images will not be built
      arch/arm/boot/Makefile:83: recipe for target 'arch/arm/boot/uImage' failed

      • export PATH=$PATH:/tools

参考

  • Building BBB Kernel
  • How to Cross compile kernel for BeagleBone Black ?
  • 制作更新BeagleBone-Black的Bootloader内核和文件系统
  • Compiling and Deploying BeagleBone Black Kernel

Xenomai版本内核安装

安装Xenomai常规的方法是往已有的Linux内核打patch,然而Beaglebone Black官方已经提供打好patch的内核分支,我们只需要checkout该版本的内核,编译安装即可。

流程

  1. 下载内核源码: https://codeload.github.com/beagleboard/linux/zip/4.4-xenomai
  2. 配置内核,去掉容易引起高延时的配置。
    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bb.org_defconfig
    make ARCH=arm menuconfig

    反选选项:
    CPU Power Management -> CPU Frequency scaling -> CPU Frequency scaling
    Kernel Features -> Contiguous Memory Allocator
    Kernel Features -> Allow for memory compaction

  3. 编译内核
    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage dtbs LOADADDR=0x80008000 -j4
  4. 复制镜像文件和设备树二进制文件到boot分区,同内核编译章节步骤3。

  5. 安装Xenomai libraries。

    • 下载:http://xenomai.org/downloads/xenomai/stable/latest/xenomai-3.0.3.tar.bz2
    • 安装到rootfs下面。
      ./configure CFLAGS="-march=armv7-a -mfpu=vfp3" \
      LDFLAGS="-march=armv7-a -mfpu=vfp3" --host=arm-linux-gnueabihf \
      --with-core=cobalt --enable-smp
      sudo make DESTDIR=/home/ting/build/BBB/linux/mnt_rootfs install
  6. 内核编译章节步骤4、5。

运行:

参考

  • Xenomai on the Beaglebone Black in 14 easy steps
  • Installing Xenomai 3.x

你可能感兴趣的:(Xenomai)