自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (8)
  • 收藏
  • 关注

原创 循环队列详解

前面分析顺序队的时候,我们知道,顺序队存在”假溢出”的问题,这个问题有时会造成很大的内存浪费,循环队列就是为了解决这个问题而提出地一个很巧妙的办法.循环队列和顺序队列的主要区别在于:循环队列将顺序队列臆造成一个环状空间.在操作上这种异同体现在:相同点:在顺序队列和循环队列中,进行出队、入队操作时,队首、队尾指针都要加 1 ,朝前移动。不同点:1. 在循环队列中当队首、队尾指针指向向...

2018-10-07 03:15:51 2481 1

转载 RTMP协议详解

前期准备 了解RTMP定义 准备RTMPDump中的librtmp 使用openssl中的libssllibcrypto 推流工作 整体框架图 使用libtrmp提供的API 将streaming封装成为RTMP格式 进阶 RTMP client与RTMP server交互流程 RTMPDump源码分析 握手HandsShak...

2018-09-30 11:25:09 3683

原创 RTP详解

写在前面:RTP的解析,网上找了很多资料,但是都不全,所以我力图整理出一个比较全面的解析,其中借鉴了很多文章,我都列在了文章最后,在此表示感谢。互联网的发展离不开大家的无私奉献,我决定从我做起,希望大家支持。 原创不易,转载请附上链接,谢谢http://blog.csdn.net/chen495810242/article/details/39207305 1、RTP He...

2018-09-30 11:07:26 2787

原创 详解FFMPEG API

认识FFmpeg FFMPEG堪称自由软件中最完备的一套多媒体支持库,它几乎实现了所有当下常见的数据封装格式、多媒体传输协议以及音视频编解码器。因此,对于从事多媒体技术开发的工程师来说,深入研究FFMPEG成为一门必不可少的工作,可以这样说,FFMPEG之于多媒体开发工程师的重要性正如kernel之于嵌入式系统工程师一般。几个小知识: FFMPEG项目是由法国人Fabrice B...

2018-09-13 13:56:53 3377

原创 linux 下fcntl()函数

功能描述:根据文件描述词来操作文件的特性。#include <unistd.h>#include <fcntl.h> int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock);[描述]fcn...

2018-09-06 13:41:24 247

原创 uboot源码-MMC分析

一、uboot与linux驱动1、uboot是裸机程序狭义的驱动的概念:操作系统中用来具体操控硬件的那部分代码叫驱动。 裸机中没有驱动的概念,因为没有操作系统。 裸机程序是直接操控硬件的,而操作系统中则是通过驱动来操控硬件。两者的本质区别是分层。2、uboot的虚拟地址对硬件操作的影响(1)操作系统下,MMU是开启的,即linux驱动使用的都是虚拟地址。纯裸机程序不会开启MMU,...

2018-08-31 19:01:59 872

原创 linux下的exec命令

shell 中的 exec 两种用法:1.exec 命令 ;命令代替shell程序,命令退出,shell 退出;比如 exec ls2.exec 文件重定向,可以将文件的重定向就看为是shell程序的文件重定向 比如 exec 5</dev/null;exec 5<&-=============================shell的内建命令exec将并不启...

2018-08-29 18:37:31 129797 5

原创 详解linux下的udev

如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略。在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev目录下。后来,采用了devfs,一个基于内核的动态设备文件系统,他首次出现在2.3.46 内核中。Mandrake,Gentoo等Linux分发版本采用了这种方式。devfs创建的设备文件是动态的。但...

2018-08-23 14:58:38 282

原创 samba服务日志文件

1、Samba服务日志文件日志文件对于samba非常重要,它存储着客户端访问samba服务器的信息,以及samba服务的错误提示信息等,可以通过分析日志,帮助解决客户端访问和服务器维护等问题。在/etc/samba/smb.conf文件中,logfile为设置samba日志的字段。#=======================GlobalSettings==================...

2018-08-23 13:54:23 13903

原创 ubuntu 更换更新源

