09-读写多个sys属性文件

【设备树】

sys_rw_gpio{

compatible = "yhai,sys_rw_gpio";

led_gpio = <&gpio TEGRA_GPIO(J,7) GPIO_ACTIVE_HIGH>; //40pin 丝印 12

smoke_sensor_gpio = <&gpio TEGRA_GPIO(S,5) GPIO_ACTIVE_HIGH>; //40pin 丝印 29

};

【修改设备树】

yhai@yhai:~/Linux_for_Tegra/source/public/hardware/nvidia$ vim platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-b00.dts

【编译设备树】

yhai@yhai:~/Linux_for_Tegra/source/public/kernel/kernel-4.9$ make dtbs

复制代码
aidb@linux:/sys$ ls
block  bus  class  dev  devices  firmware  fs  kernel  module  power
- block:块设备(eMMC/SD 卡)
- bus:各类总线(platform/i2c)
- class:按功能归类设备(leds/gpio/tty)
- dev:设备号软链接
- devices:底层完整硬件拓扑
- firmware:固件、设备树信息
- fs:内核支持的文件系统
- kernel:内核相关配置
- module:已加载内核 ko 模块
- power:电源管理

重点:sysfs 是内核导出硬件信息的虚拟文件系统。

【驱动文件】

yhai@yhai:/mnt/hgfs/ShareFolder/platdriver/06-读写多个sys属性文件$ make

【传送】

yhai@yhai:/mnt/hgfs/ShareFolder/platdriver/06-读写多个sys属性文件$ sudo scp gpio.ko aidb@10.20.3.91:/home/aidb/

sudo yhai 的密码:

aidb@10.20.3.91's password:

gpio.ko 100% 278KB 4.0MB/s 00:00

yhai@yhai:~/Linux_for_Tegra/source/public/kernel/kernel-4.9$ sudo scp arch/arm64/boot/dts/tegra210-p3448-0000-p3449-0000-b00.dtb aidb@10.20.3.91:/home/aidb/

sudo yhai 的密码:

aidb@10.20.3.91's password:

tegra210-p3448-0000-p3449-0000-b00.dtb 100% 232KB 3.8MB/s 00:00

【uboot配置】

sudo reboot

setenv bootargs root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 earlycon=uart8250,mmio32,0x70006000

ext4load mmc 1:1 0x84000000 /home/aidb/Image

ext4load mmc 1:1 0x83100000 /home/aidb/tegra210-p3448-0000-p3449-0000-b00.dtb

booti 0x84000000 - 0x83100000

【验证添加驱动】

sudo insmod gpio.ko

dmesg | tail -n 10

36.228040 gpio: loading out-of-tree module taints kernel.

36.236025 gpio_probe

36.239087 led_gpio: 79

36.241847 smoke_sensor_gpio: 149

36.245330 gpio_probe ok !!

aidb@localhost:/sys/bus/platform/devices$ ls |grep sys

sys_rw_gpio

aidb@localhost:/sys/bus/platform/devices/sys_rw_gpio$ ls

driver led_gpio of_node smoke_sensor_gpio uevent

driver_override modalias power subsystem

aidb@localhost:/sys/bus/platform/devices/sys_rw_gpio$

sudo sh -c "echo 1 > led_gpio"

cat smoke_sensor_gpio

sudo rmmod gpio

相关推荐
倔强的石头1061 小时前
【Linux指南】进程通信系列(二):匿名管道 —— pipe 的本质、fork 继承与四种读写规则
java·linux·运维
小张成长计划..1 小时前
【Linux】25:线程概念和控制
java·linux·jvm
硅基手札1 小时前
【Linux 内核专栏 18】进程间通信 IPC(下)— Socket·Netlink·fd 三件套·futex·线程同步
linux·运维·驱动开发·单片机·嵌入式硬件·mcu·架构
djjjx.1 小时前
Linux进程篇(二):深入浅出 [进程概念与进程父子关系]:从底层原理到实战应用
linux·运维·服务器
贵州诚鑫致达科技有限公司10 小时前
Linux的yum源怎么重启?源不是服务
linux·运维·服务器
澜山奕秋13 小时前
RHCSA
linux·运维·服务器
Web极客码14 小时前
告别流式截断:我用客户端中间件解决长文本 API 跨国 SSE 断连与数据自愈
linux·agent 图
cnnews14 小时前
Chromebox3安装Ubuntu后内存化与最小化 eMMC 写入优化
linux·运维·ubuntu
flytalei15 小时前
Ubuntu 24.04 单节点 K3s 部署实践:从环境评估到故障排查与验收
linux·运维·ubuntu