- 博客(144)
- 资源 (32)
- 收藏
- 关注

原创 2 v4l2-ctl基本使用方法
本文介绍了v4l2-ctl工具的主要功能和使用方法,用于管理和操作Linux视频设备。内容包括:1)列出设备信息和支持格式;2)获取设备详细参数;3)设置分辨率并捕获单帧图像或视频流(MJPEG/H264格式);4)查看和调整设备控制参数;5)视频流网络传输和内存映射操作。该工具可帮助用户便捷地配置摄像头参数、测试设备性能以及实现视频采集功能。
2022-08-15 23:20:48
30113
17

原创 2 UML顺序图规范
本文摘要介绍了UML交互图的11个关键概念: 生命线:用虚线表示对象生命周期; 消息类型:创始消息(实心圆+实心箭头)、同步消息(实心箭头)、异步消息(刺心箭头); 特殊标记:控制期表示阻塞、返回值虚线箭头、自身消息用于自调用; 对象管理:创建实例(虚线实心箭头)、销毁对象(X标记); 图框操作符:包括循环(loop)、条件(opt/alt)及嵌套结构; 其他:静态方法调用通过元类、交互图引用(ref图框)。全文简明梳理了UML交互图的核心符号与语义规则。
2021-10-31 13:28:13
2171

原创 2 [Android P]OpenCamera详细分析(Camera2+Hal3)
Android Camera2 + HAL3架构分析 本文基于Android P系统,详细分析了OpenCamera的流程,从应用层、Framework层到HAL层。主要包含以下内容: 整体架构 采用Camera2+Hal3架构,包含两个接口(AIDL和HIDL)和三个层次(App层、Framework层、HAL层) App与CameraService通过AIDL通信,CameraService与CameraProvider通过HIDL通信 进程启动流程 CameraProvider进程:系统启动时初始化,
2021-10-23 23:00:21
9890
4

原创 3 gdb如何从堆栈破坏的堆栈中定位问题(ucontext_t)
本文介绍了在gdb堆栈破坏但有ucontext_t进程上下文信息时调试定位问题的完整过程。通过分析段错误日志和core dump,结合ucontext_t结构中的寄存器信息(包括fault_address、LR返回地址等),成功定位到X11_XUnsetICFocus接口中的指针越界问题。通过反汇编代码和寄存器分析,发现是函数指针变为野指针导致异常。最终通过加线程ID打印验证,确定是多线程环境下先析构后调用导致的访问越界问题。文章详细展示了利用ucontext_t上下文信息进行问题分析的思路和方法。
2021-04-05 12:21:52
3603

原创 3 vim-config软件包
vim是linux系统中的编辑工具,配置好vim可以大大提高我们的工作效率。在使用vim时我们常常需要自己配置vimrc,安装需要的插件等。这一系列的配置比较繁琐,很多人望而生畏,于是渐渐放弃vim。最近看到一个博主关于[vi/vim使用进阶]的博客,学习后用起来非常方便。但弊端是配置的插件繁多,快捷键繁多,不易记忆,一旦更换电脑环境需要重新配置。为此,我将[vi/vim使用进阶]中的vim配置做成了软件包(vim-config)托管在Github上,到了不同环境,只需要./install.sh便可一键配置
2020-12-20 18:14:24
1571
4

原创 4 高通QFIL刷机:高通sdm845_la2.0用QFIL软件meta_build和flat_build刷机
[1 代码准备](i)amss_standard_oem:高通源码(ii)test_device:amss_standard_oem对应的二进制文件(高通已经编译)(iii)caf:高通源码对应的谷歌源码[2 编译源码]将amss_standard_oem/LINUX/android/vendor/qcom目录下的proprietary文件夹拷贝到caf/vendor...
2018-10-25 20:23:27
23831
13

