Автор Тема: шины периферии: I²C и SPI  (Прочитано 294 раз)

Оффлайн Olej

шины периферии: I²C и SPI
« : Ноябрь 26, 2018, 04:03:45 pm »
У кого есть практический опыт (или ссылки, публикации, информация) по программной организации и поддержке шин в Orange Pi ... и в Armbian в частности, поскольку от конфигурации ОС здесь многое зависит: модули, отображение в /sys, в /dev и т.д.

Вот в Rapsberry Pi SPI отображается, например в /dev/spidev0.0, /dev/spidev0.1 (см. Использование SPI из Python на Raspberry Pi) ... здесь такого нет...

root@orangepione:/lib/modules/4.14.70-sunxi/kernel/drivers# sudo modprobe spidev

root@orangepione:/lib/modules/4.14.70-sunxi/kernel/drivers# lsmod | grep spidev
spidev                 16384  0

root@orangepione:/lib/modules/4.14.70-sunxi/kernel/drivers# modinfo spidev
filename:       /lib/modules/4.14.70-sunxi/kernel/drivers/spi/spidev.ko
alias:          spi:spidev
license:        GPL
description:    User mode SPI device interface
author:         Andrea Paterniani, <a.paterniani@swapp-eng.it>
alias:          of:N*T*Csemtech,sx1301C*
alias:          of:N*T*Csemtech,sx1301
alias:          of:N*T*Cge,achcC*
alias:          of:N*T*Cge,achc
alias:          of:N*T*Clineartechnology,ltc2488C*
alias:          of:N*T*Clineartechnology,ltc2488
alias:          of:N*T*Crohm,dh2228fvC*
alias:          of:N*T*Crohm,dh2228fv
depends:
intree:         Y
name:           spidev
vermagic:       4.14.70-sunxi SMP mod_unload ARMv7 thumb2 p2v8
parm:           bufsiz:data bytes in biggest supported SPI message (uint)

Написано: User mode SPI device interface - как осуществляется эта поддержка из user space?

Оффлайн Olej

Re: шины периферии: I²C и SPI
« Ответ #1 : Ноябрь 26, 2018, 05:27:47 pm »
У кого есть практический опыт (или ссылки, публикации, информация) по программной организации и поддержке шин в Orange Pi
olej@orangepione:~$ sudo apt-get install i2c-tools
...
Setting up i2c-tools (3.1.2-3) ...
Processing triggers for man-db (2.7.6.1-2) ...

olej@orangepione:~$ sudo i2cdetect -l
i2c-0   i2c             DesignWare HDMI                         I2C adapter

olej@orangepione:~$ sudo  i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: 30 31 32 33 34 35 36 37 -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Детальнее о поддержке I²C из пространства пользователя (и из своего C кода) здесь: I2c в Linux из пространства пользователя.
Вот здесь каким-то образом поддержка I²C из пространства ядра ... для HDMI, наверное:
olej@orangepione:~$ ls -l /dev/i2c-0
crw-rw---- 1 root i2c 89, 0 Nov 25 23:17 /dev/i2c-0
Как ней пользоваться, т.е. ядерной поддержкой?

Оффлайн Olej

Re: шины периферии: I²C и SPI
« Ответ #2 : Ноябрь 26, 2018, 05:38:29 pm »
Вот в Rapsberry Pi SPI отображается, например в /dev/spidev0.0, /dev/spidev0.1 (см. Использование SPI из Python на Raspberry Pi) ... здесь такого нет...
Вот относительно SPI нашёл такое: Включение и настройка SPI (SPI0 и SPI1) на Orange Pi на ядрах 3.4 (Ubuntu 16.04) и 4.14 (Ubuntu 18.04)
Цитировать
04.11.2018
...
Если брать классический Orange Pi с GPIO на 40 пин, то мы имеем полтора SPI порта.
...
По умолчанию шина SPI0 на Orange Pi отключена. Для включения выполните следующие действия.
...
В ядре linux 4.14 Вам нужно редактировать не файл .fex, а файл /boot/armbianEnv.txt(на Armbian) или /boot/uEnv.txt. Данные файлы можно редактировать в ручную и с помощью armbian-config, последний вариант подойдёт только для тех, у кого установлено ОС от Armbian.

Оффлайн ua3nbw

Re: шины периферии: I²C и SPI
« Ответ #3 : Ноябрь 26, 2018, 05:57:40 pm »
не надо modprobe spidev
читайте /boot/dtb/overlay/README.sun8i-h3-overlays

Включить SPI на сборках с 4.4.x ядром можно поместив код в /boot/armbienEnv.txt :
overlays=spi-spidev
param_spidev_spi_bus=0
param_spidev_spi_cs=0
param_spidev_max_freq=1000000

root@orangepipc:~# ls /dev/sp*
/dev/spidev0.0
« Последнее редактирование: Ноябрь 26, 2018, 06:16:52 pm от ua3nbw »

Оффлайн Olej

