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

相关推荐
.冰块.6 小时前
流量大了自动加 Pod!K8s HPA 扩缩容与 ResourceQuota/LimitRange 资源管控实战
linux·云原生·容器·kubernetes·hpa·quota·limitrange
承渊政道7 小时前
Linux网络学习【深入理解多路转接select、poll的代码改写】
linux·ubuntu·select·多路转接·poll
雪落漂泊7 小时前
Linux进程(四)概念:命令行参数和环境变量篇
linux·运维·服务器
qq_377572777 小时前
linux x86 arm loongarch
linux
Dragon~Snow8 小时前
Centos Stream10 安装 MySQL-9.7.2-linux-glibc2.28-x86_64.tar
linux·mysql·centos
say_fall8 小时前
【Linux系统编程】Linux进程信号:从“外卖到了“到内核里的一张位图
linux·运维·服务器·车载系统·智能硬件
坤坤子吖8 小时前
Linux网络编程:UDP进阶,从字典服务器到简单聊天室
linux·服务器·网络·c++·笔记·学习
Rabitebla8 小时前
【Linux学习笔记】进程篇(九):进程的创建与退出——fork、写时拷贝与退出码
linux·c++·笔记·学习
李松桃9 小时前
基于IP的服务配置
linux·nginx-核心模块配置
FungLeo9 小时前
成为全栈·基础补充·Linux 服务器入门
linux·运维·服务器·ssh·部署·成为全栈