自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 资源 (1)
  • 问答 (4)
  • 收藏
  • 关注

转载 HDMI EDID格式详细解析

在网上看到一片文章,分析HDMI EDID格式,介绍的还是蛮详细的,这里直接引用这位网友整理的数据,链接如下:https://www.likecs.com/show-204638091.html

2023-04-17 10:50:41 382

原创 Linux快速定位内存泄露和内存越界

linux查找内存泄露和越界问题

2022-06-14 11:07:05 1254

原创 Linux Input子系统Mouse实战(一)

在做UIBC项目的时候,支持鼠标回控,所以需要从Linux获取鼠标的状态,Input子系统很好的帮我们做好了这件事情。在/dev/input/目录下有很多event设备,具体每个event都是什么用途,可以查看看/proc/bus/input/devices。有时需要支持多个设备。如下可以看到鼠标是event1设备。只是为了记录而已,就不多描述太多内容,直接上代码。这是最多同时支持5个鼠标的案例。int get_input_event(const char *type,int

2022-05-25 11:15:47 359

原创 Linux设置网络缓冲区大小(TCP/UDP)

一、修改套接字socket的缓存大echo 65536 > /proc/sys/net/core/rmem_max#收缓冲区最大值echo 256960 > /proc/sys/net/core/wmem_max#发缓冲区最大值echo 65536 > /proc/sys/net/core/rmem_default#收缓冲区默认值echo 65536 > /proc/sys/net/core/wmen_default...

2022-05-18 10:59:27 7763 1

原创 Linux I2C应用编程

I2C的协议内容在这里就不大费周章的描述,主要记录一些自己在实际应用过程中觉得有助于调试一些方法。一、介绍I2C 的几个比较有用的tool(1)i2cdetecti2cdetect的主要功能就是I2C设备查询,它用于扫描I2C总线上的设备。它输出一个表,其中包含指定总线上检测到的设备的列表。该命令的常用格式为:i2cdetect [-y] [-a] [-q|-r] i2cbus [first last]。具体参数的含义如下: -y 取消交互模式。默认情况下,i

2022-05-06 16:09:34 1131

原创 Linux GPIO子系统

一、Linux驱动程序驱动程序为drivers\gpio\gpiolib-sysfs.c二、通过SYSFS使用GPIO如果只是简单的引脚控制(比如输出、查询输入值),可以不编写驱动程序,这样可以节省很多事情。但是涉及中断的话,就需要编写驱动程序了。2.1 设置GPIO方向,读写值1、可通过串口输出命令验证1、设置你想操作的GPIO Pin,这里我们假设用GPIO76cd /sys/class/gpio/echo 76 >export2、设置GPIO Pin的方.

2022-04-27 16:40:42 331

原创 lighttpd使用

之前在项目中使用的是thttpd,由于thttpd是用明文发送的,为了安全考虑,用https来代替http,增加了证书认证功能,所以最后选择了lighttpd。 lighttpd支持了cgi和fcgi,thttpd只支持了cgi,为了兼容的同时避免重复开发,仅在lighttpd上配置了支持cgi功能。 接下来简单了记录下自己的一些配置内容,后续有用到新功能...

2019-11-21 19:51:06 8038

原创 printf打印设置字体和背景带颜色的输出方法

为了方便调试,难免会加一些log信息,当有大量log时,去翻阅很难一眼看出错误信息,这时就可以对log设置某些颜色或者高亮度等等。具体格式如下:printf("\033[字背景颜色;字体颜色m 字符串 \033[0m");例子:printf("\033[1m\033[45;33m HELLO_WORLD \033[0m\n");颜色代码...

2019-11-18 14:43:44 948

原创 buildroot package如何打patch

今天修改了thttpd的源码,需要通过在buildroot package里面通过打patch的方式。其实打patch的方式很简单,只要把生成的patch文件放在对应目录下,比如thttpd放在后重新make clean,make命令,就会自动打好patch。主要是patch的命名规则有要求,这个可以参考网上的其它文章。还有一个就是patch的生成方法,我是通过diff命令。将...

2019-11-14 19:54:12 2039

原创 Thttpd上传大文件的方法

最近在给Microsoft做一个项目,碰到需要上传几百MB的文件,而thttpd本身也是支持上传文件功能的,只是thttpd为了考虑一些需求在某些方面进行了限制。 这里我做个简单的介绍,thttpd的main()函数在thttpd.c里面,解析http参数的功能在libhttpd.c。config.h头文件有一些关于系统以及CGI的配置项,关于CGI的配置项主要是考虑一些系...

2019-11-14 19:30:45 649

原创 JSON数据key和value之间有空格问题

项目终于暂时告一段落了,之前在帮Microsoft调试一些功能,根据Microsoft提供的SPEC,要求返回数据为JSON格式,并且严格要求key和value之间不能有空格,可能会导致Microsoft无法正常解析返回结果。 追了一下cJSON的源代码,发现空格的产生是因为cJSON特意加了个 '\t' ,可能是因为这样看起来JSON数据比较直观。 主要是...

2019-11-14 18:05:00 6321

翻译 计算从1970年到当前时间所经历过的秒数

这个算法来自LINUX的源码,下面带有大神的解析,自己在RTC实验中也使用了,不用月份表,润平年的处理,几行就可得出结果,以下是程序和大神的解析Linux源码中的mktime算法解析 我们知道,从CMOS中读出来的系统时间并不是time_t类型,而是类似于struct tm那样,年月日时分秒是分开存储的。 那么,要把它转化为系统便于处理的time_t类型,就需要算法进行转换。...

2019-09-18 18:22:54 16954 1

原创 vi快捷键

今天分享一些常用的vi快捷键,后续有遇到会继续添加。移动光标上:k nk:向上移动n行 9999k或gg可以移到第一行 G移到最后一行下:j nj:向下移动n行左:h nh:向左移动n列右:l nl:向右移动n列w:光标以单词向前移动 nw:光标向前移动n个单词 光标到单词的第一个字母上b:与w相反$:移动光标到行尾 n$:移动到第n行的行尾0(Num):移动光标到行...

2019-04-09 19:51:46 277

原创 网络流媒体协议之——RTSP协议

RTSP(Real-Time Stream Protocol)协议是一个基于文本的多媒体播放控制协议,属于应用层。RTSP以客户端方式工作,对流媒体提供播放、暂停、后退、前进等操作。该标准由IETF指定,对应的协议是RFC2326。RTSP作为一个应用层协议,提供了一个可供扩展的框架,使得流媒体的受控和点播变得可能,它主要用来控制具有实时特性的数据的发送,但其本身并不用于传送流媒体数据,...

2019-01-16 18:02:30 561

原创 使用libcurl库进行http通讯网络编程

 一、LibCurl基本编程框架二、一些基本的函数三、curl_easy_setopt函数部分选项介绍四、curl_easy_perform 函数说明(error 状态码)五、libcurl使用的HTTP消息头六、获取http应答头信息七、多线程问题八、什么时候libcurl无法正常工作九、关于密码十、HTTP验证十一、代码示例     1、基本的http GET/POS...

2019-01-08 17:49:39 449

原创 C语言实现遍历目录并用树状打印

头文件:#include <sys/types.h> #include <dirent.h>struct dirent{    ino_t d_ino; //d_ino 此目录进入点的inode    ff_t d_off; //d_off 目录文件开头至此目录进入点的位移    signed short int d_reclen; //d_recle...

2018-12-20 10:53:39 3018 1

原创 Linux使用libqrcode生成二维码图片

之前在做跟华为合作的项目,需要根据字串来生成特定的二维码,特在此记录,以便查看。二维码图样有很多种,根据项目要求,我选择了使用libqrcode库来实现,这是个开源库,使用十分方便,首先下载libqrcode源码,根据平台选择编译条件并编译成动态库so。在自己编写程序包含相应的头文件,编译链接动态库即可。以下是我部分code,仅供参考。qrcode.h#ifndef _QRCOD...

2018-12-17 16:15:06 2548 1

原创 使用libpng读写PNG图片

libpng是一款C语言编写的比较底层的读写PNG文件的跨平台的库。借助它,你可以轻松读写PNG文件的每一行像素。因为PNG文件是经过压缩而且格式复杂的图形文件(有的PNG文件甚至像GIF文件一样带动画效果)而且PNG可以是带透明通道的真彩色图像、不带透明通道的真彩色图像、索引颜色、灰度颜色等各种格式,如果大家都自己写程序分析PNG文件就会显得很麻烦、很累。因此,通过使用libpng你就能直接...

2018-12-14 17:21:11 16237 9

原创 Linux Excel (*.xls)文件读取,使用libxls库

首先下载libxls,项目地址:http://sourceforge.net/projects/libxls/解压后使用:./configure --prefix=/usrmakesudo make install安装,请注意,在configure前,一定要安装libiconv-dev,否则中文显示可能不正常。关于libiconv如何使用,请参考我上一篇文章https://b...

2018-12-13 15:58:06 11736 3

原创 Linux使用iconv进行编码转换

       最近在做项目,为了能让UI显示中文,需要对中文进行编码转换。因为我用的是directfb,它只支持utf-8格式,所以要将gb2312转换为utf-8,这时使用iconv是非常方便的。 以下是我在项目中用到的一部分代码。首先要使用iconv的API需要包含它的头文件#include "iconv.h" 或者#include <iconv.h>#define O...

2018-10-18 11:12:10 1062

转载 libxml2的安装及使用

本文着重介绍解析xml的libxml2库的安装及使用,举例说明创建和解析xml的过程。是针对C语言开发人员使用你若想详细学习前端的一套东西,即xml   html  css   javascript(JS)等,可以登录这个网站http://www.runoob.com/一、libxml2的安装   关于libxml2的介绍请参考官方网址http://xmlsoft.org/,下载最...

2018-09-12 17:18:34 2368

原创 金融交易报文ISO8583协议

前言最初,金融系统只有IBM这些大公司来提供设备,象各种主机与终端等,后来有很多大大小小的公司进入,怎样设计一个报文协议,解决各公司金融系统之间的报文交换,暂且称该协议叫做ISO8583协议。例如“回头客会员管理系统”POS机上应用的就是8583报文。金融行业涉及到的数据内容是比较少的,如交易类型、帐号、帐户类型、密码、交易金额、交易手续费、日期时间、商户代码、2磁3磁数据、交易序列号等,...

2018-09-04 14:20:45 937

原创 CGIC中文文档

CGIC英文文档地址:https://boutell.com/cgic/cgic是用c写cgi程序的一个很小的库,所以英文文档也很少,为了便于日后复习翻看,心血来潮,翻译了一遍。1. 什么是cgic?cgic是一个c语言库,用于基于CGI标准规范的www应用程序的创建。cgic执行以下任务:(1)解析数据,校正有缺陷和不一致的浏览器(2)透明的接受由GET和POST传递的表单数据(3)接受上传完毕...

2018-03-05 14:49:27 610

原创 linux线程资源回收方法

在写网络服务器程序时可能需要实现多线程接收多个客户端的数据,死循环等待client的connect,connect之后创建thread,这样其实有一个问题,服务器程序需要长期运行,长时间线程的创建,线程资源的回收就是一个问题。Linux系统中程序的线程资源是有限的,表现为对于一个程序其能同时运行的线程数是有限的。而默认的条件下,一个线程结束后,其对应的资源不会被释放,于是,如果在一个程序中

2017-10-11 09:36:58 771

转载 linux 获取eth0(指定网卡)网卡的IP地址(或MAC地址)

引言使用场景:我使用的Linux服务器上有多个网卡,有时候就需要在脚本中使用到指定网卡的IP地址或MAC地址,那么这个时候就有两种做法,一是预先读取网卡的IP地址或MAC地址,然后写入到脚本中;另外一种方法就是通过shell命令实时获取指定网卡上的当前IP地址或MAC地址。一般用法:使用ifconfig eth0读取网卡信息手动将IP地址或MAC地址拷贝

2017-09-13 20:13:06 17201

原创 Linux cut命令用法

cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的(1)其语法格式为:cut  [-bn] [file] 或 cut [-c] [file]  或  cut [-df] [file]使用说明cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。如

2017-09-06 11:03:36 399

原创 linux awk命令

简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。awk其名称得自于它的创始人 Alfr

2017-09-06 10:51:37 269

原创 checksum校验

原理        P/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,采用的都是将数据流视为16位整数流进行重复叠加计算。为了计算检验和,首先把检验和字段置为0。然后,对有效数据范围内中每个16位进行二进制反码求和,结果存在检验和字段中,如果数据长度为奇数则补一字节0。当收到数据后,同样对有效数据范围中每个16位数进行二进制反码的求和。由于接收方在计算过程中包含了发送

2017-08-16 19:55:45 2490

原创 TCP/IP checksum 简析

Checksum原理Checksum广泛应用于TCP/IP协议族,用于校验IP、TCP、UDP数据,其原理比较简单,其计算校验和的步骤如下: 1)在数据发送端,首先将检验和字段本身清零,将被检验的相邻字节成对配成16bit的整数,将所有的配对相加,同时将进位加到校验和的低字节上,我们将得到的校验和定义为a,最后再将校验和取反记为-a,将-a放到校验和字段发送到网络中。 2)如果在数

