长沙网站设计工作室,微信公众号登陆平台,现在建网站挣钱吗,长春网站建设技术外包以下内容源于朱有鹏嵌入式课程的学习与整理#xff0c;如有侵权请告知删除。
一、概述 设备文件的创建#xff0c;主要涉及class_create()函数、device_create()函数。 class_create()函数用于自动创建 /sys/class/目录下的xxx目录。 device_create()函数用于自动创建 /dev/…以下内容源于朱有鹏嵌入式课程的学习与整理如有侵权请告知删除。
一、概述 设备文件的创建主要涉及class_create()函数、device_create()函数。 class_create()函数用于自动创建 /sys/class/目录下的xxx目录。 device_create()函数用于自动创建 /dev/目录下的xxx文件。 二、sys文件系统简介 1sys文件系统的设计思想 将内核的一些信息以文件的形式列在sys目录下如下所示。 rootubuntu:/sys# ls
block bus class dev devices firmware fs hypervisor kernel module power
rootubuntu:/sys# cd block/
rootubuntu:/sys/block# ls
loop0 loop2 loop4 loop6 ram0 ram10 ram12 ram14 ram2 ram4 ram6 ram8 sda sr1
loop1 loop3 loop5 loop7 ram1 ram11 ram13 ram15 ram3 ram5 ram7 ram9 sr0
rootubuntu:/sys/block# cd ../bus/
rootubuntu:/sys/bus# ls
ac97 cpu hid mdio_bus platform sdio virtio
acpi eisa i2c mmc pnp serio workqueue
clockevents event_source isa pci rapidio spi xen
clocksource gameport machinecheck pci_express scsi usb xen-backend
rootubuntu:/sys/bus# cd ../class/
rootubuntu:/sys/class# ls
ata_device bsg firmware leds powercap rfkill spi_host vtconsole
ata_link devfreq gpio mdio_bus power_supply rtc spi_master watchdog
ata_port dma graphics mem ppdev scsi_device spi_transport
backlight dmi hidraw misc ppp scsi_disk thermal
bdi drm hwmon mmc_host printer scsi_generic tty
block enclosure i2c-adapter net pwm scsi_host vc
bluetooth extcon input pci_bus regulator sound virtio-ports
rootubuntu:/sys/class# 应用层通过读写该目录下的文件可以和内核进行一些信息交互。 2设备类的概念 内核将设备或者说驱动进行分类比如和声音有关的、和时钟有关的等等不同的类别的内容放在不同的/sys/class/xxx目录下如上所示。xxx是由class_creat()函数创建的。 3/sys/class/xxx/ 目录中的文件的作用 目录下有deveventpowersubsystem等文件。 通过这些文件可以在应用层得知内核的一些数据结构与状态这也是sys文件系统的意义。 例如cat dev得知dev中内容是设备号例如event是内核给udev传递的信息的地方。 4题外话 1proc文件系统的功能类似于sys文件系统的功能比如通过cat /proc/devices可以查看已经注册的块设备和字符设备的主设备号和设备名称。早期一般是通过/proc文件系统来获知系统信息的后来因为没有统一规划导致/proc文件系统杂乱于是内核维护者开发了sys文件系统进行了统一规划。 2/dev/xxx是设备文件和/proc/devices或者/sys/class/xxx/dev有什么关系吗 见字符设备驱动基础3——使用register_chrdev()函数注册字符设备中的描述。“proc目录是一个虚拟文件系统可以为linux用户空间和内核空间提供交互它只存在于内存中而不占实际的flash或硬盘空间。/proc/devices/里的设备是加载驱动程序时生成的而/dev/下的设备是通过创建设备节点生成的用户通过此设备节点来访问内核里的驱动。” 二、函数追踪 1class_create()函数 class_create __class_create __class_register kset_register kobject_uevent内核发送uevent给应用层 2device_create()函数 device_create device_create_vargs kobject_set_name_vargs设置设备的名字 device_register注册设备 device_add kobject_add device_create_file这些函数都是用来创建/sys/class/xxx/中的内容的 device_create_sys_dev_entry devtmpfs_create_node device_add_class_symlinks device_add_attrs device_pm_add kobject_uevent