自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小猪佩奇的博客

重视基础,重在坚持

  • 博客(35)
  • 资源 (1)
  • 收藏
  • 关注

原创 Linux 内核学习(2) --- regulator 框架

Regulator 指的是稳定器(调压器),有电压稳定器及电流稳定器两种,能够自动维持恒定电流或者电压,其中,电压稳定器在电路中比较常见。从设备驱动的角度来看,regulator的控制比较简单,主要有 enable/disable/ 输出电压或电流大小的控制。Linux利用 regulator framework 对regulator进行管理和控制。由调节器供电的设备被称为消费者(它们消耗调节器提供的电力。大多数调节器可以启用和禁用他们的输出,一些也可以控制他们的输出电压或电流。

2024-04-13 10:23:45 930 1

原创 Linux 内核学习(1) --- 时钟子系统

比如,CPU主频设置,串口的波特率设置,I2S的采样率设置,I2C的速率设置等等。中间节点有很多种,包括 PLL(锁相环,用于提升频率的),Divider(分频器,用于降频的),Mux(从多个clock path中选择一个),Gate(只能被控制ON/OFF的)。在 Linux 内核代码中,还需要声明相匹配的时钟驱动,这样在初始化阶段,内核就可以自动匹配 DTS 中的 compatible 字段,向系统注册时钟设备。是时钟的模块的具体实现者,系统开机时,需要通过驱动的时钟框架向系统注册不同的时钟。

2024-04-10 11:38:15 789

原创 C++ 学习(1)---- 左值 右值和右值引用

C++11引入了右值引用,允许我们将右值绑定到引用上。这在。

2024-02-25 12:07:11 1070

原创 OpenGL-ES 学习(5)---- GPU 基础知识

以绘制地球月球为例子,CPU 把绘制的 Shader、Buffer、贴图以及 Attachment 准备好,所有需要的数据写入显存,然后发送了两个 Draw Call D1, D2。GPU 几何处理调用 Vertex_Shader S1,计算出顶点位置,像素处理调用 Pixel Shader S2 对每一个像素进行着色。Shader S1, S2 和 Vertex Buffer B1 是复用的,但是传的参数不同,贴图 T1, T2 不同,所以绘制出来的东西也不同。

2024-02-25 10:02:24 863

原创 OpenGL-ES 学习(4)---- OpenGL-ES 坐标体系

从 [l,r] 到 [-1, 1] 的x坐标范围,从 [b,t] 到 [-1,1 ]的y坐标范围和 [-n,-f] 到[-1, 1] 的 z 的坐标范围。透视除法是一种将 3D 坐标变换到 2D 屏幕上的方法,它可以将3D空间中的任意点投影到一个正方体的六个面上,然后去掉那些不在正方体内部的点,得到最终可以显示在屏幕上的点。观察空间(View Space)也被称为 OpenGL-ES 相机空间(定义了相机所在的位置),即从摄像机的角度观察到的空间,它将对象的世界空间的坐标转换为观察者视野前面的坐标。

2024-02-11 13:27:29 1177

原创 OpenGL-ES 学习(3)---- StencilTest

实际原理就是用实际物体的大小作为模版缓冲区,略微放大一下物体,此时比原物体大的部分作为后面的轮廓,再使用模版测试,将模版值不为 1 的地方进行渲染,就可以得到物体的轮廓。,也就是每个Pixel 都会和模板缓冲区的值比较,决定是否要绘制,模板缓冲区保存的是每个像素是否要被更新的标志位。dpfail:如果模板测试通过,但是深度测试失败时将如何更新模板值;dppass:如果深度测试和模板测试都通过,将如何更新模板值。sfail:如果模板测试失败将如何更新模板值;,模版测试发生在深度测试之前。

2024-02-11 11:07:42 776

原创 OpenGL-ES 学习(2)---- DepthTest

深度测试中,深度冲突现象需要值得注意。原理: 绘制了两张图片,并且设置投影矩阵,使其都绕着 Y 轴旋转,注意这两张图片的初始化的 Z 轴坐标是不一致的,所以会出现不同的深度,此时的深度可以理解为 Camera。开启深度测试后,如果片段通过深度测试,OpenGL-ES 自动在深度缓冲区存储片段的 gl_FragCoord.z 值,如果深度测试失败,那么相应地丢弃该片段。深度缓冲区中包含深度值介于 0.0 和 1.0 之间,物体接近近平面的时候,深度值接近 0.0 ,物体接近远平面时,深度接近 1.0。

2024-02-11 10:35:22 1365

原创 OpenGL-ES 学习(1)---- AlphaBlend

我们也可以通过 glBlendEquation 自定义两个颜色之间的操作符:GL_FUNC_ADD:默认的,彼此元素相加:Cresult=CSrc+ CDst;GL_FUNC_SUBTRACT:彼此元素相减:Cresult=CSrc− CDst;GL_FUNC_REVERSE_SUBTRACT:彼此元素相减,但顺序相反:Cresult=CDst- CSrc;GL_MIN:混合结果的 4 个通道值分别取 2 元素中 4 个通道较小的值;

2024-02-11 09:45:42 1322

原创 开源项目学习(6)---- CMake demo 分析

cmake

2023-10-03 16:50:06 135

原创 开源项目学习(5)---- GCC 编译命令详解

GCC 编译

2023-08-23 19:28:24 508

原创 C++ 多线程学习(4) ---- 一道面试题的解法

C++ 多线程

2023-08-22 19:30:24 158

原创 程序员基础常识

ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是一套基于拉丁字母的字符编码,一共收录了128个字符,用一个char 类型存储,它等同于国际标准。包含了基本的拉丁字母(英文字母),阿拉伯数字,标点符号(,.!等),特殊符号(@#¥^ &)还有一些有控制功能的字符(一般不会显示出来)ASCII 编码于1967年第一次发布,最后一次更新是在1986 年,迄今为止一共收录了 128 个字符。可打印字符从空格开始。

2023-08-17 19:17:48 104

原创 markdown 博客示例样板

注意:使用 # 加空格的方式,实现标题的功能,各个标题的大小如下。

2023-08-14 17:35:11 71

原创 开源项目学习(4)---- Makefile 语句和函数

1. Makefile 的自动推导Makefile 对于文件中的文件,会自动加入文件作为依赖,并且会自动推导出这样可以简化 Makefile 的书写,.o 文件可以自动加入 .c 文件作为依赖,但是依赖的头文件需要预先加入依赖列表表示用户的主目录,用户主目录的 test 目录,用户 users 目录下的 test 目录表示当前目录下所有的文件,适用于命令,不适用于变量中,如果文件名中有字符和通配符同名,可以使用转义字符的方式实现等同于使用下面的命令:Makefile 的一些常用命令。

2023-07-17 19:19:02 104

原创 开源项目学习(3)---- Makefile 基本语法

如果文件没有找到的话,make 会生成一条警告信息,但是不会产生致命的错误,它会继续载入其他文件,一旦完成 makefile 的读取,make 会重试这些没有找到,或者是不能读取的文件,如果还是不行,make 才会出现一条致命信息。每个命令执行完成之后,makefile 都会检测命令的返回值,如果返回值为成功,makefile 将会继续执行下一条指令,如果命令的返回状态码的值为非0,则会终止当前的规则,使用。如果变量没有被定义,那么定义的值就是变量后面的值,如果变量已经被定义,那么现在的值将会什么都不做。

2023-07-17 13:30:27 147

原创 开源项目学习(2) ---- CMake 使用方法

CMake 的所有语句都写在一个名为 CMakeLists.txt 的文件中,当 CMakeLists.txt 文件确定以后,就可以用cmake 命令对相关的变量值进行配置,这个命令必须指向 CMakeLists.txt 所在的目录。CMake 是一个跨平台的安装编译工具,可以用简单的语法描述所有平台的安装编译过程,他能够输出各种各样的 makefile 或者 project 文件,能测试编译器所支持的 C++ 特性,类似于UNIX 下的 automake。

2023-07-14 12:39:15 324 1

原创 C 语言学习(3)---- C语言中的位运算和宏定义

使用 ##__VA_ARGS__ 表示是传入的可变参数,跟前面的 字符串类型的 fmt 配合,将可变参数传递到另一个支持可变参数的函数上。

2023-07-10 19:26:51 615 1

原创 开源项目学习(1) ---- FreeImage 使用指南

FreeImage 支持几乎所有图片格式的解析,解码,转码,图像处理,支持的图片格式包括 PNG,JPG,BMP,TGA,TIFF ...;FreeImage 支持 VisualStudio,Linux,Cygwin,MacoS 等平台,在 windows下开发可以直接下载编译好的 动态链接库文件,在VisualStudio 中设置对应的头文件和库文件的路径。可以获取图像首地址和每一行的内存地址,为编辑每一个像素的内容提供了可能,结合自己的绘制代码,间接实现绘制图像的功能。3.6 图像处理相关API。

2023-07-06 09:45:34 1785 1

原创 C++ 多线程学习(3) ---- 条件变量

比如上面的代码中如果不加锁保护,在判断 mDisplayQueue.empty() 的条件成立后,此时线程被挂起,调度了另一个线程,另外的线程用于唤醒这个 condition_variable,此时当前线程因为还没有处于 wait 状态上(没有处于调度器的等待队列上),所以会丢失掉这个唤醒操作,如果这个唤醒操作只有一次,那么当前线程很可能永远处于阻塞等待的状态上。要解决该问题,就必须让生产者在缓冲区满时休眠,等到下次消费者消耗缓冲区中的数据的时候,生产者才能被唤醒,开始往缓冲区添加数据。

2023-06-30 11:58:48 4545

原创 C++ 多线程学习(2) ---- 竞争条件和互斥锁

在多线程编程中,多个线程可能同时访问和修改同一个变量,如果没有正确的同步机制,可能会导致数据竞争和不一致性等问题,原子变量提供了一种简单有效的方式来解决这个问题。2.unique_lock 可以进行临时上锁再加锁,如在构造对象之后使用 lck.unlock 就可以实现解锁,lck.lock 进行上锁,而不必等到析构的时候自动解锁,lock_guard 是不支持手动释放的。需要更加细粒度的控制,互斥锁可以提供更加细粒度的控制,允许锁定特定资源或者操作,原子变量一般用于单个变量的原子操作;

2023-06-28 19:49:12 151 1

原创 图形图像处理算法(3) ---- 多项式插值法

一个多项式有几次取决于最高次幂的幂指数,有几元取决于未知数的个数,如果某一项不含未知数,称为常数项,多项式在数学的很多分支乃至自然科学中以及工程学中都有很重要的应用。全为0时,牛顿插值多项式就退化为前面的定义的 n 阶多项,对于一个含有 n 个已知点的插值情景,就需要构建 n 次的的多项式,多项式的项数是 n + 1个。有很多问题都可以按照函数的方式进行描述,然而这个函数通常是未知的,我们只能通过少量的已知的点来推断函数的大致模型,为了实现这个目的,在已知点之间做插值处理。多项式是整式的一种。

2023-06-28 17:49:59 687 1

原创 数学基础回顾(2) ---- 代数学基础

无理数,也称无限不循环小数,不能写作两整数之比,若将它写成小数形式,小数点之后的数字有无限多个,并且不会循环。

2023-06-25 20:06:56 45

原创 数学基础回顾(1) ---- 基本初等函数性质

数学 函数

2023-06-23 20:27:17 314 1

原创 图形图像处理算法(2) ---- ToneMapping 技术

视频捕捉设备生成的图形一般是正比于光场景的光辐射强度的,即响应符合线性关系,尤其是当前主流的 CMOS Image sensor(CIS),线性度好到可以直接对入射的光子数量进行计数, CIS的线性特点可以使人们很方便对视频捕捉设备捕捉的图像(主要是亮度域)进行处理,从而模拟人类的视觉行为,是设备输出的图像看起来更加自然,这个过程就叫做。,因此相同的输入像素值会被确定的映射到一个相同的输出像素值。上面的公式用来映射亮度域,a 就是前面讲的 key 值,用来控制场景的亮度倾向,一般来说,会有几个特定值,

2023-06-23 20:05:59 3536 1

原创 图形图像处理算法(1) ---- HDR 技术简介

随着HDR技术的发展,越来越多的视频平台和技术厂商持续推动 HDR 内容的制作和传播,HDR可以提供,为了呈现更高的图像品质,给体验者带来更加沉浸的感受,1. 动态范围的概念一般来说,动态范围是指,比如,我们观测场景中不同物体的亮度,它的最大值和最小值的比值就是这个场景亮度的动态范围,或者简单称这个场景的。类似的,人的各种感观(视觉,听觉和痛觉)也有可以分辨的最大值和最小值,因此也有相应的动态范围。自然场景中的动态范围比较大,通常可以达到量级,人眼的动态范围很广,一般至少在。

2023-06-23 19:13:29 2347 1

原创 C++ 多线程学习(1) ---- 线程的创建

计算机术语中的并发,指的是单个系统里同时执行多个独立的活动,而不是顺序一个个执行,对于单核CPU来说,某个时刻只可能处理一个任务,但是它却不是顺序执行的一个个任务,而是对CPU进行分时复用,一直在任务之间切换,每个任务完成一部分就去执行下一个任务,看起来任务在并行发生,虽然不是严格意义上执行多个任务,但是我们仍然称之为。注意传递的参数的生命周期,传递的参数 temp,会在主函数执行完毕之后被回收,假设上面的线程使用的是线程分离的模式运行,打印出的 temp 将是错误的结果。

2023-06-14 15:53:13 838

原创 C 语言学习(3) ---- C语言中的 typedef 关键字

typedef c语言

2023-06-13 15:55:02 2749 1

原创 计算机技术基础知识(1) ---- CPU 原理和程序执行流程

计算机体系结构

2023-06-12 20:20:09 1861

原创 算法和数据结构(2) ---- 冒泡排序和选择排序

冒泡排序 选择排序

2023-06-12 16:14:07 36

原创 算法和数据结构(1)---- 数据结构和算法基本概念

数据结构 算法 基础

2023-06-12 13:45:44 132

原创 人工智能基础知识 ---- 人工智能基本概念

是通过于环境交互来学习解决问题策略的一种算法,强化学习并没有明确正确的的动作监督信号,算法需要和环境进行交互,来获取环境反馈的滞后的奖励信号,因此不能通过计算动作和正确动作之间的误差来优化网络,常见的强化学习网络有。对应只有样本x的数据集,算法需要自行发现数据的模态,这种方式称为无监督学习、无监督学习有一类算法是将自身作为监督信号,训练时,通过计算模型的预测值和自身的关系。,神经网络的研究随着支持向量机(SVM)为代表的传统机器学习算法的兴起走向低谷,称为人工智能的第二次寒冬。

2023-06-07 15:50:39 348 1

原创 C 语言学习(2)---- C语言中的表达式求值

C语言 表达式求值

2023-05-30 20:38:07 6750 1

原创 C 语言学习(1)---- C语言中的语句和操作符

整理C语言中的语句,操作符的相关知识点

2023-05-29 20:40:19 132

原创 典型问题分析(1)---- 腾讯视频播放《长津湖之水门桥》视频花屏

问题分析

2022-06-14 22:04:47 468

原创 典型问题分析(2) ---- MIUI开启全面屏出现闪烁

典型问题分析

2022-06-13 22:04:09 862

51单片机例程

很全的51单片机例程,包括定时器 串口 基本输入输出等等

2012-08-01

空空如也

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

TA关注的人

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