编辑设备树的好方法是什么?它在哪里?(meta-sunxi)



我目前已经为橙色pi零板(一种我用于研究的廉价中国板(构建了Yocto核心最小图像(带有meta sunxi(

https://github.com/linux-sunxi/meta-sunxi

它成功地在我的主板上启动,但在/dev/目录中,我无法访问SPI NOR内存。在orange pi wiki上搜索后,我发现我需要一些行到我的设备树:https://linux-sunxi.org/Orange_Pi_Zero#Installing_from_linux

&spi0 {
status = "okay";
flash: m25p80@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "winbond,w25q128";
reg = <0>;
spi-max-frequency = <40000000>;
};

};

但我真的不明白该怎么办。。。因为我找不到需要编辑的文件?也许这不是个好主意?我认为最好创建一个.bappend食谱,不是吗?

我通过在meta sunxi目录中搜索收集的信息:

在conf/orgnge pi zero/KERNEL_DEVICETREE="sun8i-h2-plus-orangepi-zzero.dtb"但是在meta sunxi目录中没有"sun8i-h2-plus-orangepi-zzero.dts"文件?

"sun8i-h2-plus-orangepi-zzero.dtb"文件存在于/build/tmp/deploy/images/orange-pi-zero/中,所以我真的不知道它是如何生成的?它只由yocto下载吗?(没有设备树编译?(

serachin在网上找到了sun8i-h2-plus-orangepi-zero.dts,网址:https://github.com/torvalds/linux/blob/master/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts

它包含了以下有趣的行:

&spi0 {
/* Disable SPI NOR by default: it optional on Orange Pi Zero boards */
status = "disabled";
flash@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "mxicy,mx25l1606e", "winbond,w25q128";
reg = <0>;
spi-max-frequency = <40000000>;
};

};

所以也许有人能给我一些建议,在我的董事会上添加SPI NOR支持?什么是最好的方法?做一些。bbappend?还是通过复制"meta sunxi"并编辑它来创建我自己的meta?然后我需要编辑哪些文件?

提前感谢您的时间

皮埃尔。

使用带有元BSP层的Yocto编译图像会拉取内核(checksout到tmp/work-shared/<MACHINE>/kernel-source/中(并进行编译,您可以从tmp/deploy/images/<MACHINE>/中获得最终的输出图像。但在您的情况下,主流内核默认情况下不会启用SPI,因此您需要在Linux内核源代码中启用它。

如果您已经安装了Yocto内部版本,那么您可以编辑设备树并准备补丁。您可以进入tmp/work-shared/orange-pi-zero/kernel-source/,编辑内核源代码并更改

status = "okay";

并使用通常的序列准备git补丁

git add arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts
git commit -s -m "Enable SPI by default"
git format-patch HEAD~

然后用两种方式附加此补丁。

  1. 编辑recipes-kernel/linux/linux-mainline_git.bb并将您的补丁文件添加到SRC_URI中。将补丁文件复制到recipes-kernel/linux/linux-mainline
  2. 如果您不想编辑元sunxi层,请在元层中创建linux-mainline_%.bbappend并执行同样的操作

下面的补丁可以直接应用于meta sunxi来修复这种情况。你可以在这里找到同样的东西。

From 3a1a3515d33facdf8ec9ab9735fb9244c65521be Mon Sep 17 00:00:00 2001
From: Parthiban Nallathambi <parthiban@linumiz.com>
Date: Sat, 10 Nov 2018 12:20:41 +0100
Subject: [PATCH] orange pi zero: Add SPI support by default
Signed-off-by: Parthiban Nallathambi <parthiban@linumiz.com>
---
...rm-dts-enable-SPI-for-orange-pi-zero.patch | 26 +++++++++++++++++++
recipes-kernel/linux/linux-mainline_git.bb    |  1 +
2 files changed, 27 insertions(+)
create mode 100644 recipes-kernel/linux/linux-mainline/0001-arm-dts-enable-SPI-for-orange-pi-zero.patch
diff --git a/recipes-kernel/linux/linux-mainline/0001-arm-dts-enable-SPI-for-orange-pi-zero.patch b/recipes-kernel/linux/linux-mainline/0001-arm-dts-enable-SPI-for-orange-pi-zero.patch
new file mode 100644
index 0000000..e6d7933
--- /dev/null
+++ b/recipes-kernel/linux/linux-mainline/0001-arm-dts-enable-SPI-for-orange-pi-zero.patch
@@ -0,0 +1,26 @@
+From 1676d9767686404211c769de40e6aa55642b63d5 Mon Sep 17 00:00:00 2001
+From: Parthiban Nallathambi <parthiban@linumiz.com>
+Date: Sat, 10 Nov 2018 12:16:36 +0100
+Subject: [PATCH] arm: dts: enable SPI for orange pi zero
+
+Signed-off-by: Parthiban Nallathambi <parthiban@linumiz.com>
+---
+ arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts
+index 0bc031fe4c56..0036065da81c 100644
+--- a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts
++++ b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts
+@@ -144,7 +144,7 @@
+ 
+ &spi0 {
+   /* Disable SPI NOR by default: it optional on Orange Pi Zero boards */
+-  status = "disabled";
++  status = "okay";
+ 
+   flash@0 {
+       #address-cells = <1>;
+-- 
+2.17.2
+
diff --git a/recipes-kernel/linux/linux-mainline_git.bb b/recipes-kernel/linux/linux-mainline_git.bb
index 5b8e321..9b2bcbe 100644
--- a/recipes-kernel/linux/linux-mainline_git.bb
+++ b/recipes-kernel/linux/linux-mainline_git.bb
@@ -27,5 +27,6 @@ SRCREV_pn-${PN} = "b04e217704b7f879c6b91222b066983a44a7a09f"
SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git;protocol=git;branch=master 
file://defconfig 
+   file://0001-arm-dts-enable-SPI-for-orange-pi-zero.patch 
"
S = "${WORKDIR}/git"
-- 
2.17.2

最新更新