
用博客重走Linux驱动登神之路
文章平均质量分 86
心随雪冻
这个作者很懒,什么都没留下…
展开
-
20.ARMLinux上ADC的驱动和使用方法
ADC(Analog-to-Digital Converter)即模数转换器,是一种将模拟信号转换为数字信号的电子元器件,用于实现模拟信号的数字化处理和采集。在嵌入式系统中,ADC广泛应用于传感器信号采集、电源管理、环境检测等领域。原创 2025-04-01 13:51:05 · 453 阅读 · 0 评论 -
19.ARMLinux上PWM的驱动和使用方法
PWM,是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。ARM上使用PWM来控制的器件常见的有电机、舵机、背光、风扇等。原创 2025-03-31 16:18:28 · 356 阅读 · 0 评论 -
18.PCIe总线入门理解与Linux上PCIe设备配置与使用
PCIe总线使用了高速差分异步总线,并采用端到端的连接方式,因此在每一条PCIe链路中只能连接两个设备。如上图所示每一个PCIe链路(Link)只能连接两个设备,PCIe的link宽度支持的Lane数为x1, x2, x4, x8, x12, x16, x32。PCIe的一条lane由两个信号线(Signal TX和Signal Rx)组成,每个Signal由两根线Wire组成。以ASM1061为例,原创 2025-03-26 15:29:55 · 662 阅读 · 0 评论 -
16.Linux蓝牙从硬件驱动到应用
bluetoothctl 是安装bluez后自带的蓝牙调试命令行工具,本节的步骤都是在ubuntu base系统下,所以要解决许多桌面系统不用解决的问题。pinctl(uart0_cts)包括UART0_CTS、pinctl(uart0_rts)包括UART0_RTS。从原理图中可以看出串口一共四根线,UART0_RTS、UART0_CTS、UART0_TXD、UART0_RXD。***ps:***blueman不需要连接就能传输文件,遇到过一个错误,传输空linux文件失败的情况。原创 2025-03-20 10:28:12 · 765 阅读 · 0 评论 -
15.RK3399平台ap6356WIFI功能驱动配置流程与使用方法
某些该入土的系统会使用wpa_supplicant连接wifi,使用wpa_cli扫描、设置、断开wifi。可以使用hostapd来开启配置热点,也是早期的方法,但还要改配置文件,累了~建议采用nmcli。这里建议使用nmcli,nmcli是用来管理NetworkManager网络连接的命令行工具。ap6356模块对应着红框选中的驱动配置,其宏为CONFIG_AP6XXX。黄框里WiFi驱动可编译为ko和内核启动加载WiFi驱动必须二选一。RK有专门的机制rfkill来处理wifi的开关。原创 2025-03-19 11:10:37 · 323 阅读 · 0 评论 -
14.Linux串口硬件驱动分析与使用方法
串口的概念可以很广,从硬件的TTL、RS485、RS232电平,到驱动层面终端传输、DMA传输,到应用层ttyS节点的读写,到系统层的常用终端和界面工具。本文并不打算面面俱到,只是记录一部分流程。原创 2025-03-13 10:58:38 · 1785 阅读 · 0 评论 -
13.ARMLinux上外部中断的驱动方法
中断实际上是非常复杂的,但在大部分的使用场景下,我们只需要关心怎么在设备树中指定中断,怎么在代码中申请和处理中断就可以。大部分的芯片的中断在原厂的设计下又都是使用gpio作为控制器,又提供相应的通过gpio获得的中断号来申请中断的接口,使得中断的应用极为简单。原创 2025-03-06 10:32:07 · 599 阅读 · 0 评论 -
12.嵌入式Linux读写寄存器原理与实现方式
本文是前面GPIO的复用与使用的引申,总写stm32的开发人员大概会有种想要配置寄存器来实现GPIO功能的冲动。在嵌入式上也是能控制寄存器来实现GPIO的,只是由于需要查芯片数据手册,相对来说反而需要更高知识基础。原创 2025-03-05 09:43:04 · 731 阅读 · 0 评论 -
11.Ls1046RCW复位控制字控制管脚复用
并不是所有的芯片厂商都用pinctrl驱动来设置引脚驱动, LS104x 系列开发板引入了【复位控制字】Reset configuration word (RCW)的配置方法,通过这种配置方法客户可以方便的进行引脚的功能定义,也就是实现引脚的 PinMUX 功能。上图中 RCW 每一行前面显示的就是 RCW 的内存地址,每一个内存地址中存储着 8 位数据。可知,我们源码中的 RCW 字段为 EVDD_VSEL 设置的参数为二进制的 00,即 EVDD IO 域的电压为 1.8V。原创 2025-03-04 10:45:49 · 797 阅读 · 0 评论 -
10.从c语言类到platform设备驱动模型到字符设备驱动方法
DEVICE_ATTR宏定义在kernel/include/linux/device.h文件中。原型如下:作用:定义一个device_attribute结构体,之后device_create_file使用。_name:名称,在/sys/device/virtual中的名称,##name代表将name的字段直接替换到##_name处,所以假设_name为user_led_status,dev_attr_user_led_status。原创 2025-03-04 10:19:03 · 590 阅读 · 0 评论 -
9.RK平台GPIO的复用设置以及驱动方法
GPIO是写单片机出身的人的“白月光”GPIO,全称 General-Purpose Input/Output(通用输入输出),是一种软件运行期间能够动态配置和控制的通用引脚。对于GPIO的开发包括,通过用户空间设置其输入抑或输出,设置或获取其高低电平状态;在内核里设置引脚输入输出,设置中断;以及完成复用等。原创 2025-03-03 18:00:34 · 2104 阅读 · 0 评论 -
6.嵌入式系统启动流程与PMIC供电的关系
在看PMIC的原理图和以及了解Regulator框架后,难免产生一个疑问,Regulator是用来供电的设备,甚至可以为CPU、DDR供电,但供电的大小又是由CPU通过i2c来控制,如果把Regulaitor输出的电压比作“蛋”,把CPU、DDR比作能下蛋的鸡,那么鸡还没下蛋时(CPU没控制PMIC时),蛋是哪里来的(控制CPU的电压是哪里来的)?原创 2025-02-12 15:41:10 · 858 阅读 · 0 评论 -
5.以syr837降压芯片为例熟悉regmap框架和regulator框架
再者,代码的复用性也会降低,如果一个器件同时支持SPI和IIC接口的话,在产品开发初期将器件设计为 SPI 接口,但是后面发现 SPI 接口不够用,或者 SOC 的引脚不够用,我们需要将器件改为 I2C 接口。将i2c、spi、mmio、irq都抽象出统一的接口regmap_read、regmap_write、regmap_update_bits等接口 ,从而提高代码的可重用性,并且使得在使用如上内核基础组件时变得更为简单易用。它是一种结构,收集调节器的安全限制,并定义消费者不能跨越的边界。原创 2025-02-11 14:14:45 · 619 阅读 · 0 评论 -
3.RK3588本地部署deepseek模型及调用API的方法
参考传送门:OpenAI调用报错问题分析。原创 2025-02-08 15:42:07 · 935 阅读 · 2 评论 -
2.Ls1046文件系统的制作与镜像打包与解包
debootstrap是debian/ubuntu下的一个工具,用来构建一套基本的根文件系统,其生成的目录符合Linux文件系统标准(FHS),即包含了/boot、/etc、/bin、/usr等等目录,但它比发行版本的Linux体积小很多,当然功能也没那么强大,因此,只能说是“基本的系统”。如果没有则使用脚本flex-mkdistrorfs制作,该脚本大致分为两步,第一步为使用debootstrap制作文件系统,第二步为apt安装一些deb包,包括常用的软件和库,需要为后续编译apps做准备。原创 2025-02-08 14:17:35 · 760 阅读 · 0 评论 -
1.OK1046开发板的使用日志
其中虚拟机的环境搭建以及代码获取略,参照飞凌的文档《OK1046A-C3_ubuntu编译手册_V1.0_2021.10.20.pdf》原创 2025-02-08 11:18:06 · 666 阅读 · 0 评论 -
我的博客宣言
本人一直有写md文档的习惯,但出于谦虚低调的原则,从未在网络上发表过。决定写博客的契机是,看到有人说,程序员应该学会给自己找成就感,觉得深以为然。趁着有充裕的自由时间,带着展示和交流的心态,来总结、记录和整理所学的内容。原创 2025-02-08 10:52:59 · 310 阅读 · 0 评论