gpio 和 pinctrl 子系统在内核里的使用率非常高,和嵌入式产品的关联非常大。从这两个子系统开始学习驱动开发是个不错的入门选择。...pinctrl 子系统和 gpio 子系统的之间关系。...列举一些使用了gpio子系统的常见驱动,例如 leds-gpio.c、gpio_keys.c 等 legacy.rst 描述 legacy gpio 接口 注:本文基于 Linux-4.19。...子系统中,用 struct gpio_desc 来描述一个 gpio 引脚,gpiod_xxx() 都是围绕着 strcut gpio_desc 进行操作的。...在 gpio 子系统中,SoC 上的每一个 gpio bank 都会被认为是一个 gpio controller,每一个 gpio controller 都由一个 struct gpio_chip 来描述
前言 Linux内核中gpio是最简单,最常用的资源(和 interrupt ,dma,timer一样)驱动程序,应用程序都能够通过相应的接口使用gpio,gpio使用0~MAX_INT之间的整数标识,...不能使用负数,gpio与硬件体系密切相关的,不过linux有一个框架处理gpio,能够使用统一的接口来操作gpio.在讲gpio核心(gpiolib.c)之前先来看看gpio是怎么使用的 使用gpio...使用gpio接口需要包含#include ,在驱动中使用延时函数mdelay,需要包含#include 文件,Documentation/gpio.txt...); } else { set_irq_type(gpio_to_irq(sw->gpio), IRQ_TYPE_EDGE_RISING); } } 参考文章 Linux中的gpio口使用方法...总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对ZaLou.Cn的支持。
视频观看 百问网驱动大全 使用GPIO模拟I2C的驱动程序分析 参考资料: i2c_spec.pdf Linux文档 Linux-5.4\Documentation\devicetree\bindings...\i2c\i2c-gpio.yaml Linux-4.9.88\Documentation\devicetree\bindings\i2c\i2c-gpio.txt Linux驱动源码 Linux...1.2 I2C信号 I2C协议中数据传输的单位是字节,也就是8位。但是要用到9个时钟:前面8个时钟用来传输8数据,第9个时钟用来传输回应信号。传输时,先传输最高位(MSB)。...双方设备中,某个设备发送数据时,另一方怎样才能不影响SDA上的数据?...>; #address-cells = ; #size-cells = ; i2c-gpio,sda-open-drain: 它表示其他驱动、其他系统已经把SDA设置为open
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。 ...,很方便的 2)在有些操作系统中只允许-exec选项执行诸如l s或ls -l这样的命令。...n 为了查找当前文件系统中的所有目录并排序 $ find ....4)在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高。 ...在下面的例子中, find命令从文件系统的根目录开始,查找一个名为CON.FILE的文件。
本文将探讨嵌入式系统中的GPIO(通用输入输出)控制,着重介绍GPIO的原理和基本用法。我们将使用一个实际的示例项目来演示如何通过编程配置和控制GPIO引脚。...GPIO中断处理:除了常规的GPIO输入和输出操作,GPIO还可以用于中断处理,以实现对特定事件的快速响应。在嵌入式系统中,GPIO中断常用于处理外部触发事件,例如按键按下、传感器信号变化等。...外部中断:除了上述示例中的GPIO中断,有些嵌入式系统支持外部中断,也称为外部触发中断。通过配置GPIO引脚作为外部中断输入,可以实现对外部信号的响应。...总结本文介绍了嵌入式系统中GPIO的基本原理和用法,包括GPIO引脚的输入和输出控制,以及如何使用GPIO中断实现对外部事件的响应。...通过实例代码演示了如何控制LED的点亮和熄灭,并在按键按下时触发中断操作。嵌入式系统中GPIO的应用非常广泛,是硬件工程师在开发嵌入式系统时必备的核心技能。
视频观看 百问网驱动大全 GPIO子系统与Pinctrl子系统的交互 参考资料: Linux 5.x内核文档 Linux-5.4\Documentation\driver-api Linux-5.4...,假设在GPIO子系统中全局编号为100103 GPIO1内部引脚编号为03,假设在GPIO子系统中全局编号为104107 假设我们要使用pin1_1,应该这样做: 根据GPIO1的内部编号1,可以换算为...Pinctrl子系统中的编号5 使用Pinctrl的函数,把第5个引脚配置为GPIO功能 2.2 数据结构 3....GPIO调用Pinctrl的过程 GPIO子系统中的request函数,用来申请某个GPIO引脚, 它会导致Pinctrl子系统中的这2个函数之一被调用:pmxops->gpio_request_enable...(pctldev, range, pin, gpio); ret = pin_request(pctldev, pin, owner, range); Pinctrl子系统中的pin_request
资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...视频观看 百问网驱动大全 GPIO子系统的sysfs接口 参考资料: 1....常用的SYSFS文件 2.1 有哪些GPIO控制器 /sys/bus/gpio/devices目录下,列出了所有的GPIO控制器,如下表示有11个GPIO控制器: /sys/bus/gpio/devices...查看GPIO使用情况 cat /sys/kernel/debug/gpio 2.4 通过SYSFS使用GPIO 如果只是简单的引脚控制(比如输出、查询输入值),可以不编写驱动程序。...确定GPIO编号 查看每个/sys/bus/gpio/devices/gpiochipXXX目录下的label,确定是你要用的GPIO控制器,也称为GPIO Bank。
这句话换到编程中就是 CPU 与外部存储器的输入输出,包括 CPU 本身的一,二,三级的缓存,内存,硬盘,网络,Usb 设备等等 Linux中的IO机制 阻塞与非阻塞 在调用IO函数时,如果需要等待IO...异步是指在非阻塞的前提下每次调用IO函数后,本线程不在接管IO事件的处理,会告诉程序如果你有准备就绪的IO事件你就去把你的IO事件交给其他线程的函数处理。...多路复用IO技术 在早期的网络服务器中为了处理多个连接请求往往需要开辟多个线程,每个线程负责一个连接的处理,但是多线程需要进行CPU的上下文切换。...而上下文切换需要处理文件句柄,这些操作是十分繁琐的,所以多线程并不是很好的解决方案。...在编程中常见的 I/O 操作有哪些 一般软件都会有数据库,不论是 web 软件还是移动,桌面端软件,如果数据库是保存在硬盘的话,那么对数据库的增,删,改,查都是对硬盘 I/O 的操作 PHP $result
全志平台Tina系统GPIO组号和GPIO引脚号的对应关系 在操作引脚的时候,我们有时候会看到如PD4、PL10之类的按组分类的引脚好,有的时候会看到如86、326之类的纯数字的引脚号。...其实这些引脚号都是一个意思,PL10这样命名的引脚好只是为了方便编号和使用(比如原理图里),最终都是转换为纯数字的引脚号进行操作。...转换方式:(以某R18方案项目为例) 在内核头文件lichee/linux-4.4/arch/arm/mach-sunxi/include/mach/gpio.h中有如下对应表: /* pin group...同理,根据表中的定义,PL10则为362
文件系统的注册 这里的文件系统是指可能会被挂载到目录树中的各个实际文件系统,所谓实际文件系统,即是指VFS 中的实际操作最终要通过它们来完成而已,并不意味着它们一定要存在于某种特定的存储设备上。...比如在笔者的 Linux 机器下就注册有 "rootfs"、"proc"、"ext2"、"sockfs" 等十几种文件系统。...3.1 文件系统的数据结构 在 Linux 源代码中,每种实际的文件系统用以下的数据结构表示(include/linux/fs.h): 1 struct file_system_type { 2...mount:这个函数非常重要,它VFS能够和底层文件系统交互的起始点,该函数是不能放在super_block结构中的,因为super_block是在get_sb执行之后才能建立的。... 在众多的实际文件系统中,之所以单独介绍 rootfs 文件系统的注册过程,实在是因为该文件系统 VFS 的关系太过密切,如果说 ext2/ext3 是 Linux 的本土文件系统,那么 rootfs
首先要了解的是Linux系统的路由也是有很多的路由表存在的,默认的配置基本如下: ###左右滑动 ubuntu@VM-16-3-ubuntu:~$ cat /etc/iproute2/rt_tables...一般来说我们在Linux系统中打印路由表是直接使用ip route这条命令的,更准确的来说ip route其实是ip route show table main的简化,也就是说直接运行ip route打印的就是主路由表里的路由...然后我们再来看看如何在Linux系统中定义Routing Policy。...Routing policy在Linux系统中的使用场景有很多,其中一些典型的情况包括: 多路径负载均衡: 如果你有多个网络接口连接到不同的网络,你可能希望在这些接口之间分配流量,以实现负载均衡。...,以便未来的维护和故障排除;同时需要注意的是,使用命令行配置的rule和路由是临时生效的,系统重启或者网络服务重启后就会丢失,因此需要根据不同系统的设定将配置写到对应的文件中,以便系统重启或者网络服务重启后路由策略依然存在
这里主要是关于 centos7 的总结 系统版本信息 查看系统内核版本信息 cat /proc/version uname -a 查看centos版本,如centos 7.9 cat /etc/redhat-release...查看CPU型号及支持的指令集 gcc -march=native -Q --help=target|grep march cat /proc/cpuinfo cpuid (需安装此命令) centos...,一种不太准确的方式 写 dd if=/dev/zero of=test.file bs=1G count=2 oflag=direct 读 dd if=test.file of=/dev/null iflag...=direct 查询端口 在win下查看linux的端口是否打开(需开启telnet服务) telnet 172.17.15.12 8000 netstat -nlp | grep 8080 查看本机端口...systemctl start firewalld 开启防火墙 firewall-cmd --query-port=666/tcp 查看想开的端口是否已开 firewall-cmd --add-port
今天遇到一个问题,就是台式机开机进入GNU GRUB引导,默认是linux,需要手动选择win,而且不太好修改顺序,高标准严格要求自己的(强迫症的)我,决定删除linux系统,去除GRUB引导。...进入装机用系统中,修复windows引导程序,打开电脑,发现正常进入即为windows了。 5....继续进入启动盘系统,使用其中的磁盘管理工具,删除linux对应的磁盘块,并将win的磁盘扩展分区,充分利用空出来的空间。OK!
0x00 什么是swap分区 Swap分区在系统的物理内存不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用。...那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。...0x01 官方关于swap设置 Redhat6.4 官方推荐(我们使用CentOS 6.4) 推荐的系统交换空间 系统中的RAM数量 建议交换空间 如果允许休眠,建议使用交换空间 ⩽2GB...Mysql 5.6 和5.7的建议 ? 是说在物理内存足够的情况下,可以删除swap,因为系统在有些情况下会及时内存够用使用swap,若使用会因为I/0变高导致mysql故障。Mysql建议删除。...其实根据系统实际情况和内存的负荷综合考虑,但是实际情况又是什么样呢?
在Linux系统中配置系统设置->网络设置代理的详细教程如下:首先,确保您已经安装了NetworkManager和nmtui。...在终端中输入以下命令:sudo apt-get updatesudo apt-get install network-manager nmtui打开系统设置。...在设置菜单中,选择“网络”。在网络设置页面中,您应该看到一个名为“系统代理”的选项。点击它,然后选择“手动”。在“手动配置”页面中,选择“使用代理”。...在接口编辑页面中,选择“IPv4设置”或“IPv6设置”,根据您的网络接口使用的是IPv4还是IPv6。...最后,在接口编辑页面中,选择“保存”。现在,您已经成功为您的Linux系统配置了代理设置。请注意,这些设置可能会导致您的网络连接速度变慢。在使用代理时,请确保遵循您的网络政策和法律法规。图片
如果驱动开发都是这样去查找寄存器,那我们就变成“寄存器工程师”了,即使是做单片机的都不执着于裸写寄存器了。 Linux下针对引脚有2个重要的子系统:GPIO、Pinctrl。...在驱动代码中: 使用GPIO子系统的标准函数获得GPIO、设置GPIO方向、读取/设置GPIO值。 这样的驱动代码,将是单板无关的。...2.3 在驱动代码中调用GPIO子系统 在设备树中指定了GPIO引脚,在驱动代码中如何使用? 也就是GPIO子系统的接口函数是什么?...驱动程序中要包含头文件, #include // descriptor-based 或 #include // legacy...比如在Linux开发过程中,先申请了GPIO,再申请内存;如果内存申请失败,那么在返回之前就需要先释放GPIO资源。
一、变量 在myshell.sh中输入 执行: 使用set指令可以查看当前shell下的所有变量。 在myshell.sh中输入: 执行: 使用unset可以撤销一个变量。...注释的内容 ! 在myshell.sh中使用我们定义的环境变量: 执行: 可以使用到全局环境变量。...三、位置参数变量 在myshell.sh中输入: 执行: 四、预定义变量 在myshell2.sh中输入: 执行:
前言 曾经的小编一直都是使用Windows系统,但是当很多人都在我耳边说,用Linux吧,Windows不行;当时不由得怒火朝天,不是因为我在用Windows,而是别人这样说不就等于说用WIndows...哈哈,言归正传,今天小编决定带大家玩一玩Linux系统,不过不是在虚拟机中装Linux系统,下面跟小编一起来看看吧。...一、系统自带 想必用过Windows 10的人都应该知道了,它里面就自带了Linux系统哦,无需你再去安装,是不是很方便,如图: 虽然小编没有Windows 10系统,但是这点小编还是知道的,别不信,...二、虚拟机 这个我想大家应该都不陌生了吧,Virtual Machine,是非常有名的虚拟机软件,我们可以通过在虚拟机中安装操作系统,模拟一个真实的系统环境从而进行操作,虽然很方便,但是资源占用率太高...接下来就可以愉快的使用Linux系统中 的命令了。 四、文末福利 你还在为各个主流编程语言的环境搭建而煞费苦心吗?
前言 曾经的小编一直都是使用Windows系统,但是当很多人都在我耳边说,用Linux吧,Windows不行;当时不由得怒火朝天,不是因为我在用Windows,而是别人这样说不就等于说用WIndows...哈哈,言归正传,今天小编决定带大家玩一玩Linux系统,不过不是在虚拟机中装Linux系统,下面跟小编一起来看看吧。...一、系统自带 想必用过Windows 10的人都应该知道了,它里面就自带了Linux系统哦,无需你再去安装,是不是很方便,如图: ?...二、虚拟机 这个我想大家应该都不陌生了吧,Virtual Machine,是非常有名的虚拟机软件,我们可以通过在虚拟机中安装操作系统,模拟一个真实的系统环境从而进行操作,虽然很方便,但是资源占用率太高...接下来就可以愉快的使用Linux系统中 的命令了。 四、文末福利 你还在为各个主流编程语言的环境搭建而煞费苦心吗?
@TOC 一、tomcat介绍 1.tomcat简介 Tomcat是一个开源、免费的Web服务器,属于轻量级web服务器,适合部署中小型、并发访问用户不是很多的web项目,是部署中小型jsp的首选。...tomcat官网 tomcat软件官网下载:https://tomcat.apache.org/download-80.cgi 图片 二、本次环境规划 本次环境规划介绍 hostname IP地址 操作系统版本...technologies/downloads/#java11 图片 [root@docker tomcat]# ls apache-tomcat-10.1.7.tar.gz jdk-11.0.18_linux-x64...Apache Tomcat/10.1.7 Server built: Feb 27 2023 20:25:27 UTC Server number: 10.1.7.0 OS Name: Linux...root 12331 0.0 0.0 112812 948 pts/0 S+ 10:58 0:00 grep --color=auto tomcat 3.访问tomcat的web
领取专属 10元无门槛券
手把手带您无忧上云