Linux: создание экземпляра из пространства пользователя: eeprom new_device - PullRequest
0 голосов
/ 25 сентября 2018

Среда: x86 / Ubuntu 14.04

Я хочу получить что-то похожее на

&i2c0 { 
    eeprom: eeprom@50 { 
        compatible = "at,24c32"; 
        reg = <0x50>; 
    }; 
};

Но поскольку в x86 нет дерева устройств, я следую за i2c/instantiating-device документом в Linuxядро и используйте «Метод 4: Создание экземпляра из пространства пользователя».

Процесс создания экземпляра:

  • Загрузка драйвера at24
  • Загрузка драйвера i2c-dev
  • Создание экземпляра:

    # echo eeprom 0x50 > /sys/bus/i2c/devices/i2c-0/new_device
    
  • Ответ от ядра в dmesg:

    i2c i2c-0: new_device: Instantiated device eeprom at 0x50
    
  • Каталог создан "0-0050" .Найден в /sys/bus/i2c/devices/i2c-0/0-0050

  • Этот каталог содержит несколько файлов, но в нем нет файла с именем "eeprom".

Почему файлы "eeprom" не создаются?

PS:

Каталог содержит:

root@peio-t52r:~/etxoh# ls -la /sys/bus/i2c/devices/i2c-0/0-0050
total 0
drwxr-xr-x 3 root root    0 sep 25 15:06 .
drwxr-xr-x 5 root root    0 sep 25 14:48 ..
-r--r--r-- 1 root root 4096 sep 25 15:06 modalias
-r--r--r-- 1 root root 4096 sep 25 15:06 name
drwxr-xr-x 2 root root    0 sep 25 15:06 power
lrwxrwxrwx 1 root root    0 sep 25 15:06 subsystem -> ../../../../../bus/i2c
-rw-r--r-- 1 root root 4096 sep 25 15:06 uevent

И файл "имя" содержит:

root@peio-t52r:~/etxoh# cat /sys/bus/i2c/devices/i2c-0/0-0050/name
eeprom

1 Ответ

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

Используйте «24c32» вместо «eeprom» при создании экземпляров устройств I2C.

# echo 24c32 0x50 > /sys/bus/i2c/devices/i2c-0/new_device

На моей плате с AT24C02 SPD EEPROM создайте экземпляр AT24C02 на шине 2

# echo 24c02 0x50 > /sys/class/i2c-adapter/i2c-2/new_device

Ядросообщение показывает

[21230.868376] at24 2-0050: 256 byte 24c02 EEPROM, writable, 1 bytes/write
[21230.868423] i2c i2c-2: new_device: Instantiated device 24c02 at 0x50

В каталоге содержится

root@:/sys/bus/i2c/devices/i2c-2/2-0050# ls
2-00500/  driver@  eeprom  modalias  name  power/  subsystem@  uevent

Файл eeprom:

root@:/sys/bus/i2c/devices/i2c-2/2-0052# hexdump -C eeprom 
00000000  23 11 0c 03 45 21 00 08  00 60 00 03 02 03 00 00  |#...E!...`......|
00000010  00 00 07 0d f8 0f 00 00  6e 6e 6e 11 00 6e f0 0a  |........nnn..n..|
00000020  20 08 00 05 00 f0 2b 34  28 00 78 00 14 3c 00 00  | .....+4(.x..<..|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 16 36 0b 35  |.............6.5|
00000040  16 36 0b 35 00 00 16 36  0b 35 16 36 0b 35 00 00  |.6.5...6.5.6.5..|
00000050  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000070  00 00 00 00 00 00 9c b5  00 00 00 00 e7 d6 0b e3  |................|
00000080  0f 11 02 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000090  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000000f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 db 08  |................|
00000100
...