自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 资源 (5)
  • 收藏
  • 关注

原创 为什么要用PLL时钟芯片替换传统晶体和振荡器?

随着社会智能化程度越来越高,数字化转型全面加速,市场对电子系统的精确度要求也越来越高!

2023-10-04 18:57:41 313

原创 使用addr2line 打印调用栈信息调试程序崩溃

使用addr2line 打印调用栈信息调试程序崩溃

2023-01-07 11:00:24 925

原创 gcc中动态库和静态库的链接顺序

动态库中可以包含另一个静态库

2022-07-28 16:03:47 1676

原创 15种常用ARGB颜色

2021-11-22 16:21:06 4597

原创 地址换算

当存储器的容量为2MB时,若首地址的十六进制表示为:000000H,则末地址的十六进制表示为存储器容量为2MB,寻址范围是2*2^10*2^10=2097152d=200000h,地址范围000000h~1FFFFFh,因此末地址为1FFFFFh。

2021-05-26 14:03:27 4822

转载 Linux 压缩解压命令

https://www.cnblogs.com/fengweixin/p/3713193.html

2021-03-25 16:09:52 182

原创 V4L2驱动框架个人总结心得

一、介绍:V4L2全名为VideoFor Linux 2,它是针对Linux系统的视频设备处理架构。视频设备主要包括输入设备(摄像头)及输出设备(显示设备)。V4L2架构设计之初是只针对视频设备的,那时的V4L2被限制只能在structvideo_device结构体里面创建,并且用video_buf控制视频缓存。但随着硬件的变化也越来越复杂,现在大部分设备里面包含了多个子设备IC,比较常见的子设备如编解码器、传感器、摄像头控制器等。通常这些IC一般通过i2c总线连接到主板,这些设备都统称为su...

2021-03-17 15:48:11 924

原创 关于队列出队入队速度的分析

每隔(t总=t0+t1+t2)时间入队,每隔t3时间出队。如果t总>t3,则系统启动后,队列里会积累几帧数据,此时出队,拿到数据会比价快,但是很快队列会变空,再去拿数据需要等待,等有帧入队了才能拿到数据。如果上次拿数据的时候队列是空的,那么等待一段时间后有帧入队了,立刻出队,经过t3再去拿,此时队列里还没有数据,需要等待(t总-t1)时间,这是等待情况中等的最长时间。如果去拿的时...

2020-03-19 16:17:36 1243

原创 CMOS Sensor基础知识

CMOS Sensor基础知识曝光时间以行长为单位; PCLK以Hz为单位;行长以周期数为单位,帧长以行长数为单位;其中周期数就是频率T 周期以ms为单位;f 频率以Hz为单位;f = 1 / T;Vsync = Dummy Line = VTotal = VTS= V_Size + V_Blank // 帧长; 不占用曝光时间,但是会影响帧率(FPS)Hsync =...

2019-12-16 20:19:01 2068

原创 I2C总线中8(7)bit和10bit介绍与区别

  经常有用人问我,使用USB2XXX的USB2IIC功能的时候,从机地址应该怎么传递的问题,这个问题的根源在于不同的I2C从机厂商采用了不同的I2C总线地址约定,导致在说I2C总线的时候总是容易搞混,本文主要针对8位和10位I2C总线地址进行详细的说明。  8位地址  一些厂商在提供从机地址的时候说的是包含了读写位的8bit地址,比如他说写地址为0x92,读地址为0x93,如下图所...

2019-11-07 10:32:45 6766

原创 BMP图像读取数据

我们在使用Windows的画图软件,画一张图,然后保存成24位位图BMP图像后,要对这幅图像进行一系列的格式转换之前,需要先将BMP里的数据提取出来,然后再保存成BGR888的图像。有两处细节要注意:第一,我们直接保存成BMP图片,不知道为什么读取BMP信息很多字段为0,所以我们要自己手动设置;第二,读取出的数据我们以为是bgr格式存放的,其实不对,其实是grb存放的,虽然我也不知道为...

2019-11-04 11:50:16 1226

原创 网络学习总结

网络学习涉及到很多,如TCP/IP,socket, 等等这里只保存平时学习的网址:socket:http://c.biancheng.net/view/2359.html粘包问题:https://www.cnblogs.com/songzhixue/articles/10745418.html鸟哥Linux 服务器架设篇https://blog.csdn....

2019-10-25 09:37:41 214

