自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(89)
  • 资源 (6)
  • 收藏
  • 关注

原创 makefile中g++ -o -c参数解释

CC = g++SRCS = $(wildcard *.cpp)OBJS = $(patsubst %cpp, %o, $(SRCS))LFLAGS :=-lsqlite3 -lTR3ACFLAGS := -Wall -O2 -g -L/home/usrINCLUDE = -I ./com/inc \ -I ./com/lib/incCFLAGS +=...

2020-02-27 00:08:20 2807

原创 C++中的赋值函数

1、赋值函数写法分析Test& operator=(const Test &t){ if(this != &t) { data = t.data; } return *this;} void operator=(Test t){ data = t.data;}void main(){ T...

2019-11-16 15:01:10 4473

原创 拷贝构造函数中的形参引用,初始化与赋值的区别

#include<iostream>using namespace std;class Test{public: Test(int d = 0);data(d) { cout <<"Create Test Object"<< endl; } Test (const Test &copy_t) 拷...

2019-11-16 12:00:53 961

原创 C++学习资料

容器与迭代器:https://blog.csdn.net/u013719339/article/details/80615217

2019-11-09 14:01:18 136

原创 deb包的制作(适合刚接触deb的学者)

1、什么是deb包,为什么需要由于了解不全面所以不一定对,写下来一方面方便自己看,另一方面希望可以给刚接触的朋友一点帮助1.1 在学校一般对deb包接触会少一点,但是进入公司后可能就要用到,这到底是个什么呢?(1)可以看看鸟哥的linux私房菜第23章软件安装->23.1软件管理器简介,这个很有必要,因为这会让你知道这个东西的作用个人理解:主要是为了使我们编译制作好的可执行能...

2019-10-04 12:46:56 4018

原创 指针法创建二叉树代码详解以及遍历、插入、删除处理C语言版(更新中ing)

1、二叉树创建scanf方式:这样还是要手动输入二叉树,然后scanf读取,最好的做法是是否用一个指针随意指向一个字符串,然后将这个串创建成二叉树,等我完成在补充。#include<stdlib.h>#include<stdio.h>#include<string.h>typedef struct BiTNode{ char dat...

2019-08-27 12:26:51 533

原创 strcpy与strncpy函数的陷阱与缺陷(今天更新补充完)

前言,最近看到一篇博客有如下一段代码,该代码执行时会出现错误,A博主的意思是因为str的空间太小, p指向的串太大引起的但是我在ubuntu下运行时,没有错误,应该是编译环境不同吧,然后又在一篇博客看到如下一段话,B博主部分内容如下图:意思是说与长短无关,可是之前那个博主为什么会出现错误?????于是我自己试了一下,如下代码str长度为1,然后使用strcpy,结果印证了B博主...

2019-08-24 13:13:33 1835 2

原创 一、二重指针传参意义(函数体内malloc申请内存泄漏与变量引用的就近原则)

谭浩强C程序设计讲到,如果想交换两个变量a,b的值,我们会这么做:func(int* a,int* b){ int temp; temp = *a; *a = *b; *b = *a;}func(&a,&b);因为C语言单向“值传递”就这样规定的,想改变外部实参a和b的值,你就要传实参的地址才行,没有可理解的,你就是要按照规定来,就像...

2019-08-06 11:52:35 971

原创 KMP算法中Next数组算法求解(2019.7.30本人学习KMP算法的心路历程以及一些学习建议)

如果你仅仅是为了搜索KMP算法,说明你可能还不了解KMP所以可以看看我推荐的2篇博客或者看看大话数据结构或者严蔚敏的数据结构这部分章节,然后Next数组算法为什么那么写却看不懂,可以按照我下面的思路去学习,当然不一定适合每个人,我自己也是菜鸟一个哈哈!!!(写于2019.7.30)前言:最近复习数据结构看到了章节串,发现程杰老师的《大话数据结构》KMP部分看起来很吃力,开始找博客,发现很多...

2019-07-29 18:02:02 204

原创 树和二叉树之线索二叉树(包括对前驱后继的疑惑)

1 树的概念树的结点:包含一个数据元素及若干指向其子树的分支。结点的度:结点拥有的子树数目。(一个分支就是一个树,二叉树结点的度最多为2,最少为0)叶子:度为0的结点称为叶子。树的度:整个树内出现的最大结点的度就是树的度。孩子:结点的子树的根称为该结点的孩子。(结点的子树是指这个结点的一个分支,这个分支就是一个子树)双亲:子树的根结点上面的结点就是他的双亲。(双亲是值一个父...

2019-07-19 18:31:49 924

原创 ASCII与二进制在内存中的存储区别(EOF的应用)

一、文本文件与二进制文件的定义 大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思 从上面可以看出文本文件基本上是定长编码的(也有非定长...

2019-07-19 11:30:41 3207

原创 malloc的线程安全与signal使用malloc的陷阱(内核态与用户态、系统调用与C库调用、可重入与不可重入)

前言:为什么写这篇博客?原因:为什么malloc本身是线程安全函数(man手册也说明了),但是signal中使用却会产生错误与陷阱,线程是调用malloc并执行,signal也是执行malloc,可是为什么是不安全的?背景知识:这4个部分留给初学者自己查资料,内容太多,这里简单叙述下,这5块搞清楚就能理解了,而且对于linux学习这几部分是必不可少的,现在可能感觉用不上,等真正做项目你才会...

2019-07-18 11:28:39 5014 3

原创 指针函数与函数指针(很简单的记忆与区分)

1、指针函数本质是一个函数,函数返回类型是某一类型的指针。定义格式 :函数类型 * 函数名( 参数列表) 例: int * func1 (x, y ) 返回值为 整型类型指针的函数这里func1 (x, y ) 的优先级高于*,所以首先这是一个指针,然后与函数结合,指针在前,函数在后,所以我们叫指针函数2、函数...

2019-07-17 13:03:46 214

原创 C陷阱与缺陷(更新中,总结了全书中核心内容,读者可以根据核心决定是否需要学习该书)

1、初值与初始化该部分解释到,我们在定义变量时最好作初始化操作,比如int a[N];定义数组时,N也被定义了,但是没有初始化,编译器不会报错,后续代码使用N时会陷入死循环。如果经常写代码,从经验上也不会这样定义,我一般会直接定义一个确定的值比如a[100]。2、== 与= 、&& 与& 、-- - 与- --、+=与=+区别这类问题不需要看C陷阱与缺陷也会知...

2019-07-16 19:26:45 175

原创 数据结构之时间复杂度

前言:为什么会出现时间复杂度这个概? 我们在编写代码的时候为了完成一个函数功能,可能用到不同的处理方式:顺序多次执行、使用for循环执行、使用递归调用等等。当循环次数取值范围不同时,各种算法处理所耗费的时间也不一样,不同的算法所执行的次数通过分析可以用数学函数表达。 时间复杂度概念:我们把 算法需要执行的运算次数 用 输入大小n 的函数 表示,即 T(n) 。此...

2019-07-15 13:01:15 579

原创 fcntl函数功能与实际应用(linux下中断实现、文件分别写与接续写)

fcntl函数功能与实际应用(linux下中断实现、文件分别写与接续写)原型:int fcntl(int fd, int cmd, ... /* arg */ );可以出现如下几种参数使用:int fcntl(int fd, int cmd);int fcntl(int fd, int cmd, long arg);int fcntl(int fd, int cmd, struct...

2019-07-13 13:42:28 328

原创 select轮询键盘鼠标文件IO(解释在代码中)

#include <sys/types.h>#include <sys/time.h>#include <sys/stat.h>#include <sys/select.h>#include <fcntl.h>#include <stdio.h>#include <errno.h>#include ...

2019-07-12 10:44:00 226

原创 函数的可重入与不可重入内部内存分配方式(内存泄漏陷阱,在很多函数中都存在的问题)

如下3个函数中,localtime为不可重入,localtime_r可重入,加const为输入型参数,不加const为输出型参数。1、struct tm *localtime(const time_t *timep);2、struct tm *localtime_r(const time_t *timep, struct tm *result);3、size_t strftime(cha...

2019-07-10 11:55:59 610

转载 为什么需要设置栈

栈的作用计算机里面的栈其实有着举足轻重的作用。大学刚学c语言的时候,教的是堆栈,传达的是一种后入先出的算法思想。但其实我们知道,堆和栈是两个截然不同的东西。而这里面说到的栈,则是更融入到计算机系统里面,CPU结构的一部分。一个函数设计里面,有2个问题:1.是参数传递的问题。传递参数的目的,是为了代码可以重用,让一种方法可以应用到更多的场合,而不需要为N种情况写N套类似的代码。那用什...

2019-07-07 17:34:26 2910

原创 ARM启动过程之Uboot两个阶段具体工作(以S5PV210为例)

1,S5PV210的启动过程(1)iROM:iROM(价格最贵)在0地址处,与CPU总线式连接,上电就会执行,和norflash类似。210启动时会首先执行内部的固件代码,三星公司出厂前内置的代码段,称为BL0。BL0部分包括对SD卡、Nandflash等SOC内部硬件进行初始化并判断系统启动方式,找到外部用来启动系统的存储器,并将存储器中的启动代码(Bootloader)拷贝到SRAM中。...

2019-07-07 17:33:02 965 1

原创 学习linux系统需要培养的分析思路与实战经验(更新中……)

1、根据打印信息寻找错误并解决(1)在linux下移植一个库时,我们可能需要将库交叉编译,并使用库提供的config文件或makefile生成需要的头文件、动态库、静态库,然后将其部署在系统里面,有时候库的makefile或脚本里面默认系统根目录下存在一个路径,然后脚本会在他以为存在的路径目录下创建一个很重要的文件,这个脚本只负责创建文件,但并不负责创建这个他以为存在的文件夹,所以需要我们手动...

2019-04-26 19:11:13 274

原创 静态加载驱动与insmod命令动态加载驱动

1、insmod动态加载驱动的作用(1)此类载入的模块,通常为设备驱动程序。设备驱动里面会使用到内核驱动,比如使用交叉编译或官网下载的一个在linux系统下工作的设备驱动,因为是针对linux系统而制作的,它知道内核支持的基本驱动,比如I2C、SPI、等操作硬件的驱动,协议驱动提供了标准的操作硬件的协议函数,而这个设备驱动里面正是调用了内核协议驱动工作2、静态加载驱动与动态加载的优缺点...

2019-04-26 18:29:05 1719

原创 网络字节序之大小端(字节序与比特序)

引言:最近在网上看了很多博客,想要深入了解大小端问题,主要是做毕设时,RTP包协议的结构体定义有两种方式,即大端和小端。但是一些博客并没有讲到理解大小端的本质问题,在这里按自己的理解扩充一下,可能有错,望理解!!!1. 字节序字节序即字节的存储顺序,如果数据都是单字节的,那怎么存储无所谓了,但是对于多字节数据,比如int,double等,就要考虑存储的顺序了。字节序是硬...

2019-04-25 18:00:03 1457 1

转载 编译模块命令make -C M=与make -C SUBDIRS=

modules:$(MAKE) -C $(KERNELDIR) M=$(PWD) modules这句是Makefile的规则:这里的$(MAKE)就相当于make,-C选项的作用是指将当前工作目录转移到你所指定的位置。“M=”选项的作用是,当用户需要以某个内核为基础编译一个外部模块的话,需要在make modules命令中加入“M=dir”,程序会自动到你所指定的dir目...

2019-04-25 14:40:30 30167

原创 应用层驱动与内核驱动

写这篇博客是因为听到一句话,应用层驱动?开始思考驱动就驱动不是在内核吗,怎么跑应用层去了。其实这个应用层驱动并不是我们常说的内核驱动,只是一个模块实现功能的一个集合,被makefile按照规则生成了一个文件叫.SO动态链接库,他本身没有驱动操作硬件的功能,而是调用内核驱动去运作,就像以前单片机里面代码功能多了,我们就用多个C文件和H文件代表每个模块,主函数main去调用他们,这样看...

2019-04-23 20:29:11 1478

原创 结构体成员的引用箭头与点号

关于结构体成员的引用有这样的规律:(1)箭头(-&gt;):左边必须为指针(2)点号(.):左边必须为实体#include "stdio.h"int main(){ struct student{ int age; int class_; }; struct class2{ struct student s1;...

2019-03-01 11:29:20 2493

转载 海思视频传输延时与速率问题初步解决

题记:在上个月,用hi3518c+live555,实现在局域网中传输视频后,然后延时太大,大概延时域网中720p的画面延时在8s,640*480 在5s,320*240在3s左右,当时没有多去研究,然后直接去根据其他人的帖子写了在客户端播放的android程序。最近,想在放假之前将延时问题解决掉。经过在网上的答疑,现在将可能引起延时问题以及解决的方法做一总结,但是有的方法还没有去试。可能原因一...

2018-12-10 15:57:29 6440 4

原创 linux 下 动态库.so和静态库文件.a的制作与使用

1、静态库1.1 准备好自己写好或下载的C文件和头文件(就像单片机添加一个模块的aston.c、aston.h),库里面没有主函数,只有被调用的函数1.2 在原材料C和H同级文件目录下编写makefile(编译过程)      all:              gcc -c aston.c -o aston.o                  ar -rc libaston.a...

2018-12-07 14:33:10 430

原创 ORTP库移植(关键字: --prefix配置项解释、头文件包含问题)

1、ORTP库的移植1.1、下载源码到PC端ubuntu中      (1)下载ortp源码:https://github.com/dmonakhov/ortp      (2)存放到ubuntu任意工作目录并解压1.2、源码修改      (1)增加H.264的payload支持(源码中avprofile.c的负载初始化中没有添加对h264的支持,但是确实有支持该类型的源码)...

2018-12-05 21:57:55 416

原创 HIS视频处理过程

一、VI部分1、sensor部分:1.1  根据摄像头的参数及平台能支持的sensor类型,选择好摄像头,摄像头有一个主码流,也就是采集的时候sensor本身特性得到的就是720p,然后通过这个主码流进行缩放和裁剪算法,生成多路其他分辨率的码流(比如VGA、QVGA)(1)rawRGB、RGB、YUV420、422选择(原理,转换过程、选择理由)(2)sensor三种接口:MIPI...

2018-11-12 17:19:58 732

原创 多个线程同时抢一把锁出现的问题与处理方式

1、线程锁的介绍1.1 创建互斥锁:       (1) 静态互斥锁初始化:pthread_mutex_t mutex_x= PTHREAD_MUTEX_INITIALIZER;                    此句创建锁后,可以直接使用 pthread_mutex_lock(&amp;mutex_x)和pthread_mutex_unlock(&amp;mutex_x)给临界资...

2018-11-08 19:09:14 7004 1

翻译 Linux常用命令英文全称与中文解释 (pwd、su、df、du等)

Linux常用命令英文全称与中文解释apt: Advanced Packaging Tool 高级包装工具cp: Copy file  复制文件cat: Concatenate  串联cd:Change directory 切换目录chmod: Change mode 改变模式chown: Change owner 改变所有者chgrp: Change group 改变...

2018-11-07 11:05:22 17278 6

转载 Linux常用命令大全(非常全!!!转载后正在补充中……)

转载博主:昵称:鸿燕藏锋https://www.cnblogs.com/yjd_hycf_space/p/7730690.htmlLinux常用命令大全(非常全!!!)最近都在和Linux打交道,感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短小但却功能强大。我将我了解到的命令列举一下,仅供大家参考:...

2018-11-06 14:11:07 186

原创 uboot的模式下操作spi flash烧录镜像到flash分区

1、烧录方式     1.1 将代码烧录到一个存储设备有两种方式:           (1)用外部烧录器来烧录(比如一些Jink,内置了spi接口,本身可以读写spi,再配合配套的上位机软件将镜像或hex文件烧录到flash,和MCU没有关系)           (2)通过主芯片提供的isp下载的机制来间接烧录到板载flash,pc需要一个软件来配合,不需要购买烧录器,比如海思的H...

2018-11-01 20:23:06 3841

原创 指针和引用的区别及其使用意义

1、指针和引用的区别 (1)指针是一个实体,他在栈中有自己使用的空间,但是引用没有,引用仅是个别名; (2)引用必须初始化,指针不用,但是最好初始化; (3)引用只能在定义时被初始化一次,之后不可变;指针可变; (4)引用没有const,指针有const,const的指针不可变; (5)指针和地址运用自增(++)不同,引用是值进行自增,而...

2018-10-31 18:33:27 1229

原创 linux下常用命令与常用操作用法及解释tftp/nfs(初学者必备,正在总结更新中……)

1、环境变量 (1)打印环境变量:ehco $PATH(目录导出到环境变量后,里面的文件才能跨文件执行) (2)添加到环境变量(一般放在当前用户的宿主目录~/下的.bashrc文件里):export PATH=/usr/local/bin:$PATH 解释:每一次用户在打开一个终端时,都会附带执行一次.bashrc2、符号链接...

2018-10-30 19:28:19 658

原创 linux杂散知识点

1、导出环境变量格式作用:/home/aston/local/bin目录下的文件,脚本,应用程序可以被其他文件直接引用,而不会提示找不到使用:export PATH=/home/aston/local/bin:$PATH  2、~/.bashrc作用: .bashrc这个文件主要保存个人的一些个性化设置,如命令别名、路径等,.bashrc是配置文件,在你的账号登录系统的时候,系统就...

2018-08-08 20:43:25 149

原创 linux下静态映射与动态映射原理分析

 2017年10月1号(1)外设IO寄存器地址独立编址的CPU,这时该称外设IO寄存器为IO端口,访问IO寄存器可通过ioport_map将其映射到虚拟地址空间,但实际上这是给开发人员制造的一个“”假象”,并没有映射到内核虚拟地址,仅仅是为了可以使用和IO内存一样的接口访问IO寄存器例如:x86平台普通使用了名为内存映射的技术,IO设备端口被映射到内存空间,映射后,CPU访问IO端口就...

2018-08-06 21:38:16 1683

原创 移植加载自己的写的驱动(关键字:makefile和kconfig的编写、头文件包含)

1、编写自己的写的驱动        1.1 前言:驱动框架处理一些算法,数据结构,它是内核人员写的,内核并不知道你到底是什么样的硬件,所以无法进行硬件操作,真的对硬件操作的是我们驱动人员写的驱动,区分驱动和驱动框架。    1.2 makefile、kconfig、xxx.c  (这3个文件需要我们自己创建)           1.2.1  kconfig:这个文件里面定义模块最...

2018-08-06 21:37:51 807

原创 H264的NAL单元详解

一、H264的NAL单元详解1、VCL只关心编码部分,重点在于编码算法以及在特定硬件平台的实现(1)SODB 是VCL输出的是编码后的纯视频流信息,没有任何冗余头信息2、NAL关心的是VCL的输出纯视频流如何被表达和封包以利于网络传输,(1)RBSP 是通过SODB封装成nal_unit格式得到的,Nal_unit是一个通用封装格式,可以适用于有序字节流方式和IP包交换方式 ...

2018-08-05 18:59:01 13568

岳维功ortp详解

讲解了有关时间戳的说明,防抖动实现,实验ortp库,与源代码的架构

2018-12-14

MT7601驱动—可移植linux3.4

可以实现ap、sta模式,移植成功版,通过。config配置生成makefile,修改相应的内核源码树和arm、arch、CC等,在make

2018-11-07

cudd-2.4.2

用于故障检测电路BDD算法的实现,基于linux系统,需要移植,安装readme操作,并make生成可执行文件

2018-11-07

基于linux平台下OV2655应用编程

基于linux平台下OV2655应用编程 ,在开发板上实现摄像头采集数据

2018-01-09

ov2655,ov5642资料

camera,数据手册和ov2655、ov5642 camera,数据手册和ov2655、ov5642

2018-01-09

空空如也

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

TA关注的人

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