1  备份原来的更新源cp /etc/apt/sources.list /etc/apt/sources.list.backup如果提示权限不够就输入下面两行,先进入到超级用户,再备份sudo -scp /etc/apt/sources.list /etc/apt/sources.list.backup2  修改更新源  打开sources.list (这就是存放更新源的文件...

2018-08-20 20:32:22 633

原创 RTP详解

写在前面:RTP的解析,网上找了很多资料,但是都不全,所以我力图整理出一个比较全面的解析,其中借鉴了很多文章,我都列在了文章最后,在此表示感谢。互联网的发展离不开大家的无私奉献,我决定从我做起,希望大家支持。 原创不易,转载请附上链接,谢谢http://blog.csdn.net/chen495810242/article/details/39207305 1、RTP He...

2018-08-13 14:32:30 1391

原创 MPEG2-TS介绍

一:基本概念1.ES--Elementary Streams(原始流)是直接从编码器出来的数据流,ES经过PES打包器之后,转换成PES包。ES仅是包含一种数据内容的数据流,如h.264视频或者aac音频数据。打包之后的PES也是只包含一种的ES,如只含视频ES的PES或者只含音频ES的PES。每个ES都由若干个存取单元(AU)组成,每个视频AU或者音频AU都由头部和编码数据两部分组成,一...

2018-08-13 14:16:35 1907

原创 H264编码基础概念+格式分析

 一、编码基础概念1、为什么要进行视频编码?视频是由一帧帧图像组成,就如常见的gif图片,如果打开一张gif图片,可以发现里面是由很多张图片组成。一般视频为了不让观众感觉到卡顿,一秒钟至少需要16帧画面(一般是30帧),假如该视频是一个1280x720分辨率的视频,那么不经过编码一秒钟的大小:结果:1280x720x60≈843.75M所以不经过编码的视频根本没法保存,更不用说传...

2018-08-11 15:42:14 14935 5

原创 YUV数据格式

概要:与RGB编码方法类似,YUV也是一种颜色编码方法,主要用于电视系统以及模拟视频领域,它是指将亮度参量(Y:Luminance或Luma)和色度参量(UV:Chrominance或Chroma)分开进行表示的像素编码格式。而这样分开的好处就是不但可以避免相互干扰--没有UV信息一样可以显示完整的图像,因而解决了彩色电视与黑白电视的兼容问题;还可以降低色度的采样率而不会对图像质量影响太大,降...

2018-08-08 19:02:21 278

原创 linux下生成core dump文件方法

core dump的概念:A core dump is the recorded state of the working memory of a computer program at a specific time, generally when the program has terminated abnormally (crashed). In practice, other key ...

2018-07-24 15:56:50 560

原创 ubuntu 编译安装ffmpeg

1.FFmpeg编译1.1.安装yasm这里我是直接通过ubuntu包安装的,当然也可以通过编译源码来安装。sudo apt-get install yasm1.2.下载FFmpeggit clone https://git.ffmpeg.org/ffmpeg.git1.3.配置、编译FFMPEG(1) apt-get install yasm    //这儿需要先...

2018-07-24 11:00:16 4177

原创 fopen出错问题

函数介绍:函数原型 FILE * fopen(const char * path,const char * mode); 函数功能 打开一个文件参数:   path [in] 名称   mode[in] 打开方式返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。 注:这里只是简单介绍下函数功能和参数,具体参数意思此处不...

2018-07-23 19:04:53 13377 1

原创 指针做形参时应该注意的地方

1. 指针作为形参时,不可以将指针的地址改变,比如调用malloc。2. 只可以对指针指向的值做改变。   首先看以下程序: #include <stdio.h>int *swap(int *px, int *py){    int temp;    temp = *px;    *px = *py;    *py = temp;    ret...

2018-07-23 18:58:45 6183 1

原创 Linux下C语言计算文件的md5值(长度32)

找到了 md5.h 和 md5.c 的源文件,仿照别人的封装了个函数(他那个有问题,和 md5sum 计算出来的都不一样)。废话少说,直接贴 代码 : (再废一句话,如果只想计算字符串的md5值,把字符串传给 MD5Update 函数一次就好)#include "md5.h"#include <stdio.h>#include <stdlib.h>#inc...

2018-07-23 10:33:11 1435

原创 linux sqlite3 基本命令操作

备注:本文所有操作均在root用户下进行。1、安装sqlite3ubuntu下安装sqlite3直接在终端运行命令:#apt-get install sqlite3查看版本信息:#sqlite3 -version2 、sqlite3常用命令当前目录下建立或打开test.db数据库文件,并进入sqlite命令终端,以sqlite>前缀标识:#sqlite3 test.db查看数据库文件信息命令...

2018-07-12 13:57:22 18527 1

原创 C语言配置文件解析库——iniparser

前言:在对项目的优化时,发现Linux下没有专门的供给C语言使用的配置文件函数,于是搜索到了iniparser库,可以像那些面向对象语言一样,使用ini文件进行参数配置。介绍iniparser是针对INI文件的解析器。ini文件则是一些系统或者软件的配置文件。iniparser库有四种下载方式: 1. 官方网站 2. 我的github 3. 我的网盘 4. source code tree基本语法...

2018-06-26 20:31:31 424

原创 Iperf使用教程、移植到ARM、移植时遇到的问题解决。

iperf是一个基于Client/Server的网络性能测试工具,可以测试TCP、UDP和SCTP带宽质量,能够提供网络吞吐率信息,以及震动、丢包率,最大段和最大传输单元大小等统计信息,帮助我们测试网络性能,定位网络瓶颈。其中抖动和丢包率适应于UDP测试,二带宽测试适应于TCP和UDP。iperf的好处是纯粹发包和接收,防止硬盘拖后腿,影响测试结果。对于时延,iperf无能无力。但是iperf能够...

2018-06-22 13:49:23 5035

原创 linux手动释放内存

当在Linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching。这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的办法。那么我来谈谈这个问题。/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。那么我们可以通过调整/...

2018-06-20 10:29:03 261

原创 linux中字符串转换函数

Linux内核中提供的一些字符串转换函数:lib/vsprintf.c [html] view plain copy  print? 1. unsigned long long simple_strtoull(const char *cp, char **endp, unsigned int base)     2. unsigned long simple_strtoul(const char ...

2018-05-30 14:01:19 406

转载 双向链表

1.概念的引入相信大家都使用过各种集合来进行开发,但是较少的人会去研究其内部的存储原理和调用方法,今天我就来带大家一起学习数据结构算法:双向链表首先我们先来了解什么是缓存,以及数据在内存中的存储方式.1.缓存是什么如果cup读取数据时,每次读取都是从内存再到硬盘读取,那么效率就太低了.所以可以预先把数据存到内存,然后cup下次从内存读取即可.1232.数据在内存中的存储方式第1种.线性 ...

2018-05-17 16:32:36 213

原创 修改嵌入式Linux设备时区问题

 /etc/localtime这个文件用来设置系统的时区,将 /usr/share/zoneinfo/ 中相应文件拷贝到/etc下并重命名为 localtime 即可修改时区设置 一、查看和修改Linux的时区1. 查看当前时区命令 : "date -R"2. 修改设置Linux服务器时区方法 A命令 : "tzselect"方法 B 仅限于RedHat L...

2018-04-26 17:10:21 1106

原创 多媒体基础知识之PCM数据

1.什么是PCM音频数据PCM(Pulse Code Modulation)也被称为脉冲编码调制。PCM音频数据是未经压缩的音频采样数据裸流,它是由模拟信号经过采样、量化、编码转换成的标准的数字音频数据。2.PCM音频数据是如何存储的如果是单声道的音频文件,采样数据按时间的先后顺序依次存入(有的时候也会采用LRLRLR方式存储,只是另一个声道的数据为0),如果是双声道的话就按照LRLRLR的方式存...

2018-04-24 09:50:47 372

原创 Linux使用dd命令快速生成大文件

dd命令可以轻易实现创建指定大小的文件,如dd if=/dev/zero of=test bs=1M count=1000会生成一个1000M的test文件,文件内容为全0(因从/dev/zero中读取,/dev/zero为0源)。但是这样为实际写入硬盘,文件产生速度取决于硬盘读写速度,如果欲产生超大文件,速度很慢。在某种场景下,我们只想让文件系统认为存在一个超大文件在此,但是并不实际写入硬盘。则...

2018-04-21 10:40:29 264

转载 linux使用select实现定时器详解

在编写程序时,我们经常会用到定时器。首先看看select函数原型如下:代码如下:int select(int nfds, fd_set *readfds, fd_set *writefds,                  fd_set *exceptfds, struct timeval *timeout);参数说明:slect的第一个参数nfds为fdset集合中最大描述符值加1,fdset...

2018-04-04 11:37:06 1001

原创 详解SVN

一、什么是SVNSVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。二、SVN的下载安装下载地址:https://tortoisesvn.net/downloads.zh.html安装完不要忘记重启电脑安装完成后,按下鼠标右键,会看到如下界面:说明SVN已经安装成功了。三、SVN的常用操作1、迁出配置库内容(S...

2018-03-27 09:28:46 244

原创 CJON的使用

使用cJSON创建JSON字符串    在Linux下,使用C语言编程,开始JSON字符串的创建。我们还是一步步来,逐渐由简单到复制。  1,下载源码可以从如下网站来下载:https://sourceforge.net/projects/cjson/ 。2,包含cJSON的源码下载下来,解压后,从里面找到两个文件(cJSON.c、cJSON.h),复制到我们的工程里面。只需在函数中包含头文件(#i...

2018-03-12 20:04:11 2818

原创 嵌入式板端Ping通外网

在我的板子上ping路由上的IP的时候可以ping通,但是ping外网的IP的时候提示“ping: sendto: Network is unreachable”后来使用route命令看了一下# routeKernel IP routing tableDestination     Gateway         Genmask         Flags Metric Ref    Use If...

2018-03-07 16:24:04 436

原创 嵌入式自动判断是否插入网线的几种方法

 在嵌入式产品上,如何让用户选择有线还是无线上网呢?如何让他们判断使用了哪种方式上网呢?我们是这样处理的:优先使用网线上网,稳定。即程序自动判断,如果查了网线,则使用网线上网,如果没有网线连接,则无线上网。    所以,问题的重点是如何判断用户是否插了网线!下面介绍四种方法,仅供参考。方法一:/mnt/wifi$ cat /proc/net/devInter-|   Receive        ...

2018-03-07 11:11:34 1542

转载 小型web服务器thttpd的学习总结

1、软件的主要架构软件的文件布局比较清晰,主要分为6个模块,主模块是thttpd.c文件,这个文件中包含了web server的主要逻辑,并调用了其他模块的函数。其他的5个模块都是单一的功能模块,之间没有任何耦合。其中包括多路IO复用的抽象模块fdwatch.h/c,这个模块中将常用的IO复用接口,如poll/select抽象为一类接口,从而保证了接口的单一性和软件的可移植性。libhttpd模块...

2018-02-26 13:47:30 401

原创 Linux获取线程id的方法学习

如何确认两段代码是不是在同一个线程中执行的呢?通过查看资料,发现一种比较简单的方法就是在代码中使用printf将当前线程的id打印出来。而这也分成两种情况:1. 如果是pthread,则使用,#include <pthread.h>pthread_t pthread_self(void);2. 如果不是pthread,即是由内核创建的线程,则使用,#include <sys/ty...

2018-02-23 14:12:12 3577

原创 函数指针-回调函数

为什么要用到回调函数?更高级的语言中,回调函数的形式会发生一些变化,C++中有回调类,C#有委托.但是本质上都是“你想让别人的代码执行你的代码,而别人的代码你又不能动”这种需求下产生的假设A模块是需要调用B模块,而B模块又需要调用A模块,我们知道,模块之间的调用需要包含头文件,那模块的相互调用就存在头文件的相互包含,结果,你自己试试就知道了。不相互包含又不行,下

2018-01-30 19:15:05 125

原创 结构体与联合体

1. 定义一个结构体:struct Student{int number; //学号int score; //分数struct Student *next; //一个指针类型的成员,既可以指向其他类型的结构体数据,也可以指向 //自己所在的结构体类型。}注意:定义结构体类型的时候不可以对其进行赋值。2. 结构体字节

2018-01-30 19:13:49 187

原创 产生死锁的必要条件以及解决的方法

产生死锁的四个必要条件:(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不可剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。解决死锁的四种方法:鸵鸟算法(不解决,置之不理)死锁预防。

2018-01-30 18:07:03 184

原创 I2C详解

第7章  I2C 总线简介ZLG7290B与微控制器的接口形式是I2C串行总线,因此有必要简要地介绍一下I2C总线协议标准。第8章还给出了用C51编写的I2C总线软件包,以供参考学习。7.1 I2C总线概述飞利浦(Philips)于20多年前发明了一种简单的双向二线制串行通信总线,这个总线被称为Inter-IC或者I2C总线。目前I2C总线已经成为业界嵌入式应用的标准解决方案,被广泛地

2018-01-30 18:04:08 1331 1

原创 U-BOOT启动流程

UBOOT的第一阶段:硬件相关的初始化:1. 设置为SVC管理模式2. 关看门狗。3. 屏蔽中断4. 初始化SDRAM5. 设置栈6. 设置时钟7 重定位:将第二阶段的代码从flash中拷贝到SDRAM中,8 清BSS段(初始化全局变量和静态变量,初始值全部为0)9 最后一步,调用C函数 start_armboot第二阶段:1.初始化本阶

2018-01-30 18:03:15 170

计算机网络(谢希仁第五版)--qt

计算机网络(谢希仁第五版)计算机网络(谢希仁第五版)计算机网络(谢希仁第五版)

2018-03-03

串口调试助手及驱动--

嵌入式开发必备 串口调试助手及驱动--嵌入式开发必备 串口调试助手及驱动--

2018-03-03

linux内核--

linux内核--linux内核--linux内核--linux内核--linux内核经典书籍

2018-03-03

《ARM嵌入式Linux系统开发详解》.(弓雷)带书签

《ARM嵌入式Linux系统开发详解》.(弓雷)带书签《ARM嵌入式Linux系统开发详解》.(弓雷)带书签

2018-03-03

Git版本控制管理 第2版 (美)罗力格(美)麦卡洛著

Git版本控制管理 第2版 (美)罗力格(美)麦卡洛著Git版本控制管理 第2版 (美)罗力格(美)麦卡洛著

2018-01-30

迅为 Linux系统编程_v2.1

迅为 Linux系统编程_v2.1迅为 Linux系统编程_v2.1迅为 Linux系统编程_v2.1

2018-01-30

ipscan24

查询IP的绿色软件,很好用,一直在用的。

2018-01-30

空空如也

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

TA关注的人

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