埋头干饭ing
码龄6年
关注
提问 私信
  • 博客:207,387
    207,387
    总访问量
  • 59
    原创
  • 1,170,264
    排名
  • 102
    粉丝
  • 3
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2018-06-30
博客简介:

weixin_42581177的博客

查看详细资料
个人成就
  • 获得219次点赞
  • 内容获得78次评论
  • 获得1,448次收藏
  • 代码片获得952次分享
创作历程
  • 15篇
    2023年
  • 48篇
    2022年
  • 1篇
    2020年
成就勋章
TA的专栏
  • camera
    6篇
  • 驱动开发
    10篇
  • C51/STM32
    6篇
  • 系统编程
    4篇
  • C/C++
    15篇
  • Android
    1篇
  • 魑魅魍魉
    8篇
  • V4L2
    11篇
兴趣领域 设置
  • 编程语言
    c++c语言
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

MM-Camera架构-ProcessCaptureRequest 流程分析

func:mm_stream_map_buf,func:mm_camera_util_s_ctrl,以及每一帧结束后的func:mm_stream_unmap_buf。mm_camera_load_shim_lib里面dlopen:libmmcamera2_mct_shimlayer.so。从日志看,每次captureRequest,mct_shimlayer_process_event会被调用两次,cmd_type分别是CAM_SHIM_REG_BUF和CAM_SHIM_SET_PARM。
原创
发布博客 2023.10.07 ·
1334 阅读 ·
0 点赞 ·
0 评论 ·
5 收藏

MM-Camera架构-Preview 流程分析

cpp_init_mem() : 其实就是获取cpp_dev->iommu_hdl,这个东西是在msm_cam_smmu设备driver中统一管理的,vfe中有记录过这里。cpp_init_hardware():设置一些硬件参数、时钟、注册中断以及buf管理接口:msm_cam_buf_mgr_register_ops()这里的是CPP_HW_CMD_SUBSCRIBE_EVENT即cpp_hardware_subcribe_v4l2_event。是将当前的文件指针挂到等待队列中。这个的原理应该一样。
原创
发布博客 2023.10.07 ·
975 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

MM-Camera架构-Open 流程分析

整个Camera Open 过程总结如下:Java APP 层调用 Frameworks 层 Camera.java 中的 open() 方法,在open camera 后,才开始调用对应的 getParameters(),setParameters(), startPreview() 等 函数,这些后续分析Frameworks 层 Camera.java 中的 open()(1) 在Camera open() 函数中,如果没有指定open 对应的camera id,则默认打开后摄。
原创
发布博客 2023.10.07 ·
1571 阅读 ·
1 点赞 ·
0 评论 ·
4 收藏

MM-Camera架构-驱动代码架构

高通的camera驱动架构设计大致的原理如此:将camera的所有功能划分为不同的模块,让模块自己来决定自己的事情(高内聚,低耦合),模块需要有统一的接口和格式。模块中有端口,通过端口把模块连接起来,又把模块挂在总线上。每一个端口的连接就是一个流,把这些流用pipeline来管理。每次启动一个camera就创建一个,由这个来管理此camera的一切事物。对于每一个,模块是共享的,它可以是camera的硬件资源也可以是其它资源(如一些软件算法等资源)。
原创
发布博客 2023.10.07 ·
415 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Linux下的I2C工具:i2c_tools

i2cdetect命令是一个Linux下的I2C工具,用于扫描I2C总线并列出存在的I2C设备地址。它通常安装在i2c-tools软件包中。i2cdetect-l模式和-y模式。-l命令用于列出系统中所有可用的I2C总线。在Linux系统中,I2C总线通常表示为/dev/i2c-*设备节点,其中是数字,表示I2C总线的编号。该命令会列出每个I2C总线的编号和适配器类型。-y命令用于扫描指定的I2C总线,列出该总线上存在的有效I2C设备地址。其中-y选项表示以非交互方式运行I2C探测命令。
原创
发布博客 2023.06.11 ·
3705 阅读 ·
1 点赞 ·
0 评论 ·
19 收藏

STM32基于库函数新建工程模板

