Chinaunix首页 | 论坛 | 博客
  • 博客访问: 47356
  • 博文数量: 9
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 110
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-24 12:19
文章分类

全部博文(9)

文章存档

2017年(4)

2016年(5)

我的朋友

分类: 嵌入式

2016-10-28 10:32:28

一、格式化SD卡并建立分区

使用读卡器+microSD卡,操作环境:Ubuntu 16.04虚拟机。

读卡器连接上ubuntu系统,一般显示为sdbsdc等;如果是直接插入BBB,则显示为mmcblk0mmcblk1等。

建立分区

sudo fdisk /dev/sdb

使用命令
d,删除SD卡的所有分区,如sdb1sdb2等;
使用命令
n,新建第一个分区,分区大小96M;使用命令t更改分区类型,并使用c设置为FAT格式;
使用命令
n,新建第二个分区,分配剩余所有空间;
使用命令
a,选择第一个分区活动分区;
使用命令
w,将分区信息写入SD卡中。

注意:使用n新建分区时,提示选择是primary还是extended,两个分区都选择primary

参考资料:EVB335X MMC(TF_EMMC) Linux使用手册.pdf

格式化分区

格式化第一个分区:sudo mkfs.vfat -F 32 -n boot /dev/sdb1
格式化第二个分区:
sudo mkfs.ext4 -L rootfs /dev/sdb2
Vmware
中操作,断开SD卡连接,并重新连接。

二、解压ubootubuntu文件系统到SD

建立两个文件夹bootrootfs,并挂载到SD卡的两个分区:
mkdir boot rootfs

sudo mount /dev/sdb1 boot

sudo mount /dev/sdb2 rootfs

解压ubootUbuntu文件系统:
tar xf bone-uboot.tar.xz -C boot

tar xf ubuntu-trusty-14.04-rootfs-3.14.4.1-bone-armhf.com.tar.xz -C rootfs

sync; sudo umount boot; sudo umount rootfs

 

bone-uboot.tar.xz中包含MLOu-boot.imguEnv.txt

资源下载:

三、编译linux内核并打实时补丁

工具安装

安装linux文本界面支持库,及压缩包相关库

sudo apt-get install build-essential libncurses5{,-dev}

sudo apt-get install lzop

sudo apt-get install device-tree-compiler

 

以下可能会解决git下载出现错误提示:The remote end hung up unexpectedly

git config --global http.postBuffer 1048576000

git config --global core.compression 0

编译内核

1、建立文件夹

mkdir bbb

cd bbb

export BBB=$PWD

2、下载linux源码,及Xenomai源码

git clone beagle-kernel

wget

tar xvjf xenomai-2.6.3.tar.bz2

3、检出版本3.8,并打BeagleBone补丁

更高版本可能会有问题,故检出版本3.8

cd beagle-kernel

git checkout origin/3.8 -b 3.8

git reset --hard eae56c3

./patch.sh

4、Get a firmware that the kernel config will need (I’m not sure whether this firmware is really needed)

wget "" -O kernel/firmware/am335x-pm-firmware.bin

5、拷贝BBB的编译配置文件到当前config

cp configs/beaglebone kernel/.config

6、应用I-Pile补丁

cd kernel

patch -p1 < ../../xenomai-2.6.3/ksrc/arch/arm/patches/beaglebone/ipipe-core-3.8.13-beaglebone-pre.patch

patch -p1 < ../../xenomai-2.6.3/ksrc/arch/arm/patches/ipipe-core-3.8.13-arm-3.patch

patch -p1 < ../../xenomai-2.6.3/ksrc/arch/arm/patches/beaglebone/ipipe-core-3.8.13-beaglebone-post.patch

7、Run the Xenomai prepare-kernel script for the BeagleBone kernel

cd ../../xenomai-2.6.3/scripts

./prepare-kernel.sh --arch=arm --linux=../../beagle-kernel/kernel

8、配置内核

cd ../../beagle-kernel/kernel

make ARCH=arm menuconfig

Under CPU Power Management ---> CPU Frequency scaling, disable [ ] CPU Frequency scaling.(Note: Don’t know if it’s better to leave it enabled, read the comments!)

Under Real-time sub-system --->Drivers--->Testing drivers, enable everything.

9、编译内核及模块驱动

编译内核、dtb及驱动模块:

make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LOADADDR=0x80008000 zImage dtbs modules

内核及实时补丁拷贝到SD

1、挂载SD卡的文件系统

sudo mount /dev/sdb2 rootfs

2、编译内核的Xenomai驱动模块,并拷贝到SD

编译驱动模块ko文件,并安装到SD卡:

sudo cp beagle-kernel/kernel/arch/arm/boot/zImage rootfs/boot/zImage

cd beagle-kernel/kernel

切换到root权限,并执行:

source /etc/environment                            # 更新交叉编译器环境变量

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=$BBB/rootfs modules_install

拷贝xenomai驱动到SD卡的文件系统:

cd $BBB

mkdir rootfs/home//xeno_drivers

sudo cp beagle-kernel/kernel/drivers/xenomai/testing/*.ko rootfs/home//xeno_drivers/

3、编译Xenomai应用层补丁

同样,先切换到root权限:

cd xenomai-2.6.3

./configure CFLAGS="-march=armv7-a -mtune=cortex-a8 -mfloat-abi=hard -mfpu=neon -ffast-math" --host=arm-linux-gnueabihf

make

make DESTDIR=$BBB/rootfs install

 

注意:make install时,DESTDIR使用绝对路径。

注意:Xenomai应用层补丁在SD卡文件系统中的目录位置为/usr/xenomai

注意:编译需要root权限,需要先使用su命令切换到root,并加载arm-linux-gnueabihf-gcc的路径。

注意:configure时,使用--host的差别在于:编译生成的文件名,添加了arm-linux-gnueabihf-前缀。

4、拷贝dtb文件到SD文件系统

cd $BBB

sudo cp -f beagle-kernel/kernel/arch/arm/boot/dts/*.dtb /rootfs/boot/dtbs

5、实时补丁测试

Beaglebone Black按住Boot键,从SD卡开机启动。用户名及密码均为ubuntu

cd /home//xeno_drivers

sudo insmod xeno_klat.ko

sudo lsmod

cd /usr/xenomai/bin

测试用户实时模块:

./ latency

测试内核实时模块:

./ klatency

 

总结及注意事项

选用的ubuntu文件系统中,linux内核位于/boot目录,这个与SDboot分区中的uEnv.txt中的设置对应。文件名及链接见下图。

从上图及uEnv.txt可见,linux内核为zImage,而不是uImage

编译的dtb文件位于/boot/dtbs目录,linux加载的*.dtb文件由uboot决定,使用如下命令查看:

l  strings u-boot.img | grep fdtfile

 

 

linux内核及Xenomai补丁构建:

Installing Xenomai on Beaglebone using Debian distribution

 

Xenomai on the Beaglebone Black in 14 easy steps

 

Xenomai 3 on BeagleBone Black

 

 

四、补充

开启root用户

The root Account in Ubuntu is disabled by default because his password is not set. But if you'd like to use root Account by some reason, it's possible to use like follows.

it's possible to switch to root account with su command to set root account's password.

 

trusty@dlp:~$ sudo passwd root

[sudo] password for trusty:                        # own password

Enter new UNIX password:                        # set root password

Retype new UNIX password:                     # confirm

passwd: password updated successfully

 

按提示输入root新密码。完成后即可输入su,按提示输入密码即可登陆。

 

 

 

阅读(3746) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~