- 博客(469)
- 收藏
- 关注
原创 C++设计模式 - 生成器模式
生成器模式是一种创建型,它允许你分步骤创建复杂对象。与其他创建型模式不同的是,生成器模式允许你在一个过程中创建一个对象,而无需等待所有部分都准备好。这种模式特别适用于需要构造不同表示或状态的复杂对象时。
2024-11-03 23:08:27 66
原创 RK3568平台(camera篇)车载摄像头串行器和解串器方案
SerDes是Serializer/Deserializer的缩写,即串行器和解串器。由于同轴线的传输延迟几乎可以忽略不计(ns级别),相当于将原来只能短距离传输的高速并行信号(/I2C/CLK等)的传输距离延长,真正做到高带宽、低延迟、长距离的数据传输。串行器(Serializer)把并行信号转化为串行信号解串器(Deserializer)把串行信号转化为并行信号。
2024-11-03 01:22:08 194
原创 RK3568平台(文件系统篇)proc文件系统
(1)proc是虚拟文件系统,虚拟的意思就是proc文件系统里的文件不对应硬盘上任何文件,我们用去查看proc目录下的文件大小都是零;(2)proc文件系统是开放给上层了解内核运行状态的窗口,通过读取proc系统里的文件,可以知道内核中一些重要数据结构的数值,从而知道内核的运行情况,也可以方便调试内核和应用程序;
2024-11-02 23:11:11 36
原创 RK3568平台(UART篇)数据收发测试
目前在RK3568主板上需要外接一个NFC模块,NFC模块是通过主板上的UART接口进行连接的,需要测试滴卡的时候,串口是否接收到NFC的数据。NFC滴卡时会发送一下数据到uart的ttyS8.UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种双向、串行、异步的通信总线,仅用一根数据接收线和一根数据发送线就能实现全双工通信。
2024-11-02 18:28:36 46
原创 RK3568平台(GPIO篇)recovery升级模式点亮升级led灯
定义:Loader模式是嵌入式系统中的一种特殊模式,用于固件的升级和烧写。进入条件:系统在烧录过固件后,上电启动时会进入Loader模式。操作:在Loader模式下,bootloader会等待主机的命令,进行固件的升级和烧写。定义:MaskRom模式是系统在未烧录固件或固件数据被清除时的初始状态。使用场景:主要用于bootloader损坏时的系统修复。进入条件:当bootloader校验失败(如无法读取IDR块或bootloader损坏)时,系统会自动进入MaskRom模式。
2024-10-31 23:14:38 30
原创 RK3568平台(PWM篇)红外遥控适配
PWM 有三种工作模式, reference mode, one-shot mode 和 continuousmode. 红外遥 控器就采用 reference mode,这种模式下 PWM 可以捕获输入高低电平的宽度,并产生中断,CPU 接收到中断后去相应的寄存器读取。按下遥控的时候,红外接收头会产生一系列的高低电平,PWM 就会产生相应的中断,CPU 读 取相应的寄存器就知道这些高低电平的时间,根据协议就可以解码出红外的用户码和键值码出来。下图是 NEC 红外编码协议的简单示意图,详细的协议附在最后。
2024-10-30 23:06:09 167
原创 RK3568平台(显示篇)HDMI之HPD热插拔
当计算机主机上的显卡检测到DVI接口HPD引脚电压大于2V时,判断为显示器通过DVI接口与主机连接:当检测到HPD引脚电压小于0.8V时,则判断为显示器与主机之间的DVI连接已经断开。3、主机(显卡控制器)检测到HPD为高电平时,判断显示器通过HDMI与主机连接,并通过HDMI接口的第15、16脚 DDC通道(I2C)读取显示器中的EDID数据。2、当显示器检测到稳定的5V电压信号后,会把HPD信号拉高(HPD也是由主机的18脚的5V信号产生的,也就是说在显示器断电的情况下HPD信号也会拉高)。
2024-10-27 12:45:42 50
原创 RK3568平台(基础篇)预编译命令原理
define 可以将一对文本进行替换,在编译器读到需要被替换的文本的时候,会将这些文本全部替换成我们给定的文本。
2024-10-27 01:11:57 43
原创 RK3568平台(基础篇)使用errno打印错误码
当linuc C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因。中的 api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因,在实际编程中用这一招解决了不少原本看来莫名其妙的问题。但是errno是一个数字,代表的具体含义还要到errno.h中去阅读宏定义,而每次查阅是一件很繁琐的事情。
2024-10-27 00:45:31 43
原创 RK3568平台(camera篇)UVC AICamera集成
主板端:目前在RK主板上预留了一个USB接口,使用USB接口来连接供应商提供的UVC摄像头。供应商UVC摄像头:目前供应商提供的usbcamera是rv1126,基于usb接口跟主板端相连接。其实使用供应商提供的camera,里面的大部分功能供应商已经是做好的,里面集成了主板厂需要的AI功能。主板厂需要做的是:发送客供camera需要的uvc指令到RV1126,RV1126收到主板端的uvc指令后,开启相应的Ai功能。
2024-10-24 00:11:05 41
原创 嵌入式面试题 ARM常见面试题
在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。大端模式:低字节写在高地址上,高字节写在低地址上。小端模式:高字节写在高地址上,低字节写在低地址上。ARM的Cache和MMU是处理器架构中的两个重要组件,它们在系统中扮演着关键的角色。以下是对它们的详细解释及其在系统中的作用:Cache,即高速缓存,是ARM处理器中一块可高速访问的内存块。
2024-10-22 23:57:17 536
原创 ARM裸机 - ARM体系架构
处理器架构指的是处理器的内部结构和功能,也就是处理器如何执行指令和数据的方式。不同的处理器架构有不同的指令集,也就是处理器能够理解和执行的基本操作。处理器架构对于处理器的性能、功耗、兼容性等方面有重要的影响。常见的架构有x86、ARM、RISC-V和MIPS。X86:这是英特尔和AMD的“专属”架构,主要用于PC、服务器和云计算领域,拥有高性能、高速度和高兼容性的优势。在PC市场上,X86架构几乎独霸多年,占据了超过90%的份额。
2024-10-20 23:58:19 993
原创 RK3568平台(平台总线篇)IIC光感BH1721模块调试
总上,读取数据全过程为:通过查看数据手册得知BH1721的设备地址为0x23,光感并不是直接去读取设备地址上某个寄存器的地址,而是通过向0x23直接写入数据0x01 0x10后直接读取光感值。第一步:通过I2C总线,主机给bh1721设备发送数据:0x01 ——> (Power on)第二步:通过I2C总线,主机给bh1721设备发送数据:0x10 ——> (Continuously H-resolution mode)第三步:通过I2C总线,主机读取设备bh1750采集到的数据。
2024-10-11 22:33:37 90
原创 RK3568平台(平台总线篇)CAN总线
CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO*1 国际标准化的串行通信协议。在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统 被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很 多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个 LAN,进行大量数据的高速通信”的需 要,1986 年德国电气商博世公司开发出面向汽车的 CAN 通信协议。
2024-10-05 16:08:10 186
原创 RK3568平台(opencv篇)opencv处理图像
cv2.cvtColor()函数功能: 将一幅图像从一个色彩空间转换到另一个色彩空间。参数定义:src:要转换的源文件code,转换的色彩空间,在 opencv 中有超过 150 种颜色空间转换方法,但是经常用的只有 BGR-灰度图和 BGR-HSVBGR 和灰度图的转换使用 cv2.COLOR_BGR2GRAY 参数BGR 和 HSV 的转换使用 cv2.COLOR_BGR2HSV 参数。
2024-10-04 21:49:07 361
原创 RK3568平台(camera篇)音视频基础知识
音视频解码,顾名思义就是把已经压缩过后的音视频(视频:H264/H265,音频:AAC、MP3)数据还原成原始数据(视频原始数据:YUV,音频原始数据: PCM)的过程。第一步:读取流媒体地址:并进行解封装操作 先读取音视频的流媒体地址,并把流媒体获取到的音视频进行解封装处理。所谓解封装处理就相当于把、 mpegts等复合流分割成视频裸流(H264/H265视频流)和音频裸流(AAC音频流)。
2024-10-03 23:25:46 149
原创 简历制作面试篇
模板:推荐使用简洁一点的模板,不要太花哨,能够让HR和面试官清楚,快速知道信息就可以,太花哨容易分散别人的注意力。格式:一般选用PDF,不要用WORD。照片:技术岗一般不用贴照片,推进写上自己的联系方式或者微信。专业技能:描述专业技能,如果只是看过几篇文章而已,就写了解。接着是写熟悉,掌握,最后是写精通了。我建议是谨慎写精通,除非真的研究到很深入,否则不建议写。专业名词:专业名词一定要写对,这样方便HR在搜索匹配度的时候容易找到。
2024-10-03 22:07:44 344
原创 RK3568平台(USB篇)U盘原理分析
USB盘”(以下简称“U盘”)是基于USB接口、以闪存芯片为存储介质的无需驱动器的新一代存储设备。U盘的出现是移动存储技术领域的一大突破,其体积小巧,特别适合随身携带,可以随时随地、轻松交换资料数据,是理想的移动办公及数据存储交换产品。U盘的结构基本上由五部分组成:USB端口、主控芯片、FLASH(闪存)芯片、PCB底板、外壳封装。
2024-10-02 23:31:42 228
原创 HR面试篇
HR感兴趣的不是你的职业规划,感兴趣的是你的职业规划和他们公司有没有关系。或者说他们公司能不能去帮助你去实现你的职业规划。切忌不要讲不合实际的,比如要在公司赚多少钱等等。要根据公司的特点,找到切入点,只要讲得积极向上就可以。
2024-10-02 21:56:01 1941
原创 RK3568平台(网络篇)网络七层协议
1> 应用层OSI参考模型中最靠近用户的一层,是为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,POP3、SMTP等。实际公司A的老板就是我们所述的用户,而他要发送的商业报价单,就是应用层提供的一种网络服务,当然,老板也可以选择其他服务,比如说,发一份商业合同,发一份询价单,等等。 表示层表示层提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。
2024-10-02 16:19:57 35
原创 RK3568平台(camera篇)tp9930调节亮度色度锐度对比度
1.1说明TP9930是支持高清传输视频接口(HD)的通用HD/SD视频解码器-TVI)视频、NTSC/PAL CVBS视频以及常见的HD模拟视频格式解码。它集成了4个多标准解码器,可同时对现有的HD模拟格式进行4通道解码。它还可以与任何传统的CVBS相机兼容,以实现向后兼容性。主要应用是高清环绕视图,或者任何其他需要传输高清视频以实现扩展范围的应用。TP9930具有内部箝位、自动增益控制放大器,可实现最佳信号调理。它有反-混叠滤波器,以减少串扰。
2024-09-27 23:34:39 228
原创 RK3568平台(设备树篇)设备树DTS文件解析
RK3568官方包里的设备树很多,一个dts可理解为是一个板件对应的设备树,官方针对不同的ddr以及显示、摄像头等需求,提供了不同的dts,可供后续开发参考。上述设备树文件看着非常多,但其实每个板件设备树其实对应的是一个dts,再加上dts包含的dtsi。
2024-09-24 23:41:54 159
原创 RK3568平台(显示篇)锁屏状态下永不熄屏
发现在PowerManagerHandlerCallback的封装中,会去调用电源管理相关的函数,在锁屏的状态下,会去把vop out相关的电源关闭,从而导致vop无信号输出。使用cat /sys/class/drm/card0-HDMI-A-1/enabled查看,发生熄屏状态下是不使能的状态。继续尝试修改,打算从锁屏状态下的接口入手,查看有何异常的地方。修改后验证,发现在锁屏状态下还是会熄屏,继续尝试修改。尝试在vop里面,将disable的接口屏蔽掉。需求:在锁屏的状态下不熄屏。
2024-09-23 22:40:16 120
原创 RK3568平台(时间篇)延迟函数udelay和msleep
在RK3568开发板上,是预留了两个以太网口,以太网口有两个led等,led闪烁表示网络连接成功。目前产线报出来的问题是:以太网口的led灯,只亮一个黄色的led灯,但是绿色的led不亮。怀疑点:PHY芯片驱动问题,导致的led不闪烁,因为以太网口的led的亮灭是由PHY芯片控制的。经过排查,发现PHY芯片控制led等的函数发生了阻塞,从而导致的led等不闪烁。
2024-09-22 23:31:54 103
原创 RK3568平台(基础篇)万用表的使用
万用表两个笔头的插法:黑笔头是插在COM的孔里面,红色笔头可以插在其他的三个孔里面,20A和mA分别用来测电流,另外一个孔可以用来测其他(电压 电阻)。以下这个三角符号(像wifi一样的)可以用来测通断:使用万用表的红笔和黑笔进行短接,这时候两端之间如果是通的话,万用表就会发出“嘀嘀嘀”的响声。
2024-09-22 00:03:27 141
原创 RK3568平台(音频篇)UAC驱动分析
代码路径:sound\usb\card.c匹配过后,进入usb_audio_probe函数里面snd_usb_create_streams,它主要调用snd_usb_create_stream,主要是根据不同的协议,进入不同的分支。这里面有一个重要的函数,snd_usb_parse_audio_interface,用来解析音频接口,也就是pcm。这里面UAC1.0,2.0和UAC3.0有些一样。
2024-09-21 17:05:38 456
原创 RK3568平台(网络篇)MAC地址烧录
MAC地址(Media Access Control Address)也称为硬件地址或物理地址(Physical Address),它是一个用来确认网络设备位置的位址。在OSI模型中,第二层数据链路层则负责MAC位址。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。MAC地址由网络设备制造商生产时烧录在网卡(Network lnterface Card)的EMMC中(通常可以通过程序擦写)。
2024-09-19 22:32:54 394
原创 RK3568平台(基础篇)示波器的使用
示波器的横轴表示的是时间,在横轴上有10个小格,每个小格的时间是200us。示波器的纵轴表示的是电压,在纵轴上有8个小格,每个小格的电压表示1V。以上是个方波,方波在纵轴上占5个小格,每个小格的电压是500mv,所以这个方波的电压为2500mv。方波在横轴上一个周期大约占4.6个小格,每个小格的时间是200us,这个方波的周期为9200us。
2024-09-18 23:56:04 108
原创 RK3568平台(文件系统篇)VFS虚拟文件系统
为什么 Linux 内核的文件系统类型那么多,都能挂载上呢?为什么系统里可以直接 mount 其他文件系统呢?为什么 Linux 的虚拟文件系统这么强大?这得益于它的数据结构设计得十分精妙。为支持各种本机文件系统,且在同时允许访问其他操作系统的文件,Linux内核在用户进程(或C标准库)和文件系统实现之间引入了一个抽象层。该抽象层称之为虚拟文件系统(Virtual File System),简称VFS。VFS的任务并不简单。一方面,它用来提供一种操作文件、目录及其他对象的统一方法。
2024-09-17 23:39:37 144
原创 RK3568平台(基础篇)内核OOPS信息解读
什么是Oops?从语言学的角度说,Oops应该是一个拟声词。当出了点小事故,或者做了比较尴尬的事之后,你可以说"Oops",翻译成中国话就叫做“哎呦”。“哎呦,对不起,对不起,我真不是故意打碎您的杯子的”。看,Oops就是这个意思。在Linux内核开发中的Oops是什么呢?其实,它和上面的解释也没什么本质的差别,只不过说话的主角变成了Linux。当某些比较致命的问题出现时,我们的Linux内核也会抱歉的对我们说:“哎呦(Oops),对不起,我把事情搞砸了”。
2024-09-17 00:29:20 141
原创 RK3568平台(音频篇)Tinyalsa open调用流程
TinyALSA 是一个轻量级的 ALSA(Advanced Linux Sound Architecture,高级 Linux 音频架构)实现,用于与 Linux 内核中的 ALSA(高级 Linux 声音架构)进行交互,旨在为嵌入式系统和资源受限的设备提供音频支持。ALSA是位于Linux Kernel层面的音频系统。TinyALSA是AOSP(Android Open Source Project)的一部分。
2024-09-15 23:07:38 399
原创 RK3568平台(音频篇)I2S通信协议波形分析
I2S全称Inter-IC Sound, Integrated Interchip Sound,或简写IIS,是飞利浦在1986年定义(1996年修订)的数字音频传输标准,用于数字音频数据在系统内部器件之间传输,例如编解码器CODEC、DSP、数字输入/输出接口、ADC、DAC和数字滤波器等。除了都是由飞利浦定义外,I2S和I2C没有任何关系。I2S是比较简单的数字接口协议,没有地址或设备选择机制。在I2S总线上,只能同时存在一个主设备和发送设备。
2024-09-14 17:28:45 197
原创 RK3568平台(基础篇)GKI开发方式
GKI:Generic Kernel Image 通用内核映像。Android13 GMS和EDLA认证的一个难点是google强制要求要支持GKI。GKI通用内核映像,是google为了解决内核碎片化的问题,而设计的通过提供统一核心内核并将SoC和板级驱动从核心内核移至可加载模块中。核心内核为驱动模块提供了稳定的内核模块接口,模块驱动和核心内核可以独立进行更新。内核接口可以通过upstream的方式进行扩展。
2024-09-09 02:18:53 267
原创 RK3568平台(内存篇)EMMC介绍
看了很多文章,上来就开始列概念,例如上面一段,接着讲原理,自己看的很含糊,不清楚自己到底看了个啥玩意儿,也不知道它长什么样、用在哪、主要干嘛用的,就讲怎么开发设计,很散没有目的。它工作在应对快速的命令传输的推挽模式。使得EMMC能够自动调整主机与从机的工作方式,没有位数限制,不需要处理其他繁杂的NAND Flash兼容性和管理问题,同时,控制器是其卡的应用和多媒体总线之间的联系介质,它能在应用程序总线和标准多媒体总线之前完成协议转换。该分区的数据,在 eMMC 上电后,可以通过很简单的协议就可以读取出来。
2024-09-07 11:59:10 183
原创 RK3568平台(USB篇)USB HUB集线器
hub,集线器,连接在host与device之间的一种用于usb接口扩展的usb设备。可以将一个usb上行接口扩展为多个下行接口,使得一个host可以同时与多个device连接。一般来说,一块hub桥接芯片可扩展4个usb接口,而市面上的一拖七hub,其实使用了两块hub桥接芯片,其中一块hub桥接芯片的上行端口连接到另一块hub桥接芯片的下行端口。hub的上行端口面向host,下行端口面向device。在下行端口上,hub提供了设备接入检测和设备移除检测的能力,并给下行端口供电。
2024-09-05 23:20:04 140
原创 RK3568平台(内存篇)Linux内存管理
最直观的,我们买手机,电脑,,都会标明内存是多大,例如途中的8G,16G,128G都指的内存大小。我们应该都听说过 RAM 存储器,它是一种半导体存储器件。RAM 是英文单词 Random 的缩写,即“随机”的意思。所以 RAM 存储器也称为“随机存储器”。那么 RAM 存储器和内存有什么关系呢?内存就是许多 RAM 存储器的集合,就是将许多 RAM 存储器集成在一起的电路板。RAM 存储器的优点是存取速度快、读写方便,所以内存的速度当然也就快了。
2024-09-02 17:01:11 428
原创 RK3568平台(UART篇)uart_driver 注册流程
串口子系统框架是 Linux 内核中专门用于处理串口设备的模块化框架:在上图中,包含了多个层级,每个层级负责处理不同的功能和任务,从而实现串口设备的 完整驱动和管理。接下来依次介绍每个层级的作用。应用层:位于最顶层,是串口子系统中用户空间应用程序与内核空间之间的接口,应用层 包括了用户空间的串口应用程序,如串口通信工具 minicom 等。字符设备层:位于应用层的下方,负责将用户空间的串口读写请求传递给内核空间的 tty_core 层。
2024-09-02 00:04:16 295
原创 RK3568平台(平台总线篇)SPI驱动框架分析
可以将上面这一 SPI 子系统划分为三个层次,分别为用户空间、内核空间和硬件层,内核空间就包括 SPI 设备驱动层、SPI 核心层和 SPI 适配器驱动层,而本章的主要内容就是介绍 SPI 子系统框架中的内核空间。SPI 适配器驱动层是 SPI 子系统的重要组成部分,负责实现具体的 SPI 硬件控制器的驱动 程序。SPI 适配器驱动程序的作用如下:(1)提供标准化的 SPI 传输接口 ·适配器驱动层为 SPI 核心层提供标准化的传输接口,确保不同的 SPI 控制器可以统一 使用这些接口进行数据传输。
2024-08-27 23:59:31 471
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人