- 博客(308)
- 收藏
- 关注
原创 AndroidAutomotive模块介绍(四)VehicleHal介绍
前面的文章中,描述了AndroidAutomotive 的框架中应用、Framework 层服务等知识,本篇文章将会继续按照 Android Automotive 框架介绍 Vehicle Hal 层服务的内容。AndroidAutomotive模块介绍(三)CarService服务本篇文档将对 Andorid Automotive 框架中 VehicleHal 层展开介绍。VehicleHal 即为车辆硬件抽象层的定义。
2025-04-23 16:18:45
1959
转载 linux 内存管理原理
本文以32位机器为准,串讲一些内存管理的知识点。(转)初识linux内存管理子系统转 Linux内存管理(最透彻的一篇)Linux内存管理浅析(一)linux内存管理源码分析 - 页框分配器 1. 虚拟地址、物理地址、逻辑地址、线性地址 虚拟地址又叫线性地址。linux没有采用分段机制,所以逻辑地址和虚拟地址(线性地址)(在用户态,内核态逻辑地址专指下文说的...
2016-09-30 18:13:58
861
原创 嵌入式内核制作、根文件系统及内核启动流程
嵌入式软硬件架构 软件:根文件系统、Linux内核、Bootloader 硬件:底层硬件嵌入式Linux系统由Linux内核与根文件系统两部分组成,缺一不可一、内核制作 采用默认的模板来作为.config,模板在/arch/arm/configs文件中步骤:(1)先清除原有配置与中间文件 x86: make distclean arm: make distclean
2011-03-24 00:45:00
7888
转载 camera方案(二)MIPI-CSI2详解
从上图可见,当4 Lane的时候 SoT开始信号后,csi2协议会分别等到每个lane通道8bit组成一个BYTE后,按照顺序来把每个通道上的byte按照顺序组装到packet中,后续LLP会解析相应的包 (包中的数据不是4的正式倍也不影响该协议)定义了摄像头外设与主机控制器之间的接口,旨在确定摄像头与主机控制器在移动应用中的标准,CSI-2定义了摄像头应用中发送方(camera)与接收方(soc)之间的数据与控制传输标准,其物理层支持DPHY与CPHY两种,我们主要以DPHY为例。
2025-07-31 10:03:25
492
转载 AVM camera方案(一)camera链路框架
本文详细探讨了自动驾驶中基于GMSL1/GMSL2协议的摄像头模组解决方案,重点分析了MAX96712主控与MIPI_CSI2接口的软件框架实现。文章对比了3Gbps的GMSL1方案(森云SG2-AR0231C模组)和6Gbps的GMSL2方案(森云SG2-AR0233C模组),详细说明了I2C地址配置方法、pipeline数据流设计、PWM帧同步实现机制,以及YUV422图像格式处理要点。特别针对LED闪烁抑制技术进行了原理分析,并提供了寄存器配置示例。该方案可为自动驾驶视觉系统开发提供技术参考。
2025-07-31 09:57:12
525
1
原创 CRC16校验算法
CRC16校验是常用的数据传输错误检测方法,通过多项式运算生成16位校验值。计算步骤包括:初始化寄存器(通常0xFFFF)、逐字节异或处理、按位循环运算(移位和多项式异或)。不同标准(如CCITT、IBM)采用不同多项式和初始值。优化方法包括预计算查表法(LUT)可提升10倍速度,以及支持流式分段处理。需注意网络传输时的字节序转换,且CRC16仅用于错误检测而非加密。
2025-07-29 07:41:29
614
转载 CRC16校验
摘要:Modbus RTU协议采用CRC16校验机制确保数据传输的可靠性。在RS-485/RS-232串口通信易受干扰的情况下,CRC16通过多项式0xA001计算16位校验码(低字节在前)检测比特错误。发送方附加校验码,接收方验证匹配性。为提高效率,采用预计算的高低位查找表(aucCRCHi/aucCRCLo)实现快速查表计算,显著提升工业现场通信的实时性和可靠性。(149字)
2025-07-29 07:23:40
178
原创 Freertos 创建任务与常用同步机制
此文章还需要整理后再进行发布freeRTOS 任务创建和同步机制FreeRTOS 是一个开源的实时操作系统,广泛用于嵌入式系统中,特别是在需要多任务处理的场景。在 FreeRTOS 中,任务的创建和同步是核心功能,它们允许开发者有效地管理多个任务。下面我将详细介绍如何在 FreeRTOS 中创建任务和实现任务同步。
2025-07-16 07:58:18
174
转载 edp/DP(一) eDP接口的LCD屏简述
用于传输低带宽需求的数据,以及链路管理和设备控制信号,读取EDID和DPCD信息,以进行main-link的协商;在选择触摸功能是,触摸选项的数据使用的I2C进行通信(通常触摸屏数据采用的是I2C/AUX两种选项)。HID(Human Interface Devices)规范为鼠标、触摸屏、键盘等交互设备的信息交换协议和规范,所以触摸屏连接的源端设备的系统软件和固件必须支持HID规范。一个功能完整的显示屏,在启动自我检测的时候,会将下面的五种颜色进行循环播放一次,两种颜色之间的间隔为2sec。
2025-07-15 22:27:48
3105
原创 MIPI DSI(五) DBI 和 DPI 格式
本文介绍了两种显示接口标准DBI和DPI的协议内容。DBI(Display Bus Interface)又称MCU接口,通过并行总线传输控制命令和数据,主要用于低端MCU设备。DPI(Display Pixel Interface)即RGB接口,广泛应用于中低端芯片,通过RGB数据流和控制信号(VSYNC、HSYNC、DE、CLK)实现显示。重点解析了LCD时序参数:HBP/HFP(水平前后肩)、VBP/VFP(垂直前后肩)等概念,这些参数源自CRT显示器,在现代LCD中用于确保IC正确处理像素数据。文章还
2025-07-15 22:21:34
1300
原创 MIPI DSI(四) video 和 command 模式
当画面有变化的时候, DSI Host 端将数据发给屏幕,主控只有在画面需要更改的时候发送像素数据,画面不变化的时候屏幕驱动芯片从自己内部 buffer 里面提取数据显示, command 模式下需要双向数据接口。基本上我们说的“MIPI屏”就是工作在 video 模式下,包括我们使用的 RK3588,其工作模式就是 video。在 MIPI DSI 的链路层有两种模式: video(视频)和 command(命令)模式,这个属于 HOST端,也就是主控端,比如 RK3588 的 DSI HOST 接口。
2025-07-15 22:07:28
953
原创 智能座舱与单芯多屏技术架构介绍
单芯多屏技术通过单个核心芯片驱动多个显示屏,广泛应用于智能座舱等领域。技术实现主要有两种方式:SuperFrame技术通过水平拼接两幅图像,利用串行/解串芯片实现双屏独立显示;DP协议的MST技术则支持多路异步音视频流传输,提供菊花链或星形连接等灵活拓扑。这些技术有效解决了芯片接口资源与多屏需求间的矛盾,为智能座舱的多模态交互提供关键支撑。
2025-07-15 08:02:24
792
原创 MIPI DSI(三) MIPI DSI 物理层和 D-PHY
图中左侧蓝色部分是进入 HS 模式,要从 LP-11→LP01→LP-00,然后数据线进入到 HS 模式,也就是中间红色部分,传输实际的数据。传输完成以后重新进入到 LP-11(STOP)模式,也就是右边的蓝色部分。Escape 模式命令。模块,包括一个高速收发器和一个低速收发器, 其中高速收发器有 HS-TX。命令序列后面紧跟着就是要发送的数据,分为长包和短包两种,长短包结。中简化而来的,比如对于高速单向数据通道,可能 只有 HS-TX。状态下的一个特殊模式,在此模式下可以实现一些特殊的功能,我们。
2025-07-15 00:03:50
833
原创 MIPI DSI(二) MIPI DSI分层
发送端通道管理层处理示意图。如果要发送的数据和通道数不是整数倍数,那么先发送完的数据通道就进入 EOT(End of。应用层处理更高层次的编码,将要显示的数据打包进数据流中,下层会处理并发送应用层。如上图所示在接收端执行相反的操作,将 Lane 上的数据整理打包成串行数据上报给上层。很明显,如果屏幕的分辨率和帧率越高,需要的带宽就越大,就需要更多的数据线来传。数据会打包成两种格式的数据:长数据包和短数据包,关于长短数据包后面会有详细讲解。送端将原始数据打包好,添加包头和包尾,然后将打包好的数据发送给下层。
2025-07-14 23:48:02
920
原创 MIPI DSI (一) MIPI DSI 联盟概述
MIPI联盟是由ARM、诺基亚等公司于2003年成立的移动产业处理器接口标准化组织,其制定的MIPI接口规范广泛应用于移动设备。MIPI-DSI接口凭借高带宽、低线数的优势,成为驱动高清显示屏的主流方案,中高端ARM芯片均支持该接口。MIPI标准涵盖四大领域:多媒体(如DSI/CSI接口)、控制与数据、芯片间通信及调试追踪,其中D-PHY和C-PHY是当前最常用的物理层协议。随着技术发展,A-PHY专为汽车智能驾驶系统设计,M-PHY则主要应用于UFS存储。该联盟的标准化工作有效促进了移动设备各子系统的兼容
2025-07-14 23:16:17
651
原创 PyCharm如何导入conda环境_2023.09.16
conda create -n env_name python=x.x # env_name 为虚拟环境名 python=x.x 代表当前创建虚拟环境所使用的python版本。7.第7步:点击确定/应用后退出到代码界面,可以看到右下角的Python解释器已经被替换为我们刚创建的ACMF_main环境了。3.第3步:打开文件 → 设置 → 项目 → Python解释器界面(我这里是汉化后的,没有汉化的小伙伴对照着寻找即可)5.第5步:按照图中的步骤依次选择刚才创建好的虚拟环境“ACMF_main”
2025-07-08 20:15:50
554
原创 【C/C++】从 epoll 到 reactor 网络框架
epoll_wait:等待 epoll 检测集合中的事件,第二个参数通常是一个 epoll_event 数组,用于接收返回的 io 就绪对应的 fd 属性,第四个参数 timeout 用于控制超时时间,时间到时停止阻塞,如果为 -1 则表示一直阻塞,返回就绪事件的个数。epoll_ctl:操作 epoll 实例,利用第二个参数的值来改变 fd 与 epoll 实例之间的关系,一共有三种关系,第四个参数 epoll_event 用于控制检测集合的观测方式。什么是 epoll_event?
2025-06-30 22:23:15
620
原创 Reactor线程模型
Reactor: 负责监听和分配事件, 将IO事件分派给对应的Handler, 新的事件包括连接建立就绪、读就绪、写就绪等。Handler: 将自身与事件绑定, 执行非阻塞IO任务, 完成channel读写, 一级业务逻辑。缺点: 将比较耗时的数据编码、解码、计算等操作放入线程池中执行, 虽然提升性能但还不是最好的方式。模型, 是一种思想, 也叫1+M+N线程模式, 应用广泛, 如Nginx、缺点: 所有接受连接, 处理数据操作都在一个线程中完成, 有性能瓶颈。
2025-06-30 22:12:07
434
原创 多线程 Reactor模型
1)单Reactor单线程,前台接待员和服务员是同一个人,全程为顾客服务2)单Reactor多线程,1个前台接待员,多个服务员,接待员只负责接待3)主从Reactor多线程,多个前台接待员,多个服务员。
2025-06-30 21:50:14
572
原创 linux dbus详解
在构建复杂应用或服务时,经常会遇到进程间通信的问题。DBus 提供了一个高效、可靠的解决方案,使得不同程序之间可以轻松地进行消息交换和远程调用。本篇文章将带你详细了解 DBus 的工作机制及如何在你的项目中有效利用这一技术。D-Bus是 Linux 及其他类 Unix 系统下的一种进程间通信机制(IPC)。那什么是进程间通信机制(IPC)呢?
2025-04-24 19:32:11
2373
原创 DBus:深入理解嵌入式系统中的DBus
在嵌入式系统中,DBus被广泛应用于各种设备和服务之间的通信,例如硬件驱动程序、系统服务和应用程序之间的交互。DBus服务端代码用于注册DBus名称、创建DBus对象和接口,并循环等待DBus消息。DBus客户端代码用于建立与DBus总线的连接,创建DBus消息并发送给DBus服务端,然后等待DBus服务端的响应。名称所有者是DBus进程的唯一标识符,而对象路径是DBus进程提供的对象的路径。DBus进程是指运行在系统中的DBus应用程序,它们可以是系统服务、应用程序或者其他类型的进程。
2025-04-24 19:18:47
975
原创 QEMU 调试 TF-A开发环境建立(使用 QEMU 调试 TF-A (Trusted Firmware-A) 之二)
QEMU是一款开源的模拟器,可以模拟多种不同的处理器和硬件架构,包括ARMv7和ARMv8等。在 TF-A 开发过程中,使用 QEMU 可以将ARMv8软件在x86平台上运行,从而实现快速、灵活和低成本的开发和调试。通过使用 QEMU 调试 TF-A,开发者可以运行TF-A固件的ELF文件,可以停止和启动运行,可以单步运行,还可以在运行时检查和修改变量和寄存器状态。这种调试方式,比使用硬件调试器便宜许多,也更加方便一些。我们计划使用QEMU模拟Cortex-A57处理器来运行和调试TF-A。
2024-01-28 21:40:20
815
原创 014 - ARM64上的GIC-400(GICv2)
一个高优先级的中断可以抢占一个处于 active 状态的低优先级中断,即 GIC 的分发器会先找出并记录当前优先级最高并且处于 peding 的中断,然后抢占当前的中断服务,转而先处理高优先级中断,上述内容是从 GIC 角度分析的。GICD_ISENABLER1 的访问地址 = GIC-400 的基地址+ GIC-400 的 Distributor的偏移量+ 指定寄存器的偏移量 = 0x FF84 0000 + 0x100 + (0x100+4*1) = 0x FF84 0204。n=50/4=12。
2023-10-20 10:41:44
1031
原创 Linux ARMv8 异常向量表
对于向量表vectors中的kernel_ventry 1, irq , 则 b el\()\el\()_\label跳转到el1_irq函数。2、系统调用:el0_sync->el0_svc->el0_svc_handler->el0_svc_common(__NR_syscalls, sys_call_table)->invoke_syscall。1、数据异常:el0/1_sync->el1_da->do_mem_abort->do_page_fault.点击(此处)折叠或打开。
2023-10-19 10:02:45
999
原创 Linux 内核启动分析
注:__idmap_text_start到__idmap_text_end的数据,其实就是启用mmu前后,需调用的那几个函数(因为CPU有加速指令处理的关系, 有些指令是乱序执行,防止开启mmu后,因为地址空间切换,导致的代码混乱的问题),因为有一段是va=pa因此, 之后即使还有code在用老的物理地址,也是不会出问题的。4、__create_page_tables: 创建内存映射表,一共两张,一张存放在swapper_pg_dir(线性映射),一张存放在idmap_pg_dir(一对一映射)。
2023-10-19 09:59:59
623
原创 Linux性能基础:CPU、内存、磁盘等概述
影响CPU性能的指标主要分为:主频、 CPU位数、CPU缓存指令集、CPU核心数和IPC。① CPU主频CPU主频是指CPU内核工作的时钟频率,单位Hz。它直接的决定了CPU的性能,也可以通过超频来提高CPU主频来获得更高性能。主频越大,运算越快。例如CPU在一个时钟周期内运算一条指令,2GHz运行一条指令需要10ns,那么1GHz需要20ns,运算速度慢了一倍。因为2GHz的时钟周期比1GHz的时钟周期占用的时间减少了一半,速度自然就快了一倍。主频不代表CPU整体速度。
2023-10-16 16:16:00
1730
11
原创 linux 性能分析perf
perf是用于性能分析的一个工具,功能强大,用法也非常多。但是要真正用明白,懂得分析,需要长时间的学习和沉淀。例如必须得知道cycles分支预测等这些是什么意思,每个性能事件的统计值高低所带来的影响分别是什么,如何增加/降低某个性能事件的统计值等等,只有在具备这些理论基础的情况下,去分析perf的统计值才比较有意义。end。
2023-10-09 12:27:05
424
原创 Cache Memory简单介绍
今天探究的主题是cache。我们围绕几个问题展开。为什么需要cache?如何判断一个数据在cache中是否命中?cache的种类有哪些,区别是什么? 为什么需要cache memory 在思考cache是什么之前我们首先先来思考第一个问题:我们的程序是如何运行起来的?我们应该知道程序是运行在 RAM之中,RAM 就是我们常说的DDR(例如 DDR3、DDR4等)。我们称之为main memor...
2022-05-16 08:21:35
1504
转载 Linux中内存管理详解
Linux中内存管理 内存管理的主要工作就是对物理内存进行组织,然后对物理内存的分配和回收。但是Linux引入了虚拟地址的概念。 虚拟地址的作用 如果用户进程直接操作物理地址会有以下的坏处: 1、 用户进程可以直接操作内核对应的内存,破坏内核运行。 2、 用户...
2022-04-21 01:26:06
4766
3
原创 arm-linux内存页表创建
linux的内存(正式)页表是在内核代码执行到start_kernel函数后执行paging _init函数建立的,这里要注意一个事情就是说,这里paging_init函数可以正常创建内存页表的条件有两个:1、meminfo已初始化:即初始化物理内存各个node的各个bank,一般对于小型arm嵌入式设备,不涉及多个内存就是一个node和一个bank;这部分初始化是在paging_init函数前面的对uboot所传参数的解析中完成的(可在内核的arm_add_memory函...
2022-04-21 00:39:08
1169
原创 音频硬件基础
参考自:https://www.pianshen.com/article/199251837/ https://blog.csdn.net/hellosky521/article/details/86740258 1、CODEC: 音频压缩CO+解压缩DEC,CODEC就...
2022-03-27 10:29:58
12331
转载 MMU的作用及工作过程
MMU的作用及工作过程 MMU(Memory Management Unit)是内存管理单元的简称,读者朋友在学习嵌入式的时候应该听说过µCLinux,这是适合没有MMU的微控制器使用的嵌入式Linux操作系统,比如ARM7。由于没有MMU,所以在µCLinux上实现多任务功能是一个非常棘手的问题。从而引出了本节的关注点:MMU的作用是什么?简单地说,MMU的作用有两点:地址翻译、内存保护。1、地址翻译 在处理器上一般会运行一个操作系统,如Linux,用户编写的源程序需要经过编...
2022-03-08 01:19:34
4117
1
原创 MMU的理解
MMU内存管理单元相关知识点总结1.MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权,多用户多进程操作系统。2.虚拟内存由来:许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还有用
2022-03-08 01:09:49
435
原创 MMU的理解
MMU内存管理单元相关知识点总结1.MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权,多用户多进程操作系统。2.虚拟内存由来:许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还有用
2022-03-08 01:04:35
1384
原创 2021-10-21MIPI-DSI、MIPI-CSI、LVDS等接口解析
MIPI-DSI、MIPI-CSI、LVDS等接口解析 夜风~ 2019-03-29 14:06:00 ...
2021-10-21 09:42:56
3948
转载 使用perf record不能显示函数名称的解决方法
2021.2.5补充: 当可以使用perf但是不能通过perf record -g ./名称+perf report显示函数名的时候,直接安装以下依赖:(其中包括了解决函数名的工具以及提供了别的一系列工具) sudo apt-get install elfutils-devel libdw-dev systemtap-sdt-dev...
2021-10-12 18:49:03
3128
原创 测试 使用 perf 进行性能分析时如何获取准确的调用栈
测试使用 perf 进行性能分析时如何获取准确的调用栈ifonly·2020年02月27日· 101 次阅读目录perf是 Linux 下重要的性能分析工具,perf可以通过采样获取很多性能指标,其中最常用的是获取 CPU Cycles,即程序各部分代码运行所需的时间,进而确定性能瓶颈在哪。不过在实际使用过程中发现,简单的使用perf record -g获取到的调用栈是有问题的,存在大量[Unknown]函数,从perf report的结果来看这些部分对应地址大部分都是非...
2021-10-12 16:01:05
4123
原创 linux驱动之DMA
转载自:https://www.jianshu.com/p/e1b622234d13一、前言在嵌入式Linux的内核及驱动中,DMA常常被人提起。我们也许清楚它的原理且很明白它非常重要,但在某种程度上,对于DMA的使用者来说,我们一般使用其接口,而很少去了解整个DMA的运作方式。那么本文就从头到尾,简单地说一下DMA吧注意:本文对DMA的概念不做讲述,请各位读者自行了解DMA的概念。二、正文2.1 高端内存2.1.1 内核虚拟内存在了解DMA之前,我们需要先了解...
2021-08-12 11:31:22
5175
2
原创 2021-08-12
转载自:https://www.jianshu.com/p/e1b622234d13 一、前言 在 嵌入式Linux 的内核及驱动中,DMA 常常被人提起。我们也许清楚它的原理且很明白它非常重要,但在某种程度上,对于 DMA 的使用者来说,我们一般使用其接口,而很少去了解整个 DMA 的运作方式。那么本文就从头到尾,简单地说一下 DMA 吧注意:本文对DMA的概念不做讲述,请各位读者自行了解DMA的概念。 二、正文 2.1 高端内存 2.1.1 内核虚拟内...
2021-08-12 11:24:58
1150
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