Linux
文章平均质量分 65
_Ataraxia
这个作者很懒,什么都没留下…
展开
-
使用字符驱动ioctl与linux内核交换数据
当应用程序需要调用内核的方法进行数据交互,可以使用 ioctl 进行调用。原创 2022-10-13 15:39:27 · 382 阅读 · 0 评论 -
v4l2摄像头ioctl功能详解
VIDIOC_S_STD设置视频的制式 PAL/NTSC VIDIOC_S_CROP设置视频图像的采集窗口的大小, v4l2_crop.type, v4l2_crop.cstruct v4l2_crop {__u32 type; struct v4l2_rect c;};struct v4l2_rect { __s32 left; __s32 top; __s32 width; __s32 hei..原创 2021-06-10 13:44:03 · 1477 阅读 · 1 评论 -
Linux驱动注册轮询设备
一般情况下很少需要使用注册轮询设备的,因为轮询设备需要高频率调用获取外设的状态,增加CPU的负担.但是碰到过2次需要使用注册轮询的情况:1 外设IO口非常紧张的情况下,没有空出多余的IO口作为中断脚.2 所使用的IO口没有带有中断功能.#include <linux/input-polldev.h>#include <linux/platform_device.h>#include <linux/rtc.h>struct pollgpio_key_dat原创 2020-07-24 10:25:45 · 518 阅读 · 0 评论 -
Linux设备注册中断服务request_irq
中断处理程序是管理硬件的驱动程序的组成部分,每一设备都有相关的驱动程序,驱动程序可以通过request_irq()函数注册一个中断处理程序,并且激活给定的中断线,来处理指定的中断. 同时需要芯片对应的IO口支持中断两个注意的地方第一中断是随时都可以产生,意味着中断的处理程序随时都可以执行,所以得保证中断处理程序能够快速执行,才可能尽快的恢复中断代码执行,所以中断代码尽量简短。第二每一个中断都有自己唯一的数字标记,这样在共享中断中CPU才能找到对应的中断信息#include <linu原创 2020-07-23 19:14:31 · 724 阅读 · 0 评论 -
内核定时器init_timer与mod_timer的使用
内核定时器为了可以在某个时间点上调用函数内核定时器的调度函数运行过一次后就不会再被运行了,但是在del_timer销毁定时之前,可以使用add_timer(注册)或者mod_timer(修改)重新调用一般重新调用的场景有1 通过在被调度的函数中重新调度自己来周期运行。2 通过某个中断服务函数中重新唤起调用这样就可以实现while(1)循环的功能,可以用于轮询设备等工作需求。这里被调度的函数是异步执行的。#include <linux/init.h>#include <li原创 2020-07-20 20:10:51 · 3818 阅读 · 1 评论 -
自定义队列queue_work和内核共享列队schedule_work
#include <linux/delay.h> #include <linux/rtc.h>static struct delayed_work mdwq; static struct workqueue_struct *mwq; static void delay_work_func(struct work_struct *work) { int i; struct timex txc; struct rtc_time tm;原创 2020-07-20 17:01:42 · 2782 阅读 · 0 评论 -
各种编码UNICODE、UTF-8、ANSI、ASCII、GB2312、GBK详解
操作系统 计算机网络 算法 架构Ascii编码 开始计算机只在美国用。八位的字节一共可以组合出256(0xFF)种不同的状态; 于是最开始只有一个标准 美国信息互换标准代码(即Ascii编码 American Standard Code for Information Interchange);转载 2017-08-30 11:49:04 · 947 阅读 · 0 评论 -
freetype2的FT_Load_Char使用实例分析
本文使用版本为freetype-2.4.10编译开源库及编译官方样例$ ./configure CC=gcc --prefix=$PWD/_INSTALL --without-zlib$ make & make install 开源库编译过程参考:http://blog.csdn.net/dreamintheworld/article/details/55224529官方DEMO用例(freet原创 2017-02-26 15:43:15 · 6385 阅读 · 0 评论 -
ortp库移植到arm平台进行文件传输测试
测试ortp的介绍,官方一句话介绍了 oRTP is a library implemeting Real-time Transport Protocol (RFC 3550), licensed under LGPLv2.oRTP作为 linphone 的 RTP 库,为基于 RTP 协议传输语音和视频数据提供保障。 流媒体,主要还是依赖于UDP作为传输层协议, 开销小的原则;原创 2017-08-25 11:46:26 · 2095 阅读 · 0 评论 -
交叉编译freetype2
FreeType 2被设计为一种占用空间小的、高效的、高度可定制的、并且可以产生可移植的高品质输出(符号图像)。可以被用在诸如图像库、展出服务器、字体转换工具、图像文字产生工具等多种其它产品上。(百度百科) 编译器:arm-none-linux-gnueabi-g++使用系统默认编译器gcc直接编译$ ./configure --prefix=$PWD/_INSTALL --without-zli原创 2017-02-15 22:28:21 · 3912 阅读 · 0 评论 -
C++实现单例模式的简单例程
在Java中使用单例模式是常用的事情 这里使用C++实现一次单例模式,虽然实际场景中很少使用这次例程有四个文件 Singleton.h Singleton.cpp Demo.cpp Client.cpp Singleton.h #ifndef _SINGLETON_H_#define _SINGLETON_H_#include <iostream>using na原创 2017-12-04 17:18:03 · 615 阅读 · 0 评论 -
char和wchar_t的关系以及wprintf的应用
#include <cstdio>#include <cstdlib>#include <clocale>#include <cwchar>#include <cstring>// g++ demo.cpp (UTF-8编码)int main(int argc, char * argv[]){ int i = 0; wchar_t wstr[] = L"中文"; /原创 2017-09-01 18:30:51 · 1153 阅读 · 0 评论 -
goahead-3.3.6源码分析
主要分为访问网页文件以及接口的调用逻辑 首先网页访问流程:网页访问事件注册 程序中需要返回html网页文件已经相关的图片、css等资源上面的流程是直接使用websDefineHandler来把响应网页访问的事务添加到事务表,具体的网页文件返回的逻辑则在fileHandler函数中处理// fileHandler函数判断和处理需要返回到浏览器的html文件数据static bool fileHan原创 2017-09-21 14:01:54 · 1377 阅读 · 0 评论 -
Linux下goahead3.3.6的移植以及文件上传下载示例
Linux linux 嵌入式开源库下载下载地址 https://embedthis.com/goahead/download.html在下载地址中可以看到说明 Source Code Repository To access the GoAhead source code at GitHub, see: GitHub GoAhead Repository. To download sou原创 2017-07-19 22:36:05 · 10655 阅读 · 1 评论 -
一个超级简单又实用的AES加密解密字符串示例
Advanced Encryption Standard 高级加密标准 在密码学中AES又称Rijndael加密法 是美国联邦政府采用的一种区块加密标准。加密是一比一生成密文 如果用于传入 加密后不会增加传输的带宽压力 对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。 对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。原创 2017-12-20 16:27:18 · 5590 阅读 · 0 评论 -
Makefile文件之我的常用模板编译中小型项目
我最常用的Makefile文件模板CC := arm-none-linux-gnueabi-g++INC_DIR = -I./include -I./include/freetype2 -I./include/libpng -DTEST_DATA=1SRC_DIR = ./srcOBJ_DIR = ./objectBIN_DIR = ./SRC = $(wildcard原创 2016-09-22 22:23:00 · 681 阅读 · 0 评论 -
socket与TCP/UDP的关系初步认识
TCP/UDP基本概念首先要知道的名词是TCP/IP协议; TCP/IP协议是从OSI参考模型中简化而来,简化为四层协议; 1 应用层 2 传输层 3 网络层 4 网络接口层 那么TCP/IP作为协议族,讲讲他们各个层次的协议,因为TCP和UDP就是其中的四层中的传输层的2个通信协议。 TCP 为应用程序提供可靠的通信连接。适合一次传输大批数据; UDP 为应用程序提供的是无连接通信原创 2016-09-24 13:44:13 · 1558 阅读 · 0 评论 -
C/C++实现RGB565转BMP图像
分为两个文件 rgb2bmp.h 和 rgb2bmp.c需要注意的BMP格式文件的头部的14个字节和40个字节的结构体rgb2bmp.h//rgb2bmp.h文件#include <stdio.h>typedef unsigned char BYTE;typedef unsigned short WORD;typedef int DWORD;// BMP图像各部分说明...转载 2018-11-23 14:28:17 · 2586 阅读 · 0 评论 -
文件操作open与fopen和read与fread的区别
系统调用的文件操作 常用函数: 1 open() 2 read() 3 write() 4 lseek() 5 close() 这5个函数的特点是不带缓存,直接对文件(包括设备)进行读写操作; 这些函数不是ANSI C的组成部分,是POSIX的组成部分; 都是基于文件描述符,基于基本的IO控制,不带缓存;下面讲到基于缓存的文件操作; 比如:printf(), scanf()原创 2016-09-07 22:59:02 · 4399 阅读 · 0 评论 -
Linux下使用Socket实现http文件下载
Linux linux// 转载自 http://blog.csdn.net/xiongyangg/article/details/50767482// g++ download_demo.cpp -lpthread#include <stdio.h>#include <string.h>#include <sys/socket.h>#include <arpa/inet.h>#incl原创 2017-08-17 17:28:01 · 4075 阅读 · 0 评论 -
extern C配合__cplusplus实现CPP文件和C文件的函数互相调用
C语言 c语言 先看一下区别,首先看一下编译一个最简单的函数 demo.cvoid testFunction(){ return;}demo.cpp extern "C"{ void testFunction(){ return; }}demo.cppvoid testFunction(){ return;}分别编译 gcc -S demo.原创 2017-07-25 15:48:54 · 1413 阅读 · 0 评论 -
使用__VA_ARGS__和va_list 控制打印日志
输出日志的控制// main.c #include<stdio.h>#define printf_debug(...) printf( __VA_ARGS__)//#define printf_debug(format,...) printf(__FILE__"(%s:%d)"format"", __FUNCTION__, __LINE__, ##__VA_ARGS__) int main(原创 2017-05-18 15:26:42 · 4053 阅读 · 0 评论 -
交叉编译libpng以及zlib开源库
关于Linux开源库的编译过程,特别是在嵌入式系统中使用; 上图完美诠释了我本次编译的环境和运行目标; 下载zlib-1.2.8.tar.gz和libpng-1.6.17.tar.gz。admin@ubuntu:~/src$ tar -zxvf libpng-1.6.17.tar.gzadmin@ubuntu:~/src/libpng-1.6.17$ ./configurechec原创 2017-02-09 10:12:35 · 4548 阅读 · 0 评论 -
libpng的png_read_info和png_read_image使用实例分析
常用接口libpng库解析图片主要用的函数大致有: png_sig_cmp(sig, 0, 8); png_create_read_struct(png_get_libpng_ver(NULL), NULL, NULL, NULL); png_create_info_struct(png_ptr); setjmp(png_jmpbuf(png_ptr)); png_init_io(png_原创 2017-02-19 19:05:50 · 6485 阅读 · 0 评论 -
C语言sscanf函数的总结
在处理字符串的程序当中,经常会分析字符串,从一大长串的字符串截取我们需要的数据,这如果通过自己手写函数来分析,虽然可以,但当你知道sscanf的功能,那就自己写函数分析就显得多此一举。 这些函数的使用都很简单,总结一下,等下次使用一目了然。俗话说:好记性不如烂笔头,记录下来就是效率。 以下源代码是本人测试的源文件,附带讲解注释。/*********************************转载 2016-12-17 17:47:25 · 571 阅读 · 0 评论 -
pthread_mutex_init等多线程函数的使用总结
线程按照其调度者可以分为用户级线程和核心级线程两种 用户级线程主要解决的是上下文切换的问题,它的调度算法和调度过程全部由用户自行选择决定,在运行时不需要特定的内核支持; 我们常用基本就是用户级线程,所以就只总结一下POSIX提供的用户级线程接口; 基本线程操作相关的函数: 1线程的建立结束 2线程的互斥和同步 3使用信号量控制线程 4线程的基本属性配置 基本线程操作:原创 2016-09-19 22:30:12 · 17763 阅读 · 4 评论 -
timer_create()建立定时器剖析
HELLO测试缓存问题原创 2016-08-09 10:15:22 · 28392 阅读 · 2 评论 -
揭开Socket编程的面纱
什么是TCP/IP、UDP?TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议;是一个工业标准的协议集,它是为广域网(WANs)设计的。UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是属于TCP/IP协议族中的一种。Socket在哪里呢?Socket在传转载 2016-08-02 18:11:44 · 873 阅读 · 0 评论 -
C语言 fread()与fwrite()函数说明与示例
读写文件数据块函数原型size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );ptr:指向保存数据的指针;size:每个数据类转载 2016-07-29 11:56:34 · 1704 阅读 · 0 评论 -
Linux之动态库的创建和使用
一.动态库的基本概念1.动态链接库是程序运行时加载的库,当动态链接库正确安装后,所有的程序都可以使用动态库来运行程序。 动态链接库是目标文件的集合,目标文件在动态链接库中的组织方式是按照特殊方式形成的。 库中函数和变量的地址是相对地址,不是绝对地址,其真实地址在调用动态库的程序加载时形成。2.动态链接库的名称有别名(soname), 真名(realname)和链接名(linker name)。转载 2017-06-06 10:50:58 · 536 阅读 · 0 评论 -
Linux下编译pjproject-2.6并运行例程simple_pjsua
近期项目中使用了sip协议进行音视频通话,百度的介绍是: PJSIP同时支持语音、视频、状态呈现和即时通讯。PJSIP具有非常完善的文档,对开发者非常友好。 官方例程还是非常不错的,但是网上讲到使用官方例程的资料相对来讲还是比较少,并且对新手不太友好; 因为我是从头开始使用,就记录一下在Linux下从头开始编译到使用官方例程的过程;官方下载http://www.pjsip.org/downlo原创 2017-05-14 19:52:12 · 5824 阅读 · 0 评论 -
进程间通信msgsnd和msgrcv应用笔记
示例程序接收端//MsgrcvDemo.c 接收端#include <stdlib.h>#include <stdio.h>#include <string.h>#include <errno.h>#include <unistd.h>#include <sys/msg.h> #define MAX_TEXT 512struct MSG_TEST { long int mFl原创 2017-08-11 11:56:40 · 1129 阅读 · 0 评论 -
编译libeXosip以及向代理服务器注册
首先编译libosip2-4.1.0,产生库 编译:./configure –prefix=$PWD/_install & make & make install 顺利产生以下文件 libosip2-4.1.0/_install/lib/ |-libosip2.a |-libosip2.so |-libosipparser2.a |-libosipparser2.so第二步,编译原创 2017-06-12 09:29:07 · 2413 阅读 · 0 评论 -
IP包头结构定义以及结构体iphdr分析
Linux, linux 来看一下IP包, IP头结构的定义 包格式解析如图 数据对应 对应的结构体在 /usr/src/linux-2.6.19/include/linux/ip.h(或 /usr/src/linux-headers-3.5.0-18/include/linux/ip.h)struct iphdr {#if defined(__LITTLE_ENDIAN_BITFIE原创 2017-08-14 11:57:43 · 5563 阅读 · 0 评论 -
移植libeXosip2和libosip2到arm开发板
Linux linux本篇主要是为了补充之前写的《编译libeXosip以及向代理服务器注册》 http://blog.csdn.net/dreamintheworld/article/details/72939454下载解压 libosip2-4.1.0.tar.gz libeXosip2-4.1.0.tar.gz编译 libosip2-4.1.0(使用arm-none-linux-gnue原创 2017-07-26 16:26:56 · 3472 阅读 · 0 评论 -
iptables-1.6.0的ARM移植
配置脚本./configure --host=arm-none-linux-gnueabi \--enable-static \--disable-shared \--prefix=$PWD/_install \--disable-ipv6 \--disable-largefile \--disable-nftables编译$ make -j4$ make install$ arm原创 2017-08-17 16:56:51 · 1898 阅读 · 0 评论 -
wifi连接wpa_supplicant和wpa_cli的使用实例
一启动扫描wifi热点#include #include #include "wpa_cli.h"int main(){ printf("%s(%s:%d)......\n", __FILE__, __FUNCTION__, __LINE__); int ret = wpa_cli_start(); if(ret){ printf("wpa_原创 2017-07-25 14:22:42 · 4196 阅读 · 4 评论 -
openssl编译arm移植及RSA_generate_key_ex的使用实例
使用RSA密钥产生函数RSA_generate_key_ex生成了一对密钥#include #include "openssl/rsa.h"int main(){ RSA *rsa = RSA_new(); int ret = 0; BIGNUM* bne = BN_new(); ret=BN_set_word(bne,RSA_F4); ret =原创 2017-06-07 21:25:43 · 9062 阅读 · 2 评论 -
Linux下编译partysip-2.2.3服务端程序及例程分析
与上一篇《编译libeXosip以及向代理服务器注册》编译基于osip客户端程序有些相同; 编译partysip服务器端程序也是需要首先编译所需的依赖库libosip2, libosipparser2(来自于libosip2);依然保持版本一致,使用了: libosip2-2.2.2.tar.gz, partysip-2.2.3.tar.gz分别下载 libosip和partysip; htt原创 2017-06-13 16:38:56 · 1745 阅读 · 0 评论 -
pthread_create()的基本使用
菜鸟学习Linux多线程使用原创 2016-07-28 16:06:04 · 5325 阅读 · 0 评论