基于am335x_bb_black的linux初步移植

linux的初步移植记录

1. kernel源码下载

借用国内代理下载linux源码,版本选择linux-3.19.1

https://mirror.tuna.tsinghua.edu.cn/kernel/v3.x/linux-3.19.1.tar.xz

解压:

xz -d linux-3.19.1.tar.xz

tar -xvf linux-3.19.1.tar

2. 交叉编译工具链

工具链版本:gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf

3. 编译内核

3.1 导出环境变量

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-	# 编译工具路径已导出在PATH中

3.2 编译及配置

3.2.1 配置

查看现有配置文件:ls arch/arm/configs

基于am335x_bb_black的linux初步移植

查看发现没有与am335x_beaglebone_black开发板相关的配置文件,因此从TI的sdk中拷贝出与beaglebone_black相关的配置文件。

SDK地址:https://github.com/beagleboard/kernel/tree/3.8

下载该项目中的configs/beaglebone,重命名为am335x_bbb_defconfig放置在arch/arm/configs目录下

执行配置:

make am335x_bbb_defconfig

make menuconfig

3.2.2 编译内核

make LOADADDR=0x82000000 uImage -j4

基于am335x_bb_black的linux初步移植

3.2.3 编译设备树

make am335x-boneblack.dtb

3.2.4 运行

拷贝image和dtb至tftp目录

sudo cp arch/arm/boot/uImage /var/lib/tftpboot

sudo cp arch/arm/boot/dts/am335x-boneblack.dtb /var/lib/tftpboot

tftp下载uImage和dtb:
基于am335x_bb_black的linux初步移植
运行kernel:bootm 82000000 - 83000000

启动kernel成功,如下:
基于am335x_bb_black的linux初步移植
因未制作根文件系统,因此Kernel启动后在尝试挂载根文件系统时会失败,下一节说明如何制作根文件系统并挂载
基于am335x_bb_black的linux初步移植

4. 根文件系统

说明:使用busybox制作最简单的根文件系统,开发板通过nfs挂载根文件系统(nfs相关设置自行百度查看,共享目录设置为$HOME/nfs/rootfs),需要注意的是,如使用ubunt18.04及以上版本的主机,在进行nfs相关设置的时候需要开启支持nfs2,因为uboot默认使用nfs2版本进行挂载。

4.1 下载busybox

下载busybox:wget http://www.busybox.net/downloads/busybox-1.25.1.tar.bz2

解压:tar -jxvf busybox-1.25.1.tar.bz2

4.2 配置及编译

export CROSS_COMPILE=arm-linux-gnueabihf-
cd busybox-1.25.1
make defconfig
make menuconfig		# 在menuconfig中选中 `Build BusyBox as a static binary (no shared libs)`
make install

4.3 构建根文件系统

mkdir $HOME/nfs/rootfs		# 创建根文件系统的目录
cp busybox1.25.1/_install/* $HOME/nfs/rootfs/ -r	# 拷贝busybox命令
cd $HOME/nfs/rootfs			# 进入该目录
mkdir dev mnt proc var tmp sys root lib opt	# 创建常用目录
sudo cp /opt/arm/gcc-linaro/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/lib/* lib/ -r
sudo mknod dev/tty1 c 4 1		# 创建tty设备
sudo mknod dev/tty2 c 4 2
sudo mknod dev/tty3 c 4 3
sudo mknod dev/tty4 c 4 4
cp busybox1.25.1/examples/bootfloppy/etc/* etc/ -r	# 拷贝最简单的init相关的文件到etc目录

5. 修改uboot的启动参数

开发主机ip:172.15.10.151

开发板ip:172.15.10.201

网关:172.15.10.1

子网掩码:255.255.255.0

kernel镜像:uImage

fdt镜像:am335x-boneblack.dtb

kernel加载地址:0x82000000

fdt加载地址:0x83000000

nfs目录:/home/cenyue/nfs/rootfs

修改uboot启动相关的环境变量

U-boot# set ipaddr 172.15.10.201
U-boot# set serverip 172.15.10.151
U-boot# set gatewayip 172.15.10.1
U-boot# set netmask 255.255.255.0
U-boot# set loadaddr 0x82000000
U-boot# set bootfile uImage
U-boot# set fdtaddr 0x83000000
U-boot# set fdtfile am335x-boneblack.dtb
U-boot# set rootpath /home/cenyue/nfs/rootfs
U-boot# set netargs 'setenv bootargs console=${console} ${optargs} root=/dev/nfs nfsroot=${serverip}:${rootpath},${nfsopts} rw ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}::eth0:off init=/linuxrc rootfstype=nfs rootwait=1'
U-boot# set netboot 'echo Booting from network ...; tftp ${loadaddr} ${bootfile}; tftp ${fdtaddr} ${fdtfile}; run netargs; bootm ${loadaddr} - ${fdtaddr}'
U-boot# set bootcmd 'run netboot'
U-boot# saveenv
U-boot# boot

登录成功:

基于am335x_bb_black的linux初步移植

基于am335x_bb_black的linux初步移植基于am335x_bb_black的linux初步移植 HinsShum 发布了8 篇原创文章 · 获赞 2 · 访问量 4651 私信 关注
上一篇:201871030105-陈啟程 常用源代码管理工具与开发工具


下一篇:拿到一个uboot 后,我都想添加一个属于自己的board文件以及include/configs/*.h 文件