自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 资源 (2)
  • 收藏
  • 关注

原创 音频和OPUS开源库简介

文章目录1、音频简介1.1采样1.2量化1.3编码1.4 PCM的存放方式2、OPUS简介3、OPUS开源库3.1 OPUS工具安装编译和命令行使用3.2 OPUS编码API介绍3.3 OPUS_DEMO代码简单分析1、音频简介传感器采集音频信号是模拟量,而我们实际传输过程中使用的是数字量。而这就涉及到模拟转数字的过程。而模拟信号数字化必须经过三个过程,即抽样、量化和编码,以实现话音数字化的脉冲编码调制(PCM,Pulse Coding Modulation)技术1.1采样采样是把模拟信号以其信号

2021-09-26 00:54:57 5775 2

原创 BT601、BT656和BT.709、BT1120

规格与格式接口特性标清数字电视(SDTV)BT.601BT.656高清数字电视(HDTV)BT.709BT.1120超高清数字电视BT.2020BT.2077BT.601和BT.656BT.601建议ITU-R BT.601, 16位数据传输;YCbCr (YUV) 信号同时传输,是并行数据,行场同步单独输出。ITU-R BT.656, 8/10位数据传输;不需要同步信号;串行数据传输;传输速率是601的2倍;每个像素,先传CbCr(UV),后传Y...

2020-09-06 23:59:46 12409

原创 HDMI接口介绍