原创 Binning模式缩小分辨率

示例:640*480 NV12图像,提取Y部分数据,将Y数据做降采样,隔行隔列取值,保存成文件。#include <stdio.h>#include <string.h>#define WIDTH_ORIGIN (640)#define HEIGHT_ORIGIN (480)#define WIDTH_BINNING (320)#define HEIG...

2019-10-14 10:01:31 1218

原创 抠矩形图程序

根据抠图位置的起始点坐标和长宽进行矩形抠图。示例代码:原图大小为640*480, 每个像素占16bit。起始点坐标(234,124),抠图长宽分别为238, 282.#include <stdio.h>#include <string.h>#define WIDTH_ORIGIN (640)#define HEIGHT_ORIGIN (480)#...

2019-10-11 16:15:53 222

原创 图像格式互转

一:灰度图转YUV由于工作需要,经常接触12bit灰度数据,因此在这里将数据的处理记录下来。经常接触的是sensor输出的12bit灰度数据,按照需求经常会将这份数据转换成其他格式,如16bit灰度数据(高4bit为0),YUV数据等,其中在转成YUV之前需要先把每个piel的12bit数据变成8bit,即将低4bit舍弃,然后补齐UV数据。以下代码为将16bit的灰度数据转成YUV格...

2019-09-20 09:42:24 1338

转载 亮度、对比度与饱和度

亮度是指图片的明暗程度,对比度是指图片明暗的差异,饱和度则是图片颜色的饱满程度。图片文件一般是RGB格式,当然也有的是YCBR格式。前者主要用于显示,后者则主要用于印刷。当然世上没有绝对的事情,也有人喜欢在电脑或手机上看YCBR格式的,至于印刷嘛,如果用RGB格式则可能会偏色。RGB是三种颜色的缩写,其中R是指红色(Red)、G是指绿色(Green),B是指蓝色(Blue)。现代的时候颜色...

2019-09-04 09:49:35 9846

原创 查看动/静态库包含的函数

1. 命令 nm -D,如下所示:  nm -D liblistdevs.so > listdevs.txt  //列出liblistdevs.so 的函数 输出到 listdevs.txt 文本文件里面解析:例:解析得到的是 00000024 T cleanup_before_linux2.查看静态库(1). 查看文件:ar -t *....

2019-08-08 20:42:38 4419

原创 pthread函数总结

概括:https://www.cnblogs.com/tianzeng/p/8934060.html

2019-08-05 22:24:09 146

原创 YUV格式

1:YUV420(1):I420: YYYYYYYY UU VV =>YUV420P(2):YV12 YYYYYYYY VV UU =>YUV420P(3):NV12 YYYYYYYY UVUV =>YUV420SP (dxva 输出 NV12)(4):NV21 YYYYYYYY VUVU =>YUV4...

2019-05-25 15:24:36 193

转载 Linux Gadget驱动分析

以下四篇文章需要互相补充,可以理解的较为详细。http://blog.sina.com.cn/s/blog_1519163d30102x2le.htmlhttps://www.cnblogs.com/haoxing990/p/8799133.htmlhttps://www.cnblogs.com/fengeryi/p/3372717.htmlhttps://www.cnblogs....

2019-05-19 15:32:20 608

原创 并发——单核cpu串行与并发的选择

1.下面所有内容均在单核单cpu情况下讨论。不考虑I/O,执行任务相同的情况下,并发要比串行多消耗上下文切换的时间,因此单线程比多线程要快。上面这种情形(没有I/O)或者I/O较少的情况,我们称之为计算密集型(CPU-bound)任务,这种任务适合单线程。与计算密集型任务相对的,就是IO密集型(I/O bound)任务。由于存在I/O阻塞的问题,线程在执行过程中需要等待。比如我们要获取10...

2019-05-14 08:28:29 1477

原创 Linux文件系统与设备驱动

以下内容取自《Linux设备驱动开发详解:基于最新的Linux4.0内核》一书中,觉得讲的比较好,就在这里记录下。5.2.2 Linux文件系统与设备驱动图5.1所示为Linux中虚拟文件系统、 磁盘/Flash文件系统及一般的设备文件与设备驱动程序之间的关系。应用程序和VFS之间的接口是系统调用, 而VFS与文件系统以及设备文件之间的接口是file_operations结构体成员函数...

2019-04-21 12:00:54 787

原创 Linux重启

