LINUX.ORG.RU

Как включить SPI на OrangePi One (armbian)

 , ,


0

2

Идем на https://docs.armbian.com/User-Guide_Allwinner_overlays/#device-tree-overlays и читаем:

1. Check the README.<soc-id>-overlays in /boot/dtb/overlay/ (32-bit SoCs) or /boot/dtb/allwinner/overlay/ (64-bit SoCs) for a list of provided overlays, their required and optional parameters

2. Add names of overlays you want to activate to overlays= line in /boot/armbianEnv.txt, separated with spaces

3. Add required parameters with their values to /boot/armbianEnv.txt, one per line

4. Add optional parameters with their values to /boot/armbianEnv.txt if you want to change the default value, one per line

5. If you didn’t find the required overlay or want to change one of provided overlays, refer to “Using custom overlays” section

6. Reboot

Следуем инструкциям:

/boot/dtb/overlay# ls README.sun4i-a10-overlays sun4i-a10-spdif-out.dtbo sun5i-a13-i2c1.dtbo sun5i-a13-uart3.dtbo sun7i-a20-spdif-out.dtbo sun8i-h3-cir.dtbo sun8i-h3-uart2.dtbo README.sun5i-a13-overlays sun4i-a10-spi-jedec-nor.dtbo sun5i-a13-i2c2.dtbo sun7i-a20-analog-codec.dtbo sun7i-a20-spi-add-cs1.dtbo sun8i-h3-fixup.scr sun8i-h3-uart3.dtbo README.sun7i-a20-overlays sun4i-a10-spi-spidev.dtbo sun5i-a13-nand.dtbo sun7i-a20-can.dtbo sun7i-a20-spi-jedec-nor.dtbo sun8i-h3-i2c0.dtbo sun8i-h3-usbhost0.dtbo README.sun8i-h3-overlays sun4i-a10-uart2.dtbo sun5i-a13-pwm.dtbo sun7i-a20-fixup.scr sun7i-a20-spi-spidev.dtbo sun8i-h3-i2c1.dtbo sun8i-h3-usbhost1.dtbo sun4i-a10-analog-codec.dtbo sun4i-a10-uart3.dtbo sun5i-a13-spi0.dtbo sun7i-a20-i2c1.dtbo sun7i-a20-uart2.dtbo sun8i-h3-i2c2.dtbo sun8i-h3-usbhost2.dtbo sun4i-a10-can.dtbo sun4i-a10-uart4.dtbo sun5i-a13-spi1.dtbo sun7i-a20-i2c2.dtbo sun7i-a20-uart3.dtbo sun8i-h3-pps-gpio.dtbo sun8i-h3-usbhost3.dtbo sun4i-a10-fixup.scr sun4i-a10-uart5.dtbo sun5i-a13-spi2.dtbo sun7i-a20-i2c3.dtbo sun7i-a20-uart4.dtbo sun8i-h3-pwm.dtbo sun8i-h3-w1-gpio.dtbo sun4i-a10-i2c1.dtbo sun4i-a10-uart6.dtbo sun5i-a13-spi-jedec-nor.dtbo sun7i-a20-i2c4.dtbo sun7i-a20-uart5.dtbo sun8i-h3-spdif-out.dtbo sun4i-a10-i2c2.dtbo sun4i-a10-uart7.dtbo sun5i-a13-spi-spidev.dtbo sun7i-a20-mmc2.dtbo sun7i-a20-uart6.dtbo sun8i-h3-spi-add-cs1.dtbo sun4i-a10-nand.dtbo sun4i-a10-w1-gpio.dtbo sun5i-a13-uart0.dtbo sun7i-a20-nand.dtbo sun7i-a20-uart7.dtbo sun8i-h3-spi-jedec-nor.dtbo sun4i-a10-pps-gpio.dtbo sun5i-a13-analog-codec.dtbo sun5i-a13-uart1.dtbo sun7i-a20-pps-gpio.dtbo sun7i-a20-w1-gpio.dtbo sun8i-h3-spi-spidev.dtbo sun4i-a10-pwm.dtbo sun5i-a13-fixup.scr sun5i-a13-uart2.dtbo sun7i-a20-pwm.dtbo sun8i-h3-analog-codec.dtbo sun8i-h3-uart1.dtbo

