- 博客(17)
- 资源 (2)
- 收藏
- 关注
原创 嵌入式搭建ftp服务器
嵌入式ftp下载源码git clone git@github.com:gamman/stupid-FTPd.git编译make CC=arm-linux-gnueabihf-gcc编辑stupid-ftpd.confserverroot=/mnt/mmc0changeroottype=virtualport=21pc linux安装ftp客户端apt-g...
2020-02-25 18:21:19
986
原创 c单元测试框架
C也能实现泛型编程。如何实现呢,使用union,同一个变量可以存放多种类型变量。对于单元测试,往往我们希望的是,同一个函数,对应多种输入,从而判断它的输出是否在我们的期望之内。c单元测试框架已经实现,在本人的github:https://github.com/felix-001/test-framework...
2019-10-18 15:42:35
244
原创 c日志模块,宏实现
高大上的日志模块,实现了如下功能:分模块分级别上代码:extern int g_log_level;#define LOG_COMMON( module, level_str, level, args...) do { \ if ( level >= g_log_level ) { \ printf("| %20s | %5s | %s:%d(%s)# "...
2019-09-23 20:47:17
391
原创 v3s lichee zero开发
概述Allwinner_V3s_Datasheet_V1.0.pdf 7.2.4https://licheezero.readthedocs.io/zh/latest/index.htmlhttps://www.kancloud.cn/lichee/lpi0/317714https://github.com/Lichee-Pihttp://bbs.lichee.pro/d/127-li...
2019-07-19 12:10:20
2494
1
原创 linux重要指令速查表
查看内存泄漏valgrind --leak-check=full --show-leak-kinds=all myprog arg1 arg2创建容器且挂载host目录到容器:docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -it -v /Users/rigensen/workspace/:/home ub...
2019-07-18 16:50:45
238
原创 qemu模拟aarch64
下载linux内核linux-4.14.35.tar.gzmake ARCH=arm64 defconfigmake ARCH=arm64 CROSS_COMPILE=aarch64-linux-制作文件系统mv rootfs.cpio.gz ./tmpcd ./tmpgunzip rootfs.cpio.gzmkdir -p ./rootfscd ./rootfscpio ...
2019-07-18 14:46:14
2147
原创 C语言面向对象实现c++继承和多态
c语言实现c++的继承和多态,父类指针指向子类对象typedef struct { void (*push)(void *data, int len ); void (*pop)(void *data, int *len );} base_queue_t;typedef struct { base_queue_t base; void *__mem;} c...
2019-06-28 18:57:43
202
原创 嵌入式环境内存泄漏检查
嵌入式环境内存泄漏检查比较麻烦,valgrind比较适合于在pc上跑,嵌入式上首先移植就很麻烦,移植完了内存比较小,跑起来也比较费劲。所以手动写了一个内存泄漏检查工具,基本思路是,hook每一次的malloc或者free的调用,记录申请内存的大小,地址,和调用的函数。以便追踪内存泄漏。并且开启一个线程,每隔一段时间监测是否有哪个函数申请的内存在增长。代码地址:https://github.co...
2019-06-25 15:07:36
1237
原创 RTSP教程
RTSP教程概要基本流程需要注意的点参考概要音视频的传输方式有两种,一种是基于TCP,一种是基于UDP。基于TCP由于有三次握手的过程,延迟较大。基于UDP由于可能会丢包,需要自己控制传输质量。RTSP是一种基于字符串的协议,主要用于信令,本身不传输音视频,音视频的传输要用到RTP协议,传输的质量主要由RTCP协议保证。基本流程创建socket server等待rtsp client的连...
2019-05-30 17:57:35
1042
原创 RTMP协议
概要在RTMP协议中信令和媒体数据都称之为Message,在网络中传输这些Message,为了区分它们肯定是要加一个Message head的,所以RTMP协议也有一个Message head,还有一个问题因为RTMP协议是基于TCP的,由于TCP的包长度是有限制的(一般来说不超过1500个字节),而RTMP的Message长度是有可能很大的,像一个视频帧的包可能会有几十甚至几千K,这个问题...
2019-04-10 11:07:29
407
原创 H265码流格式
简称HEVCHigh Efficiency Video Coding推出组织HEVC是ITU-T视频编码组与ISO/IEC MPEG组共同努力的结果。ITU-T促进了电信标准的建立和采用,ISO/IEC则负责电子行业相关标准的管理优势相同质量的视频文件,使用HEVC编码的文件大小是H.264标准的一半,MPEG-2标准的四分之一,能够显著减少文件的存储和分发成本profil...
2019-03-24 10:43:24
4984
原创 adts格式
名字Audio Data Transport Stream作用有的时候当你编码AAC裸流的时候,会遇到写出来的AAC文件并不能在PC和手机上播放,很大的可能就是AAC文件的每一帧里缺少了ADTS头信息文件的包装拼接。只需要加入头文件ADTS即可。一个AAC原始数据块长度是可变的,对原始帧加上ADTS头进行ADTS的封装,就形成了ADTS帧。adts文件结构adts header...
2019-03-24 10:37:20
604
原创 H264码流格式
h264码流格式码流格式…NAL头RBSPNAL头RBSPNAL头RBSP…H264 传输SPSSEIPPSI片图像定界符P片P片NAL头格式start code ( 3 or 4 )forbidden_zero_bit(1)nal_ref_idc (2)nal_unit_type( 5)RBSP解释s...
2019-03-24 10:35:18
10439
原创 FLV格式
FLV文件格式FLV headerPre Tags Size 0Flv Tag 1Pre Tag size 1FLV Tag 2…FLV Tag ntag1是metadata,记录视频的一些信息tag2是视频配置信息(AVC decoder configuration record),video tagtag3是音频配置信息(如果没有音频则去掉此项)tag4...
2019-03-24 10:32:28
637
原创 ARM调查内存泄漏
概要valgrind即使在arm上移植成功了,想跑起来也非常困难,那么如果去调查arm平台的内存泄漏问题呢,一种思路是替换glibc的malloc首先定义自己的mymalloc.h// Last Update:2018-09-26 11:27:00/** * @file mymalloc.h * @brief * @author felix * @version 0.1.00...
2019-03-24 10:27:56
1309
原创 ARM快速定位segment fault
概要ARM平台调试段错误很麻烦,主要原因有一下几点:gdb不容易跑,嵌入式系统一般内存不够大valgrind也需要占用很大的内存有的平台工具链不支持backtrace有一种办法是捕获发生段错误时的信号,打印出发生段错误时的各种寄存器的值,其中非常关键的一个寄存器就是pc寄存器的值,通过objdump反汇编出源码之后,可以快速定位到发生错误的代码行,代码如下:// Last Upda...
2019-03-24 10:06:25
1091
原创 mpeg-ts总结
ts header结构字段解释sync_bye是包中的第一个字节,TS包以固定的8bit的同步字节开始,所有的TS传送包,同步字都是唯一的OX47,用于建立发送端和接收端包的同步。MPEG-2解码器接收到MPEG-2 TS流时,首先检测包结构,在TS流中查找同步字节:总是OX47,总位于TS包开始位置,固定间隔为188字节。同时满足这两个条件,可以确定同步。如果出现一个字节为47he...
2019-03-23 12:33:18
1232
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人