• 2024-08-3113、STM32MP157A-HDMI移植
    1、介绍​STM32MP157A系列SoC中默认没有HDMI相关控制器,FS-MP1A使用SiI9022芯片将RGB信号转化为HDMI信号。STM32MP157A集成LTDC(LCD-TFTDisplayController),提供一个24bitRGB并行接口用于连接到各种LCD和TFT面板​SiI9022A是一款HDMI传输芯片,
  • 2024-08-02嵌入式Linux中的LED驱动控制(使用Pinctrl和GPIO子系统)
    在前面驱动LED的所有案例中,都是在驱动程序中去设置每个引脚的复用功能,这会导致所编写的驱动程序移植困难,可重用性差,缺乏对引脚的统一管理,容易出现引脚的重复定义等等弊病。为此,Linux内核引入了pinctrl子系统和GPIO子系统的概念。pinctrl子系统主要用于芯片引脚功能的管理,它基本上
  • 2024-07-25pinctrl&gpio介绍
    目的:实现IO口功能设置的软硬件分离pinctrl:通过设备树节点,记录不同板级硬件信息;Pinctrl遵循的是platform框架实现实现设备总线。gpio:  通过一些列的API接口,读取设备树中pinctrl节点的硬件信息,设置相应的引脚功能。 pinctrl文件位置:Linux文件结构的dri
  • 2024-06-17RK3308 工程配置修改
           wireless-bluetooth{    uart4_gpios:uart4-gpios{      rockchip,pins=<4RK_PA7RK_FUNC_GPIO&pcfg_pull_none>;    };   wireless_bluetooth:wireless-bluetooth{    compatible="bluetoot
  • 2024-06-11I.MX6ULL 的 pinctrl 子系统驱动学习
    pinctrl子系统主要工作内容如下:①、获取设备树中pin信息。②、根据获取到的pin信息来设置pin的复用功能③、根据获取到的pin信息来设置pin的电气特性,比如上/下拉、速度、驱动能力等。对于我们使用者来讲,只需要在设备树里面设置好某个pin的相关属性即可,其他的初始
  • 2024-06-05【linux-IMX6ULL-pinctrl和gpio子系统】
    目录1.pinctrl子系统1.1pinctrl子系统简介1.2pinctrl子系统使用1.2.1追加pin节点1.2.2配置引脚信息节点2.GPIO子系统2.1GPIO子系统简介2.1gpio子系统API函数3.检查PIN是否被其他外设使用1.pinctrl子系统1.1pinctrl子系统简介  pinctrl和gpio子系
  • 2024-06-05RK3308B WIFI
     修改WIFI型号./device/rockchip/rk3308/rockchip_rk3308b_64bit_defconfig修改设备树根节点--->wireless-wlanwireless-wlan{compatible="wlan-platdata";rockchip,grf=<&grf>;pinctrl-names="default&quo
  • 2024-05-24orangepi zero2在linux5.4以上内核使用ili9341
    背景根据orangepizero2用户手册说明,linux5.13内核不能使用modprobefbtft_device驱动spilcd查看linux内核源码提交记录,发现在v5.4-rc3中删除了fbtft_device.c文件commit如下staging/fbtft:Removefbtft_deviceCommitc440eee("Staging:fbtft:Switchtothegpiode
  • 2024-05-19IMX6ULL Linux内核网络驱动修改
    IMX6ULL网络驱动修改主要修改arch/arm/boot/dts/imx6ul-14x14-evk.dtsi设备树文件即可,修改方式和u-boot的设备树修改一致。硬件电路设备树修改需要修改的设备树位置:arch/arm/boot/dts/imx6ul-14x14-evk.dtsi增加复位引脚信息从上面的原理图可知网口1使用的复位引脚是GPIO
  • 2024-05-17Linux平台移植音频芯片实战记录
    本文详细记录在NXP I.MX6ULL+Linux平台下进行WM8960音频芯片移植的过程,其他平台操作方法类似,希望为大家提供帮助。1. 环境准备平台: HD6ULL-IOT开发板要求: 外接一个WM8960模块。要求能正常播放音频文件。2. 原理图及相关资料将模块飞线到底板J17上,接法如下;且模块1脚 
  • 2024-05-14u-boot网络移植
    修改网口配置信息主要修改设备树的信息,设备树位于:arch/arm/dts/imx6ul-14x14-evk.dtsi硬件电路图修改fec2信息未修改前的信息如下:修改网口1器件的ID信息,网口1使用的ID是0&fec2{pinctrl-names="default";pinctrl-0=<&pinctrl_enet2>;phy-mode="r
  • 2024-05-10基于pinctrl和GPIO子系统的按键驱动程序
    嵌入式驱动开发中pinctrl和GPIO子系统使用频率非常高,其中pinctrl子系统主要用于复用和配置引脚,GPIO子系统用于设置GPIO的输入/输出,向引脚写入数据或者从引脚读取数据。一个引脚可以复用为多种不同的功能,因此要使用GPIO子系统首先要先把引脚配置为GPIO功能。下面将分为两部分记录如
  • 2024-05-09初探pinctrl子系统和GPIO子系统
    前言:在前面的led驱动程序和按键驱动程序中,无论是最传统的方法,还是总线设备驱动模型,还是基于设备树的总线设备驱动模型,都是直接操作寄存器的方法。驱动开发的本质确实是操作寄存器,但是一个芯片有几百个引脚,只是操作少数的几个引脚还好,如果是大量的引脚,比如LCD接口的引脚几十个,一个
  • 2024-04-2515_pinctl和gpio子系统
    pinctl和gpio子系统1.什么是pinctrl和gpio子系统?​ pinctrl子系统是用来设置引脚的复用关系和电气属性的,gpio子系统是当pinctrl子系统把引脚的复用关系设置为gpio功能以后就可以使用gpio子系统来操作引脚了,比如引脚的输入输出,高低电平等2.LinuxPinctrl子系统提供的功能是
  • 2024-03-23pinctrl使用实例
    不同半导体厂商的pinctrl设计均不同,这里以高通的pinctrl使用举例: dts修改://mtp-pinctrl.dtsileds_redon:leds_redon{mux{pins="gpio161";function="gpio";};config{
  • 2024-03-23gpio子系统与pinctrl子系统通用API
    此篇不涉及gpio子系统和pinctrl原理解释,只列举相关操作函数: 通用的GPIO操作:1.gpio_request(unsignedgpio,constchar*label):向内核申请指定gpio,所申请的IO口会被内核记录参数:gpio:申请IO口编号,label:申请者的名字,随便。返回:int值,成功:0;失败:负数注:在使用gpio口之前,应先用g
  • 2023-12-10PINCTRL(PIN CONTROL)子系统 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/driver-api/pin-control.htmlPINCTRL(PINCONTROL)子系统本文概述了Linux中的pincontrol子系统。该子系统涉及以下内容:枚举和命名可控制的引脚引脚、Pads、Fingers(等)的复用,请参见下文了解详情配置引脚、Pads、Fingers(等),例如软件控制
  • 2023-11-09方法|基于T507开发板讲如何将占用引脚配置为普通GPIO
    方法|基于T507开发板讲如何将占用引脚配置为普通GPIO根据T5用户手册描述,只有在不使用多路复用功能的情况下,这些端口才可以配置为GPIO,所以我们需要把引脚的复用功能关闭。将被占用引脚配置为普通1.查看引脚默认功能配置2.关闭引脚默认功能配置以UART4-TX的PI13为例,这是PI13引脚复用
  • 2023-11-09方法|基于T507开发板讲如何将占用引脚配置为普通GPIO
    根据T5用户手册描述,只有在不使用多路复用功能的情况下,这些端口才可以配置为GPIO,所以我们需要把引脚的复用功能关闭。将被占用引脚配置为普通 GPIO方法思路1.查看引脚默认功能配置2.关闭引脚默认功能配置以UART4-TX的PI13为例,这是PI13引脚复用表,打开T5_Series_User_Manual_V1.0手册
  • 2023-08-21在f1c100s芯片上移植spi网卡enc28j60的linux驱动
    前言我个人与全志的芯片颇有故事。在我还是一个不懂事的高中生时,我看到荔枝派的官方文档,顿时被这小小的板子给吸引住。点开文档的初见:荔枝派Nano(下面简称Nano)是一款精致迷你的Arm9核心板/开发板,可用于初学者学习linux或者商用于产品开发。Nano在与SD卡相当的尺寸上(25.4*3
  • 2023-08-2039 pinctrol(五)pinctrl client于pinctrl driver联系
    前言整体结构1.pinctrldirver于pinctrlclientplatform_driver与platform_device在匹配的过程中会调用really_probe在really_prebe中调用pinctrl_bind_pins(下图为pinctrl_bind_pins的大体实际框架)主要实现一下三个方面的功能pinctrl_map的创建或索引(bindpinsnowbefor
  • 2023-08-1812 pinctrl 和 gpio 子系统实验
    一、pinctrl子系统1.什么是pinctrl子系统?  首先回顾一下如何初始化LED所使用的GPIO:①、修改设备树,添加相应的节点,节点里面重点是设置reg属性,reg属性包括了GPIO相关寄存器。②、获取reg属性中GPIOI_MODER、GPIOI_OTYPER、GPIOI_OSPEEDR、GPIOI_PUPDR和GPI
  • 2023-08-1338 pinctrl(四)pinctrl driver
    前言一些使用技巧查看设备支持的pinctrlls/sys/kernel/debug/pinctrl/查看pinctrl中支持的引脚、组、functioncat/sys/kernel/debug/pinctrl/20e0000.iomuxc/pinscat/sys/kernel/debug/pinctrl/20e0000.iomuxc/pingroupscat/sys/kernel/debug/pinctrl/20e0000.io
  • 2023-08-02Linux pinctrl 子系统
    文章代码分析基于linux-5.19.13,架构基于aarch64(ARM64)。1.Linux5.x官方参考文档Documentation\devicetree\bindings\pinctrl\pinctrl-bindings.txt2.Pinctrl的引入 想要pinA、B用于GPIO,需要设置IOMUX让它们连接到GPIO模块;要想让pinA、B用于I2C,需要设置IOMUX让它们连接
  • 2023-07-3037 pinctrl(三)数据结构
    1.pinctrl在devicetree中的定义和使用2.pinctrldriverinit3.常用数据结构pinctrl驱动的注册主要实现函数structpinctrl_dev*pinctrl_register(structpinctrl_desc*pctldesc, structdevice*dev,void*driver_data)从设备树中获取pinctrl_desc,然后将