- 博客(44)
- 资源 (5)
- 收藏
- 关注
原创 Android15查看函数调用关系
例子:查看Camera3Device::waitUntilStateThenRelock调用链路1.Camera3Device.cpp中包含utils/CallStack.h头文件2.Camera3Device::waitUntilStateThenRelock中打印调用栈3.Camera3Device.cpp编译时链接libutilscallstack.so4.效果。
2025-03-27 14:56:49
291
原创 Android adb调试应用程序
启动app启动app有的时候app不是预先安装的,也不能从界面start一个app,这时需要后台拉起app。例如,android原生camera app, 包名为com.android.camera2, mainActivity名为com.android.camera.CameraActivity。手动拉起命令行输入:录制屏幕在Android开发或者调试中,使用ADB(Android Debug Bridge)录制屏幕是一种高效的方式,无需依赖第三方应用。
2025-03-21 09:50:23
596
原创 了解半导体产业--《芯事》读书笔记
IDM的定位是覆盖中游全环节,即同时掌握设计、制造、封装测试能力。典型企业有英特尔(Intel)、三星电子(Samsung)、德州仪器(TI)、镁光(Micron)等。等核心环节,实现全流程自主掌控的模式。IDM模式在行业中具有重要地位,其特点是技术协同性强,但资本投入巨大。,是指一家公司同时覆盖半导体产业链中的。
2025-03-19 15:57:20
436
原创 Android15 Camera框架中的StatusTracker
StatusTracker是Android15 Camera框架中用来协调Camera3各组件之间状态转换的类。StatusTracker线程名:std::string("C3Dev-") + mId + "-Status"
2025-03-08 19:12:27
1189
1
原创 Android15 Camera HAL Android.bp中引用Android.mk编译的libB.so
背景描述Android15 Camera HAL使用Android.bp脚本来构建系统。假设Camera HAL中引用了另外一个HAL实现的so (例如VPU HAL), 恰巧被引用的这个VPU HAL so是用Android.mk构建的,那Camera HAL Android.bp在直接引用这个Android.mk编译出来的so时很可能会出现链接问题。那么这时候有啥曲线救国方法能让Camera HAL Android.bp成功引用这个VPU HAL so吗?
2025-02-28 12:43:09
876
原创 Android11 Camera HAL Interface规范:Flush该如何实现
背景描述:Android11 Camera HAL层需要实现框架定义的一组HIDL Interface。HAL层该如何实现flush处理呢?接口该如何实现,先思考一下:相机工作(这里指request&result处理)有哪些线程,这些线程是如何工作的。
2025-02-26 12:50:44
809
原创 Android14 Camera框架中Jpeg流buffer大小的计算
Android13中,相机框架包含对AIDL Camera HAL的支持,在Android13或更高版本中添加的相机功能只能通过AIDL Camera HAL接口使用。对于Android应用层来说,使用API34即以后版本的Camera应用程序通过Camera AIDL Interface访问到HAL层。在将HAL层从HIDL相机接口迁移到AIDL相机接口时,发现AIDL HAL Jpeg buffer带下是框架确定的。接下来,先来看下HIDL HAL和AIDL HAL两者这块Gralloc Buffer(
2025-02-22 14:49:43
981
5
原创 C++11模板类型推导-推导数组元素个数
形成这种假象主要原因是:在很多语境下,数组会退化成指涉到其首元素的指针。从《C++11模板类型推导》讨论了模板推导的主流情况,也提到了一个边缘情况:数组型别又别于指针型别,尽管有时它们看起来可以互换。由于数组形参声明会按照它们好像是指针形参那样加以处理,尽管函数无法声明真正的数组型别的形参,它们却能够将。给函数模板的数组型别被推导成指针型别。形参声明成数组的引用。
2025-02-13 08:49:51
138
原创 C++11模板类型推导
C++11中,模板类型推导(Template Type Deduction)是编译器根据传递给模板函数的实参自动推到模板参数类型的过程。编译器根据expr推导T和ParamType的类型。C++11中的模板类型推导规则主要依赖于ParamType的形式:1.ParamType是指针或引用(非万能引用)时,忽略引用并匹配类型。2.ParamType是万能引用时,根据expr的左值/右值属性推导。3.ParamType是值类型时,忽略引用和const/volatile修饰。
2025-02-12 10:39:47
444
原创 C/C++代码编译 error: unused function ‘internal_format_to_string‘ [-Werror,-Wunused-function]
背景描述:Android集成开发时,经常会遇到多模块依赖编译的问题,error: unused function 'internal_format_to_string' [-Werror,-Wunused-function]是最近引用一个模块时编译遇到的问题。internal_format_to_string是被引用模块内定义的一个static函数,并且在所在模块内部有引用。自己模块做集成引用编译时提示unused。
2025-01-09 13:54:21
432
原创 Android GSI (Generic System Image)
GSI(Generic System Image)是Android 9.0(Pie)引入的一项重要功能,旨在使Android系统更容易在不同设备之间进行兼容性测试和验证。GSI是一个通用的、与设备硬件无关的Android系统镜像,主要用在符合Project Treble规范的设备上进行兼容性测试。它允许开发人员和设备制造商验证设备是否能够支持Android的最新版本。尽管GSI可以在多种设备上运行,但它不包含设备厂商特定的驱动和定制功能,因此可能无法提供完整的硬件支持和最佳的用户体验。
2025-01-09 10:36:33
1780
原创 Android性能分析工具的比较
工具主要用途适用场景Systrace捕获系统级性能数据(如 CPU 调度、线程行为、帧渲染),用于快速诊断性能瓶颈。分析 UI 卡顿、掉帧、线程调度问题,适合基础性能分析和旧版 Android(4.1+)。Perfetto现代化的性能分析工具,提供更精细的数据捕获(如内存分配、磁盘 I/O、GPU 调度),覆盖 Systrace 的所有功能并扩展。深度分析复杂性能问题,支持跨平台分析和现代 Android(10+)设备上的详细性能监控。
2025-01-02 18:53:34
1367
原创 Android Camera压力测试工具
背景描述:随着系统的复杂化和业务的积累,日常的功能性测试已不足以满足我们对Android Camera相机系统的测试需求。为了确保Android Camera系统在高负载和多任务情况下的稳定性和性能优化,需要对Android Camera应用进行全面的压测。对于压力测试,之前虽然有接触,但只是使用工具跑测,然后分析日志,解决问题。现在需要自己根据要测试的场景来确定使用什么压测工具-》压测工具怎么使用-》跑一次压测-》一次压测结果-》结果分析,确定问题-》跑一次压测。
2025-01-02 12:54:46
1457
原创 一个电视两个用途,xiaomi电视真香
利用电视和笔记本的投屏功能,将Windows11的桌面投屏到电视上进行显示。这里笔记本还是充当笔记本的角色,电视充当了显示的角色。自己平时看电视不多,笔记本屏幕不太大, 又不想再买个显示器,于是乎把家里的电视充分利用下。没想到超惊喜,真香。原理类似于常见的Android系统的投屏功能,送DPU进行显示的数据通过某个通路送到对端,对端进行显示。等待设备连接成功,之后就可以拿电视当显示器用了。
2024-12-29 13:15:19
316
原创 Android Studio打开一个外部的Android app程序
例子,将这个开源代码放到自己的Android Studio进行编译调试背景描述:由于Android Studio环境的差异,从网上或者Git下载的一个Android开源项目,用自己的Android Studio加载打开时经常遇到各种问题。那么,有没有什么方法或者步骤可以快速的将一个已存在的android项目导入到自己的Android Studio IDE,以继续开发调试呢?下面就自己的经验整理一下,如何快速的用自己Android Studio打开别人的Android代码。
2024-12-23 14:20:58
1837
原创 Android Overlay Priority Rules
3.使用Vendor或Product Overlay:如果是设备厂商,想要定制自己的设备外观和行为,可以在/vendor/overlay/或/product/overlay/目录下添加自己的资源,这些覆盖通常会有较高的优先级。默认情况下没有直接的API或配置来修改覆盖优先级,但通过定制Android系统的构建过程(如修改构建脚本、资源路径等)或依赖于厂商的定制化工具,可以对覆盖优先级进行一定程度的修改。如果是构建自己的Android系统或设备固件,可以通过自定义资源的构建过程来改变这些覆盖的优先级。
2024-12-19 16:56:38
769
原创 Android Vendor Overlay机制
Vendor Overlay(供应商覆盖)是一种用于自定义和定制Android系统UI和行为的机制。通过这个机制允许设备厂商(如手机制造商或芯片供应商)在不修改AOSP的源代码的情况下,通过覆盖Android系统的默认资源和配置文件来实现定制化的功能和外观。Vendor Overlay是Android系统中的一种机制,允许供应商(通常是设备厂商)在系统中覆盖或修改特定的资源和配置文件。
2024-12-19 16:02:18
855
原创 Android ION Buffer
ION是Android 4.0 ICS(Ice Cream Sandwich)引入的一个通用内存管理器,用于解决不同Android设备之间内存管理接口碎片化的问题。至少有三个或者更多类似PMEMM接口,在使用NVIDIA Tegra的Android设备上,有"NVMAP";在使用TI OMAP的Android设备上有"CMEM";在使用Qualcomm MSM的Android设备上有"PMEM"。
2024-12-04 09:59:16
920
原创 Linux系统将一个路径下的文件同步到另一个路径
可以进行文件内容同步,也可以同步文件描述信息;可以确保将源路径内容同步到目标路径,也可以将目标路径同步成源路径的副本;可以将源路径下的内容整体向目标路径同步,也对源路径下的内容过滤后向目标路径同步;此外,还可以进行预演同步。rsync (remote sync)命令,即"远程同步",不同于其他文件传输工具(如FTP,SCP),rsync会检查发送方和接收方已有的文件,仅对有变动(默认是文件大小或修改时间有变动)的文件进行传输。从使用的角度来说,首先A路径和B路径存在相同的文件,其次相同的文件内容存在差异。
2024-11-30 12:23:51
628
原创 VirtualBox中Ubuntu虚拟系统怎么WIFI上网
配置VirtualBox中Ubuntu虚拟机像宿主Windws 10一样连接家里的WIFI上网,步骤如下,1.确保Windows10 WIFI能上网(注:使用的非5G)3.AMD Ryzen 7 + Windows 10家庭版。2.VirtualBox管理器配置Ubuntu虚拟机网络。注:Ubuntu虚拟机需要处于关闭状态。
2024-10-27 19:34:11
581
原创 对VirtualBox中的Ubuntu虚拟机进行磁盘扩容
重启Ubuntu系统,这时df -h,查到的磁盘容量没有增加,因为到这里磁盘只是虚拟分配了,并未实际分配到虚拟机Ubuntu。用sudo fdisk -l /dev/sda是可以看到这块增加的空间的(截图是增容64G,整理笔记前已经扩容320G,实际pc没法再来一遍)。如上,当前磁盘节点/dev/sda5,挂载根文件系统根/。当前总共是62G,还剩37G。step2.在/etc/fstab中,为/dev/sda3这个分区添加一项。这时执行df -h命令,会看到/dev/sda3这块增加的空间了。
2024-10-27 17:55:44
868
原创 Linux下拷贝文件夹中除某个子文件夹以外的所有文件到另一个路径
由于工作空间有限,如果cp直接拷贝自己本地这套Android14到Android14-hidl磁盘空间可能不够了,想只拷贝本地Android14除编译生成的部分以外的文件以及文件夹到Android14-hidl。自己本地有一套Android14(比仓库中的要旧,但是能编译,刷到设备屏幕能点亮)之前编译过,想不动自己本地这套Android14,然后在拷贝一份这个Android14进行camera module的新版本适配。那么问题来了:cp没有--exclude, 怎么跳过out路径进行拷贝呢?
2024-10-18 11:00:41
310
1
原创 环境配置-meson升级
有一些开源项目是使用meson构建的,一般meson默认安装版本是0.53.2, 但是开源项目构建要求版本大于0.60,这时就需要将apt install meson安装的默认版本升级到0.60。meson是一个跨平台的构建系统,项目中常用meson实现快速构建。升级meson版本到0.63。
2024-05-15 21:16:31
543
2
原创 Linux内核常识
顶层Makefile中查看Linux源码的版本信息,如果版本编译烧到设备的话可以直接看/proc信息。例如,下边的这个Linux内核源码版本6.0.8。1.怎么看Linux源码的版本是多少。
2024-04-30 14:08:49
222
1
原创 Linux V4L2 async框架
v4l2 async框架是Linux V4L2框架中的一个子框架,用于实现v4l2 device的异步注册。我们都知道Linux V4L2框架中对设备定义分为:v4l2_device和v4l2_subdev, 设备是有从属概念的,v4l2 device之间是可以存在依赖关系的。v4l2 async框架主要就是为了解决这种乱序异步注册问题,保证一个v4l2 device的上一层的被依赖设备注册后注册这个v4l2 device。按依赖链自上而下完成注册。
2024-04-28 17:20:57
1431
原创 Freertos traceMALLOC分析内存踩踏
背景介绍:新项目使用到Freertos系统,Linux程序移植到Freertos(隐含信息代码量不是很小,是将基于Linux系统的一个IP驱动程序、应用框架和应用程序拿到Freertos上跑),validation阶段在仿真环境运行Freertos程序进行图像处理,不加载输入数据到ddr时程序能进行一帧帧图像处理,加载输入数据到ddr时程序"Data Abort"。因为之前没做过Freertos,也没有投入太多时间做Freertos开发准备,像开发Linux一样做Freertos。
2024-04-22 16:16:19
1127
原创 C/C++ printf输出格式化
例子:3.1415926左对齐6位,精度为小数点后2位,输出。格式:%[对齐][输出最小宽度][.精度]类型。%-[输出最小宽度][.精度]类型。%[输出最小宽度][.精度]类型。%[对齐]n[.精度]类型。%[对齐][n].m类型。
2024-04-07 13:35:24
284
原创 C/C++ printf输出光标位置
1.设置光标到第5行第3列打印“hello world”注释:水平方向为x, 垂直方向为y.例子:设置printf打印输出光标位置。
2024-04-03 16:58:12
474
1
原创 Linux驱动中dump数据到文件
当前遇到ISP对输入图像做resize处理后,再做convert处理。最终用户空间获取的ISP输出图像YUV数据中Y数据看着是正常的,UV出现明显的异常。根据UV数据效果怀疑resize是不是有异常?基于v4l2框架实现的camera驱动,通常只输出最终处理图像到用户空间,对于中间处理结果不输出。用户空间读写文件,可以使用标准的IO接口,但是驱动里需要使用另外一套函数实现文件的读写。例子:写”mm"到文件frame.raw文件。
2023-06-20 09:28:31
201
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人