自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 Linux系统编程使用Boost库

Linux下C++程序引用Boost库接口时,需要先安装Boost库到自己的开发环境。环境准备比较简单。

2025-02-18 08:54:10 470

原创 C++11型别推导 - 怎么看型别推导结果

按照软件开发过程中的三个阶段:编码阶段、编译阶段、运行时阶段,来说明如何查看型别推导结果。

2025-02-17 10:40:29 273

原创 C++11模板类型推导-推导数组元素个数

形成这种假象主要原因是:在很多语境下,数组会退化成指涉到其首元素的指针。从《C++11模板类型推导》讨论了模板推导的主流情况,也提到了一个边缘情况:数组型别又别于指针型别,尽管有时它们看起来可以互换。由于数组形参声明会按照它们好像是指针形参那样加以处理,尽管函数无法声明真正的数组型别的形参,它们却能够将。给函数模板的数组型别被推导成指针型别。形参声明成数组的引用。

2025-02-13 08:49:51 138

原创 Vim操作笔记

注:本篇文章是追加笔记,用于记录自己的常用操作。

2025-02-12 12:53:34 680

原创 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 Gradle Sync timeout

具体使用哪种方法见下边。

2024-12-23 22:39:47 1124

原创 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 Studio IDE环境配置

​。

2024-12-22 18:16:48 1179

原创 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

原创 Android14 DMA-BUF heap

Android14系统中Camera图像数据空间的分配以及使用

2024-11-28 11:13:24 1313

原创 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

原创 C/C++ printf输出字体的颜色、加粗、下划线、闪烁属性

printf函数设置文字属性

2024-04-02 14:52:45 2742 1

原创 嵌入式实战-设置寄存器的部分比特位

设置指定比特位

2023-10-13 20:05:14 172

原创 Linux驱动中dump数据到文件

当前遇到ISP对输入图像做resize处理后,再做convert处理。最终用户空间获取的ISP输出图像YUV数据中Y数据看着是正常的,UV出现明显的异常。根据UV数据效果怀疑resize是不是有异常?基于v4l2框架实现的camera驱动,通常只输出最终处理图像到用户空间,对于中间处理结果不输出。用户空间读写文件,可以使用标准的IO接口,但是驱动里需要使用另外一套函数实现文件的读写。例子:写”mm"到文件frame.raw文件。

2023-06-20 09:28:31 201

原创 Ubuntu root密码忘记了怎么重置密码

忘记root密码

2023-04-29 08:52:36 9568 8

原创 内核态调试

调试小点

2023-03-23 13:01:28 103

原创 repo环境问题

开发环境相关问题

2023-03-21 10:09:57 1483

j2me 游戏编程

j2me简单游戏编程。Layer,GameCanvas简单应用。

2013-05-17

信号量应用

linux 下c编程,通过信号量的应用实现发送进程和接收进程的数据访问

2013-05-11

视频播放控制

j2me多媒体编程,实现简单的视频播放,

2013-05-11

j2me电话本

j2me记录库编程,实现联系人添加、删除、显示

2013-04-27

模拟手机发短信

j2me学起来不太难的一种计算机语言,能够容易实现一些手机软件功能,而且编写起来容易理解

2012-05-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除