本文介绍了Linux:从用户空间实例化:eeprom new_device的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

环境:x86/Ubuntu 14.04

Environment : x86 / Ubuntu 14.04

我想获得类似于

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

但是因为在x86中没有可用的设备树,所以我遵循Linux内核中的i2c/instantiating-device文档,并使用方法4:从用户空间实例化".

But because in x86 no Device Tree is available, I am follow i2c/instantiating-device document in the Linux kernel and use "Method 4: Instantiate from user-space".

实例化的过程:

  • 加载at24驱动程序
  • 加载i2c-dev驱动程序
  • 实例化:

  • Load at24 driver
  • Load i2c-dev driver
  • Instantiate:

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

  • dmesg中来自内核的响应:

  • Response from kernel in dmesg:

    i2c i2c-0: new_device: Instantiated device eeprom at 0x50
    

  • 目录创建为"0-0050".在/sys/bus/i2c/devices/i2c-0/0-0050

    为什么没有创建"eeprom"文件?

    Why the "eeprom" files are not created?

    P.S:

    该目录包含:

    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
    

    推荐答案

    实例化I2C设备时,请使用"24c32"而不是"eeprom".

    Use "24c32" instead of "eeprom" when instantiate I2C devices.

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

    在带有AT24C02 SPD EEPROM的板上,实例化总线2上的AT24C02

    In my board with AT24C02 SPD EEPROM, instantiate AT24C02 on bus 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
    

    这篇关于Linux:从用户空间实例化:eeprom new_device的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

  • 06-30 11:45