2017-08-16 19:01:27 1089 1

原创 iptables用法简介

iptables的基本语法格式iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]说明:表名、链名用于指定iptables命令所操作的表和链,命令选项用于指定管理iptables规则的方式(比如:插入、增加、删除、查看等;条件匹配用于指定对符合什么样条件的数据包进行处理;目标动作或跳转用于指定数据包的处理方式(比如允许通过、拒绝、丢弃、跳转(Ju

2017-08-02 20:30:04 337

原创 Linux下MD5移植和编程

1、安装MD5工具首先下载MD5工具源码:进入地址:http://martin.hinner.info/libmd/下载libmd库libmd-0.3.tar.bz2在ubuntu14.04安装libmd工具:#tar -jxvf libmd-0.3.tar.bz2#cd libmd-0.3#./configure#make#make install注意

2017-07-27 11:03:18 1127

原创 Makefile中的wildcard、notdir、patsubst 用法

在Makefile规则中,通配符会被自动展开。但在变量的定义和函数引用时,通配符将失效。这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的用法是:$(wildcard PATTERN...) 。在Makefile中,它被展开为已经存在的、使用空格分开的、匹配此模式的所有文件列表。如果不存在任何符合此模式的文件,函数会忽略模式字符并返回空。一般我们可以使用“$(wildc

2017-07-26 15:32:41 720

转载 linux下编译安装libcurl(附使用示例)

linux下编译安装libcurl(附使用示例)        说明:在编译任何开源代码前可以先看看README, INSTALL等文件,会提供如何编译的信息。在此教程中通过阅读README和GIT-INFO文件可以得到很多编译安装信息。在GIT-INFO中很明显地说了执行:./buildconf产生configure配置文件。所有不要在这里因为找不到configure文件而懵

2017-06-29 16:42:35 3384

转载 motion的移植和使用

说明:motion主页:http://www.lavrsen.dk/foswiki/bin/view/Motionmotion下载地址:http://sourceforge.net/projects/motion/files/motion%20-%203.2/系统: Ubuntu 12.10开发板:mini2440linux: 2.6.32交叉工具链:4.4

2017-06-20 13:59:53 1536

原创 Linux进程间通信之消息队列

一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。  每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。Linux用宏MSGMAX和MSGMNB来限制一条消息的最大长度和一个队列的最大长度。二、在Li

2017-06-19 18:49:23 299

原创 Linux进程间通信之共享内存

一、什么是共享内存顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进程向共享内存写入数据,所做的改动将立即影响到

2017-06-19 18:47:08 232

转载 CGIC编程

本系列的目的是演示如何使用C语言的CGI库“CGIC”完成Web开发的各种要求。      基础知识    * 1: 使用CGIC的基本思路    * 2: 获取Get请求字符串    * 3: 反转义    * 4: 获取请求中的参数值     进阶训练    * 用CGIC实现文件上传CGIC简明教程1:使用CGIC的基本思路C语言编程是

2017-06-18 14:55:24 1374

原创 CGI编程

很多人都没有听说过CGI,因为现在它的很多功能都被JavaScript代替了,但是在某些地方它的使用性还是不错的,有想要了解的朋友建议参考https://wenku.baidu.com/view/11eb19f90242a8956bece4c2.html,这篇介绍得很详细。

2017-06-17 22:43:56 289

原创 HTTP协议(上):简介

1. Web服务器WWW是 World Wide Web (环球信息网)的缩写,也可以简称为 Web,中文名字为“万维网”。Web服务器(也称WWW服务器)一般指网站服务器,主要功能是提供网上信息浏览服务。目前最主流的三个Web服务器是Apache、Nginx、IIS。一些使用C/C++开发的开源的http服务器列表在这里:http://www.oschina.net/pr

2017-06-16 11:10:48 575

原创 HTTP协议(中):请求报文和响应报文

1. 请求报文格式1.1 服务器测试代码服务器测试代码:#include #include #include #include #include #include #include int main(){ // 创建通信端点:套接字 int sockfd = socket(

2017-06-16 11:10:18 2092

x264源码分析

2016-12-14

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

TA关注的人

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