- 博客(120)
- 资源 (20)
- 论坛 (2)
- 收藏
- 关注
转载 应用 Valgrind 发现 Linux 程序的内存问题
Valgrind 概述体系结构Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。Valgrind的体系结构如下图所示:图 1 Valgrind 体系结构Valgrind包括如下一些工具:Memcheck。这是v
2020-10-27 10:43:46
22
转载 AddressSanitizer使用介绍
1、关于AddressSanitizer1.1 引言也许很多人都听说过类似这样的一个故事:某公司的服务器每隔3个月就会毫无预兆的崩溃一次,怎么也查不出原因,为了避免崩溃可能引发的问题,只得每2个月手动重启一次服务器。在这类有些灵异的事件背后,以内存泄露为代表的一系列内存错误往往就是那个幕后黑手。在计算机科学中,内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费
2020-06-15 17:36:13
513
原创 ADPCM音频格式详解 ADPCM_IMA ADPCM_DIV4
网上帖子一大推,都是照搬adpcm音频算法代码,实际使用时需要注意没有相关细节,我在这里补充一片防止大家走弯路//ADPCM-DIV4 音频帧标识头struct adpcm_state{ //前一个采用点值:adpcm算法是根据前一个采样点为基准值,求后续压缩值 short valprev; char index; char rev;};/* Intel ADPCM step variation table */stati...
2020-05-23 15:39:16
300
转载 推荐五款好用的项目管理软件
1.TeamLab(免费)TeamLab 是一个免费开源的商业协作和项目管理的平台。TeamLab 主要功能包括:项目管理、里程碑管理、任务、报表、事件、博客、论坛、书签、Wiki、即时消息等等。2.redmine(免费)Redmine 是一个开源的、基于Web的项目管理和缺陷跟踪工具。它用日历和甘特图辅助项目及进度可视化显示。同时它又支持多项目管理。Redmine是一个自由开放 ...
2020-04-09 20:31:35
461
原创 wav数据格式详解
1. 音频简介经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等.44100HZ 16bit stereo: 每秒钟有 44100 次采样, 采样数据用 16 位(2字节)记录, 双声道(立体声);22050HZ 8bitmono: 每秒钟有 22050 次采样, 采样数据用 8 位(1字节)记录, 单声道;...
2020-03-11 21:05:51
646
转载 liunx 系统内存详解
想必在linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题——你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过top命令查看进程占用了多少内存。这里我们可以看到VIRT、RES和SHR三个重要的指标,他们分别代表什么意思呢?这是本文需要跟大家一起探讨的问题。当然如果更加深入一点,你可能会问进程所占用的那些物理内存都用在了哪些地方?这时候top命令可能不能给到你...
2020-01-10 20:39:26
74
转载 LD_PRELOAD用法
LD_PRELOAD,是个环境变量,用于动态库的加载,动态库加载的优先级最高,一般情况下,其加载顺序为LD_PRELOAD>LD_LIBRARY_PATH>/etc/ld.so.cache>/lib>/usr/lib。程序中我们经常要调用一些外部库的函数,以open()和execve()为例,如果我们有个自定义这两函数,把它编译成动态库后,通过LD_PRELOAD加载,当...
2019-11-29 17:40:20
198
转载 海思hisi I2C SPI读写寄存器
I2C 读写命令示例此操作示例通过 I2C 读写命令实现对 I2C 外围设备的读写操作。a. 在控制台使用 i2c_read 命令对 I2C 外围设备进行读操作:~ $ i2c_read <i2c_num> <device_addr> <reg_addr> <end_reg_addr> <reg_width> <data_w...
2019-08-20 15:39:25
1549
原创 ARM linux SPI备份flash数据
uboot中如果支持spi/qspi flash, 那么可以使用sf的erase, read, write命令操作spi flashsf read用来读取flash数据到内存sf write写内存数据到flashsf erase 擦除指定位置,指定长度的flash内容, 擦除后内容全1以备份uboot文件举例:1 、设置环境变量setenv serverip 192.168.23...
2019-08-19 11:52:46
284
原创 liunx 磁盘备份
因工作需要,大家都在一个linux服务器上工作,这时候服务器的重要性就凸显出来了,为了以防备万一份服务器是必须的。step1: 系统盘和备份盘fdisk -l ,首先需要两块硬盘:系统盘、备份盘。系统盘是下图/dev/sda,备份盘是下图/dev/sdbstep2:dd指令备份磁盘dd if=/dev/sda of=/dev/sdb bs=1024k&(1).先改f...
2019-06-25 16:16:08
91
原创 Linxu文件系统句柄泄露排查
在Linux系统中能够通过ulimit–n查看每一个进程限制的最大句柄数,通过ulimit –HSn 10240改动进程的最大句柄数。当句柄数目达到限制后,就回出现”too many files open”。查看进程占用的句柄数有几种办法:1) 通过cat/proc/pid/fd能够查看进程pid号打开的线程;2) 通过lsof命令如果发现那个文件句柄打开特别多,就可...
2019-06-05 11:16:22
862
原创 linux c语言 统计CPU专用率
最近在调试中发现应用程序的CPU占用率高,于是想看是那个线程专用了cpu。 # top 查看cpu专用率,这个时候打印的是进程级别cpu专用率。再按H,就有打印线程级别的cpu专用信息了...
2018-09-18 12:05:51
938
转载 参考ethtool写了个Linux设置、获取网卡模式的接口
差不多一个月没写文章了,这期间,主要是搞一些比较复杂的问题,一直被搞,没有搞其它的东西,也就没写出什么东西来。在找问题过程中,上网了解到ethtool这个工具十分强大,以为这个代码很复杂,而恰好领导要求我提供设置网卡信息的接口,于是下了代码,研究了一下,参考了一下,整理了一下。当然文中写的是第一个版本,要是这样的接口提供出去,其它部门的人肯定会有意见的。Linux内核很早就已经加入etht
2017-11-11 17:37:14
1454
原创 音频参数概念详解
【音频】指人耳可以听到的声音频率在20HZ~20kHz之间的声波,称为音频。【采样频率】即取样频率, 指每秒钟取得声音样本的次数。采样频率越高,声音的质量也就越好,声音的还原也就越真实,但同时它占的资源比较多。由于人耳的分辨率很有限,太高的频率并不能分辨出来。22050 的采样频率是常用的, 44100已是CD音质, 超过48000或96000的采样对人耳已经没有意
2017-08-31 22:00:14
2381
原创 日志记录重定向到文件
//打开文件 fp = fopen("/mnt/sdcard/com.log", "at+"); if(fp == NULL) { perror("fopen:"); printf("fopen(/mnt/sd
2017-08-04 10:04:55
1985
转载 交换机数据转发原理
H3C参考:http://www.h3c.com.cn/Service/Document_Center/Switches/Catalog/S3100/S3100-52P/Command/Command_Manual/S3100-52P_CM-Release_1702-6W100/201004/672685_30005_0.htm举例一:如图,交换机A 、B ,主机11给主机33发送一个
2017-08-01 10:19:54
10647
原创 linux 多线程消息广播
最近在工作中遇到了问题一个纠结问题:一个底层通用的模块,在应用层有许多线程使用。该模块大多数情况下都是正常的,模块出问题之后或基于其他考虑需要重启底层模块,底层重启了之后理论上是应用层需要释放当前资源,重新开始应用层业务。 为了实现该目标,当前以使用方式是:底层模块重启前调用每一个应用程接口,通知他们释放当前资源。但感觉这个设计有些缺陷:完全破坏了底层模块的封装完整性。 然后首
2017-07-29 12:53:16
662
转载 ip转发
工作原理:内网主机向公网发送数据包时,由于目的主机跟源主机不在同一网段,所以数据包暂时发往内网默认网关处理,而本网段的主机对此数据包不做任何回应。由于源主机ip是私有的,禁止在公网使用,所以必须将数据包的源发送地址修改成公网上的可用ip,这就是网关收到数据包之后首先要做的工作--ip转换。然后网关再把数据包发往目的主机。目的主机收到数据包之后,只认为这是网关发送的请求,并不知道内网主机的存在,
2017-07-28 09:43:23
3520
转载 提高linux socket 性能技巧
使用 Sockets API,我们可以开发客户机和服务器应用程序,它们可以在本地网络上进行通信,也可以通过 Internet 在全球范围内进行通信。与其他 API 一样,您可以通过一些方法使用 Sockets API,从而提高 Socket 的性能,或者限制 Socket 的性能。本文探索了 4 种使用 Sockets API 来获取应用程序的最大性能并对 GNU/Linux® 环境进行优化从
2017-07-26 10:20:44
1440
转载 IP分片和TCP分片 MTU和MSS
1,MTU(Maximum Transmission Unit,MTU),最大传输单元(1)以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492个字节。链路层的这个特性称作MTU。不同类型的网络大多数都有一个上限。如果IP层有一个数据要传,且数据的长度比链路层的MTU还大,那么IP层就要进行分片(fragmentation),把数据报分成若干片,这样每一个分片都小于M
2017-07-21 21:49:45
920
原创 wireshark 学习更进一步 之网络性能分析
1、图形化数据分析这里是分析一个实时视频上传服务的抓包数据,过滤条件:tcp.port==10003 and tcp.port==61232,表示设备和服务器之间的数据链路。连接时间17:01:38,断开时间17:02:28。而这中间可以明显看到17:01:48-17:02:01没有数据包的传输,具体原因查看具体时间段内的数据交互。2、异常数据统计分析同样是对刚
2017-07-20 23:14:21
4595
原创 wireshark 学习更进一步 之RST数据解读
1、定义:RST表示复位,RST=1表示TCP中出现严重错误(由于主机崩溃或其它原因),必须释放连接。RST=1还可用来拒绝一个非法的报文段或拒绝打开一个连接。发送RST后不会再有正常的四分组终止序列(Unix网络编程so_linger选项)。2、有三个条件可以产生RST:*SYN到达某端口但此端口上没有正在监听的服务器(针对TCP而言,UDP则返回端口不可达ICMP错误)。*TC
2017-07-20 09:51:08
8850
原创 wireshark 学习更进一步 之wireshark异常数据解读
[TCP Previous segment not captured][TCP Out-of-Order][TCP Dup ACK][TCP spurious retransmission][TCP Fast Retransmission][TCP Retransmission]
2017-07-19 19:56:57
17177
1
转载 linux原始套接字-arp请求与接收
一.概述 以太网的arp数据包结构:arp结构op操作参数:1为请求,2为应答。常用的数据结构如下:1.物理地址结构位于netpacket/packet.h 1 struct sockaddr_ll 2 { 3 unsigned short int sll_
2017-07-12 17:27:11
1191
原创 IBM developerWorks linux 技术论坛
IBM developerWorks: https://www.ibm.com/developerworks/cn/这里面的文章都是具有专业性,针对性的技术贴。该论坛技术贴内容不错,且排版非常规范,这里随意列举一些实用贴:管理共享库https://www.ibm.com/developerworks/cn/linux/l-lpic1-102-3/index.htmllinux 嵌入式开发htt
2017-07-12 12:03:48
605
原创 tcp 三握手和四挥手理解
tcp首部:TCP头部包含下列: ACK SYN FIN 源端口 目的端口 信息在理解tcp连接和断开时有帮助,这里先简单介绍:ACK :应答标记位。 TCP协议规定,只有ACK=1时,数据有效,也规定连接建立后所有发送的报文的ACK必须为1。SYN(SYNchronization) : 请求建立标记位,当SYN=1时,表明这是一个连接请求报文。FIN (fini
2017-07-11 17:01:58
506
原创 自行实现 Onvif 对接开发模式
对于Onvif协议,在安防视频行业的地方,谁都知道。但是网上就有onvif协议对接的方案都是使用开源的第三方库进行对接,讲解。那么问题来了,我们能不能用代码自己实现呢?答案是肯定的。而要用我们自己的代码实现onvif协议对接,其中牵扯到诸多的协议和概念,这里我大致整理一下,对自行实现Onvif协议对接者提供一个学习思路。1、工具很重要学习onvif之前,需要两个最基本工具:1、ONVI
2017-06-15 11:39:18
18971
4
原创 Visual Studio2013 开发环境搭建
本人linux c码农一名,无事开始学习c++。既然是linux码农,首先编译器自然是g++,但打算学习mfc编程,就不得不使用Visual Studio了,这里记录Visual Studio2013开发环境的搭建。以供我以后回忆1、msdn安装 windows编程经典必备神器,这里以添加mfc API为例:
2017-06-09 00:08:39
610
原创 移植mp4v2开源库,h264+g711a/g711u编码mp4
1、mp4v2移植 step1、下载:https://launchpad.net/ubuntu/+source/mp4v2 step2、编译 简单配置参数: ./configure --host=arm-linux CXX=arm-hisiv100nptl-linux-g++ CC=arm-hisiv10
2017-05-08 11:59:39
2739
原创 嵌入式设备进行http socket开发流程
最近接触了一个http开发的项目,在这里记录一下主要流程。 下位机:arm linux 上位机:pc web服务器 这里在与web服务器通信时,没有使用第三方开源库工具,而是直接使用socket通信模拟http协议通信,大致思路如下: 1 、对域名解析,将www.xxxx.com之类的网址解析为ip地址,端口没有说明的话,默认80 2、使用so
2017-05-02 10:09:30
4863
原创 使用vlc搭建http ts流服务器
学习http 视频ts流,首先得搭建一个好的调试环境,这里以window VLC客户端为例。1、搭建视频ts服务器2、使用视频ts客户端3、使用wireshark数据分析
2017-04-01 16:35:38
8325
3
原创 海思播放器解码记录
在设备端采用minigui+hisi vdec+vo实现本地视频回放,这个方案是在两年前就实现了的。但是最近在对接ipc后,使用播放器播放录像发现以下两个问题: 1)在ipc使用高码流(4MB/s)录像时,视频回放只能回放几秒数据就无法解码 2)设置ipc帧率是25f/s时回放效果是慢放,以前一直使用8f/s测试对于问题1,解决方案是解码器初始化时给的内存大小不足导致的(红
2017-03-27 11:22:33
4640
2
原创 onvif工具使用简介
对于初步接触onvif协议的人员来说,使用onvif官方测试工具来初步熟悉onvif协议是一个不错的选择,这里以ONVIF Device Test Tool 13.06为例,不同版本之间大同小异。进行初步介绍:工具初步使用:step1:收搜ipc1、选择物理网卡2、点击收搜设备3、收搜设备信息返回在3类表框,列表框中选择待操作设备4、点击check,校检获取相关参数
2017-03-23 15:20:28
6491
2
原创 rtsp、rtp tcp和udp链接方式区别
1、工作方式的差异通常来说,RTSP提供UDP方式发送RTP流。当然,发送流媒体时,UDP往往是更好的选择。但是,在互联网上使用UDP方式发送流是不可能的。 下面是使用UDP时的一些问题:1. UDP协议上的RTSP/RTP需要打开许多UDP端口(每一路流媒体都需要2个UDP端口,一个用于接收数据,一个用于接收控制信息);2.当因特网上的路由器没有打开这些端口的时候,上述第
2017-03-06 13:23:15
11180
转载 stmp邮件协议讲解
第1章. SMTP概述 1.1. SMTP在邮件通信过程中的位置SMTP,即简单邮件传送协议,所对应RFC文档为RFC821。同http等多数应用层协议一样,它工作在C/S模式下,用来实现因特网上的邮件传送。SMTP在整个电子邮件通信中所处的位置如图1所示。 图1.电子邮件的通信过程
2017-03-06 13:07:47
1254
原创 h264 sps pps详解
1、学习路线step1、初步了解h264,了解h264数据帧分类和识别step2、h264专业名词解析step3、sps、pps帧语法定义2、h264简介 3、h264名词解析 4、sps语法 5、pps语法
2017-03-03 23:21:14
17447
1
原创 rtp h264打包和解包
1、学习思路 在了解rtp对h264数据的打包之前,需要对rtp、h264的一些基本概念有一个初步的了解,然后再使用rtp对h264的打包解包做解析2、rtp认知实时传送协议(Real-time Transport Protocol或简写RTP,也可以写成RTTP)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的。RTP
2017-02-28 11:48:37
2807
原创 rtsp 用户名、密码登录
在使用rtp看视频时,有时候需要使用用户名和密码登录,那么在用户名密码登录的流程是怎么样的呢?大致流程: rtsp 客户端发送DESCRIBE指令 服务器应答401错误,说明需要用户名密码认证 rtsp 客户端再次发送DESCRIBE指令,该指令包含用户名密码等有效信息,
2017-02-24 19:44:04
15178
原创 rtp、rtsp客户端开发流程
环境:VLC做服务器,url:rtsp://192.168.100.77:8554/1 rtsp链路采用tcp链接 rtp采用udp关于rtp、rtsp、rtcp的知识,这里不做详细解释,网上有大把的资料,用户可以自己问度娘。这里直接切入正题。PS:这里还需要唠叨一点,rtsp为字符协议,字符协议中含大量不可见字符
2017-02-24 11:42:42
5575
h264 sps, pps解析代码
2017-03-04
DPO_RT5572_LinuxSTA_2.6.1.3_20121022.tar.bz2
2016-04-22
minigui3.0 API
2015-01-26
hisi3520D 黑色字体透明,可以看到视频层图像
发表于 2015-05-07 最后回复 2016-03-21
gdb core文件调试
发表于 2015-07-29 最后回复 2015-07-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