22カーネル内のat 24-eepromデバイスを使用して駆動
5396 ワード
at 24-eepromデバイス駆動カーネル内の構成オプション:
カーネルミラーを再編成して更新する.
更新カーネルミラーシステムが起動すると、デバイスドライバがカーネルミラーに組み込まれているかどうかを確認できます.
デバイス駆動ソース:drivers/misc/eeprom/at 24.c
at 24 c 02 eepromがボード上の0番目のコントローラに接続されている場合、デバイスツリーには:
make menuconfig ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
Device Drivers --->
Misc devices --->
EEPROM support --->
I2C EEPROMs / RAMs / ROMs from most vendors
カーネルミラーを再編成して更新する.
make Image ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
更新カーネルミラーシステムが起動すると、デバイスドライバがカーネルミラーに組み込まれているかどうかを確認できます.
^_^ / # ls /sys/bus/i2c/drivers/
at24/
デバイス駆動ソース:drivers/misc/eeprom/at 24.c
814 static struct i2c_driver at24_driver = {
815 .driver = {
816 .name = "at24",
817 .acpi_match_table = ACPI_PTR(at24_acpi_ids),
818 },
819 .probe = at24_probe,
820 .remove = at24_remove,
821 .id_table = at24_ids,
822 };
, at24 i2c , id_table i2c (compatible ).
132 static const struct i2c_device_id at24_ids[] = {
133 /* needs 8 addresses as A0-A2 are ignored */
134 { "24c00", AT24_DEVICE_MAGIC(128 / 8, AT24_FLAG_TAKE8ADDR) },
135 /* old variants can't be handled with this generic entry! */
136 { "24c01", AT24_DEVICE_MAGIC(1024 / 8, 0) },
137 { "24cs01", AT24_DEVICE_MAGIC(16,
138 AT24_FLAG_SERIAL | AT24_FLAG_READONLY) },
139 { "24c02", AT24_DEVICE_MAGIC(2048 / 8, 0) },
140 { "24cs02", AT24_DEVICE_MAGIC(16,
141 AT24_FLAG_SERIAL | AT24_FLAG_READONLY) },
142 { "24mac402", AT24_DEVICE_MAGIC(48 / 8,
...
, i2c compatible .
at24_probe , i2c .
, /sys/bus/i2c/ / "eeprom" , eeprom .
at 24 c 02 eepromがボード上の0番目のコントローラに接続されている場合、デバイスツリーには:
i2c0: i2c@01c2ac00 {
...
myeeprom {
compatible = "24c02";
reg = <0x50>;
};
};
. , :
^_^ / # ls /sys/bus/i2c/devices/
0-0050
i2c :
^_^ / # ls /sys/bus/i2c/drivers/at24/
0-0050/ bind uevent unbind
, eeprom :
^_^ / # echo "kkkk" > /sys/bus/i2c/devices/0-0050/eeprom
^_^ / # cat /sys/bus/i2c/devices/0-0050/eeprom