首页 > 其他分享 >香橙派Zero3 全志H618设备树插件编译

香橙派Zero3 全志H618设备树插件编译

时间:2024-09-15 17:24:07浏览次数:14  
标签:插件 h616 全志 香橙 wakkk dtbo pi sun50i

基本信息

全志H618
SDK: 香橙派官方提供SDK
虚拟机: Ubuntu22.04
整体的SDK文件夹名称为:orangepi-build-next
SDK中Linux内核路径:orangepi-build-next/kernel/orange-pi-5.4-sun50iw9

编译环境指定

首先需要指定交叉编译器:
在SDK中的toolchains文件夹中含有很多编译器:
在这里插入图片描述
对于H618使用的交叉编译器是gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu
所以首先导出环境变量,用来后续编译的时候可以直接执行编译器指令:

export PATH=$PATH:/home/wakkk/H618/orangepi-build-next/toolchains/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu/bin

注意里面的部分地址需要修改为你的地址!!!

设备树编译指令

make dtbs ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu-

无论对于Linux内核的编译还是modules还是dts的编译都需要指定ARCH 和CROSS_COMPILE环境变量
之后在修改好设备树之后就可以执行这个指令来编译了

设备树插件示例编写demo

为什么是编写插件而不是直接改写设备树呢?一个是对于原始版本的设备树很多人都去修改过,但是修改的部分无论如何都是无法正常加载,还有就是很多时候都是不建议修改原始设备树的,而且使用插件还是更为方便的。
本次的demo仅仅是加入一个简单的节点,并没有实际的功能,仅仅是验证整个编译的流程,以及可能踩坑的地方。

建立文件

我们在这个设备树插件的专用文件夹中编写新的插件:

/home/wakkk/H618/orangepi-build-next/kernel/orange-pi-5.4-sun50iw9/arch/arm64/boot/dts/sunxi/overlay

sunxi中是原始的设备树文件
而overlay中是设备树插件的文件
在overlay文件夹中我们新建一个文件: wakkk.dts

/dts-v1/;
/plugin/;

/ {
    fragment@0 {
        target-path = "/";
        __overlay__ {

            wakkk_node {
                compatible = "wakkk,orangepi-zero-3";
                status = "okay";
            };

        };
    };
};

新建了一个节点,名称为“wakkk_node”

为了使得这个设备树插件能够正常编译,我们需要修改overlay文件夹中的Makefile

# SPDX-License-Identifier: GPL-2.0
dtbo-$(CONFIG_ARCH_SUNXI) += \
	sun50i-h616-ph-i2c1.dtbo \
	sun50i-h616-ph-i2c2.dtbo \
	sun50i-h616-ph-i2c3.dtbo \
	sun50i-h616-ph-i2c4.dtbo \
	sun50i-h616-pi-i2c0.dtbo \
	sun50i-h616-pi-i2c1.dtbo \
	sun50i-h616-pi-i2c2.dtbo \
	sun50i-h616-ph-pwm12.dtbo \
	sun50i-h616-ph-pwm34.dtbo \
	sun50i-h616-pi-pwm1.dtbo \
	sun50i-h616-pi-pwm2.dtbo \
	sun50i-h616-pi-pwm3.dtbo \
	sun50i-h616-pi-pwm4.dtbo \
	sun50i-h616-ph-uart2.dtbo \
	sun50i-h616-pi-uart2.dtbo \
	sun50i-h616-pi-uart3.dtbo \
	sun50i-h616-pi-uart4.dtbo \
	sun50i-h616-ph-uart5.dtbo \
	sun50i-h616-powerkey.dtbo \
	sun50i-h616-usb0-host.dtbo \
	sun50i-h616-spi0-spidev.dtbo \
	sun50i-h616-spi1-cs0-spidev.dtbo \
	sun50i-h616-spi1-cs1-spidev.dtbo \
	sun50i-h616-spi1-cs0-cs1-spidev.dtbo \
	sun50i-h616-disable-leds.dtbo \
	sun50i-h616-disable-uart0.dtbo \
	sun50i-h616-zero2w-disable-led.dtbo \
	wakkk.dtbo

targets += $(dtbo-y) $(scr-y) $(dtbotxt-y)

always		:= $(dtbo-y) $(scr-y) $(dtbotxt-y)
clean-files	:= *.dtbo *.scr

就是在dtbo-$(CONFIG_ARCH_SUNXI) +=中加入了刚放的wakkk.dtbo
这样就可以在编译之后生成wakkk.dtbo了

随后,我们在kernel主目录下进行编译:(注意一定要首先导出编译器环境变量,对于每个终端都是)

make dtbs ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu-

编译之后我们便可以看见产生的wakkk.dtbo
在这里插入图片描述
我们将编译好的dtbo文件传入开发板中,并放入文件夹:

cp /root/wakkk/wakkk.dtbo /boot/dtb/sunxi/overlay/sun50i-h616-wakkk.dtbo

注意,这里面将dtbo文件名称加入了一个sun50i-h616前缀,后续会有说明,若无这个前缀则无法正常加载。
放入开发板中的/boot/dtb/sunxi/overlay/文件夹下即可,这个文件夹还有默认编译好的dtbo文件: 可见都是sun50i-h616开头
在这里插入图片描述
但是仅仅是放进去但是无法正常加载,我们还需要修改文件:/boot/orangepiEnv.txt
我们只需要在overlays中加入"wakkk"即可

root@orangepizero3:/boot# cat orangepiEnv.txt
verbosity=1
bootlogo=false
console=both
disp_mode=1080p60
fb0_width=1920
fb0_height=1080
debug_uart=ttyAS0
overlay_prefix=sun50i-h616
rootdev=UUID=097c0934-864c-4961-9bf6-4ab53f3c5f5a
rootfstype=ext4
overlays=spi1-cs1-spidev wakkk
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u