文章目录HDMI接口TMDS最小化传输差分信号HDMI引脚HDMI模块框图HDMI接口HDMI(High Definition Multimedia Interface)高清多媒体接口,传输数字信号以及音频信号。HDMI与去掉音频传输功能的UDI(Unified Display Interface)统一显示接口都继承DVI的核心技术“传输最小化差分信号”TMDS,从本质上来说仍然是DVI的扩展。TMDS最小化传输差分信号TMDS(Transition Minimized Differential S

2020-08-05 00:20:11 8360

原创 视频编码基础

文章目录为什么需要视频编码?YUV帧率码率QP量化参数视频编码I帧、P帧、B帧DTS、PTSH.264编码IDR帧和SP帧/SI帧H.264整体框架H.264结构RTP协议H.264载荷RTP码流RTP头RTP载荷单一NALU为什么需要视频编码?以一个分辨率1920×1080,帧率30,RGB888像素24bit的视频为例:1920×1080=2,073,600(Pixels 像素)2073600×24=49,766,400 bit49766400bit = 6220800Byte = 5.93M

2020-08-02 15:56:00 1048 1

原创 视频采集基础知识

文章目录一、视频采集接口二、EDID协议与时序三、BT656/BT1120四、视频采集流程一、视频采集接口常用视频采集接口根据是否支持EDID分成两类,支持EDID的接口DVI、VGA、HDMI、DP接口,不支持EDID协议的SDI、YPbPr、BNC。支持EDID的接口:VGA(Video Graphics Array):VGA传递的是模拟信号,计算机显卡产生的是数字信号,显示器使用的也是数字信号,VGA视频接口需要进行数模转换、模数转换,信号转换过程中会有损失。DVI(Digital V

2020-08-02 15:47:13 2516

原创 树莓派驱动——hello world

文章目录开发环境树莓派查看内核版本PC下载树莓派内核下载交叉编译工具Tools把交叉编译工具路径加入到环境变量编译树莓派内核编写驱动程序测试开发环境PC:Ubuntu 14.04.6 LTS (GNU/Linux 4.4.0-142-generic x86_64)树莓派:Linux raspberrypi 4.19.118-v7+ #1311 SMP Mon Apr 27 14:21:24 BST 2020 armv7l树莓派查看内核版本wyj@raspberrypi:~ $ uname -a

2020-07-08 23:01:26 2169 1

原创 openssl安装与使用

文章目录1、OpenSSL简介2、 OpenSSL安装3、加密技术介绍4、openssl 命令4.1摘要命令4.2、对称加密命令4.3非对称加密命令4.3.1生成私钥4.3.2提取公钥4.3.3利用公私钥加密、解密数据4.3.4 数字签名4.3.5数字证书1、OpenSSL简介OpenSSL是一个SSL协议的开源实现,采用C语言作为开发语言,具备了跨平台的能力,支持Unix/Linux、Windows、Mac OS等多种平台。  OpenSSL最早的版本在1995年发布,1998年后开始由OpenS

2020-06-18 18:01:33 60558 7

原创 Libevent源码分析——Libevent工作流程

在这里分析一下Libevent基本工作流程,深入理解一下libevent。通常一个最简单的libevent应用流程图如下:首先了解一下struct event结构体。struct event结构体:struct event {struct event_callback ev_evcallback;//事件回调函数结构体/* for managing timeouts */union {TAILQ_ENTRY(event)...

2020-06-14 15:32:14 586

原创 Libevent源码分析——队列

在compat/sys/queue.h文件里定义了5种数据结构,分别是单链表、双链表、简单队列、尾队列、环形队列,其中 TAILQ_QUEUE尾队列是libevent里使用最多的,libevent中用到的队列其实也是尾队列,所以这里只分析尾队列TAILQ_QUEUE,其他结构都大同小异,TAILQ_QUEUE队列的结构体如下:/** Tail queue definitions.*/#define TAILQ_HEAD(name, type)...

2020-06-14 15:22:31 358

原创 Libevent源码分析——日志系统

Libevent日志系统Libevent在默认情况下,会将日志信息输出到终端上,可以编写日志回调函数,在回调函数中把信息输出到一个文件上。Libevent允许提供日志回调函数接口,只需设置日志回调函数。当有日志时,Libevent库就会调用这个日志回调函数,回调函数的格式如下所示。typedef void (*event_log_cb)(int severity, const char *msg);void event_set_log_callback(event_log_cb cb);第一个参数

2020-06-14 15:16:44 394

原创 Libevent安装和使用

1、Libevent简介livevent是一个轻量级的开源的高性能的事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。Libevent是用于编写高速可移植非阻塞IO应用的库。2、Libevent安装ubuntu@VM-0-7-ubuntu:~/Project$ wget https://github.com/libevent/libevent/releases/download/release-2.1.10

2020-06-14 15:16:13 1496

原创 STM32f103RE 控制舵机

一、简介舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。伺服电机通常被称为舵机,它是一种带有输出轴的小装置。向伺服器发送一个控制信号时,输出轴就可以转到特定的位置。只要控制信号持续不变,伺服机构就会保持轴的角度位置不改变。如果控制信号发生变化,输出轴的位置也会相应发生变化。日常生活中,舵机常被用于遥控飞机、遥控汽车、机器人等领域。二、工作原理及控制控...

2019-12-22 21:38:04 2771

原创 marvell 88W8686 sdio wifi模块学习

一、SDIO简介SD卡(Secure Digital Memory Card)在我们生活中已经非常普遍了,控制器对SD卡进行读写通信操作一般有两种通信接口可选,一种是SPI接口,另外一种就是SDIO接口。SDIO(Secure Digital Input and Output) 全称是安全数字输入/输出接口,多媒体卡(MMC)、SD卡、SD I/O卡都有SDIO接口。STM32控制器有S...

2019-12-20 23:53:58 2456

原创 STM32F103C8直流电机学习

一、原理图以及简介电机如下:通常电机需要正反转会需要一个电机驱动板,电机接到电机接口。电机驱动板如下:电机状态表如下:不同的电机驱动板可能会有略微不同,有的IN1,IN2之外可能还会有ENA输入信号去PWM脉冲信号来调速度,这个电机驱动板就没有,就通过直接给IN1,IN2引脚PWM信号,比如左轮正转,IN1输入PWM的占空比一直为0,IN1...

2019-12-14 22:42:34 2276 2

原创 STM32编码器

最近在做毕业设计,需要计算小车的行驶距离,需要用到编码器计算具体走了多远,就了解学习了一下编码器。一、编码器简介编码器(encoder)是将信号 如比特流或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。编码器把角位移或直线位移转换成电信号,前者称为码盘,后者称为码尺。按照读出方式编码器可以分为接触式和非接触式两种;按码盘的刻孔方式可分为绝对编码器和增量编码器。绝对编码器由机械...

2019-12-10 23:09:05 3773 1

原创 Wrong JPEG library version: library is 80, caller expects 90

先说说我是怎么搞出问题QAQ数字图像处理中常用的采用模型是RGB(红,绿,蓝)模型和HSV(色调,饱和度,亮度),RGB广泛应用于彩色监视器和彩色视频摄像机,我们平时的图片一般都是RGB模型。而HSV模型更符合人描述和解释颜色的方式,HSV的彩色描述对人来说是自然且非常直观的。RGB图像处理时候,容易受到光照变化或阴影的影响,就像我上一篇博客最后的效果图,而且RGB通道并不能很好地反映出物体具...

2019-12-08 20:48:12 5349 1

原创 libjpeg库的简单使用,rgb565与rgb888互转,以及色块的寻找

最近用的摄像头OV2640摄像头,支持RGB565、JPEG、YUV和YCbCr格式的输出,想要对采集的图像进行色块识别,这样一般需要用到RGB格式的输出会比较好处理,数字图像处理中常用的采用模型是RGB(红,绿,蓝)模型和HSV(色调,饱和度,亮度),RGB广泛应用于彩色监视器和彩色视频摄像机,我们平时的图片一般都是RGB模型。别人是RGB的LCD屏幕作为上位机,而我却没有LCD屏幕作为上位机,...

2019-12-05 21:02:22 4946 1

原创 秋招经历

今年的秋招8月份就很多大厂提前批来到了,但是之前总是觉得自己没准备好都没敢去尝试,直到实验室兄弟投了大疆,而且大疆的网申8月末就截止了,他是最后一批笔试的了,我觉得有些可惜没一块投。。。他做了之后我们感受了一下题目的难度觉得大多数都还是会的,之前就一直担心自己不行,就看他投了大疆之后就开始觉得开始可以投一些公司尝试一下了,就开始投递简历开始我的秋招之旅。总而言之,不要怕!没有哪一个是准备得十全十美...

2019-10-17 18:08:17 704

原创 多路复用

讲多路复用先我觉得有必要讲一下什么是阻塞IO、非阻塞IO、同步IO、异步IO这几个东西;linux的五种IO模型:1)阻塞I/O(blocking I/O)2)非阻塞I/O(nonblocking I/O)3) I/O复用(select和poll)(I/O multiplexing)4)信号驱动I/O(signal driven I/O (SIGIO))5)异步I/O(asyn...

2019-08-13 14:26:58 10937 1

原创 进程与线程

Linux c处理并发通常会用到进程、线程、多路复用,这几个是最常用的也是最基础的,也准备需要找工作了,整理一下与这些相关的东西,发现光进程与线程就有很多内容,多路复用留到下篇写吧一、进程什么是一个进程?在操作系统原理使用这样的术语来描述的:正在运行的程序及其占用的资源(CPU、内存、系统资源等)叫做进程。进程状态反映进程执行过程的变化。这些状态随着进程的执行和外界条件的变化而转换。在...

2019-08-12 20:46:11 312 3

原创 valgrind简介与使用

一、valgrind简介Valgrind是一款用于内存调试、内存泄漏检测以及性能分析、检测线程错误的软件开发工具。Valgrind 是运行在Linux 上的多用途代码剖析和内存调试软件。主要包括Memcheck、Callgrind、Cachegrind 等工具,每个工具都能完成一项任务调试、检测或分析。可以检测内存泄露、线程违例和Cache 的使用等。Valgrind 基于仿真方式对程序进...

2019-08-11 14:19:17 47633 5

原创 使用3g模块SIM5360E收发短信

一、介绍3g模块SIM5360E收发短信 实现类似短信猫的功能,首先先了解一下什么是短息猫,来自百度百科:(所谓短信猫,其实是一种用来收发短信的设备,他和我们用的手机一样,需要手机SIM卡的支持,在需要收发短信的时候,在短信猫里面插入一张我们平时用的手机卡,插上电源,通过(USB或者串口、网口)数据线和电脑相连,在电脑的应用管理软件中就可以实现短信收发的功能。) 我实现的是服务...

2019-08-04 13:05:23 483

原创 AT指令发送TEXT格式和PDU格式短信,以及linux c编程实现3G模块发送短信

发送短消息常用Text和PDU(Protocol Data Unit,协议数据单元)模式。使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,也能发送英文短信。PDU模式收发短信可以使用3种编码:7-bit、8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符,8-bit编码通常用于发送数据消息,UCS2编码用于...

2019-07-26 18:55:52 2796 1

原创 利用mosquitto库实现客户端上报云平台

这里做的是上报阿里云平台首先需要连接阿里云测试这里我也是参考别人博客一步步做的...所以还是直接贴出链接:https://blog.csdn.net/qq997758497/article/details/90757307按照上面博客成功用MQTT.fx订阅与发布之后,接下来看一下我们得到的东西订阅和发布的主题,这里用/sys/a1R4lbARNLO/${deviceNam...

2019-07-25 17:03:51 1625

原创 AT指令接收短信并编写程序实现

一、AT指令接收流程1、首先先选择短信存储载体AT+CPMS:AT+CPMS=?作用:用于得到所支持的储存位置的列表返回:+CPMS: ("ME","MT","SM","SR"),("ME","MT","SM","SR"),("ME","SM")OK表示支持MT(终端),SM(SIM卡),ME(手机设备)AT+CPMS?作用:得到当前的...

2019-07-25 12:52:19 5634

原创 USB驱动框架

一开始分析USB转串口驱动一头扎到源码,也就是追了个流程,但是还是什么都不懂,再后来看USB驱动框架也还是晕乎乎,之后再看了USB基础才慢慢理解一点。一、USB基础知识USB是Universal Serial Bus的缩写,中文译为通用串行总线,USB出现之前,计算机领域中的接口太多太繁杂,USB出现之后减少了接口的种类,总的来说就是设计出了一个万能的接口,各种外设都能用同一种接口,所以才...

2019-06-08 21:54:06 5063

转载 USB驱动

之前学习USB转串口驱动一头扎到源码里面,分析了一遍流程,一被细问起来还是什么都不懂,在这里整理一下有关USB驱动的博客留着学习USB协议架构及驱动架构:https://blog.csdn.net/liangdapo/article/details/43699785Linux USB子系统(1)-设备、驱动、框架:https://blog.csdn.net/mingtianwoyueni/...

2019-06-05 13:53:35 359

原创 AT命令介绍和简单使用

一、AT命令简介AT 即Attention,AT指令集是从终端设备(Terminal Equipment,TE)或数据终端设备(Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter, TA)或数据电路终端设备(Data Circuit Terminal Equipment,DCE)发送的。通过TA,TE发送AT指令来控制移动台(Mobile S...

2019-06-04 15:25:57 55944 1

原创 交叉编译dropbear使能ssh登录以及rt3070wifi模块的移植使用

背景:之前开发板fl2440与pc的SecureCRT连接的传统方式是用串口转usb线连接,但是之后要用开发板做3G模块的拨号上网等,自己用到无所谓带着usb转串口和开发板就行了,但是要这几个人一块使用这个开发板就成了问题,所以打算用wifi模块连到路由器然后ssh大家都可以连接到开发板进行开发,所以首先需要做的是安装dropbear使能ssh基本情况: 宿主机系统:CentOS-6....

2019-06-03 13:41:47 2286

原创 USB转串口驱动分析(二)

在static int __init usb_serial_init(void)里tty_set_operations(usb_serial_tty_driver, &serial_ops); //赋值tty设备的操作集合,操作函数在serial_ops中定义将serial_ops与驱动绑定,应用层调用系统调用就会调用到这个操作集合里面的函数,下面来看一下serial_ops这个结构体...

2019-05-29 17:15:28 2323

原创 USB转串口驱动分析(一)

之前追踪代码用的grep命令效率太低了,所以这次下载C代码阅读跳转利器ctags、cscope用于分析代码因为用的是Centos6.7所以需要用到yum install安装软件[wuyujun@wuyujunlocalhost ~]$ sudo yum install ctags cscope[wuyujun@wuyujunlocalhost ~]$ vim ~/.bashrc#在...

2019-05-27 22:24:30 4297 1

原创 Linux3.0内核sc32440串口驱动分析(二)——打开读写操作分析

三、串口驱动操作函数[wuyujun@wuyujunlocalhost linux-3.0]$ grep -n tty_fops -r ./匹配到二进制文件 ./.tmp_vmlinux1匹配到二进制文件 ./vmlinux./drivers/tty/tty_io.c:451:static const struct file_operations tty_fops = {./d...

2019-05-22 17:00:22 1032

原创 Linux3.0内核sc32440串口驱动分析(一)——初始化与注册

一、TTY简介tty设备的名称是从过去的电传字打字机缩写(Teletypes)而来的。最初tty是指连接到Unix系统上的物理或者虚拟终端。随着时间的推移,当通过串行口能够建立起终端连接后,这个名字也用来指任何的串口设备。它还有多种类,例如串口(ttySn、ttySACn、ttyOn)、USB到串口的转换器(ttyUSBn),还有需要特殊处理才能正常工作的调制解调器(比如传统的WinModem...

2019-05-20 22:20:34 1017

原创 Linux串口编程

一、串口通信介绍串口是计算机上的串行通信的物理接口。首先先介绍一下串行通信,串行通信的分类:1、按照数据传送方向,分为:单工:数据传输只支持数据在一个方向上传输;就像路上的单行线。半双工:允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输;半双工就像分时段的单行线,上午时段通行这边,下午时段通行另一边,而单工就是全天单行线。全双工:允许数据同时在两个方向上传...

2019-05-18 13:32:23 32436 9

原创 platform按键驱动学习二

platform按键驱动学习一:https://blog.csdn.net/caijiwyj/article/details/90182865一、等待队列(1) 定义并初始化"等待队列头"wait_queue_head_t w_queue; init_waitqueue_head(&w_queue);//会将自旋锁初始化为未锁,等待队列初始化为空的双向循环链表。/...

2019-05-16 14:59:57 197 5

原创 platform按键驱动学习一

一、中断1、概念中断简而言之是暂时中止当前的工作,而去处理更为急需处理的事情,把急需处理的事情处理完毕之后,再回头来继续原来的事情。也就是CPU在正常执行程序过程中,出现了突发事件(中断事件),于是CPU暂停当前程序的执行,转去处理突发事件。处理完毕后,CPU又返回被中断的程序位置继续执行。Linux驱动中断涉及到的主要函数有:request_irq()    申请中断free...

2019-05-14 14:49:30 490

原创 3G模块SIM5360E拨号上网

首先需要添加usb驱动,这就不介绍了,添加usb驱动参考:https://blog.csdn.net/qq_43260665/article/details/89789136在Linux内核2.6.20之后就有一个通用的名叫usbserial的驱动能够支持SIMCom的设备使用一、修改内核修改一:添加厂商id和产品id[wuyujun@wuyujunlocalhost]$ cd...

2019-05-10 22:55:35 1703

原创 字符设备LED驱动的改良——自动创建文件结点和platform总线LED驱动

之前写的字符驱动,安装驱动之后还需要自己mknod创建文件节点、而且设备和驱动都在一个驱动文件里,嵌入式的产品那么多,如果对应的硬件变了,那整个驱动代码就不可重用了,可移植性很差,下面说说怎么解决这些问题。一、自动创建设备文件结点实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点,当然前提条件是用户空间移植了ud...

2019-05-07 23:03:25 521

原创 字符驱动入门,FL2440-LED驱动

Linux内核里,绝大部分的设备都是字符设备,所写的驱动99%也都是处理字符设备。一、字符设备驱动字符设备的驱动大致步骤:1、相应的设备初始化(根据开发板的原理图以及芯片datasheet配置引脚等)-->2、注册字符设备主次设备号[register_chrdev_region()或alloc_chrdev_region()]-->3、分配字符结构体[struc...

2019-05-04 19:32:43 380 2

原创 UBIFS根文件系统制作

一、UBIFS文件系统简介UBIFS(Unsorted Block Image File System)无序区块镜像文件系统是用于固态存储设备上,UBIFS在设计与性能上均较YAFFS2、JFFS2更适合MLC(Multi-Level Cell) NAND FLASH。例如:UBIFS支持凑数(write-back), 其写入的数据会被缓存起来, 直到有必要写入时才写到flash, 这样...

2019-05-02 16:47:06 5830

UML+OOPC嵌入式C语言开发精讲.rar

UML+OOPC嵌入式C语言开发精讲以及lw_oopc源码 摘要:// 在高焕堂先生的著作《UML+OOPC嵌入式C语言开发精讲》中介绍了高先生及其MISOO团队创作的lw_oopc宏。 // 在研读这套宏的过程中,我发现高先生提供的这套宏还过于简陋,不能够优雅地支持面向接口编程。 // 经过认真钻研,我对原有的这套宏进行了扩充和改良,得到了lw_oopc宏的升级改进版本。 // 改良后的这套宏,能够很好地支持面向对象编程,能够支持面向接口编程(甚至支持复杂的多重继承)。 // 经邮件与高焕堂先生联系,征得高先生同意,以LGPL协议开源,感谢高先生以及MISOO团队的贡献!

2020-11-08

EDID规范详解.pdf

EDID,Extended display identification data,中文名称扩展显示器识别数据,是VESA在制定DDC显示器数据通道通信协议时,制定的有关显示器识别数据的标准。EDID存储在显示器中的DDC存储器中,当电脑主机与显示器连接后,电脑主机会通道DDC通道读取显示器DDC存储器中的存储的EDID。

2020-08-30

空空如也

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

TA关注的人

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