从零开始为香橙派orangepi zero 3移植主线linux——2.linux kernel

发布于:2024-03-31 ⋅ 阅读:(228) ⋅ 点赞:(0)

从零开始为香橙派orangepi zero 3移植主线linux——2.linux kernel


0.环境搭建补档

  linux kernel验证时,使用tftp服务从ubuntu主机下载启动更加方便,等到验证无误后再一次性烧写到tf卡。所以在此记录一下有关的环境安装,方便后续查找。

NFS服务

ubuntu下安装:

sudo apt-get install nfs-kernel-server rpcbind

打开配置文件,并添加自己的NFS路径:

sudo vim /etc/exports

追加内容:

<path_to _directory> *(rw,sync,no_root_squash)

重启NFS服务:

sudo /etc/init.d/nfs-kernel-server restart

TFTP服务

ubuntu下使用以下命令安装相关工具:

sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd

创建tftpboot所使用的目录,并赋予权限:

mkdir <path_to _directory>
chmod 777 <directory>

ubuntu下新建文件/etc/xinetd.d/tftp,并写入如下内容:

server tftp
{
	socket_type = dgram
	protocol = udp
	wait = yes
	user = root
	server = /usr/sbin/in.tftpd
	server_args = -s <path_to _directory>
	disable = no
	per_source = 11
	cps = 100 2
	flags = IPv4
}

打开/etc/default/tftpd-hpa文件,将其修改为如下所示内容:

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="<path_to _directory>"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"

最后重启tftp服务:

sudo service tftpd-hpa restart

一、linux kernel编译

在linux源码目录下,使用以下命令编译:

export PATH=$PATH:<path_to_toolchain>/aarch64-none-linux-gnu/bin
make ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- defconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- menuconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- -j20

由于arm64平台比较新,所以各大厂商的支持也比较差,只有一个默认的defconfig配置,笔者暂时只能基于这个配置文件进行适配。在menuconfig的platform selection菜单中,去掉其他厂商的SoC支持,只保留全志平台和ARMv8 software model两个选项。
在这里插入图片描述
其他的设备驱动只能后续再进行适配和精简,将此配置文件暂时保存备份。编译生成的文件为arch/arm64/boot/Imagearch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dtb

二、运行

暂时使用tftp方式下载内核镜像并启动,将上述文件放入ubuntu的tftp目录,并赋予相关权限。开发板进入到uboot后手动配置相关网络参数,并设置如下启动参数:

setenv ipaddr 192.168.1.105         //开发板 IP 地址
setenv gatewayip 192.168.1.1        //开发板默认网关
setenv netmask 255.255.255.0        //开发板子网掩码
setenv serverip 192.168.1.103       //服务器地址,也就是 Ubuntu 地址
setenv bootargs 'console=ttyS0,115200'

setenv boottftp 'tftp 40080000 Image; tftp 4fa00000 sun50i-h618-orangepi-zero3.dtb; booti 0x40080000 - 0x4fa00000'
saveenv

在这里插入图片描述
在这里插入图片描述
可以看到已经能够正常加载内核镜像,但有一些驱动还没有正确加载,并且由于没有根文件系统,最终是不能正常启动的。

本文含有隐藏内容,请 开通VIP 后查看