原创 1 OpenCamera流程详细分析(Camera1+Hal1)
Android Camera系统架构与OpenCamera流程分析 摘要: 本文分析了SDM660平台的Android Camera系统架构与OpenCamera工作流程。系统架构分为四层:Java层、Framework层、HAL层和Driver层。重点解析了OpenCamera过程中跨进程通信机制,包括AIDL用于Java框架层与硬件接口框架层的进程间通信,HIDL用于框架层与HAL层的通信。文章详细描述了Bn/Bp对象在CameraClient进程和CameraService进程间的交互关系,以及回调函
2018-10-15 11:19:26
5187
原创 1 常用工具
这篇文章整理了多个开发工具的实用配置技巧:1)Source Insight 3.5/4.0的字体放大、高亮显示、行号显示、注释和搜索等配置方法;2)Evernote的格式化粘贴、文本加粗和高亮等快捷键;3)Notepad++的正则表达式搜索和多关键字高亮技巧;4)推荐使用draw.io和ProcessOn工具绘制UML图。内容涵盖代码编辑、笔记管理和绘图工具的高效使用技巧,适合开发者参考。
2025-06-29 13:11:02
502
原创 1 Studying《Computer Vision: Algorithms and Applications 2nd Edition》11-15
目录Chapter 11 Structure from motion and SLAM11.1 几何内禀校准11.2 姿态估计11.3 从运动中获得的双帧结构11.4 从运动中提取多帧结构11.5 同步定位与建图(SLAM)11.6 额外阅读Chapter 12 Depth estimation12.1 极点几何12.2 稀疏对应12.3 密集通信12.4 地方方法12.5 全球优化12.6 深度神经网络12.7 多视图立体12.8 单眼深度估计12.9 额外阅读12.10 练习Chapter 13 3D
2025-06-29 12:11:12
1345
原创 1 Studying《Computer Vision: Algorithms and Applications 2nd Edition》6-10
1 ~H100 .最近的拼接算法首先提取特征,然后进行匹配,通常使用稳健的技术如RANSAC(第8.1.4节)来计算一组良好的内点。最终计算单应性(8.34),即给定对应特征对时最小二乘拟合问题的解,(8.36)采用迭代最小二乘法,如第8.1.3节和公式(8.21–8.23)所述。
2025-06-29 11:58:51
1195
原创 1 Studying《Computer Vision: Algorithms and Applications 2nd Edition》1-5
作为人类,我们似乎毫不费力地感知周围世界的三维结构。想象一下,当你看到桌旁摆放的一束花时,那种三维感知是多么生动。你可以通过花瓣表面微妙的光影变化,轻松分辨出每片花瓣的形状和透明度,并且毫不费力地将每朵花与场景背景区分开来(图1.1)。看着一幅装裱好的集体肖像画,你可以轻松数出并说出照片中所有人的名字,甚至能从他们的面部表情猜测他们的情绪(图1.2a)。
2025-06-28 22:09:00
1610
原创 1 Studying《Computer Architecture A Quantitative Approach》5-7
不幸的是,缓存共享数据引入了一个新问题。由于两个不同处理器对内存的视图是通过各自的缓存实现的,这些处理器可能会看到同一内存位置的不同值,如图5.3所示。这种困难通常被称为缓存一致性问题。注意,一致性问题的存在是因为我们同时拥有一个主要由主内存定义的全局状态和一个由每个处理器核心私有的各自缓存定义的局部状态。因此,在某个级别的缓存可能是共享的多核系统中(例如,L3),尽管某些级别是私有的(例如,L1和L2),一致性问题仍然存在并且必须解决。
2025-06-28 19:06:21
1180
原创 1 Studying《Computer Architecture A Quantitative Approach》1-4
提高命中时间、带宽、未命中惩罚和未命中率的技术通常会影响平均内存访问方程的其他组件以及内存层次的复杂性。图2.18总结了这些技术并估计了对复杂性的影响,其中“+”表示该技术改善了某个因素,“%”表示该因素受到影响,空白表示没有影响。通常,没有任何技术在多个类别上都能提供帮助。图2.18 显示了10种高级缓存优化的总结,体现了对缓存性能、功耗和复杂性的影响。尽管通常一个技术只对一个因素有帮助,但如果预取足够提前进行,可以减少未命中;如果没有做到这一点,则可以降低未命中惩罚。
2025-06-28 13:49:50
1012
原创 1 Studying《Is Parallel Programming Hard》14-18
目录Chapter 14 Advanced Synchronization14.1 避免锁14.2 非阻塞性同步14.3 并行实时计算Chapter 15 Advanced Synchronization:Memory Ordering15.1 订购:为什么和如何?15.2 技巧和陷阱15.3 编译时间的限制15.4 高级原语15.5 硬件细节15.6 内存模型直觉Chapter 16 Ease of Use16.1 什么是简单?16.2 API设计中的生锈层16.3 修剪曼德布罗集Chapter 17 C
2025-06-28 12:48:54
939
原创 1 Studying《Is Parallel Programming Hard》10-13
只有一件事比从经验中学习更痛苦,那就是不是从中学习经验阿奇博尔德麦克利什本章主要关注散列表,包括不能完全可分区的可调整大小的散列表。第10.5节简要概述了一些非散列表的数据结构。然而,这个对散列表的阐述是对围绕高性能可伸缩数据访问的许多问题的一个优秀的介绍,包括:1.完全分区的数据结构在小系统上工作得很好,例如,单套接字系统。2.较大的系统需要参考的局部性和完全的分区。
2025-06-28 11:44:38
2349
原创 1 Studying《Is Parallel Programming Hard》6-9
目录Chapter 6 Partitioning and Synchronization Design6.1 分区练习6.2 设计准则6.3 同步粒度6.4 并行快速路径6.5 超越党派分歧6.6 分区、并行和优化 Chapter 7 Locking7.1 活命7.2 锁的类型 7.3 锁定实施问题7.4 基于锁的存在性保证7.5 锁定:英雄还是反派? 7.6 摘要Chapter 8 Data Ownership8.1 多个进程8.2 部分数据所有权和pthre ads 8.3 产品运输8.4
2025-06-27 23:57:42
1091
原创 1 Studying《Is Parallel Programming Hard》1-5
真正的困难可以克服,而想象中的困难是无法克服的。西奥多·N·韦尔需要注意的是,并行编程的难度既是一个人为因素问题,也是一个并行编程问题的技术属性。我们需要人类来告诉并行系统该做什么,这也就是编程。但并行编程涉及双向通信,程序的性能和可扩展性是机器向人类传达的信息。简而言之,人编写程序告诉计算机该做什么,而计算机则通过最终的性能和可扩展性来评估这个程序。因此,诉诸抽象或数学分析通常会非常有限效用。在工业革命中,人机界面通过人为因素研究进行评估,这些研究被称为时间和动作研究。
2025-06-27 22:32:12
665
原创 2 Studying《BPF.Performance.Tools》10-18
目录10 NetWorking10.1 Background10.2 Traditional Tools10.3 BPF Tools10.4 BPF One-Liners10.5 Optional Exercises10.6 Summary11 Security11.1 Background11.2 BPF Tools11.3 BPF One-Liners11.4 Summary12 Languages12.1 Background12.2 C12.3 Java12.4 Bash Shell12.5 Oth
2025-06-26 23:12:25
1378
原创 2 Studying《BPF.Performance.Tools》1-9
目录1 Introduction1.1 What Are BPF and eBPF?1.2 What Are Tracing, Snooping, Sampling, Profiling, and Observability?1.3 What Are BCC, bpftrace, and IO Visor?1.4 A First Look at BCC: Quick Wins1.5 BPF Tracing Visibility1.6 Dynamic Instrumentation: kprobes and
2025-06-25 22:52:08
1452
原创 1 Studying《Systems.Performance》7-13
目录7 Memory7.1 Terminology7.2 Concepts7.3 Architecture7.4 Methodology7.5 Analysis7.6 Tuning8 File Systems8.1 Terminology8.2 Models8.3 Concepts8.4 Architecture8.5 Methodology8.6 Analysis8.7 Experimentation8.8 Tuning9 Disks9.1 Terminology9.2 Models9.3 Concept
2025-06-23 23:33:55
884
原创 1 Studying《Systems.Performance》1-6
目录Preface1 Introduction1.1 Systems Performance1.2 Roles1.3 Activities1.4 Perspectives1.5 Performance Is Challenging1.6 Latency1.7 Dynamic Tracing1.8 Cloud Computing1.9 Case Studies2 Methodology2.1 Terminology2.2 Models2.3 Concepts2.4 Perspectives2.5 Method
2025-06-22 22:18:58
923
原创 1 Studying《Optimizing software in C++》
目录1 Introduction1.1 Why software is often slow1.2 The costs of optimizing2 Choosing the optimal platform2.1 Choice of hardware platform2.2 Choice of microprocessor2.3 Choice of operating system2.4 Choice of programming language2.5 Choice of compiler2.6 Cho
2025-06-22 20:16:53
1166
1
原创 1 Studying《Performance Analysis and Tuning on Modern CPUs》7-11
本文摘要: 《CPU源代码调优指南》深入探讨了如何通过数据驱动的方法优化CPU性能,涉及前端、后端和分支预测等方面的优化策略。主要内容包括: 数据驱动优化:通过优化数据结构布局(如SOA/AOS转换)和缓存友好设计,提升空间局部性;利用预取指令减少内存延迟;调整数据对齐和填充避免伪共享。 CPU前端优化:改进机器码布局,通过基本块放置、函数拆分分组和性能导向优化(PGO)提升指令缓存利用率;优化ITLB性能。 后端优化:针对内存瓶颈采用缓存优化策略和大页内存;核心计算优化包括函数内联、循环优化(分块/融合/
2025-06-19 22:50:35
1106
原创 1 Studying《Performance Analysis and Tuning on Modern CPUs》1-6
《现代CPU性能分析与调优》摘要 本书系统介绍了现代CPU性能分析与优化的方法论和实践技术。主要内容包括: 性能分析基础 现代系统性能测量中的噪声问题及解决方案 生产环境性能监控的最佳实践 性能回归的自动化检测方法 CPU微架构深度解析 流水线、超标量、乱序执行等核心微架构特性 内存层次结构与缓存优化技术 性能监控单元(PMU)的工作原理 关键性能指标 指令退役与执行的区别(Retired vs Executed) CPI/IPC等核心性能指标 流水线槽位利用率分析 先进分析方法 代码插桩与动态追踪技术 基
2025-06-19 22:14:59
1058
原创 4 Studying《ARM System Developer’s Guide》9-15
目录Chapter9 Exception and Interrupt Handling9.1 Exception Handling9.2 Interrupts9.3 Interrupt Handling Schemes9.4 SummaryChapter10 Firmware10.1 Firmware and Bootloader10.2 Example: Sandstone10.3 SummaryChapter11 Embedded Operating Systems11.1 Fundamental Co
2025-06-17 22:48:48
1026
原创 4 Studying《ARM System Developer’s Guide》1-7
• 对于存储在寄存器中的局部变量,除非需要8位或16位模运算,否则不要使用char或short类型。使用有符号或无符号int类型。在进行除法运算时,使用无符号类型更快。• 对于存储在主存中的数组元素和全局变量,请使用尽可能小的类型来存储所需的数据。这可以节省内存空间。ARMv4架构有效地加载和存储所有数据宽度,只要您通过递增数组指针遍历数组即可。避免在short类型数组中使用从数组基地址开始的偏移量,因为LDRH指令不支持此操作。
2025-06-16 23:08:36
828
原创 3 Studying《THE CACHE MEMORY BOOK》
目录INTRODUCTION TO THE SECOND EDITIONINTRODUCTION TO THE FIRST EDITIONChapter1 WHAT IS A CACHE MEMORY?1.1 CPU SPEED VS. SYSTEM SPEED1.2 THE COST OF FAST MAIN MEMORY1.3 THE CONCEPT OF LOCALITY1.4 FOOLING THE CPU1.5 CACHE DATA AND CACHE-TAG MEMORIES1.6 THRASH
2025-06-15 21:36:08
1191
原创 2 Studying《Arm A715 Technical Reference Manual》
Cortex-A715 核心技术概述 Cortex-A715 是 Armv9.0-A 架构的高效性能核心,采用 DynamIQ 共享架构,主要特性包括: 核心架构 支持 AArch64 执行状态(EL0-EL3) 40 位物理地址/48 位虚拟地址 分支预测和乱序执行 内存系统 分级缓存结构(L1指令/数据缓存32-64KB,私有L2缓存128-512KB) MMU 支持多级页表转换 缓存一致性协议(MESI) 电源管理 多种低功耗模式(WFI/WFE/全保持/关机) 动态电压频率调节(DVFS) 先进的时
2025-06-15 18:22:25
1454
原创 1 Studying《Arm A715 Software Optimization Guide》
本文档详细介绍了Arm Cortex-A715处理器的微架构特性与优化指南。主要内容包括:1. 处理器概述:Cortex-A715基于Armv9.0-A架构,支持AArch64状态、40位物理地址、SVE/SVE2向量扩展及加密扩展等特性。 流水线分析:采用顺序取指、乱序执行的13发射流水线结构,详细说明了各执行单元的类型和调度约束。 指令特性:分类列出分支、算术、浮点、SIMD、SVE等指令的执行延迟、吞吐量及使用流水线,包含特殊指令的优化建议。 关键优化技术: 内存操作优化:对齐策略、存储转发规则 寄存
2025-06-14 23:11:13
1510
1
原创 5 Android系统常用debug方法
在选择不同jpg时会调用Native_Uninit,但是同一个jpg选择不同模式时没有调用Native_Uninit(只调用Native_Process,Native_Process里alloc了内存却没有释放),最终导致内存泄漏。替换libcamera_client.so(64位) //32位的库也跑,是其他接口在跑!adb root //adb root失败:需要打开USB调试模式!注意:adb push so后需要adb reboot!
2025-06-12 21:26:43
933
原创 3 Studying《深入理解Android卷(邓凡平)》2
本章将集中精力打通Surface系统的“任督二脉”,这任督二脉分别是:· 任脉:应用程序App和Surface的关系。· 督脉:Surface和SurfaceFlinger之间的关系。图1 Surface系统的任督二脉其中,左图是任脉,右图是督脉。· 先看左图。可以发现,不论是使用Skia绘制二维图像,还是用OpenGL绘制三维图像,最终Application都要和Surface交互。Surface就像是UI的画布,而App则像是在Surface上作画。· 再看右图。
2025-06-11 20:32:10
1175
原创 3 Studying《深入理解Android卷(邓凡平)》1
本文分析了Android音频系统的核心框架,重点剖析了AudioTrack、AudioFlinger和AudioPolicyService三大模块的交互流程和工作原理。主要内容包括: AudioTrack分析 数据加载模式(STREAM/STATIC)和使用流程 共享内存机制实现跨进程数据传递 通过CB控制块协调生产者和消费者的读写同步 AudioFlinger分析 创建混音线程(MixerThread)处理多路音频 通过Track对象管理客户端连接 音频数据混音和硬件输出流程 AudioPolicy分析
2025-06-11 19:47:16
1129
原创 2 Studying《Android源代码情景分析(罗升阳)》
摘要:本文深入分析了Android系统的三大核心机制:消息处理机制、广播机制以及线程消息循环模型。消息处理机制通过MessageQueue、Looper和Handler实现线程间的异步通信,其中Looper负责消息循环,Handler负责消息发送和处理。广播机制基于Binder通信实现组件间的解耦通信,ActivityManagerService作为注册中心管理广播接收者的注册与分发。线程消息循环模型包括主线程模型、与界面无关的子线程模型(HandlerThread)以及与界面相关的子线程模型(AsyncT
2025-06-09 23:25:31
964
原创 1 Studying《蓝牙核心规范5.3》
所有的蓝牙产品如下:• Bluetooth End Product(蓝牙终端产品)• Bluetooth Host Subsystem Product(蓝牙主机子系统产品)• Bluetooth Controller Subsystem Product(蓝牙控制器子系统产品)• Bluetooth Profile Subsystem Product(蓝牙配置子系统产品)• Bluetooth Component Product(蓝牙组成产品)
2025-06-08 21:28:02
1426
原创 1 AndroidStudio常见问题
目录1 CmakeList2 Sync出错3 如何生成JAVA API英文文档4 新增的.h .cpp无法sync5 快捷键1 CmakeList宏定义add_definitions(-DDUMP_INPUT_OUTPUT)2 CmakeList链接动态库链接动态库时最基础的库放在右边: func.so base.so3 CmakeList里包含了xxx.h xxx.cpp,但是还是会有undefined reference编译错误这个Cmakelist文件需要修改,才能触发Cmake的重新编译,否则Reb
2025-06-08 18:09:40
338
原创 1 Studying《Linux Media Documentation》
Linux媒体文档是涉及到Linux内核中的媒体子系统的一系列文档,旨在帮助开发人员和用户理解和使用该子系统。这些文档包括以下内容:1. 媒体子系统文档:详细说明媒体子系统的体系结构、编解码器、设备驱动程序、API、架构实现等方面。2. 设备驱动程序文档:提供有关特定设备的信息,例如数字电视卡、摄像头等,以便开发人员能够正确地编写设备驱动程序。3. API文档:描述与媒体子系统相关的API函数和数据结构,并提供示例代码。
2025-06-08 13:43:31
968
原创 1 Studying《Debugging With GDB》17-30
在TUI模式下,gdb可以显示多个文本窗口:命令此窗口是带有gdb提示和gdb输出的gdb命令窗口。gdb输入仍然使用readline进行管理。源窗口显示程序的源文件。当前行和此窗口中显示了活动断点。程序的反汇编输出显示在程序的反汇编窗口中。注册表此窗口显示处理器寄存器。当寄存器的值发生变化。源代码窗口和汇编窗口通过高亮显示当前行并用“>”标记来显示当前程序位置。断点用两个标记表示。第一个标记指示断点类型:b至少被触发一次的断点。b从未被触发的断点。h至少被击中一次的硬件断点。
2025-06-08 11:35:37
1047
原创 1 Studying《Debugging With GDB》1-16
目录Summary of gdb1 A Sample gdb Session2 Getting In and Out of gdb3 gdb Commands4 Running Programs Under gdb5 Stopping and Continuing6 Running programs backward(reverse)7 Recording Inferior’s Execution and Replaying It8 Examining the Stack9 Examining Source
2025-06-08 11:28:00
1202
原创 1 Studying《Unix环境高级编程》
启用进程会计选项后,当进程结束后内核会写一个会计记录。会计记录一般包括命令名,使用的CPU时间总量,用户ID,组ID和启动时间等。root用户可以执行accton命令来启用会计处理。会计记录邪道指定的文件中,linux中该文件是/var/account/pacct。
2025-06-07 13:21:04
913
原创 1 Studying《深入应用C++11》
传统的一个请求一个线程处理,在处理大量并发任务时,会导致大量的线程创建和销毁,消耗过多的系统资源。线程池可以解决这个问题。本章介绍的是半同步半异步线程池,线程池结构图如图9-1:图9-1 半同步半异步线程池第一层是同步服务层,它处理来自上层的任务请求。上层的请求可能是并发的,这些请求不是马上被处理,而是将这些请求放到一个同步队列里。第二层是排队层,即同步队列。第三层是异步服务层,多个线程从同步队列里取出任务并处理。AOP(Aspect-Oriented Programming,面向方面编程)。
2025-06-03 00:58:21
1066
CMake中文手册
2015-12-14
High efficiency video coding (HEVC) text specification draft 8
2015-07-28
Learning QGIS 2.0
2015-12-13
start_kernel.xmind
2020-02-15
start_kernel.xmind
2020-02-05
JNI函数接口大全工程实例.zip
2019-08-26
Systems.Performance.Enterprise.and.the.Cloud.2013.10
2024-06-23
DDI0487J-a-a-profile-architecture-reference-manual
2024-06-23
arm-cortex-a715-core-software-optimization-guide
2024-06-23
Performance Analysis and Tuning on Modern CPUs
2024-01-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人