这里我们的 CORE 下面需要添加的文件为 core_cm3.c,startup_stm32f10x_hd.s (注意,默认添加的时候文件类型为.c,也就是添加 startup_stm32f10x_hd.s 启动文件的时候,你需要选择文件类型为 All files 才能看得到这个文件),USER 目录下面需要添加的文件为 main.c,stm32f10x_it.c,system_stm32f10x.c.这里,我们可以把两个文件夹删除,我们会在下一步骤中新建一个 OBJ 文件夹,用来存放编译中间文件。
原创
发布博客 2023.06.11 ·
1242 阅读 ·
2 点赞 ·
0 评论 ·
6 收藏

adb logcat > *txt以后,这份txt文件每行后边都会空一行

Windows系统中的每行都以两个字符结尾,即\r
(回车符+换行符),而Linux系统中的每行只以一个字符结尾,即
(换行符)。因此,您可以使用文本编辑器打开输出的文本文件,并将其另存为一个新文件,选择使用Linux的行结束符(即
)即可解决该问题。在许多文本编辑器中,您可以在保存文件时选择“Unix(LF)”选项,这将在保存时将行结束符转换为Linux风格的换行符。
原创
发布博客 2023.05.11 ·
280 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

系统信息:uname,sysinfo,gethostname,sysconf

在应用程序当中,有时往往需要去获取到一些系统相关的信息,譬如时间、日期、以及其它一些系统相关信息,本文将向大家介绍如何通过 Linux 系统调用或 C 库函数获取系统信息,譬如获取系统时间、日期以及设置系统时间、日期等;除此之外,还会向大家介绍 Linux 系统下的/proc 虚拟文件系统,包括/proc 文件系统是什么以及如何从/proc 文件系统中读取系统、进程有关信息。
原创
发布博客 2023.04.02 ·
1659 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

线程同步:互斥锁、条件变量、自旋锁、读写锁

为什么需要线程同步;线程同步之互斥锁;线程同步之信号量;线程同步之条件变量;线程同步之读写锁。
原创
发布博客 2023.03.27 ·
492 阅读 ·
1 点赞 ·
0 评论 ·
4 收藏

C语言位域

struct 位域结构名位域列表元素描述type只能为 int(整型),unsigned int(无符号整型),signed int(有符号整型) 三种类型,决定了如何解释位域的值。位域的名称。width位域中位的数量。宽度必须小于或等于指定类型的位宽度。带有预定义宽度的变量被称为位域。上面的结构定义指示 C 编译器,age 变量将只使用 3 位来存储这个值,如果您试图使用超过 3 位,则无法完成。int a : 8;int b : 2;
原创
发布博客 2023.02.01 ·
255 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C头文件相互包含

若hello.c文件中用到其他文件中的内容,比如yebo.h,则hello.h文件把用到的头文件yebo.h包含进来就可以了。正确的做法是:应该秉承.c文件对应的.h文件只包含头文件里用到的其它文件的头文件,任何非必须的.h文件不要包含;此时应该将其中一个头文件拆成两个头文件b1.h、b2.h,b1.h让原来的a.h包含;修改a.h、b.h两个文件,main.c文件内容不变。假若头文件a包含了头文件b、头文件b又包含了头文件a,那么在#include头文件a的时候,就可能会导致递归包含,从而导致编译出错;
原创
发布博客 2023.02.01 ·
3019 阅读 ·
7 点赞 ·
1 评论 ·
11 收藏

C函数指针与回调函数

实例中 populate_array() 函数定义了三个参数,其中第三个参数是函数的指针,通过该函数来设置数组的值。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,函数指针变量可以作为某个函数的参数来使用的,回调函数就是一个通过函数指针调用的函数。简单讲:回调函数是由别人的函数执行时调用你实现的函数。size_t 在stddef.h头文件中定义。
原创
发布博客 2023.02.01 ·
320 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Shell从入门到...

我们已经能够熟练的在终端中输入命令来完成一些常用的操作,但是我们都是一条一条输入命令。这样会很麻烦,那么有没有一种方式可以将很多条命令放到一个文件里面,然后直接运行这个文件即可?肯定有,这个就是shell脚本!shell脚本类似windows的批处理文件,shell脚本就是将连续执行的命令写成一个文件。shell脚本提供数组、循环、条件判断的等功能。shell脚本一般是Linux运维或者系统管理员要掌握的,作为嵌入式开发人员,只需要掌握shell脚本最基础的部分即可。
原创
发布博客 2023.01.14 ·
866 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Android Makefile文件:Android.mk写法

