新闻详情

新闻详情

首页 / 资讯中心 / 详情

linux下sysfs相关文件的创建生成

发布时间:2026/9/27 21:53:38来源:尧图网络
linux下sysfs相关文件的创建生成
alloc_chrdev_region()proc/devices新增条目alloc_chrdev_region()函数不会新创建生成新的文件而是会在/proc/devices文件中添加新的条目244表示自动分配的主设备号后续跟着的是alloc_chrdev_region()函数的入参#defineLED_DEVICE_NAMEled-proc/devcies// /proc/devices file, devid namealloc_chrdev_region(led.devid,led.minor,1,LED_DEVICE_NAME);class_create()/sys/class/classNameclass_create()函数创建一个设备类将会在/sys/class/路径下生成与入参类名一致的文件如示例中创建生成的/sys/class/led-class文件#defineLED_CLASS_NAMEled-class// /sys/class/led-class/led-devclass_create(THIS_MODULE,LED_CLASS_NAME);device_create()/dev/devName、/sys/class/className/devNamedevice_create()函数创建一个class下的设备#defineLED_DEV_NAMEled-dev// /dev/led-devdevice_create(led.led_class,NULL,led.devid,NULL,LED_DEV_NAME);modprobe moduleName/sys/module/moduleNamemodprobe leddriver.ko命令执行后在/sys/module路径下生成相应模块的文件夹/sys/module/moduleNameplatform_driver_register()/sys/module/moduleName/drivers/pdrv-driver-name使用platform_driver_register()完成platform_driver在platform总线的注册注册完成后在/sys/module/moduleName/drivers文件中添加相应的驱动名称即pdrv-driver-name。staticconststructof_device_idled_of_match[]{{.compatiblezhy,leds,},{},};staticstructplatform_driverled_driver{.probeled_probe,.removeled_remove,.driver{.nameled_paltform_driver,.of_match_tableled_of_match,},};platform_driver_register(led_driver);gpio_request()/sys/bus/platform/drivers/gpioLable使用gpio_request()完成gpio子系统的注册函数执行之后在/sys/bus/platform/drivers路径下添加相应的gpio lable文件夹gpio_request(led.gpio,led-gpio);platform_device_register()/sys/devices/platform/deviceName.deviceId使用platform_device_register()完成platform_device在platform总线的注册完成注册后将会在/sys/devices/platform路径下相应的设备文件夹如果只有一个该设备可以赋值xxx_device.id -1那么生成的设备文件夹的名称即为xxxxxx为struct platform_device xxx_device实例的结构体成员name即xxx_device-name如果不止一个该设备可以赋值xxx_device.id num那么生成的设备文件夹的名称即为xxx.num。// struct resource为设备的寄存器信息structresourcexxx_resource[]{[0]{.startSTART_PHYSICAL_ADDR0,// 起始地址以及终止地址均是实际的物理地址.endEND_PHYSICAL_ADDR0,// 地址以字节为单位.flagsIORESOURCE_MEM,},[1]{.startSTART_PHYSICAL_ADDR1,.endEND_PHYSICAL_ADDR1,.flagsIORESOURCE_MEM,},};structplatform_devicexxx_device{.namexxx,// 用于sysfs文件的创建以及与驱动的匹配.id-1,// 如果只有一个设备赋值为-1若有多个设备应设置不同的值此时该值也将用于sysfs文件的创建.resourcexxx_resource,.num_resourcesizeof(xxx_resource)/sizeof(structresource),.dev{.releasexxx_release,// 一般情况下不需要自定义}};staticint__initxxx_device_init(void){returnplatform_device_register(xxx_device);}module_init(xxx_device_init);设备树/sys/firmware/devicetree/base/sys/devices/和/sys/bus设备树中所有节点的信息都会按层次结构存放在/sys/firmware/devicetree/base文件夹下/proc/device-tree符号链接也是指向该路径。/sys/devices/和/sys/bus路径下也会根据设备树生成相应的文件这些都是注册过platform_device的如果使用platform总线的话platform device侧的代码一般就不需要再开发了led_classdev_register()/sys/devices/soc0/led/leds/led classdev nameled_classdev_register()负责完成led类设备的注册其完成后会创建生成/sys/devices/soc0/led/leds/led classdev name文件夹在该文件夹下可以通过想brightness、trigger等文件写入相应的值实现对led相应的控制。led-cdev.nameled--1;led-cdev.brightnessLED_OFF;led-cdev.max_brightnessLED_FULL;led-cdev.brightness_setled_brightness_set;led-cdev.brightness_set_blockingled_brightness_set_blocking;led_classdev_register(pdev-dev,led-cdev);如果对你有帮助欢迎点赞收藏有相关问题也可以评论讨论
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