注意两个地方:
第一个:overlay_prefix这个表示仅仅是识别前缀为sun50i-h616的设备树插件,所以如果设备树插件不是这个前缀则无法加载,即使后面的overlays已经设置也没有效果。
第二个: overlays这个表示仅仅加载名称含有spi1cs1-spidevwakkk的设备树插件,可见对于overlays文件夹中的设备树插件并不是全部加载的,这里有一个进一步筛选的流程。
这样,首先经过前缀的筛选,再经过名称的筛选,我们可以正常加载自己的设备树插件。
PS:对于orangepi config 命令实现对于系统的配置也是通过修改这个文件实现的,也就是对于很多外设例如IIC SPI等等,很多并不是默认加载的,在设置中开启之后于是在这个文件中“使能”对应的设备树插件,从而实现外设的加载控制。

重启开发板 查看加载状态

若一切配置正常,重启后我们可以看见我们编写的节点:“wakkk_node”
在这里插入图片描述

标签:插件,h616,全志,香橙,wakkk,dtbo,pi,sun50i
From: https://blog.csdn.net/m0_54943420/article/details/142286102

相关文章

  • 【Geoserver使用】常用插件介绍(一)
    文章目录前言一、MBStyleStyling(mapbox样式插件)1.下载2.使用效果二、CSSStyling(css样式插件)1.下载2.使用效果三、YSLDStyling(ysld样式插件)1.下载2.使用效果总结前言之前写了一篇Geoserver插件使用的文章,【Geoserver使用】ysld样式插件的使用。今天就来看下有......
  • 【好用安全保密】不用插件,压缩js、html、css、code【一眼就会系列】【亲测有效】
    ​仅用离线版Notepad搞定。不用插件及辅助工具,有效保证了文件信息安全。(一般发布版本都是无注释的-压缩文件和已编译文件。为了信息安全性,所有都是离线-区域网研发。)​ 总结:先把文本中注释去掉。notepad++ 【编辑】-【空白字符操作】-【移除行首和行尾空格】点击任意......
  • 直接编辑jar包的IDEA插件 JarEditor
    JarEditor:是一款不需要解压就可以直接编辑jar包的IDEA插件,使得jar包文件的编辑变得便捷和高效。一、功能特点无需解压即可直接编辑JAR包内的class文件和资源文件在JAR包内可以添加、删除、重命名文件或目录可以搜索JAR包内的内容可以将文件或目录复制到剪......
  • AI带货直播插件的五大基础功能和源代码!
    随着人工智能技术的飞速发展,AI带货直播插件已成为电商领域的重要工具,这类插件通过集成先进的人工智能技术,不仅提升了直播的效率和互动性,还大大增强了用户体验和转化率。一、AI带货直播插件的五大基础功能1、自动化内容生成:a、利用深度学习算法,自动生成直播内容,如文本、图像和视频。......
  • PbootCMS编辑器无法上传图片:后端配置项没有正常加载,上传插件不能正常使用!
    在PBootCMS中遇到编辑器无法上传图片的问题时,通常是因为后端配置项没有正常加载导致的。以下是具体的解决步骤:1.检查时区配置文件位置文件路径:\core\extend\ueditor\php\controller.php行号:大约第4行修改内容打开文件:打开 \core\extend\ueditor\php\controller......
  • Qt自定义插件plugin的开发和调用
    1.需求描述设备管理组件保存了设备信息和通道信息到sqlite数据库,其他组件也想要访问这个数据库中的内容;需要开发一个自定义插件,用于提供接口给其他组件访问数据库; 开发环境vs2015+Qt5.9.62.插件介绍插件主要面向接口编程,通过接口实现功能的扩展,而不需要访问.lib文件。插件在......
  • Cilium网络插件
    一、基础知识:eBPF和XDP1.1BPF全称为“BerkeleyPacketFilter”,于1997年自Linux2.1.75版本的内核引入。基于寄存器(CPU之上的小型存储空间)的虚拟机,运行于内核空间。主要功能包括:负责运行从用户空间(通过系统调用)注入的代码而无须对内核进行编程(开发内核模块)。使用自定义的64......
  • Notepad++ 使用 及 插件开发 记录
    Notepad++使用及插件开发记录Notepad++是一款免费的开源的跨平台的文本编辑器。支持语法高亮显示、语法折叠功能、宏、插件。类似软件有EmEditor、EditPad、Notepad2及Windows自带Notepad等。Notepad++和EmEditor功能更强。EmEditor打开文件更快,但是不开源、不免费、也没有D......
  • 尤雨溪推荐的拖拽插件,支持Vue2/Vue3 VueDraggablePlus
    大家好,我是「前端实验室」爱分享的了不起~今天在网上看到尤雨溪推荐的这款拖拽组件,试了一下非常不错,这里推荐给大家。说到拖拽工具库,非大名鼎鼎的的Sortablejs莫属。它是前端领域比较知名的,且功能强大的工具。但我们直接使用Sortablejs的情况很少,一般都是使用基于它的......
  • 人工智能 | ChatGPT 插件开发
    学习目标掌握ChatGPTApi的基本使用。L1.ChatGPT应用L2.GPT与代码分析结合L3.AutoGPT与ChatGPT 【当前阶段】L4.专属领域大语言模型应用L5.打造企业私有版大语言模型目录简介与官方文档环境准备示例简介学习价值:大部分市面上的人工智能应用都是基于API进行封装与改造。为......