LOCAL_ASSET_FILES 在Android.mk文件中编译应用程序(BUILD_PACKAGE)时设置此变量,表示资源文件,通常会定义成LOCAL_ASSET_FILES += $(call find-subdir-assets)LOCAL_FORCE_STATIC_EXECUTABLE 如果编译的可执行程序要进行静态链接(执行时不依赖于任何动态库),则设置LOCAL_FORCE_STATIC_EXECUTABLE:=true。文件系统的其它部分还没有加载,所以必须进行静态链接。
原创
发布博客 2023.01.14 ·
1231 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Makefile从入门到....

和我一起写Makefile(作者:陈皓)百度网盘链接: https://pan.baidu.com/s/14LQAHtu-GZb7pE7EI6p2VA 提取码: qwer
原创
发布博客 2023.01.14 ·
3905 阅读 ·
2 点赞 ·
1 评论 ·
8 收藏

004_步进电机实验

• 步距角:一个脉冲信号所对应的电机转动的角度,可以简单理解为一个脉冲信号驱动的角度,电机上都有写,一般 42 步进电机的步距角为 1.8°。上图是两相同时通电的旋转顺序,与单相激励不同的是,单相通电后被固定在了与定子正对着的绕组极性,但是双相同时激励时转子却被固定在两个绕阻的。相步进电机就是单极性的步进电机,图中的红色箭头为电流的走向,四根线的电流走向汇总到公共线,所以称之为单极性电机;中线圈的组数,其中两相步进电机步距角为 1.8°,三相的步进电机步距角为1.5°,相数越多的步进电机,其步距角就越小。
原创
发布博客 2022.11.16 ·
1155 阅读 ·
2 点赞 ·
0 评论 ·
10 收藏

003_IO 扩展(串转并)-74HC595

74HC595 是一个 8 位串行输入、并行输出的位移缓存器,其中并行输出为三态输出(即高电平、低电平和高阻抗)。芯片管脚及功能说明如下:上面两张都是 74HC595 芯片管脚图,细心的朋友就会发现左侧的 1 脚是 QB,而右侧芯片的 1 脚是 Q1,左侧芯片的 11 脚是 SCK,而右侧芯片的 11 脚是 SH_CP,还有很多其他管脚不一样,其实这个都没有什么,每个人在绘制芯片管脚图时命名可能不一样而已,看一个芯片重点是管脚功能。15 和 1 到 7 脚 QA–QH:并行数据输出。
原创
发布博客 2022.11.12 ·
1319 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

002_矩阵按键

行列扫描法检测时,先送一列为低电平,其余几列全为高电平(此时我们确定了列数),然后立即轮流检测一次各行是否有低电平,若检测到某一行为低电平(这时我们又确定了行数),则我们便可确认当前被按下的键是哪一行哪一列的,用同样方法轮流送各列一次低电平,再轮流检测一次各行是否变为低电平,这样即可检测完所有的按键,当有键被按下时便可判断出按下的键是哪一个键。当然我们也可以将行线置低电平,扫描列是否有低电平。然后再翻转,使所有列线都为低电平,检测所有行线的值,由于有按键按下,行线的值也会有变化,记录行线的值。
原创
发布博客 2022.11.12 ·
288 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

001_独立按键

由于机械点的弹性作用,按键开关在闭合时不会马上稳定的接通,在断开时也不会一下子断开,因而在闭合和断开的瞬间均伴随着一连串的抖动。抖动时间的长短由按键的机械特性决定的,一般为 5ms 到 10ms。按键稳定闭合时间的长短则由操作人员的按键动作决定的,一般为零点几秒至数秒。按键抖动会引起按键被误读多次。为了确保 CPU 对按键的一次闭合仅作一次处理,必须进行消抖。按键消抖有两种方式,一种是硬件消抖,另一种是软件消抖。通过开发板上的独立按键 K1 控制 D1 指示灯亮灭。
原创
发布博客 2022.11.12 ·
309 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

000_数码管

上图电路实际上是动态数码管电路,使用的是 2 个四位一体的共阴数码管组成,即 8 位数码管的段选数据 a-dp 全部并联一起引出,每位数码管的位选即公共端引出。段选------选择LED的那个段码亮(a,b,c,d,e,f,g,dp);通过74HC254控制。位选------选择哪个LED亮(LED1~LED8);通过74HC138控制。
原创
发布博客 2022.11.12 ·
504 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏
加载更多