дальше, я так и не понял что значат эти вот sun8i-h3 и sun4i-a10 вторая часть — это типа кристалл, а первая — архитектура АРМа? Кто в теме, поясните, ибо ЯННП

ну да ладно, не понял — компенсируем отвагой, кастую /proc/cpuinfo, вижу следующее

... еще 3 таких же ядра... processor : 3 model name : ARMv7 Processor rev 5 (v7l) BogoMIPS : 22.85 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc07 CPU revision : 5

Hardware : Allwinner sun8i Family Revision : 0000 Serial : 02c00081f5affcb1

получается у меня sun8i что бы это не значило. продолжаем следовать первоначальной инструкции и читаем что написано в ридми для нужного мне оверлея (что за оверлей?)

# cat /boot/dtb/overlay/README.sun8i-h3-overlays This document describes overlays provided in the kernel packages For generic Armbian overlays documentation please see https://docs.armbian.com/User-Guide_Allwinner_overlays/

### Platform:

sun8i-h3 (Allwinner H3)

### Platform details:

Supported pin banks: PA, PC, PD, PG

Both SPI controllers have only one hardware CS pin exposed, adding fixed software (GPIO) chip selects is possible with a separate overlay

### Provided overlays:

- analog-codec - cir - i2c0 - i2c1 - i2c2 - pps-gpio - pwm - spdif-out - spi-add-cs1 - spi-jedec-nor - spi-spidev - uart1 - uart2 - uart3 - usbhost0 - usbhost1 - usbhost2 - usbhost3 - w1-gpio

### Overlay details:

[...]

### spi-spidev

Activates SPIdev device node (/dev/spidevX.Y) for userspace SPI access, where X is the bus number and Y is the CS number

SPI 0 pins (MOSI, MISO, SCK, CS): PC0, PC1, PC2, PC3 SPI 1 pins (MOSI, MISO, SCK, CS): PA15, PA16, PA14, PA13

Parameters:

param_spidev_spi_bus (int) SPI bus to activate SPIdev support on Required Supported values: 0, 1

param_spidev_spi_cs (int) SPI chip select number Optional Default: 0 Supported values: 0, 1 Using chip select 1 requires using «spi-add-cs1» overlay

param_spidev_max_freq (int) Maximum SPIdev frequency Optional Default: 1000000 Range: 3000 - 100000000

[...]

идем в /boot/armbianEnv.txt и приводим к виду:

# cat /boot/armbianEnv.txt

[...]

overlays=sun8i-h3-spi-spidev param_spidev_spi_bus=0 usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u

ребутимся, устройства нет, dmesg молчит

куда смотреть? спасибо, звиняйте за простыню

★★★★★

У вас не корректные параметры в overlays, вот пример для Orange PI Zero который завёлся у меня без проблем:

verbosity=1
logo=disabled
console=serial
disp_mode=1920x1080p60
monitor=none
overlay_prefix=sun8i-h3
rootdev=UUID=c6d5c841-3071-4135-aaa0-bc86a16801f5
rootfstype=ext4
overlays=usbhost2 usbhost3 spi-spidev
param_spidev_spi_bus=0
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u
P.S. Не знаю как на One, но у Zero на нулевой шине висит флешка, поэтому нужно в параметрах выставлять param_spidev_spi_bus=1

wheelman
()
Ответ на: комментарий от wheelman

Ну я попробовал — не помогло.

ЗЫ: у тебя у самого 0...

pihter ★★★★★
() автор топика

я так и не понял что значат эти вот sun8i-h3 и sun4i-a10 вторая часть — это типа кристалл, а первая — архитектура АРМа?

sun8i - семейство (на базе каких ядер или связок ядер построен кристалл, например Cortex-A7)

H3 - тип кристалла (конфигурация, сколько ядер, какая частота, тип GPU, etc.. )

Ну я попробовал — не помогло.

Попробуй запустить armbian-config. Поставь галочку в System->Hardware->spi-spidev. Save->Reboot.

