亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial Internet of Things >> 物联网技术

掌握Linux设备驱动Pin Control子系统

掌握Linux设备驱动Pin Control子系统 编者注:嵌入式Linux正成为物联网脊柱,设备驱动是应用与硬件间桥梁。在《Linux设备驱动开发》中,作者John Madieu提供详尽代码丰富指南构建这些驱动。

本节选——书中第14章——深入Pin Control和GPIO,关键领域供需与内核对接定制硬件的开发者。首期介绍Pin Control子系统。

改编自《Linux设备驱动开发》,John Madieu著。


第14章 Pin Control与GPIO子系统
作者:John Madieu

嵌入式Linux中,驱动几乎总与GPIO交互或配置引脚复用。"引脚"是组件物理输出线,许多SoC复用同一引脚实现多功能。例如i.MX6QDL引脚MX6QDL_PAD_SD3_DAT1可作SD数据线、UART RTS/CTS线、FlexCAN Rx线、或通用GPIO。

选择引脚功能的过程称引脚复用,编排此过程的内核组件是引脚控制器。本章第二部分将探讨通用输入输出(GPIO)子系统,一种常见引脚功能。

本章你将:

Pin Control子系统

pinctrl子系统管理引脚复用和配置。需特定引脚排布的设备须在设备树描述该排布。引脚控制器驱动解析这些描述并相应编程SoC I/O控制器。

子系统提供:

注:本书聚焦使用pin-controller API;不涵盖编写pin-controller驱动本身。

Pinctrl与设备树

设备树中,pin-controller节点描述所有可用引脚组和功能。每组分配整数ID,可选伴随pinctrl-name将人类可读名映射至ID。

设备绑定指定其所需引脚状态。两属性链接设备至引脚状态:

下方为典型设备树片段,展示两设备引脚配置:

掌握Linux设备驱动Pin Control子系统

每行遵循格式<PIN_FUNCTION> <PIN_SETTING>:

MX6QDL_PAD_DISP0_DAT15__GPIO5_IO09 0x80000000
MX6QDL_PAD_EIM_D25__UART3_RX_DATA 0x1b0b1 

第一标记(MX6QDL_PAD_DISP0_DAT15__GPIO5_IO09)标识引脚功能;第二标记(0x80000000)编码配置位(上拉/下拉、驱动强度等)。这些宏定义于架构专用头文件如arch/arm/boot/dts/imx6q-pinfunc.h。

驱动代码中编程引脚状态,遵循初始化时步骤(典型在probe()):

struct pinctrl *pinctrl;
pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
if (IS_ERR(pinctrl))
    dev_warn(&pdev->dev, "pins are not configured from the driver"); 

辅助函数pinctrl_get_select_default()自动检索并应用default状态。若设备提供init状态,核心将在probe()前应用该状态,随后恢复default除非驱动更改。

完成时用pinctrl_put(pinctrl)或资源管理型devm_pinctrl_put(pinctrl)释放控制器。

来自am335x-evm.dts文件具体示例:

dcan1: d_can@481d0000 {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&d_can1_pins>;
};

匹配驱动中:

pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
if (IS_ERR(pinctrl))
    dev_warn(&pdev->dev, "pins are not configured from the driver");

驱动probe()运行时,default引脚配置已就位。

下期将详细介绍GPIO子系统。

经Packt Publishing许可转载。版权所有©2017 Packt Publishing


John Madieu是巴黎嵌入式Linux和内核工程师。他为自动化、交通、医疗、能源、国防客户开发驱动和BSP。John就职于EXPEMB——计算机模块设计先驱,活跃开源倡导者,相信知识共享加速创新。


物联网技术

  1. 21世纪机器人技术:分布式系统、远程呈现与太空探索
  2. 为何工业物联网成网络攻击靶心——及如何防御
  3. 未来展望:推进工业物联网以实现生产卓越
  4. 谁掌控网联汽车?从驾驶员视角审视ADAS边界
  5. 保障嵌入式物联网系统安全的六大验证步骤
  6. 产品开发SaaS采用激增:关键阻碍与机遇 —— 下篇
  7. SaaS在产品开发中迎来拐点:PTC洞察报告
  8. 如何选择理想的物联网开发合作伙伴:关键挑战与解决方案
  9. 工业PC:IIoT革命中复杂控制的基石
  10. 企业级物联网开发关键驱动力:诺基亚专家深度解读
  11. 物联网如何重塑 Web 应用设计与开发范式
  12. 从象牙到贝克莱特:现代塑料演变史溯源