1.概念介绍 Pinctrl子系统是驱动分离分层思想下的产物,硬件属性方面放在设备树dts中,其中关于设备所使用的的管脚配置,可以集中使用pinctrl。...其中设备树pinctrl节点添加可参考文档 kernel-4.14/Documentation/devicetree /bindings/pinctrl/pinctrl-mt65xx.txt 其中涉及到...b.client device “客户设备”,即使用pinctrl系统的设备,使用引脚的设备。其会在设备树单独定义成设备节点,并在属性中声明要用的引脚。...2.2 查找pinctrl节点 (2)从节点中查找设备device结构体 of_find_device_by_node 获取pinctrl句柄,参数为此设备的device结构体。...接口内部是通过系统 pinctrl管教设置库接口实现控制。 ? 2.5 设置pin脚状态
所以,要把引脚的复用、配置抽出来,做成Pinctrl子系统,给GPIO、I2C等模块使用。 BSP工程师要做什么?...看下图: 等BSP工程师在GPIO子系统、Pinctrl子系统中把自家芯片的支持加进去后,我们就可以非常方便地使用这些引脚了:点灯简直太简单了。...Pinctrl系统的客户,那就是使用Pinctrl系统的设备,使用引脚的设备。它在设备树里会被定义为一个节点,在节点里声明要用哪些引脚。...当这个设备处于default状态时,pinctrl子系统会自动根据上述信息把所用引脚复用为uart0功能。...当这这个设备处于sleep状态时,pinctrl子系统会自动根据上述信息把所用引脚配置为高电平。
资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...视频观看 百问网驱动大全 Pinctrl子系统视频介绍 参考资料: Linux 5.x内核文档 Documentation\devicetree\bindings\pinctrl\pinctrl-bindings.txt...Linux 4.x内核文档 Documentation\pinctrl.txt Documentation\devicetree\bindings\pinctrl\pinctrl-bindings.txt...Pinctrl作用 Pinctrl:Pin Controller,顾名思义,就是用来控制引脚的: 引脚枚举与命名(Enumerating and naming) 引脚复用(Multiplexing):...预计录制的内容 基于使用的角度驱动工程师要掌握的Pinctrl重要概念 Pinctrl子系统使用示例 主要数据结构与调试方法 pincontroller的数据结构构造过程情景分析(会拆分为很多节
视频观看 百问网驱动大全 GPIO子系统与Pinctrl子系统的交互 参考资料: Linux 5.x内核文档 Linux-5.4\Documentation\driver-api Linux-5.4...Linux-4.9.88\Documentation\gpio Linux-4.9.88\Documentation\devicetree\bindings\gpio\gpio.txt Linux-...使用GPIO前应该设置Pinctrl 假设使用这个虚拟的GPIO Controller的pinA来控制LED: 要使用pinA来控制LED,首先要通过Pinctrl子系统把它设置为GPIO功能,然后才能设置它为输出引脚...Pinctrl子系统中的编号5 使用Pinctrl的函数,把第5个引脚配置为GPIO功能 2.2 数据结构 3....GPIO调用Pinctrl的过程 GPIO子系统中的request函数,用来申请某个GPIO引脚, 它会导致Pinctrl子系统中的这2个函数之一被调用:pmxops->gpio_request_enable
资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...视频观看 百问网驱动大全 Pinctrl子系统主要数据结构 参考资料: Linux 5.x内核 Documentation\devicetree\bindings\pinctrl\pinctrl-bindings.txt....c Linux 4.x内核文档 Documentation\pinctrl.txt Documentation\devicetree\bindings\pinctrl\pinctrl-bindings.txt...使用pinctrl_desc注册得到pinctrl_dev 调用devm_pinctrl_register或pinctrl_register,就可以根据pinctrl_desc构造出pinctrl_dev...来处理设备树的pinctrl节点信息,得到一系列的pinctrl_map 这些pinctrl_map放在pinctrl.dt_maps链表中 每个pinctrl_map都被转换为pinctrl_setting
Linux下针对引脚有2个重要的子系统:GPIO、Pinctrl。 1.Pinctrl子系统重要概念 1.1 引入 无论是哪种芯片,都有类似下图的结构: ?...等BSP工程师在GPIO子系统、Pinctrl子系统中把自家芯片的支持加进去后,我们就可以非常方便地使用这些引脚了:点灯简直太简单了。 等等,GPIO模块在图中跟I2C不是并列的吗?...Pinctrl系统的客户,那就是使用Pinctrl系统的设备,使用引脚的设备。它在设备树里会被定义为一个节点,在节点里声明要用哪些引脚。 下面这个图就可以把几个重要概念理清楚: ?...当这这个设备处于sleep状态时,pinctrl子系统会自动根据上述信息把所用引脚配置为高电平。...退出时调用 2.GPIO子系统重要概念 2.1 引入 要操作GPIO引脚,先把所用引脚配置为GPIO功能,这通过Pinctrl子系统来实现。
资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...export ARCH=arm export CROSS_COMPILE=arm-buildroot-linux-gnueabihf- export PATH=$PATH:/home/book/100ask_stm32mp157..._pro-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin 2....IMX6ULL export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabihf- export PATH=$PATH:/home/book/100ask_imx6ull-sdk.../ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin 4.2 编译、替换设备树 1.
本篇介绍的Pinctrl子系统与GPIO子系统的方式,不需要再直接操作寄存器了,因为这两个子系统已经替我们实现了对寄存器的操作,我们只需要操作这两个子系统提供的API函数即可。...1 Pinctrl子系统 Pintrl子系统,顾名思义,就是管理pin引脚的一个系统,比如要点亮LED,即要控制LED对应引脚的高低电平,就要先通过Pintrl子系统将LED对应的引脚复用为GPIO功能...子系统与GPIO子系统的基本情况,下面就来使用它们来实现LED的亮灭控制。...头文件需要添加一个: #include 设备结构体改为gpio_led: /* gpioled设备结构体 */ struct gpioled_dev{ dev_t...4.2 测试 测试方式与之前的一样,都是先加载驱动文件,然后调用应用程序来控制LED的亮灭: 效果和之前的寄存器版点亮LED与设备树版点亮LED的效果一样 5 总结 本篇介绍了使用Pinctrl子系统与
gpio调试的方式有很多,linux3.0以上ARM架构的处理器基本上都采用了DTS的方式,在linux3.0可以通过获取sysfs的方式来获取gpio状态; sysfs文件系统的建立可以参照下面的博客...子系统设备树: Pin Control Subsystem是Linux内核抽象出的一套用于控制硬件引脚的一套子系统。...比上面的方式多了许多配置GPIO的方式,例如配置电流(可以用于睡眠唤醒的功能),管理pin脚的复用,接口规格等功能;蜗窝科技的大牛们就有几篇写的很好: linux内核中的GPIO系统之(1):软件框架...linux内核中的GPIO系统之(2):pin control subsystem Linux内核中的GPIO系统之(3):pin controller driver代码分析 linux内核中的GPIO...系统之(4):pinctrl驱动的理解和总结 linux内核中的GPIO系统之(5):gpio subsysem和pinctrl subsystem之间的耦合 DTS代码: 1 device_node
1.2 适用范围 表 1-1: 适用产品列表 内核版本 驱动文件 Linux-4.9 及以上 pinctrl-sunxi.c 1.3 相关人员 本文档适用于所有需要在 Linux 内核 sunxi...2 模块介绍 Pinctrl 框架是 linux 系统为统一各 SoC 厂商 pin 管理,避免各 SoC 厂商各自实现相同 pin 管理子系统而提出的。目的是为了减少 SoC 厂商系统移植工作量。...• 与 gpio 子系统的交互 • 实现 pin 中断 2.2 相关术语介绍 表 2-1: Pinctrl 模块相关术语介绍 术语 解释说明 SUNXI Allwinner 一系列 SOC 硬件平台...Pinctrl framework:Linux 提供的 pinctrl 驱动框架。 Pinctrl sunxi driver:sunxi 平台需要实现的驱动。...图 2-2: pinctrl 驱动 framework 图 系统运行在不同的状态,pin 配置有可能不一样,比如系统正常运行时,设备的 pin 需要一组配置,但系统进入休眠时,为了节省功耗,设备 pin
资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...视频观看 百问网驱动大全 client端使用pinctrl过程的情景分析_基于IMX6ULL 参考资料: Linux 5.x内核 Documentation\devicetree\bindings...\stm32\pinctrl-stm32.c Linux 4.x内核 Documentation\pinctrl.txt Documentation\devicetree\bindings\pinctrl...来处理设备树的pinctrl节点信息,得到一系列的pinctrl_map 这些pinctrl_map放在pinctrl.dt_maps链表中 每个pinctrl_map都被转换为pinctrl_setting...切换state情景分析 3.1 函数调用过程 涉及pinctrl子系统的其他2个作用:引脚复用、引脚配置 really_probe pinctrl_bind_pins pinctrl_select_state
本文讲解 pinctrl 子系统和 gpio 子系统的 API,以及使用示例。 传统的配置 pin 的方式就是直接操作相应的寄存器,但是这种配置方式比较繁琐、而且容易出问题(比如 pin 功能冲突)。...pinctrl 子系统就是为了解决这个问题而引入的,pinctrl 子系统主要工作内容如下: ①、获取设备树中 pin 信息。...如果 pinctrl 将一个 pin 脚初始化为 GPIO 而不是 IIC 或者 SPI,那么接下来就可以使用 gpio 子系统的API。 gpio 子系统是基于 pinctrl 子系统的!...2、pinctrl 子系统 API pinctrl 子系统的 API 有很多,对于驱动工程师来说,pinctrl 操作一个 GPIO 只需要三步: 1、devm_pinctrl_get 2、pinctrl_lookup_state...> #include #include #include static
对于上了 Linux 系统的平台,我们有其他方法,让它可以像单片机一样简单的操作 IO 口,这得益于各路 Linux 大神对系统底层的封装。...在 Linux 中有 pinctrl 和 gpio 子系统,它们提供了 API 接口给你使用,让你方便的操控 GPIO 口。...Linux 内核针对 PIN 的配置推出了 pinctrl 子系统,对 GPIO 的配置推出了 gpio 子系统。...pinctrl 子系统就是为了解决这个问题而引入的,pinctrl 子系统主要工作内容如下: ①、获取设备树中 pin 信息。...(具体原因看下面这篇文章) Linux 驱动挂载顺序分析 pinctrl 和 gpio 子系统软件框架如下: pinctrl gpio 可以看出其实两者软件框架一样的,主要是 HW Abstract
资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...视频观看 百问网驱动大全 编写虚拟的Pinctrl驱动程序 参考资料: 1....):比如用作GPIO、I2C或其他功能 引脚配置(Configuration):比如上拉、下拉、open drain、驱动强度等 Pinctrl驱动程序的核心是构造一个pinctrl_desc结构体:...编写Pinctrl驱动程序 5.1 核心:pinctrl_desc 分配pinctrl_desc结构体 设置pinctrl_desc结构体 注册pinctrl_desc结构体 5.2 辅助函数 include.../linux/of.h for_each_child_of_node of_get_child_count of_find_property of_property_read_u32
资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...视频观看 百问网驱动大全 调试虚拟的Pinctrl驱动程序 参考资料: 1...._pro-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin 2..../ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin 1.2 编译、替换设备树 1....Pinctrl调试信息 开发板的/sys/kernel/debug/pinctrl/目录下,每一个pin controller都有一个目录,比如virtual_pincontroller。
软件编写 这里采用kernel的dts,gpio和pinctrl子系统去完成对按键引脚的初始化和电平读取等。...pinctrl-0 = ; imx6ul-evk { `````省略````` pinctrl_key: keygrp {...编写按键驱动程序 key.c #include #include #include #include #include #include #include #include... #include #include #include #include
无特殊说明情况下,默认使用USB TO UART0作为调试串口,使用Linux系统启动卡(Micro SD方式)启动系统,通过路由器与PC机进行网络连接。...Linux系统启动卡对应的设备节点为mmcblk1,eMMC对应的设备节点为mmcblk0。...,该镜像同时支持CVBS OUT显示输出,执行如下命令将其固化至Linux系统启动卡。...图 137 将产品资料“4-软件资料\Linux\Boot_package\AA_BB_CC\”目录下boot_package_vga.fex文件(支持VGA显示)拷贝至评估板文件系统root用户目录下...,执行如下命令将其固化至Linux系统启动卡。
debounce-interval: 消除抖动的间隔,单位:ms,默认是5ms 2.2 100ASK_IMX6ULL gpio-keys { compatible = "gpio-keys"; pinctrl-names...= "default"; pinctrl-0 = ; status = "okay"; Key0{ label = "Key...compatible = "gpio-keys"; pinctrl-names = "default"; pinctrl-0 = ;...在按键中断程序中,可以循环判断几十亳秒,发现电平稳定之后再上报 使用定时器 显然第1种方法太耗时,违背“中断要尽快处理”的原则,你的系统会很卡。 怎么使用定时器?...QEMU上机实验 IMX6ULL、STM32MP157的出厂系统都已经配置的GPIO按键。
目录 排查用户相关的信息 排查进程端口相关的信息 查找恶意程序并杀掉 斩草除根 判断入侵方式,修复漏洞 当我们被告知一台Linux服务器被黑客入侵,黑客利用该服务器进行挖矿...w #显示已经登陆系统的用户列表,并显示用户正在执行的指令 users #显示当前登录系统的所有用户的用户列表 last #查看最近登录成功的用户及信息...,查看的是 /var/log/wtmp 文件 lastb #查看最近登录失败的用户及信息,查看的是 /var/log/btmp 文件 lastlog #显示系统中所有用户最近一次登录信息...#查看爆破用户名字典 总的来说,黑客入侵主机有下列几种情况: 通过 redis 未授权漏洞入侵(好多挖矿程序是通过这个) ssh 弱口令暴力破解 Web 程序漏洞入侵 参考文章: 记一次Linux...木马清除过程 相关文章:Redis未授权访问漏洞 Linux挖矿病毒的清除与分析 Linux下性能监控、守护进程与计划任务管理 来源:
资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...视频观看 百问网驱动大全 Pincontroller构造过程情景分析_基于IMX6ULL 参考资料: Linux 4.x内核文档 Documentation\pinctrl.txt Documentation.../dts/100ask_imx6ull-14x14.dts drivers\pinctrl\freescale\pinctrl-imx6ul.c drivers\pinctrl\freescale\pinctrl-imx.c...驱动代码执行流程 驱动程序位置: drivers\pinctrl\freescale\pinctrl-imx6ul.c drivers\pinctrl\freescale\pinctrl-imx.c 调用过程...: imx6ul_pinctrl_probe imx_pinctrl_probe(pdev, pinctrl_info); imx_pinctrl_desc->name = dev_name
领取专属 10元无门槛券
手把手带您无忧上云