Если не заведётся, то лог загрузки платы с UART-а в студию в купе с dmesg и lsmod.

ЗЫ: у тебя у самого 0...

На днях шил U-Boot в флеш, забыл вернуть.

wheelman
()
Ответ на: комментарий от wheelman

Попробуй запустить armbian-config

пробовал, при попытке зайти в hardware, сыпет в консоль тонну такого:

Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
потом окошко показывает, там колонка чекбоксов и все пустое кругом. Чет не заводится, короче. Обновлял. Armbian stable 5.9

dmesg: https://pastebin.com/hEHgPBga

lsmod:

# lsmod
Module                  Size  Used by
snd_soc_hdmi_codec     16384  1
evdev                  20480  1
zstd                   16384  4
zram                   24576  2
sun8i_codec_analog     24576  0
snd_soc_simple_card    16384  0
sun8i_adda_pr_regmap    16384  1 sun8i_codec_analog
sun4i_i2s              20480  2
snd_soc_simple_card_utils    16384  1 snd_soc_simple_card
snd_soc_core          114688  5 sun4i_i2s,sun8i_codec_analog,snd_soc_hdmi_codec,snd_soc_simple_card_utils,snd_soc_simple_card
snd_pcm_dmaengine      16384  1 snd_soc_core
snd_pcm                69632  4 sun4i_i2s,snd_pcm_dmaengine,snd_soc_hdmi_codec,snd_soc_core
lima                   40960  0
snd_timer              24576  1 snd_pcm
snd                    45056  4 snd_soc_hdmi_codec,snd_timer,snd_soc_core,snd_pcm
gpu_sched              20480  1 lima
sun4i_gpadc_iio        16384  0
ttm                    57344  1 lima
soundcore              16384  1 snd
dw_hdmi_i2s_audio      16384  0
dw_hdmi_cec            16384  0
industrialio           49152  1 sun4i_gpadc_iio
sun8i_ths              16384  0
gpio_keys              20480  0
cpufreq_dt             16384  0
uio_pdrv_genirq        16384  0
thermal_sys            57344  3 cpufreq_dt,sun8i_ths,sun4i_gpadc_iio
uio                    16384  1 uio_pdrv_genirq
ip_tables              20480  0
x_tables               20480  1 ip_tables

уарта трехвольтового под рукой нет — завтра из дома притащу — выложу.

pihter ★★★★★
() автор топика

А ядро mainline? А то они в своё время старьё с блобами легаси выкладывали, там железо конфигурируется иначе.

По логам с юарта будет видно, грузится ли DT. Вот пример успешной загрузки оверлеев:

## Executing script at 43100000
U-boot loaded from SD
Boot script loaded from mmc
328 bytes read in 2 ms (160.2 KiB/s)
6746481 bytes read in 516 ms (12.5 MiB/s)
7494376 bytes read in 571 ms (12.5 MiB/s)
Found mainline kernel configuration
29807 bytes read in 15 ms (1.9 MiB/s)
780 bytes read in 9 ms (84 KiB/s)
Applying kernel provided DT overlay sun8i-h3-spi-spidev.dtbo
504 bytes read in 5 ms (97.7 KiB/s)
Applying kernel provided DT overlay sun8i-h3-usbhost2.dtbo
504 bytes read in 5 ms (97.7 KiB/s)
Applying kernel provided DT overlay sun8i-h3-usbhost3.dtbo
1177 bytes read in 6 ms (191.4 KiB/s)
Applying kernel provided DT overlay sun8i-h3-spi-add-cs1.dtbo
611 bytes read in 7 ms (85 KiB/s)
Applying user provided DT overlay spi-double-spidev-cs.dtbo
4155 bytes read in 5 ms (811.5 KiB/s)
Applying kernel provided DT fixup script (sun8i-h3-fixup.scr)
## Executing script at 44000000
## Loading init Ramdisk from Legacy Image at 43300000 ...
   Image Name:   uInitrd
   Image Type:   ARM Linux RAMDisk Image (gzip compressed)
   Data Size:    6746417 Bytes = 6.4 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 43000000
wheelman
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.