- 博客(28)
- 资源 (19)
- 收藏
- 关注
原创 Linux系统编程----僵尸进程
什么是僵尸进程?僵尸进程, 指子进程退出后, 父进程还没有回收子进程的资源,这个子进程就处在于僵尸状态。来看看如何产生?#include #include int main(void){ pid_t pid ; //zombie 子进程先退出,父进程没有回收子进程资源 //这就是僵尸进程 //僵尸进程不能被直接杀死,只能通过杀死父进程来终止僵尸进程 pid = fork(
2016-09-30 09:31:59 1250
原创 Linux系统编程----孤儿进程
什么是孤儿进程? 孤儿进程, 指在父进程退出后,而子进程还在运行,这个子进程就成了孤儿进程,这时由init进程(pid=1)接管来看看例子:#include #include int main(void){ pid_t pid ; //父进程先结束,子进程还在运行 //如果父进程结束,则子进程的父亲为init //孤儿进程由进程他的祖先收留 pid = fork()
2016-09-30 09:30:25 994
原创 Linux系统编程---守护进程
守护进程是什么?就是在后台运行的进程。那么如何创建守护进程呢? 1. 创建孤儿进程 2. setsid() 创建进程会话 3. 重定向标准输入, 标准输出 4. chdir, 改当当前进程的工作目录接下来看一个例子:#include #include #include int main(void){ //进程成为守护进程的步骤 //代号:Ss //守护进程也称为精灵进程
2016-09-30 09:29:06 1203
原创 Linux系统编程-----进程fork()
在开始之前,我们先来了解一些基本的概念:1. 程序, 没有在运行的可执行文件 进程, 运行中的程序2. 进程调度的方法: 按时间片轮转 先来先服务 短时间优先 按优先级别3. 进程的状态: 就绪 ->> 运行 ->> 等待 运行 ->> 就绪 //时间片完了 等待 ->> 就绪 //等待的条件完成了查看当前系统进程的状态 ps auxf
2016-09-30 09:21:06 1140
原创 Linux系统编程---实现目录或者文件拷贝
关于拷贝文件,前面写过一个例子:点击打开链接 ,可以看看,实现cp命令。这次我们实现一个目录和文件的拷贝,综合点。#include #include #include #include #include #include void copy_file(const char *src , const char *dest);void copy_directory(const cha
2016-09-30 09:07:58 3929
原创 Linux设备驱动编程---miscdevice杂类设备的使用方法
miscdev简称杂类设备杂类设备就是对字符设备驱动做一个封装,方便简单使用杂类设备封装字符设备需要包含的头文件:#include (1)杂类设备的数据结构:struct miscdevice { int minor; //次设备号 const char *name; //设备名称 const struct file_operations *fops; //文件操作结构体 st
2016-09-29 11:01:21 1679
原创 linu下C语言之BMP图片操作编程(下)
前面提高了一个将BMP左转的程序,右转其实也是类似的操作,就不写了,这节,我们来实现,将一张BMP图进行灰度处理,代码贴上:#include #include #include #define RGB(r,g,b) ((r+g+b)/3)typedef unsigned char U8 ; typedef unsigned short U16 ; typedef
2016-09-28 16:20:15 1410
原创 linu下C语言之BMP图片操作编程(中)
http://blog.csdn.net/morixinguan/article/details/50719472关于BMP图的介绍之前已经说过了,最近要用到,又要重新开始学习。现在实现一个让bmp左转的效果:#include #include #include #define RGB(r,g,b) ((r<<16)|(g<<8)|b)typedef unsigned c
2016-09-28 11:26:44 1324
原创 NV12和NV21转rgb
void NV21_T_RGB(unsigned int width , unsigned int height , unsigned char *yuyv , unsigned char *rgb){const int nv_start = width * height ; u32 i, j, index = 0, rgb_index = 0; u8 y, u, v; ...
2016-09-26 16:55:44 11637 10
转载 与MP3相关的技术总结
MP3文件格式解析Peter Lee 2008-06-05 目录一、概述... 二、整个MP3文件结构... 三、MP3帧格式... 1. 帧头格式... 2. MAIN_DATA.. 四、ID3标准... 1. ID3V1. 2. ID3V2. 五、MP3文件实例剖析... 六、资料... 一、 概述MP3 文件是由帧(frame)构成的,帧是 MP3 文件最小的组成单位
2016-09-25 19:12:57 2160
原创 与音频相关的技术知识点总结(Linux方向的开发)
几个术语和概念:1. 关于PCM的 PCM是Pulse code modulation的缩写,它是对波形最直接的编码方式。它在音频中的地位可能和BMP在图片中的地位有点类似吧。 Sampling rate:从模拟信号到数字信号,即从连续信号到离散信号的转换都是通过离散采样完成的,Sampling rate就是每秒种采样的个数。根据香农采样定理,要保证信号
2016-09-25 19:09:57 2996 1
原创 文件操作:一次性产生多个文件
在开始介绍批量产生文件之前,我们先来了解一下sprintf这个函数:函数原型为 int sprintf(char *str, const char *format, ...)(1)根据格式从字符串中提取数据。如从字符串中取出整数、浮点数和字符串等。(2)取指定长度的字符串(3)取到指定字符为止的字符串(4)取仅包含指定字符集的字符串(5)取到指定字符集为止的字符串
2016-09-23 22:41:56 1316
原创 开发中的一些细小问题总结---字,字节,位,字符等
字(Word):在ARM体系结构(32位机)中,字的长度是32位,而在8位/16位处理器体系结构中,字的长度是16位。 半字(Half-Word):在ARM体系结构(32位机)中,半字的长度是16位,而在8位/16位处理器体系结构中,半字的长度与字的长度一致。 字节(Byte):在ARM体系结构(32位机)和8位/16位处理器体系结构中,字节的长度均是8位。 位(bit) :一个字节等于8b
2016-09-21 23:49:57 706
原创 关于V4L2中操作比较重要的几个命令以及一般操作流程总结
最近在做关于摄像头测试程序相关的一些开发,主要是想要实现在摄像头采集视频的过程中,通过按键来实现拍照,然后将拍照得到的数据保存到一个文件中,通过了解V4L2的一些相关操作,原来,拍照后的数据是保存在一个buf里,而这股数据流便是熟悉的YUYV,要看到相应的图片,还需要特定的转换才能将YUYV的数据转换成bmp图片。那么,在摄像头中,是怎么获取到图片的呢?通过V4L2的官方手册,我们得知是该控制命令
2016-09-21 23:00:41 2014
原创 基于V4L2摄像头采集图片程序设计
#ifndef __COMMON_H#define __COMMON_H//该头文件定义的是摄像头在屏幕上显示的宽度和高度#include#include#include#include#include typedef unsigned char U8;typedef unsigned int U32;typedef unsigned short U16;#define
2016-09-20 23:47:14 2084 5
转载 【Linux驱动】字符设备驱动
一、linux系统将设备分为3类:字符设备、块设备、网络设备。使用驱动程序:1、字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据。字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、控制台和LED设备等。2、块设备:是指可以从设备的任意位置读取一定长度数据的设备。块设备包括硬盘、磁盘、U盘和SD卡等。 每一个字符设备或块设备都在/de
2016-09-13 21:32:09 665
原创 如何解决RK3168或者RK系列MASKROM的问题
不知道使用RK芯片的小伙伴有没有遇到我这样的问题,在用Android-Tool下载相应 IMG的时候,正常情况下,按电源键和音量+键应该出现loader下载模式,但是却出现MASKROM的字样,以前不知道如何去解决,现在知道了。出现MASKROM的原因如下:1、SD卡坏了2、将内部SD卡取出,然后将其格式化后再刷相应的IMG
2016-09-13 15:13:01 9686
原创 关于NOR_FLASH的大小在单片机程序中的应用
在单片机开发中,NOR_FLASH常用的有4M和8M的大小:4M的FLASH在程序中可以这样表示:Ptr 8M的FLASH在程序中可以这样表示:Ptr 有了这个关系,在判断NOR_FLASH好坏的方法上我们可以采用计算checksum的方式来校验。在程序中,我们一般把地址的指针定义为unsigned short *ptr 类型。然后通过指针不断的往后移动可以简引用获取到FLASH中的每一个byte
2016-09-13 09:18:45 2543
原创 Linux内核编译时会遇到的问题--缺少mkimage
由于各大平台所带的内核不同,所以编译方式也不同,但方法都是大同小异。但是,编译内核有时候会提示缺少mkimage这个命令,如何解决?供应商提供内核的同时也会提供其它的一些,比如Uboot,rootfs等等。这个mkimage来自于对应的uboot源码包里,对uboot源码包进行解压后,编译uboot,后面会生成uboot.bin然后在tool目录下:ls mkimage我们可以看到有mkimgae
2016-09-07 16:59:19 1730
原创 input事件--->按键事件的基本实现
本程序基于TINY4412开发板,程序已经验证过,完全正确:那么,如何来写这样的一个驱动程序呢?1、分配一个input_dev结构体2、设置3、注册4、硬件相关的代码,比如中断,定时器,休眠等等的操作#include #include #include #include #include #include #include #include #include #include
2016-09-07 14:50:17 2402
原创 与信号相关的linux系统编程API
1. kill(pid_t pid, int sig); //给指定的进程发送sig信号 raise(int sig); //给当前进程发送sig信号2. 处理指定的信号 typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); //使用新
2016-09-06 17:10:07 797
原创 静态库与动态库相关知识笔记
1. ldd 可查看程序需要哪些动态库 nm 可查看程序,库里有哪些函数 file 可查看文件的类型 objdump -D 反汇编.o/.a/.so/elf可执行文件 2. 制作静态库 (test1.c test2.c) gcc test1.c -c -o test1.o gcc test2.c -c -o test2.o ar -cr libmy.a test1.o test
2016-09-06 17:01:56 2485
原创 动手实现linux中的cp命令(可自行拓展)
我们在学习系统编程的时候,一定会有这样的经历,让你动手实现一个简单的cp命令,也就是拷贝相应的文件到对应的目录,或者说是复制吧,当然,实现非常的简单,我们来看看源码吧:#include #include #include #include int main(int argc ,char *argv[]){ if(argc != 3) { fprintf(stderr , "in
2016-09-06 16:46:34 1951 4
原创 关于USB驱动的软件测试方法
在工作中难免会使用一些外部设备挂载到平台进行测试,比如U盘,那么判断一个U盘是否能正常读写的方法如下: 1、在U盘中放入一个二进制文件(xxx.bin) 2、通过U盘在软件上读取该二进制文件,并计算其checksum值 3、通过checksum值的正确与否即可判断U盘读写是否好坏核心算法大致如下:for(i = 0 ; i { one = buffer[i] & 0xff
2016-09-06 15:00:34 1315
转载 为何写flash的时候要地址左移一位?
代码一:#define Writeflash(addr,dat) *((volatile INT16U *)(addr<<1))=(INT16U)dat#define Readflash(addr) (*((volatile INT16U *)(addr<<1)))/*addr为读写操作的半字地址,data则为要写入的半字数据。因为ARM处理器是以字节为单位进行数据处理的,而SST39VF
2016-09-02 14:44:25 1788
原创 Checksum软件的简单设计
相信大家平时在测试一些bin文件的时候,经常都会要求计算checksum值,其实就是校验和,非常的简单,比如下图这个软件:我传入一个.bin文件,读出来的Checksum值就是0x0AD8B8。那么,我如何用C语言终端来实现这个简单的软件做测试工作呢?请看源码:#include #include #include #include int main(int argc, char *argv
2016-09-01 20:33:47 3830
Tiny4412应用测试软件源码
2018-11-11
敦泰--FT5X06 Android驱动框架分析-杨源鑫.pdf
2018-01-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人