![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
瑞芯微
文章平均质量分 73
瑞芯微
嵌入式_笔记
!
展开
-
RK3568平台 阻塞IO和非阻塞IO
IO 模型根据实现的功能可以划分为为阻塞 IO、非阻塞 IO、信号驱动IO,IO多路复用和异步 IO。根据等待 IO 的执行结果进行划分,前四个 IO 模型又被称为同步IO.同步IO与异步IO:以现实生活去餐馆吃饭为例,根据菜单进行点餐之后,这时会存在两个选择,第一个选择是在餐馆等待饭菜制作完毕,这就是同步 IO 的具体表现。第二个选择是,离开餐馆去做其他的事情,工作人员会在饭菜制作完成之后提醒你回餐馆取餐,这就是异步IO的具体表现。原创 2024-02-25 20:39:14 · 339 阅读 · 0 评论 -
RK3568平台 OTA升级原理
通过OTA方式实现固件或软件的升级;只要是通过无线通信方式实现升级的,都可以叫OTA升级,比如网络/蓝牙。那什么是有线升级呢,也叫做本地升级,比如我们平时为电脑装系统,就是提前将系统下载到U盘上,再通过USB连接连接到电脑上进行电脑系统升级,也就是说通过UART,USB或者SPI通信接口来升级设备固件就叫做有线升级;原创 2023-12-14 22:13:33 · 1022 阅读 · 1 评论 -
RK3568平台(文件系统篇)Buildroot文件系统
Buildroot 是Linux平台上一个开源的嵌入式Linux系统自动构建框架。整个Buildroot是由Makefile脚本和Kconfig配置文件构成的。可通过Buildroot配置,编译出一个完整的可以直接烧写到机器上运行的Linux系统软件。获取buildroot官方源码:使用浏览器打开以下网址下载 buildroot 最新的源码。原创 2024-07-17 22:27:23 · 956 阅读 · 0 评论 -
RK3568平台(PCIE篇)PCIE基础知识
先认识CPU是如何访问内存进而引出CPU是如何访问PCIE内存的。CPU发出addr,可以用来方位EMMC控制器。但是CPU发出的addr,不能直接到达EMMC Flash。想访问EMMC Flash,必须用过EMMC控制器,编写EMMC控制器驱动程序。PCI/PCIe设备上有配置空间(配置寄存器),用来表明自己"需要多大的地址空间"。主机上的程序访问PCI/PCIe设备,读出配置信息,分配地址空间:注意,分配的是PCI/PCIe地址空间。原创 2024-04-06 16:24:13 · 1942 阅读 · 0 评论 -
RK3568平台(PWM篇)PWM应用编程
PWM,即脉冲宽度调制(Pulse Width Modulation),是一种通过改变信号的脉冲宽度来 控制电路的输出信号的方法。在 PWM 中,周期不变,但是脉冲宽度随时间改变,从而控制电 路的输出。原创 2024-06-16 15:15:28 · 1208 阅读 · 0 评论 -
RK3568平台(PWM篇)PWM Backlight控制背光亮度
以单片机为例,我们知道,单片机的IO口输出的是数字信号,IO口只能输出高电平和低电平。假设高电平为5V 低电平则为0V 那么我们要输出不同的模拟电压,就要用到PWM,通过改变IO口输出的方波的占空比从而获得使用数字信号模拟成的模拟电压信号。我们知道,电压是以一种连接1或断开0的重复脉冲序列被夹到模拟负载上去的(例如LED灯,直流电机等),连接即是直流供电输出,断开即是直流供电断开。通过对连接和断开时间的控制,理论上来讲,可以输出任意不大于最大电压值(即0~5V之间任意大小)的模拟电压。原创 2023-12-21 00:13:02 · 1963 阅读 · 0 评论 -
RK3568平台(电源篇)RK809电源管理
I2C 地址 7 位从机地址:0x20。PMIC 有 3 种工作模式:1. PMIC normal 模式 系统正常运行时 PMIC 处于 normal 模式,此时 pmic_sleep 为低电平。2. PMIC sleep 模式 系统休眠时需要待机功耗尽量低,PMIC 会切到 sleep 模式减低自身功耗,这时候一般会降低某些 路的输出电压,或者直接关闭输出,这可以根据实际产品需求进行配置。原创 2024-05-02 19:09:46 · 2575 阅读 · 0 评论 -
RK3568平台(电源篇)电源域IO配置
在kernel之前需要修改电源域,主控电源域的IO电平要与对接外设芯片的IO电平匹配,还要注意软件的电压配置要跟硬件的电压一致,否则,最坏的情况可能会导致IO的损坏。其实就是管理 IO 输出的电平;假如硬件上 IO 电源域配置为 3.3V,则 IO 输出最大电平为 3.3V;同理 IO 电源域硬件配置为 1.8V,则 IO 输出最大电平是 1.8V;这样有利于 IO 电平的灵活配置;原创 2023-08-08 21:27:28 · 1464 阅读 · 0 评论 -
RK3568平台 (ADC篇)温度传感器芯片SD5075
SD5075 是一款高准确度温度传感器芯片内含高精度测温 ADC,在-40C ~+100°C 范围内典型误差小于+0.5°C,在-55C~+125°C 范围内典型误差小于士1.0°C。通过两线 IC/SMBus接口可以很方便与其他设备建立通信。设置 A2~A0 的地址线,可支持8 片芯片并联总线连接本芯片可选 3 种工作模式: 连续测温模式单次测温模式,关断模式。可根据速度或功耗的需求灵活选择和配置。原创 2024-01-13 12:43:12 · 836 阅读 · 0 评论 -
RK3568平台(ADC篇)ADC调试
模数转换器(analog to Digital Converter,简称ADC)是一种数据转换器,它通过将模拟信号编码为二进制代码,使能够与现实世界进行接口。原创 2023-08-08 14:42:09 · 1061 阅读 · 0 评论 -
RK3568平台(内存篇)查看内存的基本命令
free命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。将被忽略。Mem 行(第二行)是内存的使用情况。Swap 行(第三行)是交换空间的使用情况。total 列显示系统总的可用物理内存和交换空间大小。used 列显示已经被使用的物理内存和交换空间。free 列显示还有多少物理内存和交换空间可用使用。shared 列显示被共享使用的物理内存大小。buff/cache 列显示被 buffer 和 cache 使用的物理内存大小。原创 2023-11-11 22:46:30 · 1138 阅读 · 0 评论 -
RK3568平台(内存篇)内存的基本概念
page cache,又称pcache,其中文名称为页高速缓冲存储器,简称页高缓。page cache的大小为一页,通常为4K。在读写文件时,它用于文件的逻辑内容,从而加快对上映像和数据的访问。原创 2023-11-06 23:54:46 · 399 阅读 · 0 评论 -
RK3568平台(触摸篇)多点触摸电容屏
对于所有的input设备,报告input事件时候都分这么几部分,首先在probe函数中设置设备发送的事件类型、按键类型,设置设备一些属性信息。然后在发送事件时候要根据probe的设置来发送事件,否则就会被判为无效忽略掉。input子系统事件分为type、code、value三部分。type表示事件的类型,按键、绝对坐标等。code表示键值、触摸坐标等。value表示数值,如按键按下为1,抬起为0;对于触摸屏x、y坐标则为对应的数值。输入子系统事件类型(type)中,事件类型含义如下表。原创 2024-03-18 23:46:50 · 575 阅读 · 0 评论 -
RK3568平台(触摸篇)触摸屏基本原理
触摸屏作为一种新的输入设备,它是目前最简单、方便、自然的一种人机交互方式。触摸屏又称为“触控屏”、“触控面板”,是一种可接收触头等输入讯号的感应式液晶显示装置;当接触了屏幕上的图形按钮时,屏幕上的触觉反馈系统可根据预先编程的程式驱动各种连结装置,可用以取代机械式的按钮面板,并借由液晶显示画面制造出生动的影音效果。原创 2024-06-15 17:14:08 · 855 阅读 · 0 评论 -
RK3568平台(热插拔篇)SD卡调试
SD卡进行数据传输时有两种接口协议:SDIO (即对SD卡进行IO读写操作);SPI(通过SPIO总线协议与外围接口通信)。原创 2023-08-09 21:20:43 · 1091 阅读 · 0 评论 -
RK3568平台(热插拔篇)热插拔机制
热插拔是指在设备运行的情况下,能够安全地插入或拔出硬件设备,而无需关闭或重启系统。这意味着你可以在计算机或其他电子设备上插入或拔出硬件组件(比如USB设备,扩展卡,硬件驱动器等),而无需关机或中断正在进行的操作。比如鼠标,键盘,打印机,存储设备等。原创 2024-01-30 23:54:04 · 1282 阅读 · 0 评论 -
RK3568平台(设备树api篇)of操作函数获取中断资源
设备节点,表示要解析的设备节点。索引号,表示从"interrupts"属性中获取第几个中断号。是一个无符号整数,表示成功解析和映射的中断号。中断数据结构(irq_data),表示要获取中断触发类型的中断。是一个无符号 32 位整数,表示成功获取的中断触发类型。中断号,表示要获取中断数据结构的中断号。指向 irq_data 结构体的指针,表示成功获取的中断数据结构。GPIO 编号,表示要获取中断号的 GPIO。是一个整数,表示成功获取的中断号。设备节点,表示要获取中断号的设备节点。原创 2024-01-29 22:18:27 · 515 阅读 · 0 评论 -
RK3568平台(设备树api篇)of 操作函数获取设备树节点
给我们提供了一系列的函数来获取设备树中的节点或者属性信息,这一系列的函数都有一个统一的前缀 ”“ , 所以在很多资料里面也被叫做OF函数。Linux 内核使用device_node 结构体来描述一个节点,此结构体定义在文件。原创 2024-01-28 22:45:48 · 1083 阅读 · 0 评论 -
RK3568平台(设备树api篇)of 操作函数获取属性
要查找的节点。要查找的属性的属性名。一个指向整数的指针,用于接收属性值的字节数。如果成功找到了指定名称的属性,则返回对应的属性结构体指针struct property*;如果未找到,则返回.。设备节点。需要获取元素数量的属性名。单个元素的尺寸。如果成功获取了指定属性中元素的数量,则返回该数量;如果未找到属性或属性中没有元素,则返回 0。设备节点。要读取的属性名。要读取的属性值在属性中的索引,索引从 0 开始。用于存储读取到的值的指针。如果成功读取到了指定属性指定索引位置的 u32 类型的数据值,则返回0;原创 2024-01-29 00:43:32 · 466 阅读 · 0 评论 -
RK3568平台(设备模型篇)设备模型sysfs文件系统
sysfs 文件系统是 Linux 内核提供的一种虚拟文件系统,用于向用户空间提供内核中设备,驱动程序和其他内核对象的信息。它以一种层次结构的方式组织数据,并将这些数据表示为文件和目录,使得用户空间可以通过文件系统接口访问和操作内核对象的属性。sysfs 提供了一种统一的接口,用于浏览和管理内核中的设备、总线、驱动程序和其他内核对象。它在 /sys 目录下挂载,用户可以通过查看和修改 /sys 目录下的文件和目录来获取和配置内核对象的信息。原创 2024-02-07 18:13:49 · 413 阅读 · 0 评论 -
RK3568平台(设备模型篇)sys虚拟文件系统添加节点
EXT2是最早的Linux文件系统之一,它被广泛应用于Linux操作系统中。它支持大小为16TB的分区和最大文件大小为2TB。由于其简单性和高可靠性,在很长一段时间内仍被许多用户所选择。2001年,Linux社区发布了EXT3作为EXT2的升级版。它添加了日志功能以提高数据完整性和可靠性,并且支持快速备份和恢复功能。这使得它更加适合生产环境中使用。2008年发布的EXT4是EXT系列中最新版本的文件系统。原创 2023-10-28 16:36:46 · 196 阅读 · 0 评论 -
RK3568平台(设备模型篇)设备模型基本框架-kobject 和kset
字符设备驱动通常适用于相对简单的设备,对于一些更复杂的功能,比如说电源管理和热插拔事件管理,使用字符设备框架可能不够灵活和高效。为了应对更复杂的设备和功能,Linux内核提供了设备模型。设备模型允许开发人员以更高级的方式来描述硬件设备和它们之间的关系,并提供一组通用 API 和机制来处理设备的注册,热插拔事件,电源管理等。通过使用设备模型,驱动开发人员可以将更多的底层功能交给内核来处理,而不必重复实现这些基础功能。这使得驱动的编写更加高级和模块化,减少了重复工作和出错的可能性。原创 2024-02-05 00:12:04 · 673 阅读 · 0 评论 -
RK3568平台(input篇)输入设备应用编程
基于input 子系统注册成功的输入设备,都会在/dev/input 目录下生成对应的设备节点(设备文件),设备节点名称通常为eventX(X 表示一个数字编号0、1、2、3 等),譬如/dev/input/event0、/dev/input/event1、输入设备其实就是能够产生输入事件的设备就称为输入设备,常见的输入设备包括鼠标、键盘、触摸屏、按钮等等,它们都能够产生输入事件,产生输入数据给计算机系统。/dev/input/event2 等,通过读取这些设备节点可以获取输入设备上报的数据。原创 2024-06-15 22:20:34 · 873 阅读 · 0 评论 -
RK3568平台(input篇)input输入子系统
Input 子系统是管理输入的子系统, 和 pinctrl 和 gpio 子系统一样, 都是 Linux 内核针对某一类设备而创建的框架。input 子系统处理输入事务, 任何输入设备的驱动程序都可以通过 input 输入子系统提供的接口注册到内核, 利用子系统提供的功能来与用户空间交互。输入设备总类繁杂, 包括按键, 键盘, 触摸屏, 鼠标, 摇杆等, 它们本身是字符设备, 不过内核为了能将这些设备的共性抽象出来, 简化驱动的开发, 建立了一个 Input 子系统。原创 2024-01-04 01:24:43 · 568 阅读 · 0 评论 -
RK3568平台 (input篇)IR红外遥控器
PWM 有三种工作模式, reference mode, one-shot mode 和 continuousmode. 红外遥控器就采用 reference mode,这种模式下 PWM 可以捕获输入高低电平的宽度,并产生中断,CPU接收到中断后去相应的寄存器读取。按下遥控的时候,红外接收头会产生一系列的高低电平,PWM 就会产生相应的中断,CPU 读取相应的寄存器就知道这些高低电平的时间,根据协议就可以解码出红外的用户码和键值码出来。原创 2023-08-08 17:29:07 · 796 阅读 · 0 评论 -
RK3568平台(中断与并发篇)并发与竞争控制机制总结
原子”是化学世界中不可再分的最小微粒,一切物质都由原子组成。在Linux 内核中的原子操作可以理解为“不可被拆分的操作”,就是不能被更高等级中断抢夺优先的操作。在C语言中可以使用以下代码对一个整形变量赋值。原创 2023-12-22 00:26:07 · 978 阅读 · 0 评论 -
RK3568平台(中断与并发篇) 中断上下文和软中断总结
代码示例:使用gpio触发中断,中断服务函数为中断上文。原创 2024-01-03 23:23:01 · 567 阅读 · 1 评论 -
RK3568平台(中断与并发篇) 中断的基本概念
中断是操作系统中至关重要的机制,它能够显著提高系统的响应性能和并发处理能力。中断是指在 CPU 正常运行期间,由外部或内部事件引起的一种机制。当中断发生时,CPU会停止当前正在执行的程序,并转而执行触发该中断的中断处理程序。处理完中断处理程序后,CPU 会返回到中断发生的地方,继续执行被中断的程序。中断机制允许CPU在实时响应外部或内部事件的同时,保持对其他任务的处理能力。原创 2023-12-28 00:12:29 · 481 阅读 · 0 评论 -
RK3568平台(UART篇)uart应用编程读取模块数据
在嵌入式设备中,串口设备通常以字符设备节点的形式出现在 Linux 系统中。在 Linux 系 统中,每个设备都由一个设备节点(device node)来表示,设备节点是与设备相关联的一个文 件,以/dev 目录下的文件形式存在。串口设备节点通常以 tty 开头,具体命名方式根据串口的类型和数量不同而不同。开发板 系统启动之后,使用以下命令打印终端设备节点。原创 2024-05-21 23:21:57 · 501 阅读 · 0 评论 -
RK3568平台(UART篇)Uart驱动框架
在Linux kernel中,tty驱动不像于spi,iic等那么架构简单,它是一个庞大的系统,它的框架大体如下图一。我们作为普通的驱动开发移植人员,不会从零写tty驱动,一般都是厂家根据现有的tty驱动和自家芯片修改,拿到板子按照厂家的配置,串口应该使能直接使用的。但是开发的过程中也有可能需要用到串口,一般会修改serial驱动,这样我们不会动tty_core层。原创 2024-04-05 22:01:54 · 1107 阅读 · 0 评论 -
RK3568平台 (UART篇)UART串口
串口全称叫做串行接口,通常也叫做 COM 接口,串行接口指的是数据一个一个的顺序传 输,通信线路简单。使用两条线即可实现双向通信,一条用于发送,一条用于接收。串口通信 距离远,但是速度相对会低,串口是一种很常用的工业接口。UART 作为串口的一种,其工作原理也是将数据一位一位的进行传输,发送和接收各用一 条线,因此通过 UART 接口与外界相连最少只需要三条线:TXD(发送)、RXD(接收)和 GND(地 线)。原创 2023-08-24 00:24:44 · 1124 阅读 · 0 评论 -
RK3568平台(UART篇)UART基础知识
通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),简称串口。①调试:移植u-boot、内核、应用程序时,主要使用串口查看打印信息②外接各种模块。原创 2024-03-10 23:49:11 · 906 阅读 · 0 评论 -
RK3568平台(时间篇)看门狗
在产品化的嵌入式系统中,为了使系统在异常情况下能自动复位,一般都需要引入看门狗。看门狗其实就是一个可以在一定时间内被复位的计数器。当看门狗启动后,计数器开始自动计数,经过一定时间,如果没有被复位,计数器溢出就会对CPU产生一个复位信号使系统重启(俗称“被狗咬”)。系统正常运行时,需要在看门狗允许的时间间隔内对看门狗计数器清零(俗称“喂狗”),不让复位信号产生。如果系统不出问题,程序保证按时“喂狗”,一旦程序跑飞,没有“喂狗”,系统“被咬”复位。原创 2024-05-02 21:47:27 · 1329 阅读 · 0 评论 -
RK3568平台(时间篇)定时获取GPIO的状态
【代码】RK3568平台(时间篇)定时获取GPIO的状态。原创 2024-04-25 23:15:49 · 114 阅读 · 0 评论 -
RK3568平台(时间篇)内核定时器的使用
节拍率:在使用 add_timer()函数向 Linux 内核注册定时器之前,还需要设置定时时间,定时时间由 timer_list 结构体中的 expires 参数所确定,单位为节拍数,可以通过图形化界面设置系统节拍的频率。从上图可以看出可选的系统节拍率为 100Hz、250Hz、300Hz 和1000Hz,默认情况下选择300Hz。原创 2024-02-20 22:46:09 · 772 阅读 · 0 评论 -
RK3568平台(时间篇)linux内核延时机制
内核中涉及的延时主要有两种实现方式:忙等待或者睡眠等待。前者阻塞程序,在延时时间到达前一直占用CPU,而后者是将进程挂起(置进程于睡眠状态并释放CPU资源)。所以,前者一般用在延时时间在毫秒以内的精确延时,后者用于延时时间在毫秒以上的长延时。为了充分利用 CPU 资源,使系统有更好的吞吐性能,在对延迟时间的要求并不是很精确的情况下,睡眠等待通常是值得推荐的。原创 2024-02-27 22:17:07 · 833 阅读 · 0 评论 -
RK3568平台 (时间篇)调试RTC外挂芯片hym8563
实时时钟的缩写是RTC(Real_Time Clock)。RTC 是,通常称为时钟芯片。实时时钟芯片是日常生活中应用最为广泛的消费类电子产品之一。它为人们提供精确的实时时间,或者为电子系统提供精确的时间基准,目前实时时钟芯片大多采用较高的晶体振荡器作为时钟源。有些时钟芯片为了在主电源掉电时,还可以工作,需要外加电池供电。原创 2023-08-08 13:20:12 · 1037 阅读 · 0 评论 -
RK3568平台(时间篇)RTC时间框架
RTC()是一种用于计时的模块,可以是再soc内部,也可以是外部模块。对于soc内部的RTC,只需要读取寄存器即可,对于外部模块的RTC,一般需要使用到I2C接口进行读取。至于如何供电,都是可以在主电源断开后使用纽扣电源辅助供电,达到设备断电仍然可以计时的效果。对于soc内部的RTC,需要额外的晶振,而外部模块的RTC不需要。在linux内核里,rtc是一个字符设备,内核实现了一个通用的字符设备层,提供给应用层系统调用,给底下的RTC硬件驱动层提供注册接口。原创 2024-02-27 23:11:25 · 2005 阅读 · 0 评论 -
RK3568平台(网络篇)蓝牙调试
蓝牙技术是一种的方式,利用特定频率的波段(),进行电磁波传输。蓝牙传输原理是主从关系,一个主设备可以与7个蓝牙从设备配对。原创 2023-10-14 14:23:14 · 1170 阅读 · 0 评论 -
RK3568平台(网络篇)WIFI模块RTL8821CU调试
RTL8821CU是瑞昱半导体推出的usb接口的wifi,下面的教程将介绍如何将RTL8821CU移植到rk3588的平台上。移植usb wifi需要修改的文件Android hal层需要修改的文件//kernel需要修改的文件kernel/arch/arm64/boot/dts/rockchip/rk3399-tve1030g.dtsi //除去板上的sdio的wifi。原创 2023-10-14 22:15:47 · 1637 阅读 · 0 评论