![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
嵌入式Linux驱动
文章平均质量分 76
liefyuan
一招鲜吃变天!
展开
-
【Buildroot】构建Bluez5总结
而且我还换了多个版本的Bluez都是报同样的错误,不可能这些版本的Bluez软件包都有问题吧!头文件是“字符扩展类型(word-expansion types)” POSIX 标准定义的必须的头文件 --来源:http://www.cppblog.com/blueskiner/archive/2012/07/29/185527.aspx。我的SDK自带的交叉编译器(arm-rockchip830-linux-uclibcgnueabihf)里面的C库是uClibc,通过查询这个交叉编译器没有实现。原创 2024-02-20 11:57:02 · 1271 阅读 · 4 评论 -
【嵌入式Linux】内核模块编译出错解决:ERROR: modpost: “xxxx“
参考:https://blog.csdn.net/m0_61737429/article/details/129842585。可以初步确认是Linux内核之中有功能没有打开,导致编译这个内核ko模块无法通过。到这里,就基本上就确定了,需要打开内核的。里面的Makefile文件。原创 2023-12-28 11:48:02 · 2464 阅读 · 0 评论 -
PCA9685使用终极总结
(2).舵机的控制需要MCU产生一个20ms的脉冲信号,以0.5ms到2.5ms的高电平来控制舵机的角度。用i2cdump查看器件所有寄存器的值,这个命令可以查看器件所有寄存器的值,在实际测试时很好用。2.0ms-----------135度;2.5ms-----------180度;0.5ms-------------0度;2.5% 对应函数中占空比为250。1.0ms------------45度;1.5ms------------90度;0x40:表示总线上 设备地址为0x40的这个设备;原创 2023-12-20 12:03:30 · 874 阅读 · 0 评论 -
瑞昱WiFi/BT模块总结
控制BT/BLE的都是UART接口的由构建文件系统时应用层的接口协议来确定要不要硬件连接流控制引脚(RTS/CTS)H4 蓝牙协议接口,基于五线:RX/TX/CTS/RTS/GND带硬件流控H5 蓝牙协议接口,基于三线:RX/TX/GNDH2:基于USB的传输H4:基于五线UART(RX/TX/CTS/RTS/GND带硬件流控)的传输,最简单的传输方式,只在HCI raw data前面加上一个type;原创 2023-11-24 17:52:33 · 293 阅读 · 0 评论 -
【嵌入式Linux】编译应用和ko内核模块Makefile使用记录
kbuild中会预定义一些变量,如obj-y、obj-m,用来指定要生成的.o目标文件。第二种是将驱动程序作为模块单独编译成.ko文件,而不编译进内核中,然后手动加载,即obj-m变量。本例中将DriverFramework.o赋值给obj-m变量,就是采用第二种模式,单独生成一个独立的DriverFramework.ko文件。变量表示的这个目录下存放该版本linux内核源码,其中调用的shell指令uname -r用来打印该内核的版本号。变量的值在赋值的时候立即展开,并且在后续的使用中不再改变。原创 2023-10-26 18:15:48 · 2531 阅读 · 0 评论 -
【Buildroot】记一次编译出错gzip: popt-1.16.tar.gz: not in gzip format--更改br里面的默认下载地址
重新找到一个地址:http://ftp.rpm.org/popt/releases/historical/这个文件的时候,解压命令不好使了,没法解压,不像是gzip的格式!文件地址在:http://rpm5.org/files/popt。文件2010年就在这里了,那应该文件没有问题!没问题,说明就是那个压缩文件有问题!这个网站下载的这个文件是没有问题的!我看看其他正常的压缩文件是咋样的。直接下载的文件也不行啊!估计是那个地址是有问题的!我直接下载替换,看看情况。总结来说就是:在解压。文件里面的下载地址!原创 2023-10-24 17:09:38 · 373 阅读 · 0 评论 -
交叉编译glib
GLib 是一个通用的、可移植的实用程序库,它提供了许多有用的数据类型、宏、类型转换、字符串实用程序、文件实用程序、主循环抽象等。下载地址:https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.17.tar.gz。zlib下载地址:https://github.com/madler/zlib/releases/tag/v1.3。libffi下载路径:https://github.com/libffi/libffi/releases/说明zlib没有编译好!原创 2023-10-20 17:53:14 · 871 阅读 · 1 评论 -
【RV1103】Luckfox Pico RV1103 开发记录
可以看出来,他们内容上的区别仅就各自打开了对应板子的存储方式的支持。应该是一个Uboot编译配置文件的补丁。常按住Pico 开发板的Boot按键,然后插入USB,此时USB设备栏会弹出设备号(这里是211);把编译出来的这些文件都拷贝到Windows下去。看瞎了眼才发现,GPIO轮流做庄。查看spi-nand配置好的信息。可以看出来就是设备树不一样。原理图什么的都是部分。说明是个补丁无疑了!原创 2023-09-28 13:48:45 · 4943 阅读 · 5 评论 -
【RV1103】RTL8723bs (SD卡形状模块)驱动开发
开发板:LuckFox Pico (主控RV1103)WiFi模块:Licheepi wifi+bt模块(TF卡形状,SDIO接口)改进:LuckFox Pico焊上spinand flash (W25N01GVZEIG) 然后使用 LuckFox Pico Plus的设备树和配置文件(或者说在LuckFox Pico Plus的设备树和配置文件上修改的)使用LuckFox Pico的原因是,LuckFox Pico默认使用SD启动,SD卡的连线OK,直接插一个SD卡性状的WiFi模块没毛病啊!原创 2023-09-26 11:06:21 · 5317 阅读 · 9 评论 -
【全志V3s】SPI NAND Flash 驱动开发
SLC工艺2KB*65536页10万次擦写次数焊好以后用CH341A读了一下。原创 2023-09-18 01:09:54 · 12352 阅读 · 25 评论 -
【IIC子系统】IIC驱动框架解析(二)
SMbus是Intel基于I2C推出的一种通用的通信协议(System Management Bus),其可以认为是I2C的通信子集,其定义了一套I2C主-从设备之间通信的时序。SMbus与I2C的关系,可以类比与网络通信中的HTTP和TCP的关系,I2C提供的基本的通信规则,其上可以跑的是裸数据,而SMbus规定了数据的格式。i2cmsg可以作为I2C传输的一个单元进行使用,通过将通信数据封装到i2cmsg中,之后再通过i2c_transfer完成驱动程序与设备的I2C通信。其他非负数: 发送的字节数。原创 2023-06-21 11:24:20 · 401 阅读 · 0 评论 -
【IIC子系统】IIC驱动框架解析(一)
在线Linux源码位置查看:https://elixir.bootlin.com/linux/latest/source/drivers/i2c/i2c-core-base.c#L117。这是所有的设备驱动匹配都适用的一种匹配方式,不仅限于I2C设备匹配,利用设备树(.dts,.dtsi)节点的字段进行配备。由上可知,设备树中的compatible字段和结构体对象中的compatible成员是一致的,所以。这种方式是比较常用的,有设备树后就用的少了。这个平时用得少,略过。原创 2023-06-21 11:21:36 · 1178 阅读 · 0 评论 -
【RV1126】IIC驱动--MAX30102
MAX30102是一个集成的脉搏血氧仪和心率监测仪生物传感器的模块。它集成了一个红光LED和一个红外光LED、光电检测器、光器件,以及带环境光抑制的低噪声电子电路。MAX30102采用一个1.8V电源和一个独立的5.0V用于内部LED的电源,应用于可穿戴设备进行心率和血氧采集检测,佩戴于手指点耳垂和手腕处。标准的I2C兼容的通信接口可以将采集到的数值传输给Arduino、KL25Z、STM32、STC51等单片机进行心率和血氧计算。原创 2023-06-20 23:30:11 · 1170 阅读 · 5 评论 -
【RV1126】IIC驱动--EEPROM
下面使用IIC子系统框架编写EEPROM驱动。驱动端使用杂项设备字符驱动框架。由上面可以知道,空闲了I2C4接口,然后也引出来了。由上表可知是256KB的EEPROM。该EEPROM的IIC地址是。在地址0x50有响应。原创 2023-06-18 18:59:06 · 1029 阅读 · 1 评论 -
【RV1126】使用gpiolib框架
这一套非常方便!原创 2023-06-16 01:02:18 · 1831 阅读 · 0 评论 -
【RV1126】按键中断--使用输入子系统事件方式
我使用的是荣品的pro-rv1126。原创 2023-06-14 11:48:54 · 1055 阅读 · 2 评论 -
【嵌入式Linux驱动】驱动开发调试相关的关系记录
https://www.processon.com/mindmap/64537772b546c76a2f37bd2f原创 2023-05-04 23:03:34 · 398 阅读 · 0 评论 -
嵌入式Linux:FrameBuffer 和 DRM/KMS(一)
包括:它们有什么区别?传统的显示框架;简单,但是只能提供最基础的显示功能;无法满足当前上层应用和底层硬件的显示需求;目前主流的显示方案;为了适应当前日益更新的显示硬件;软件上能支持更多高级的控制和特性;DRM 是 Linux 目前主流的图形显示框架,相比 FrameBuffer 架构,DRM 更能适应当前日益更新的显示硬件。比如 FB 原生不支持多层合成,不支持 VSYNC,不支持 DMA-BUF,不支持异步更新,不支持 fence 机制等等,而这些功能 DRM 原生都支持。原创 2023-05-04 23:00:56 · 2676 阅读 · 1 评论 -
嵌入式Linux(10):杂项设备和字符设备驱动总结
相对来说,如果是操作几个GPIO的操作,其实使用简单的杂项设备驱动就可以了,字符驱动相对会复杂一点。原创 2023-04-21 09:33:31 · 209 阅读 · 0 评论 -
嵌入式Linux(9):字符设备驱动--自动创建设备节点
在上一节中,使用insmod加载模块后,还需要通过mknod命令来手动创建设备节点,这样太麻烦了。需要加入自动创建设备节点的功能。mdev是udev的简化版本,是busybox中所带的程序,最适合在嵌入式系统。udev是一种工具,它能够根据系统中的硬件设备的状态动态更新设备文件,包括设备文件的创建,删除等。设备文件通常放在/dev目录下。使用udev后,在/dev目录下就只包含系统中的真正存在的设备了。udev一般用在PC上的linux中,相对mdev来说要复杂一些。原创 2023-04-21 09:32:42 · 1087 阅读 · 0 评论 -
嵌入式Linux(8):字符设备驱动--注册字符类设备
杂项设备字符类设备文件:include/linux/cdev.hdev_t dev;定义一个cdev结构体。使用cdev_init函数初始化cdev结构体成员变量。第一个:要初始化的cdev结构体//实际就是把文件操作集写ops使用cdev_add函数注册到内核。第一个:cdev的结构体指针。第二个:设备号。第三个:次设备号的数量。创建字符设备节点字符设备注册完以后不会自动生成设备节点(杂项设备在注册完以后就会自动生成设备节点)。原创 2023-04-21 09:32:04 · 579 阅读 · 0 评论 -
嵌入式Linux(7):字符设备驱动--申请设备号
将我们的主设备号和次设备号组成一个dev_t类型。第一个参数是主设备号,第二个参数是次设备号。dev_t (linux/types.h)类型:是用来保存设备号的,是一个32位数。高12位是用来保存主设备号,低20位是用来保存次设备号的。可以看出设备号被优先分配到255~234的范围内。需要明确知道系统里面的哪些设备号没有被使用。Linux提供了几个宏定义来操作设备号。使用动态分配会优先使用255~234。次设备号的位数,一共是20位。原创 2023-04-21 09:31:32 · 938 阅读 · 0 评论 -
嵌入式Linux(6):驱动模块传参
驱动传参就是在安装驱动模块(.ko文件)的时候传递参数给驱动模块。原创 2023-04-21 09:25:23 · 755 阅读 · 0 评论 -
嵌入式Linux(5):物理地址到虚拟地址映射
在Linux上面如果想要操作硬件,需要先把物理地址转换成虚拟地址。因为Linux使能了MMU,所以我们在Linux上不能直接操作物理地址。内核给我们提供了相关的函数。原创 2023-04-21 09:23:24 · 1476 阅读 · 0 评论 -
嵌入式Linux(4):应用层和内核层数据传输
Linux一切皆文件!文件对应的操作有打开,关闭,读写。设备节点对应的操作也有打开,关闭,读写。原创 2023-04-21 09:21:22 · 683 阅读 · 0 评论 -
嵌入式Linux(3):设备驱动--杂项驱动(MISC)
字符设备:IO的传输过程是以字符为单位的,没有缓冲。比如I2C,SPI都是字符设备。块设备:IO的传输过程是以块为单位的。跟存储相关的都属于块设备驱动。比如:TF卡,NAND flash等。网络设备:与前两个不一样,这个是以socket套接字来访问的。杂项设备属于字符设备的一种。杂项设备会自动生成字符节点。我们的系统里面有很多杂项设备,可以通过输入命令来查看。杂项设备除了比字符设备代码简单,还有别的区别吗?原创 2023-04-21 09:20:40 · 729 阅读 · 0 评论 -
嵌入式Linux(2):将Helloworld驱动编译到内核
目录下,这里就是众多字符设备驱动的地方。在这个目录下新建一个目录。上电信息有打印hello world说明驱动加载进去了。,然后进入hello目录,新建文件。路径下)里面把我们写的包含进入。1、进入内核源码目录,然后进入。接下来就要在上一级的目录(将下面这一行添加进去。Makefile文件。原创 2023-04-21 09:20:30 · 754 阅读 · 0 评论 -
嵌入式Linux(1):make menuconfig图形化界面
目录下面有很多默认的写好的配置文件。相当于饭店里面已经有的特色菜,你不知道该点什么的时候就直接拷贝这个特色菜到根目录下改个名字为.config就可以了。当make menuconfig保存退出以后,Linux会将所有的配置选项以宏定义的形式保存在。因为内核会默认读取Linux内核根目录下的.config作为默认的配置选项。会在linux kernel源码下载arch目录下根据。输入“/”即可弹出搜索界面,然后输入要搜索的内容即可。退出分为保存退出和不保存退出。按空格键循环选择三个状态。原创 2023-04-21 09:19:53 · 1746 阅读 · 0 评论 -
【RP-RV1126】音频系统
要想使用以下这些命令需要安装alsa-lib和alsa-utils库。原创 2023-04-10 00:35:02 · 2380 阅读 · 0 评论 -
【RV1126】调试GT911,1024x600 7寸 MIPI 电容触摸屏
硬件:易百纳38x38mm RV1126板SDK:2.2。原创 2023-03-25 18:45:43 · 4229 阅读 · 0 评论 -
嵌入式学习之Linux驱动:IO模型(1)概览
IO的英文全称是input和output,翻译过来就是输入和输出。在冯诺依曼结构中,将计算机分成为5个部分:运算器、控制器、存储器、输入设备、输出设备。其中输入设备指的是向计算机输入数据或信息,如鼠标,键盘都是输入设备。输出设备指的是用于接收计算机输出信息的设备,如电脑显示器。原创 2022-12-22 19:35:57 · 1542 阅读 · 0 评论