linux编程
一叶知秋dong
好记性不如烂笔头,记录学习和工作中的一些东东。
展开
-
YUV420 存储格式
YUV格式有两大类:planar和packed。对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。对于packed的YUV格式,每个像素点的Y,U,V是连续交*存储的。一般的录像程序是先从摄像头得到yuv420 planar的数据,然后编码成h264格式 帧,最后存储成3gp/mpeg等格式的视频文件。以720×488大转载 2012-07-16 16:29:33 · 2361 阅读 · 0 评论 -
Linux 的各种 signal
信号本质信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。信号机制经过POSIX实时扩展后,功能更加强大,除了基本通知功能外,还可以转载 2017-10-16 16:51:05 · 19320 阅读 · 0 评论 -
Linux Signal信号详解
信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。 一、信号的基本概念 本节先介绍信号的一些基本概念,然后给出一转载 2017-10-16 16:54:22 · 25445 阅读 · 0 评论 -
Linux中CPU亲和性(affinity)
0、准备知识超线程技术(Hyper-Threading):就是利用特殊的硬件指令,把两个逻辑内核(CPU core)模拟成两个物理芯片, 让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的运行效率。 我们常听到的双核四线程/四核八线程指的就是支持超线程技术的CPU.物理CPU:机器上安装的实际CPU,转载 2017-10-16 20:46:23 · 2218 阅读 · 0 评论 -
Linux 物理内存使用的一个问题
操作系统:海思Linux 3.10硬件平台:Hi3516A用途:业务流程里面需要把编码器输出的数据拷贝到一个缓存里,考虑到数据量比较大,希望使用硬件DMA加速。用法:申请一块很大的物理内存,划分成若干个小内存片循环使用。问题:发现发送线程会卡死。(编码器callback线程和发送线程是两个线程)解决方法:不要申请一块大的物理内存,再划分成小内存用,申请若干块小内存。原因分析原创 2017-11-23 17:01:15 · 461 阅读 · 0 评论 -
Linux下C++的通用Makefile与解析
本文给出万能Makefile的具体实现,以及对其中的关键点进行解析。所谓C++万能Makefile,即可编译链接所有的C++程序,而只需作很少的修改。号称万能Makefile,一统江湖。我对原版的Makefile做了些修改。首先揭开它的庐山真面目: ##################################################### Generic makefile - 万能转载 2017-09-30 16:25:54 · 1627 阅读 · 0 评论 -
version magic '3.10.0_hifone SMP mod_unload ARMv7 p2v8 ' should be '3.10.0_s40 SMP mod_unload ARMv7
出现以上错误是由于加载的驱动所使用的内核版本和系统运行的版本不一致。这是内核的一个版本校验机制,具体原理在此不详述。提供一个将驱动的版本强制改成和运行时内核一致的方法: 1、include/config/kernel.release文件中为内核版本号,将其改为所需版本。 2、include/generated/utsrelease.h文件中 #define UTS_RELEASE原创 2018-02-01 14:47:46 · 5597 阅读 · 0 评论 -
应用层接收 uevent 消息
Uevent是一种在内核空间和用户空间之间通信的机制,主要用于热插拔事件(hotplug)。常用的电量通知、usb拔插通知、耳机拔插通知等都可以使用uevent。它的好处是使用简单方便,稳定性也很好。下面贴出示例代码:***************************************************************************************原创 2018-01-09 14:40:08 · 3607 阅读 · 0 评论 -
HI3516A支持串口2和串口3
在海思3516A平台,默认是开启了串口0和串口1的驱动,在/dev下面可以看见他们的节点: "/dev/ttyAMA0"和"/dev/ttyAMA1",但是并没有串口2和串口3的节点,打开内核的menuconfig界面,也找不到打开串口2和串口3的配置,这就意味这3516对串口2和串口3并没有驱动支持,需要自己动手了。3516A的串口驱动的实现在 "osdrv\opensource\kerne原创 2018-01-26 10:51:56 · 2823 阅读 · 0 评论 -
异或校验算法的应用
异或交验算法 通过本段程序将通过异或校验算法,对给定的字符串进行获取交验值,并根据一般的数据打包方法把数据加上包头、包尾、交验值和回车换行符,成为数据发送包。 /*-------------------------------------------------------------------------------------- * 程序功能:将字符串按转载 2018-01-26 10:52:36 · 5402 阅读 · 0 评论 -
linux 驱动发送uevent消息
Uevent是Kobject的一部分,用于在Kobject状态发生改变时,例如增加、移除等,通知用户空间程序。用户空间程序收到这样的事件后,去做相应的处理。 该机制通常是用来支持热拔插设备的,例如U盘插入后,USB相关的驱动软件会动态创建用于表示该U盘的device结构(相应的也包括其中的kobject),并告知用户空间程序,为该U盘动态的创建/dev/目录下的设原创 2018-01-10 14:16:57 · 1693 阅读 · 0 评论 -
USB WIFI驱动分析
1. USB设备枚举过程 设备在插入USB 接口到设备成功找到它自己的驱动这一过程为:当把USB 设备插到USB 接口上后,USB 中央控制器会检测到有设备插入USB 接口了,Linux 内核会给设备分配一个数据结构来代表这个设备,Linux 会分配一个struct usb_device 数据结构来代表该设备,该数据结构记录设备的一些属性及数据。并把该数据结构挂载到一个全局的USB 设备链...转载 2018-05-03 17:44:25 · 3470 阅读 · 0 评论 -
select函数详细用法解析
1.表头文件#include#include#include2.函数原型int select(int n,fd_set * readfds,fd_set * writefds,fd_set * exceptfds,struct timeval * timeout);3.函数说明select()用来等待文件描述词状态的改变。参数n代表最大的文件描述词加1,参数readfds、writefds和exc...转载 2018-05-04 10:22:56 · 2179 阅读 · 0 评论 -
c语言简单实现telnet客户端
#include #define DO 0xfd#define WONT 0xfc#define WILL 0xfb#define DONT 0xfe#define CMD 0xff#define CMD_ECHO 1#define CMD_WINDOW_SIZE 31#define IAC 255#define SB 250#...转载 2018-10-15 19:42:58 · 3389 阅读 · 0 评论 -
自己实现telnet的server和client程序
转自:http://blog.csdn.net/gujintong1110/article/details/44278535#include <stdio.h> #include <unistd.h>#include <stdlib.h>#include <string.h>#include <sys/types.h> ...转载 2018-10-15 19:54:32 · 5343 阅读 · 1 评论 -
ARM平台下elf文件的分析与解读
第一、前言从今天开始我们正式开始Android的逆向之旅,关于逆向的相关知识,想必大家都不陌生了,逆向领域是一个充满挑战和神秘的领域。作为一名Android开发者,每个人都想去探索这个领域,因为一旦你破解了别人的内容,成就感肯定爆棚,不过相反的是,我们不仅要研究破解之道,也要研究加密之道,因为加密和破解是相生相克的。但是我们在破解的过程中可能最头疼的是native层,也就是so文件的破解。所以...转载 2019-01-26 11:25:11 · 1315 阅读 · 0 评论 -
解析内存对齐存取粒度与效率
程序员通常倾向于认为内存就像一个字节数组.在C及其衍生语言中,char * 用来指代"一块内存",甚至在JAVA中也有byte[]类型来指代物理内存.Figure 1. 程序员是如何看内存的然而,你的处理器并不是按字节块来存取内存的.它一般会以双字节,四字节,8字节,16字节甚至32字节为单位来存取内存.我们将上述这些存取单位称为内存存取粒度.Figure 2. 处理器是如何看内存的...转载 2019-05-23 18:45:13 · 2049 阅读 · 1 评论 -
makefile 那些事儿
概述——什么是makefile?makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。ma转载 2017-09-20 15:40:29 · 364 阅读 · 0 评论 -
linux 编译 依赖静态库的静态库问题
前言----------------------------------最近工作中遇到一个linux编译问题,其实是小问题,但经验不足,弄了2天,特做记录。背景---------------------------------这次是做一个新的项目,项目软件编译架构如下图:|-----libm1.a |-----libn1.amain原创 2017-09-29 11:45:11 · 7764 阅读 · 0 评论 -
camera初始化失败的一个奇怪问题
最近的工作中遇到一个camera的奇怪的问题,特做记录。平台:权智 A10 ;系统:android 4.0.3;工作内容:视频通话功能,使用ioctl命令操作摄像头的驱动节点,捕获图像,交给硬件编码器做264编码,然后rtp发送出去。代码逻辑:初始化接口里init camera,申请4个buf,然后创建一个camer线程和一个enc线程。 在camera线程里,如原创 2012-12-14 10:18:51 · 6855 阅读 · 4 评论 -
camera 驱动调试常见问题总结
在嵌入式系统,如手机等平台上使用的Camera sensor通常是由类似I2C这样的总线进行寄存器控制,由CPU端的Controller提供所需的驱动时序,通常支持YUV和RGB等数据格式。有的Sensor需要由CPU进行图像处理工作,有的Sensor自己会集成图像处理芯片,完成一些基础的图像处理工作,还有些高像素的Sensor甚至自己完成JPEG的编码工作。因为硬件的多样性,我所遇到的问题可能和转载 2012-12-19 15:55:48 · 1719 阅读 · 0 评论 -
lcd驱动调试常见问题总结
这里记录的是在TFT类型的LCD驱动的调试中我所遇到过的一些问题,因为具体硬件平台和环境不同,有些问题,现象和原因可能不一定与你的实际情况相同,仅供参考。 无法正确完成初始化症状 往LCD的串行总线发送初始化数据后,LCD模块没有任何反应 分析 通常在嵌入式领域中使用的中小型LCD模组都会需要在上电后进转载 2012-12-19 15:58:05 · 1922 阅读 · 0 评论 -
key驱动调试问题总结
这里的Keypad不是PC上用的编码式的键盘,而是在嵌入式设备中常见的非编码式的键盘。Keypad的常见连接方式有:矩阵扫描式的,直接GPIO检测式的。检测方式上,可以通过GPIO扫描自己实现检测,也有的CPU集成了扫描电路逻辑,可以进行自动检测。 某些键位的键值取值出现固定的错误症状 某些键位的键值多数情况下读出来的值为一个恒定的错误值,比如理论上应转载 2012-12-19 16:01:40 · 775 阅读 · 0 评论 -
触摸屏驱动调试常见问题总结
电阻式触摸屏的Controller从原理上,简单的说就是一个可切换通道的AD转换器,常见的有类似TSC2046这一系列的独立芯片,也有Buildin在MPU里的集成模块。这里记录的主要是这类触摸屏驱动的调试中我所遇到过的一些问题,因为具体硬件平台和环境不同,有些问题,现象和原因可能不一定与你的实际情况相同,仅供参考。数据线上无法得到正确的数据症状 读取的测转载 2012-12-19 15:59:14 · 2302 阅读 · 0 评论 -
ARM寄存器介绍
ARM处理器包含多少寄存器?每种模式下又有那些寄存器?这些寄存器的作用又是什么?带着这些问题我们来学习ARM寄存器吧!相信看完这篇文章后你会有所收获。ARM处理器共有37个寄存器。它包含31个通用寄存器和6个状态寄存器。==================================================================================转载 2013-03-15 17:15:44 · 2444 阅读 · 0 评论 -
USB CDC 设备
USB为了实现不同的应用, 将具有特定属性与服务的一类设备划分为一个Class。如果提供相似格式的数据流或者相似的与主机交换方式,两个设备则被统一在一个Class 中。 如 USB 标准就有 Audio Class 、 Communications Device Class、 HIDClass、Video Class 等用于在 USB 接口上实现不同的设备接口。在 USB 标准协原创 2013-05-28 10:29:35 · 13402 阅读 · 2 评论 -
Android Binder 驱动分析
摘要Binder是Android系统进程间通信(IPC)方式之一。Linux已经拥有管道,system V IPC,socket等IPC手段,却还要倚赖Binder来实现进程间通信,说明Binder具有无可比拟的优势。深入了解Binder并将之与传统IPC做对比有助于我们深入领会进程间通信的实现和性能优化。本文将对Binder的设计细节做一个全面的阐述,首先通过介绍Binder通信模型和Bin转载 2013-06-03 18:42:58 · 2216 阅读 · 1 评论 -
SVN linux 命令
1、将文件checkout到本地目录svn checkout path(path是服务器上的目录)例如:svn checkout svn://192.168.1.1/pro/domain简写:svn co2、往版本库中添加新的文件svn add file例如:svn add test.php(添加test.php)svn add *.php(添加当前目录下所有的转载 2014-01-22 08:42:16 · 844 阅读 · 0 评论 -
libxml2 中常用函数总结 .
1. 创建和编辑XML文档[plain] view plaincopyprint?1.生成文档树 xmlDocPtr xmlNewDoc(xmlChar *version); 2.生成节点 xmlNodePtr xmlNewNode(xmlNsPtr ns, name);//生成新节点 xmlNodePtr xmlNewChild(par转载 2014-03-24 20:17:34 · 1427 阅读 · 0 评论 -
libxml2 解析文档的例子
一、libxml2 解析文档的例子(mingw)#include #include //在mingw环境下,xmlfree 等可能出现问题,见http://blog.csdn.net/king_on/article/details/7543577 #define IN_LIBXML #include #include /** 判断节点转载 2014-03-24 20:19:41 · 1469 阅读 · 0 评论 -
c语言xml解析器libxm2
写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML库,而且它同时支持多种编程语言;2)LIBXML2库的Tutorial写得不太好,尤其是编码转换的部分,不适用于中文编码的转换;3)网上的大多数关于Libxml2的介绍仅仅是翻译了自带的资料,没有详细介绍如何在windows平台下进行编程,更很少提到如转载 2014-03-24 19:36:14 · 4935 阅读 · 0 评论 -
Linux 下摄像头驱动支持情况
http://eatdrinkmanwoman.spaces.live.com/blog/cns!97719476F5BAEDA4!1336.entryhttp://weijb0606.blog.163.com/blog/static/131286274201063152423963/本文所说的摄像头(Webcam),特指USB摄像头。 在Windows下,摄像头驱动由厂商开发转载 2014-12-15 09:34:14 · 1229 阅读 · 0 评论 -
linux makefile 速查
本文只介绍makefile中的命令和符号的作用。***********************************************************************: 依赖,冒号前面是目标,后面是依赖的文件***********************************************************************\原创 2017-09-20 16:15:38 · 258 阅读 · 0 评论 -
makefile 使用总结(精)
1. Makefile 简介Makefile 是和 make 命令一起配合使用的.很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂.Makefile的组织流程的能力如此之强, 不仅可以用来编译项目, 还可以用来组织我们平时的一些日常操作. 这个需要大家发挥自己的想象力. 本篇博客是基于 {转载 2017-09-20 16:20:23 · 704 阅读 · 0 评论 -
linux ar命令用法
当我们的程序中有经常使用的模块,而且这种模块在其他程序中也会用到,这时按照软件重用的思想,我们应该将它们生成库,使得以后编程可以减少开发代码量。这里介绍命令ar,用来对库操作。1.ar基本用法 ar命令可以用来创建、修改库,也可以从库中提出单个模块。库是一单独的文件,里面包含了按照特定的结构组织起来的其它的一些文件(称做此库文件的member)。原始文件的内容、模式、时间戳、属主、组等属转载 2017-09-29 11:43:35 · 1456 阅读 · 0 评论 -
Docker 技术入门
Docker是什么?我们在理解docker之前,首先我们得先区分清楚两个概念,容器和虚拟机。可能很多读者朋友都用过虚拟机,而对容器这个概念比较的陌生。我们用的传统虚拟机如VMware,VisualBox之类的需要模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用。每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操...转载 2019-08-22 16:29:16 · 281 阅读 · 0 评论