一.用c语言在linux怎样调用reboot函数重启系统可以直接调用reboot函数如reboot(0);也可以通过system接口 调用system("reboot");二.linux驱动代码里面完成shutdown或者reboot的调用方法1. reboot:#include <linux/reboot.h>kernel_restart(NULL)...

2019-04-18 17:05:14 1730 1

原创 多线程及多进程的选择

我的理解是进程是指在系统中正在运行的一个应用程序;程序一旦运行就是进程,或者更专业化来说:进程是指程序执行时的一个实例,线程是进程的一个实体。进程——资源分配的最小单位,线程——程序执行的最小单位。线程进程的区别体现在几个方面:0:因为进程拥有独立的堆栈空间和数据段,所以每当启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这对于多进程来说十...

2019-04-07 11:09:40 329

原创 Linux 的并发与竞态

首先先统计下Linux应用程序下进程间、线程间的同步与互斥方式:进程间:无名管道(pipe)及有名管道(fifo);信号(signal);消息队列(message queue);共享内存(shared memory);信号量(semaphore);套接字(socket)。线程间:互斥锁(mutex);信号量(sem);接着说下Linux内核中...

2019-02-22 16:23:05 255

原创 二维数组指针

Matrix][3][10]Matrix:二维数组名,指向二维数组的第一个值。也就是 指向第一个子数组的指针,第一个子数组的地址。*matrix: 第一个子数组,也就是第一个子数组的第一个数的地址Matrix+1:指向第二个子数组的指针,第二个子数组的地址。*(matrix+1):第二个子数组,也是第二个子数组的第一个数的地址*(matrix+1)+5:第二个子数组的第六个数的...

2019-02-21 13:28:21 192

原创 RingBuffer

ringbuffer.h#ifndef __RINGBUFFER_H__#define __RINGBUFFER_H__#if defined(__cplusplus)extern "C" {#endif#define BUFFER_OVERFLOW (-1)typedef struct { unsigned char *buffer; unsigned i...

2019-02-13 08:48:47 241

原创 同步/异步&&阻塞/非阻塞

1、概念剖析相信很多从事linux后台开发工作的都接触过同步&amp;异步、阻塞&amp;非阻塞这样的概念,也相信都曾经产生过误解,比如认为同步就是阻塞、异步就是非阻塞,下面我们先剖析下这几个概念分别是什么含义。同步:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。例如普通B/S模式(同步):提交请求-&g...

2019-01-14 17:35:37 186

原创 我对GPIO的的理解

首先,要先说下GPIO和引脚的区别,整理下网上提出的问题和答案。GPIO的英文全称General-Purpose Input /Output Ports,中文意思是通用I/O端口。在单片机上,单片机有很多管脚(PIN)除了一些特殊的PIN,比如电源,比如地线,晶振接线等等,其他很多都可以任意定义成两种功能中的一种:1. 模块的管脚,2. GPIO当定义为模块管脚时,PIN起模块中定义...

2018-12-28 11:28:00 2320

原创 Linux分区记录

命令:cat /proc/mtddev:     size              erasesize    namemtd0:   00007000   00010000   "vendor"mtd1:   00030000   00010000   "IDBlock"mtd2:   00600000   00010000   "kernel"mtd3:   0090000...

2018-11-05 15:24:39 606

原创 机器学习整理

深度学习分为两部分工作:模型训练和模型推理。训练和推理可以不在同一平台上进行。模型取决于深度学习的框架,目前主流的框架有Caffe和Tensorflow,而每种框架又可以分的很细,例如Caffe可以分为googlenet,squeezenet,Alexnet三种框架,网上资料很多。 ...

2018-10-31 13:52:01 161

原创 C++和C混合编程

最近经常看到头文件中有#ifdef __cplusplusextern "C" {#endif.......#ifdef __cplusplus}#endif这样的语句,一直搞不清楚是什么意思,今天终于闹明白了。1.这种写法的由来C++比C晚出现,C++代码如果能够调用C语言的代码,那么会更好的利用现有的成果,但是事实上C++代码是无法直接调用C代...

2018-08-23 19:47:00 546

原创 如何使用GCC生成动态库和静态库