Re: шины периферии: I²C и SPI
« Ответ #4 : Ноябрь 26, 2018, 06:46:25 pm »
Включить SPI на сборках с 4.4.x ядром можно поместив код в /boot/armbienEnv.txt :
overlays=spi-spidev
param_spidev_spi_bus=0
param_spidev_spi_cs=0
param_spidev_max_freq=1000000
olej@orangepione:~$ uname -a
Linux orangepione 4.14.70-sunxi #265 SMP Wed Sep 19 10:01:19 CEST 2018 armv7l GNU/Linux
Хотел сделать по вашей рекомендации...
И неожиданно увидел ... странные вещи в /boot (давно туда не заглядывал, может после каких-то обновлений):
root@orangepione:/boot# ls -l armbianEnv.*
-rw-rw-r-- 1 root root 350 Nov 25 23:17 armbianEnv.txt
-rw-r--r-- 1 root root 201 Aug 17 18:01 armbianEnv.txt.0
-rw-rw-r-- 1 root root 350 Nov 25 23:17 armbianEnv.txte
-rw-r--r-- 1 root root   0 Nov 26 16:24 armbianEnv.txt.out

root@orangepione:/boot# cat armbianEnv.txt.0
verbosity=1
logo=disabled
console=both
disp_mode=1920x1080p60
overlay_prefix=sun8i-h3
rootdev=UUID=a769471e-a787-40d3-8298-d31c195f1bb9
rootfstype=ext4
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u

root@orangepione:/boot# cat armbianEnv.txt
  �f@�ҥ�usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u
Файл armbianEnv.txt - не текстовый, а какой-то производный от armbianEnv.txt.0 !  :-[

Оффлайн Lipton

Re: шины периферии: I²C и SPI
« Ответ #5 : Ноябрь 27, 2018, 03:49:56 pm »
ну хз, у меня ядро новее и текстовый файл только один...
lipton@orangepipc:~$ cat /boot/armbianEnv.txt  
verbosity=1
logo=disabled
console=both
disp_mode=1920x1080p60
overlay_prefix=sun8i-h3
rootdev=UUID=3d863bb3-b616-4229-94e7-8c92ac95501a
rootfstype=ext4
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u,0x0bc2:0x231a:u
lipton@orangepipc:~$ uname -a
Linux orangepipc 4.14.78-sunxi #412 SMP Fri Oct 26 11:37:04 CEST 2018 armv7l GNU/Linux

Оффлайн Olej

Re: шины периферии: I²C и SPI
« Ответ #6 : Ноябрь 28, 2018, 05:30:09 pm »
ну хз, у меня ядро новее и текстовый файл только один...
Что-то там такое происходит с /boot/armbianEnv.txt
Вот пишут на форуме:
Цитировать
September 19
...
... but I just trying fresh Armbian 5.59 next on nanopim1, orangepi zero dan nanopiduo. After first boot, armbianEnv.txt content is replaced with these :

Цитировать
#   $OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sb
and armbianEnv.txte file is created with content from original armbianEnv.txt. I verify that armbianEnv.txte is not exist on sd card just after flashing.
I tried with 4 Sandisk brand and I can replicate the phenomenon. Is this a bug ?
Когда на их форуме разберусь что там у них происходит после Armbian 5.59 - напишу сюда ... если кто раньше не подскажет.

P.S. И там же далее:
Цитировать
I retried above case again with orange pi zero using armbian bionic and stretch. The phenomenon happen on both image. Additional things that I found out is that :

after first boot : armbianEnv.txte created, armbianEnv.txt still has original content

after second boot: armbianEnv.txt content replaced with sshd_config
« Последнее редактирование: Ноябрь 28, 2018, 05:36:36 pm от Olej »

Оффлайн Olej

Re: шины периферии: I²C и SPI
« Ответ #7 : Ноябрь 28, 2018, 07:29:35 pm »
Вот после какого-то очередного обновления:
root@orangepione:/boot# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 9.6 (stretch)
Release: 9.6
Codename: stretch

root@orangepione:/boot# uname -a
Linux orangepione 4.14.70-sunxi #265 SMP Wed Sep 19 10:01:19 CEST 2018 armv7l GNU/Linux
Стало:
root@orangepione:/boot# ls -l /boot/armbianEnv.*
-rw-rw-r-- 1 root root 350 Nov 27 12:25 /boot/armbianEnv.txt
-rw-r--r-- 1 root root 201 Aug 17 18:01 /boot/armbianEnv.txt.0
-rw-rw-r-- 1 root root 350 Nov 27 12:25 /boot/armbianEnv.txte
-rw-r--r-- 1 root root   0 Nov 26 17:08 /boot/armbianEnv.txt.out
- /boot/armbianEnv.txt - не текстовый файл
- по дате видно, что он обновлялся вчера (но система перезагружалась сегодня, т.е. при загрузке изменений не было)
- об этом обсуждают что-то на форуме Armbian, об обновлении до Armbian 5.59, но невнятно ... вопросы есть, но ответов нет

Оффлайн Olej

Re: шины периферии: I²C и SPI
« Ответ #8 : Ноябрь 28, 2018, 07:34:02 pm »
Вот после какого-то очередного обновления:
И вот такое ещё... (на картинке) - одни пустые позиции.

P.S. Хоть накатывай по-новой систему свежую на SD...

P.P.S. По-серьёзному я мог начудить, думаю, только занимаясь вот этим онанизмом с mali400: mali на mainline ядре

P.P.S. Может у кого возникли какие соображения, или видел кто что-то похожее?