自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 Linux程序崩溃分析(一)

引言我们在做Linux开发时,常常会遇到程序崩溃的问题,这时会用gdb或者通过查看反汇编的方式去对程序进行分析,接下来,我们从底层的角度,去讲述如何分析程序崩溃的原因。一、常见BUG在进行分析前,先看看我总结归纳的常见BUG:1.内存错误:内存错误往往出现在使用了未分配的内存,或者没有及时释放分配的内存。2.指针错误:指针错误往往出现在使用了空指针,或者是指向的地址在函数返回后丢失,或者是偏移量出了问题,这个话题暂时不展开讨论。3.判断条件出错:比如 if (a == 1) 写成了 if

2021-10-20 13:28:48 5079 11

原创 C语言内存管理总结

前言C语言的魅力莫过于其内存管理机制,给了开发者更多自由的空间,用好了可以节省内存资源,控制成本。然而用不好却会后患无穷。下面我们从系统内存的分配创建出发,来分析实例操作中内存管理不当造成的后果内存在计算机中,每个进程之间的内存相互独立,这里先卖个关子,先不讨论操作系统怎么给进程分配内存,因为涉及到了地址映射等知识,较为复杂。现在我们只需要知道,在通常情况下,进程之间的内存是不能互相访问的,注意是正常情况下。例如你打开一个QQ,同时在看快播,那么它们的内存自然不能互相访问。每当运行程序(打开一个进程

2021-08-18 00:21:47 527

原创 音视频入门(五)-初探H264编码

前面几篇文章主要介绍了YUV,RGB的像素处理以及简单介绍了一下JPEG的压缩原理。接下来开始介绍视频码流的解析代码。一、什么是NALUH264裸流由一个个NALU组成,它们的结构如下图所示。所以这里有必要介绍一下NALU是什么NALU (Network Abstraction Layer Unit) 翻译过来就是网络抽象层单元。在 H.264/AVC 视频编码标准中,所有的码流数据,最终都被封装成了一个一个的 NALU(Network Abstract Layer Unit)就是网络抽象层单元。

2021-04-07 16:17:12 2664 6

原创 音视频入门(四)-JPEG压缩算法原理

一、JPEG的引入JPEG属于一种图片压缩格式,之前我们通过对YUV420图像格式的学习,了解了怎么计算一帧YUV图像的大小。假设这里一帧图片的分辨率为1080p,像素格式为YUV420,那么它的大小就应该为192010803/2,大约为3M大小。那么如果帧率为10fps时,一秒钟的大小就为30M。显然,耗费的内存过于庞大。这个时候就应该引入图像压缩的概念,JPEG就是一种最常用的图像压缩格式。二、JPEG压缩原理简述在日常生活中所见的压缩有分为有损压缩和无损压缩,JPEG压缩属于有损压缩的一种。有损

2021-03-31 23:45:41 5235 3

原创 音视频入门(三) - RGB和YUV之间的转换

一、YUV420p转RGB24在嵌入式设备上进行神经网络推理时,经常会涉及到YUV420p到RGB之间的转换原理在之前的文章中简单描述过YUV420p和RGB24的存储格式,为了方便理解,这里再次列出其存储格式。YUV420p RGB24Y Y Y Y Y Y Y Y R R R R R R R RY Y Y Y Y Y Y Y G G G G G G G GY Y Y Y Y Y Y Y

2021-02-15 02:52:25 3178 4

原创 音视频入门(二) - RGB像素处理

一、RGB格式图片原理前面讲了一帧YUV图像是由Y(亮度)U(色度)V(色度)来表示的,而RGB图像是由R(红色)G(绿色)B(蓝色)三个分量来表示的。二、RGB格式图片数据的内部排列RGB格式的图片,比较常见的有如下三种:1.RGB16(16位)顾名思义,RGB16是以16位(2个字节)为一个存储单元,来存储一个RGB像素。RGB16又有以下两种比较常见的存储形式1.1 RGB565这里每个像素点用16位(2个字节)来表示,R、G、B分量分别占用了5位、6位、5位,内部排列如下所示高字节

2021-02-11 01:27:12 1904 2

原创 音视频入门(一) - YUV像素处理

总算放假了,也有闲下来的功夫去写一些博文了。接下来我会出一些关于音视频的技术博文。如果有小伙伴想学习音视频的可以关注一下这位大佬的博客:https://blog.csdn.net/leixiaohua1020闲话不多说,下面开始今天讨论的主题。一、YUV格式图片的原理我们看到一张照片,有亮度,有色度。YUV格式中的Y就代表亮度,U和V代表色度。不严谨地说,如果把一帧YUV图像中的U和V拿掉,那么这张图片只剩下亮度,它就会变成一张黑白照,为什么这么说不严谨,这里暂时先保留这个问题。二、YUV格式图片

2021-02-09 17:39:11 3050 3

原创 C++学习笔记(四)回调函数的基本使用和总结

什么是回调函数在写这篇博文之前,我对于回调函数的概念都是十分模糊的。这篇博文我将通过一些实际例子的分析来说明一下回调函数是什么。下面先用C语言写个最简单的例子#include <stdio.h>/*回调函数1*/int callBack1(int x){ return x*2;}/*回调函数2*/int callBack2(int x){ return x/2;}/*中间函数*/int calc(int b,int (* func)(int)) //func

2021-01-02 21:09:04 1075 4

原创 C++学习笔记(三) 继承问题的讨论

基类和派生类继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行时间的效果。当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。C++中有分三种继承方式,如下表所示。这里不去过多地讨论什么是继承,这里对继承时产生的一些事进行讨论。继承时,构造函数做了什么话不多说,上代码#include <iostream>using nam

2020-12-04 00:35:21 1752 7

原创 嵌入式软件C语言强化知识

嵌入式开发常用的C语言技巧函数指针的巧妙使用我们在平时的开发过程中,通常用指针来指向整型变量,字符串,数组…然而很多人也许忽略了函数指针的使用。函数指针的定义函数指针就是指向函数的指针。也就是将函数的入口地址赋值给指针。这样我们在访问函数的时候可以用指针访问。函数指针可以当成参数传递,下面给出实例#include <stdio.h>/*比较函数*/int max(int a,int b){ return (a>b ? a:b);}/*指向函数的指针声

2020-11-28 22:29:41 1803 2

原创 C++学习笔记(二) 运算符重载

操作符重载定义:让加减乘除,不局限于整型数的操作,也可以实现类的相加…实例:加法重载class Point{ private: int x; int y; ...};Point operator+(Point &p1, Point &p2){ cout<<"this is a operator +"<<endl; Point n; n.x = p1.x + p2.x; n.y = p1.y +

2020-11-28 02:10:27 433 1

原创 C++学习笔记(一)静态成员-友员

静态成员定义:静态成员属于整个类的资源,被这个类的各个实例化对象共享。1.如何定义静态成员a.在类中声明的时候,加上static关键字即可class Test{private: //静态数据成员 static int a; //此处的a就是静态成员};b.声明完之后,在类外进行定义#include <iostream>using namespace std;class Test{public: int GetA() const { retur

2020-11-28 01:20:48 427

原创 Wifi驱动开发-学习笔记(二)

一.Wifi模块基础知识扫盲1.什么是Wifi模块Wifi模块的主要功能是将信号从串口或TTL电平转化为符合Wifi无线网络通信标准的嵌入式模块。2.Wifi模块的分类Wifi模块主要分成三类a.通用wifi模块比如手机、笔记本、平板电脑上的USB或者SDIO接口模块,Wi-Fi协议栈和驱动是在安卓、Windows、Linux的系统里跑的,是需要非常强大的CPU来完成应用。b.路由器方案的wifi模块典型的是家用路由器,协议和驱动是借助拥有强大Flash和Ram资源的芯片加Linux操作系.

2020-11-05 23:17:27 2739 4

原创 Wifi驱动开发-学习笔记(一)

Wifi驱动开发-学习笔记(一)一.WIFI基本概念1.什么是wifi这个就不多去解释了吧。2.什么是wlanwlan又称为无线网络局域网,是相当便利的数据传输系统,它利用射频(RF)技术,通过使用电磁波构成局域网络,在空中进行通信连接。该技术很好地弥补了有线网络地不足之处,让网络通信变得轻巧可靠。3.为什么无线网暂时取代不了有线网1.无线通信是半双工通信,有线通信是全双工。2.通信时,在网络层以下的出错率比较高。3.数据在无线环境下进行,抓包就变得相当容易。此时存在信息的安全隐患。4.

2020-11-04 23:38:20 6866 10

原创 Linux中断 学习笔记一

Linux中断简介和单片机中断类似,Linux中断是指CPU在运行程序过程中,由于内部或者外部的事件引起的使得CPU暂停正在运行的程序,去执行该内部事件或外部事件的引起的服务中去,服务执行完毕后再返回断点处继续执行的情形。硬件中断和软件中断Linux操作系统中对于中断的应用十分频繁。Linux将的中断可以分为硬件中断和软件中断。比如按键中断、网卡中断这些由硬件产生的中断称之为硬件中断(hard irq)。相对应地,这些硬件中断都有属于自己的中断处理函数。/* 这是一个按键中断函数 */void i

2020-09-01 22:26:57 1244

空空如也

空空如也

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

TA关注的人

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