Как правильно редактировать дерево устройств? и где это ? (Мета-sunxi) - PullRequest
0 голосов
/ 09 ноября 2018

В настоящее время я создаю основные минимальные изображения Yocto (с meta-sunxi) для оранжевой пи нулевой доски (дешевой китайской доски, которую я использую для своих исследований)

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

И он успешно загружается на моей плате, но в каталоге / dev у меня нет доступа к памяти SPI NOR. После некоторого поиска на оранжевой пи-вики я обнаружил, что мне нужна строка в моем дереве устройств: 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>;
    };

};

Но я не совсем понимаю, как действовать ... потому что я не могу найти, какие файлы мне нужно отредактировать? а может это не очень хорошая идея? я думаю, что лучше создать рецепты .bbappend нет?

информация, которую я собираю путем поиска в каталогах meta-sunxi:

в conf / orange-pi-zero / KERNEL_DEVICETREE = "sun8i-h2-plus-orangepi-zero. dtb " но в каталогах meta-sunxi нет файла "sun8i-h2-plus-orangepi-zero. dts "?

"sun8i-h2-plus-orangepi-zero. 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" и отредактировав ее? и какие файлы мне нужно отредактировать?

заранее спасибо за ваше время

Пьер.

1 Ответ

0 голосов
/ 11 ноября 2018

Компиляция изображения с помощью Yocto со слоем meta BSP извлекает ядро ​​(извлечение в 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. Если вы не хотите редактировать слой meta-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
...