P1043 数字游戏【洛谷算法习题】 2026/9/27 22:48:37

P1043 数字游戏【洛谷算法习题】

P1043 数字游戏 网页链接 P1043 数字游戏 题目描述 丁丁最近沉迷于一个数字游戏之中。这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易。游戏是这样的,在你面前有一圈整数(一共 nnn 个…

阅读更多 →
【基于 Swoole+Hyperf 的微服务实战】第七周·周五:综合运用 RabbitMQ 生产者、消费者、死信队列、TTL 延迟消息、幂等消费和事件机制 2026/9/27 22:48:37

【基于 Swoole+Hyperf 的微服务实战】第七周·周五:综合运用 RabbitMQ 生产者、消费者、死信队列、TTL 延迟消息、幂等消费和事件机制

【基于 SwooleHyperf 的微服务实战】第七周周五:综合运用 RabbitMQ 生产者、消费者、死信队列、TTL 延迟消息、幂等消费和事件机制今天我们进入第七周周五,也是异步消息章节的收官之战。我们将综合运用 RabbitMQ 生产者、消费者、死信队列、TTL 延迟消息…

阅读更多 →
【三个月 AI Agent 实战学习】Day 19:第一阶段测验准备 —— 手动模拟 ReAct 循环 2026/9/27 22:48:37

【三个月 AI Agent 实战学习】Day 19:第一阶段测验准备 —— 手动模拟 ReAct 循环

Day 19:第一阶段测验准备 —— 手动模拟 ReAct 循环 欢迎来到第十九天!在前面的学习中,我们已经掌握了 Function Calling(Day 11),理解了模型如何请求调用工具。但 Function Calling 是 API 层面的机制&…

阅读更多 →
【八个月网安课程】第七周·周五:CSRF 防御——Token、Referer 校验、SameSite 2026/9/27 22:48:36

【八个月网安课程】第七周·周五:CSRF 防御——Token、Referer 校验、SameSite

以下是第七周周五学习内容的详细展开。今天你将武装目标站点,从攻击者视角切换到防御者视角,系统学习并亲手配置 CSRF 的三大主流防御手段。你将看到昨天的攻击页面在加固后的环境中一一失效,并理解每种防御的精确边界与绕过风险。第七周周五…

阅读更多 →
烧烤店扫码点单选型:9 个维度对比加单、串数、分桌与后厨分单 2026/9/27 22:48:36

烧烤店扫码点单选型:9 个维度对比加单、串数、分桌与后厨分单

烧烤店的单是餐饮里最不好扫的一类:一桌人边喝边加,既按串也按份,中途还有分桌、并台,凉菜、烤串、酒水要走出餐口。通用扫码点单放到烧烤场景,往往在“临时加单不重开单”和“按串/按份混合计价”这两步就卡住。本文把…

阅读更多 →
二维码在企业系统里怎么用?资产标签、产品页和客户入口 2026/9/27 22:48:29

二维码在企业系统里怎么用?资产标签、产品页和客户入口

二维码在企业系统里很常见:贴在设备上,扫一下报修;贴在产品包装上,扫一下看说明书;放在展会物料上,扫一下打开产品页;放在客户服务卡上,扫一下提交售后单。 但二维码不是“把 URL 生…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