根据链接时期的不同,库又有静态库和动态库之分。静态库是在链接阶段被链接的,所以生成的可执行文件就不受库的影响,即使库被删除,程序依然可以成 功运行。而动态库是在程序执行的时候被链接的。程序执行完,库仍需保留在系统上,以供程序运行时调用。链接静态库从某种意义上来说是一种复制粘贴,被链接 后库就直接嵌入可执行程序中了,这样系统空间有很大的浪费,而且一旦发现系统中有bug,就必须一一把链接该库的程序找出...

2018-08-23 13:56:58 215

原创 Linux下I2C设备通信

刚入门Linux设备I2C通信,感觉很迷惑,不管是看书,看视频,还是网上查,都是千篇一律的资料,抄来抄去,还都是过时的,很TM 恶心。比如说我现在在做的,在应用程序中去读取EEPROM的数据,问题到现在还没解决(2018/8/1:现在已经解决了),但是至少已经有了一点点的认识,虽然使用的是网上说的方法,但是第一,方法太多太杂,第二,说的不清不楚。下面先说下自己的一些心得吧,后续有了再加进来...

2018-07-30 16:57:00 1953 1

转载 转:在内核里写i2c client 驱动的两种方式

原文位置:https://www.cnblogs.com/simonshi/archive/2011/02/24/1963426.html在内核里写i2c client 驱动的两种方式前文介 绍了利用/dev/i2c-0在应用层完成对i2c设备的操作,但很多时候我们还是习惯为i2c设备在内核层编写驱动程序。目前内核支持两种编写i2c驱 动程序的方式。下面分别介绍这两种方式的实现。这里分别称...

2018-07-24 09:28:34 478

原创 Buffer分配

一.char buf[128];memset(buf,0,sizeof(buf));strcpy(buf,"Welcome to server");二.char buf[128]="Hello Server";

2018-07-10 16:21:39 660

转载 ubuntu14.04+opencv 3.0+python2.7安装及测试

ubuntu14.04+opencv 3.0+python2.7安装及测试本文记录了ubuntu下使用源码手动安装opencv的过程。步骤来自opencv官网此外记录了在python中安装及载入opencv的方法。1、安装opencv所需的库(编译器、必须库、可选库)转载请说明http://www.cnblogs.com/llxrl/p/4471831.htmlGCC 4.4.x or later...

2018-06-27 21:30:32 328

原创 外链接 内链接 无链接

编写多文件的程序时,编译器对于每个有名字的变量和函数都有链接模式的区别,分别是外链接(external)  内链接(internal)  无链接(noneternal),具体使用如下:A.cextern temp_b;  //外链接模式extern temp_c;static temp_d  //内链接模式,只在A.c中有效B.cint temp_b   static temp_d  //内链接模...

2018-06-25 09:30:13 289

原创 gcc g++ 学习

一.编译的时候(此时main.cpp头文件是#include "Person.h")g++ main.cpp ../Person/Person.cpp -o main -I../Person解析:../Person/Person.cpp    链接main.cpp的上一层文件夹Person内的Person.cpp-I../Person             main.cpp中包含的Person....

2018-06-22 08:18:42 220

原创 libusb编译、测试、使用

要用到才开始学,啥都不懂,感觉好难受。最近要在ARM+Linux嵌入式端集成libusb,刚开始搞,慢慢写。首先是libusb的交叉编译和测试。交叉编译:下载libusb的源码,下载地址:https://sourceforge.net/projects/libusb/files/,下载好后解压(我是下载了两个版本,libusb-1.0.20.tar.bz2和libusb-1.0.9.tar.bz2...

2018-06-21 21:08:51 4414 4

单反相机中的焦距、焦点、调焦和对焦,到底是什么关系?_镜头.pdf

一、关于焦距。焦距也称为焦长,从实用的角度可以理解为:镜头透镜中心至 “底片”(感光 元件)的距离。镜头的这个距离是固定的就是定焦镜头;这个距离可调可变的就是变焦镜 头。现代相机镜头的焦距变化范围从6毫米至2000毫米不等,常用范围为15—600毫米;通 常所说“50定焦镜头”就是指焦距为固定的50毫米;70—200的变焦镜头就是指焦距在70—200 毫米之间可调。

2020-03-26

新版C与C++互调, 修复之前错误的build.sh

新版C与C++互调, 修复之前错误的build.sh

2019-03-26

C与C++接口、静态库、动态库的互调

C与C++接口、静态库、动态库的互调。使用build.sh脚本方式编译,直接运行main程序即可。

2019-03-25

linux内核完全剖析

2016-10-05

空空如也

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

TA关注的人

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