自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

玩笑的博客

I‘m a coder!

  • 博客(83)
  • 资源 (4)
  • 收藏
  • 关注

原创 线程加锁两次-死锁问题实验

    今天遇到了这个问题,晚上回来写个例子试试,试试证明还是会死锁的。一个不同线程分别加锁的例子,这种情况是不会死锁的。#include #include pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;int count = 0;void * thread_func_one(void *arg){ int i; for(i=0;i

2011-03-18 23:31:00 14429 8

原创 Linux音频编码的采样率模拟实现

<br />    音频采样率一般来说都是由硬件决定的,但是某些操作系统的内核只提供最大某些固定的采样率,比如最大只有16KHz,这样我们需要用软件模拟的方式将采样率升高成原来的一般,但是这种方式可能并不能提高音质或者声音的精细度,不过工程师的任务就是尽可能的完成一些技术指标或者客户需求。这里简单记录以下:<br /> <br />16K采样率转8K采样率,即降采样处理:<br />Linux音频编码的就是把/dev/dsp下的音频数据采集到应用层来,拷贝到一块内存里,然后进行音频编码,G722,G711,

2011-03-08 22:31:00 3006

原创 Linux 设备驱动之 ioctl小试牛刀(2)

<br />    ioctl小试牛刀(1)的进阶笔记,该底层ioctl处理通过移位的方式可以控制所有的寄存器!~<br /> <br />main.c 上层应用测试代码<br />#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <linux/ioctl.h>#include "../ioctl_c.h"GPIO_D

2011-03-05 23:07:00 1402

原创 Linux 设备驱动之 ioctl 小试牛刀(1)

    ioctl是广大人民群众喜闻乐见的函数之一,这里略作笔记,把以前写的代码整理以下。应用测试程序main.c#include #include #include #include #include #include #include "../ioctl_c.h"GPIO_Data_S led_ctl;int main(int argc, char **argv){ int testdev = 0; int i = 0; int erro = 0; c

2011-03-04 23:30:00 1597

原创 motion源代码解析

<br />    很久没有更新blog,这样不好,工作之后仍然需要不断的学习新的技术,工作外的技术等等……<br />    motion是一个基于Linux平台的开源项目,其功能是检测视频流中的画面运动,类似于移动侦测。整个项目只有30多个文件,非常小巧。据说axis这个网络摄像机的大牌厂商也使用该算法处理。所有我也需要啃一啃才行啊~!   <br />    程序的入口是在motion.c中的main函数<br />/** * main * * Main entry point of

2011-01-06 23:33:00 4424 6

原创 关于VMware虚拟机在笔记本上主板响声的解决

<br />    DELL笔记本,每次VMware装了Linux虚拟机后,在终端敲错东西的时候就会发出很大的响声,这个不是声卡的声音,而是主板在响。解决方法就是在Linux中<br />   vim /etc/inputrc <br />    然后将#set bell-style none 前面的#去掉,即把注释关掉,然后重启虚拟机即可!

2010-11-19 23:32:00 2191

翻译 ioctl VIDIOC_REQBUFS

名称    VIDIOC_REQBUFS—开启内存映射或用户指针I/O梗概    int ioctl(int fd, int request, struct v4l2_requestbuffers *argp);参数 fd     open()返回的文件描述符 request    VIDIOC_REQBUFS argp描述    这个ioctl用于初始化内存映射或者用户指针IO,内存映射缓冲区由设备内存分配而且必须在应用程序地址空间分配之前由ioctl分配。用户空间的缓冲区由用户层自己分配,这个ioctl

2010-09-14 13:06:00 11380 1

原创 Linux串口参数设置

<br />在Linux中man串口有关的信息,在以下链接中http://www.9linux.com/tcgetattr.html<br /><br />termios,  tcgetattr,  tcsetattr,  tcsendbreak,  tcdrain,  tcflush,  tcflow,  cfmakeraw,  cfgetospeed,cfgetispeed, cfsetispeed, cfsetospeed, cfsetspeed - 这些函数都是获取或者设置串口属性,控制线,获取和设

2010-08-25 12:53:00 1540

原创 使用gettimeofday实现精确计时功能

<br />    gettimeofday的man说明:<br /> GETTIMEOFDAY(2)            Linux Programmer's Manual           GETTIMEOFDAY(2)NAME       gettimeofday, settimeofday - get / set timeSYNOPSIS       #include <sys/time.h>       int gettimeofday(struct timeval *tv, struct t

2010-08-08 22:33:00 5068

转载 Ubuntu error:unkown command keystatus 解决方法

<br /><br />Ubuntu对 wubi安装一向不重视,但是以前9.04 9.10升级后wubi安装的还不能进图形界面。<br /> <br />这次Ubuntu 10.04安装好后启动ubuntu会出现 error:unkown command keystatus 的错误 具体原因不知道 直接看Ubuntu的引导文件<br /> <br />终端输入 sudo gedit /boot/grub/grub.cfg<br /> <br />然后删掉<br /> <br />if [ ${timeout

2010-08-06 22:53:00 3025

原创 Linux设备驱动之《玩转GPIO》

    在Linux设备驱动之《点亮一盏LED》中,编写了ioctl_c.h这样的头文件,在本文中将继续使用这一头文件,代码如下:#ifndef __IOCTL_C_H__#define __IOCTL_C_H__typedef struct GPIO_Data_t{ unsigned int port; unsigned int bit; unsigned int value; unsigned int v;}GPIO_Data_S;#define GPIO_I

2010-06-25 15:36:00 2063 1

转载 ubuntu下删除菜单图标

<br />方法一:直接在终端输入命令alacarte。可以任意增、改、隐藏、显示菜单,但无法删除菜单,即使拥有root权限。 <br /><br /> 方法二:注意几个目录和文件。 <br /><br /> /usr/share/applications/下的desktop文件 <br /> /usr/share/applications/mimeinfo.cache文件 <br /> ~/.local/share/applications下的desktop文件 <br /

2010-06-17 00:45:00 4407

转载 Ubuntu 几种常见乱码解决方法

<br /> <br />Ubuntu几种常见乱码解决方法<br />本文非原创,因在网上看到这篇文章非常好,故拿来和大家分享,要查看原文请看missfall的网易博客:http://coolwinding.blog.163.com/blog/static/112240939200975431027/<br />网上有许多关于ubuntu中乱码的解决方法,有些很好,有些转载却有很多错误,在此,结合自己的亲身体验,总结各种方法并修改,希望对你有所帮助。<br /> <br /> <br />一

2010-06-17 00:27:00 2360

原创 Linux设备驱动之《点亮一盏LED》

    接着上一篇字符设备驱动编写继续,GPIO就是General Purpose Input Output GPIO (通用输入/输出)的意思,这里本人使用的开发板核心板为三星的s3c2440,非常普及的板,相信做ARM嵌入式的童鞋们一定都听说过的。   如果玩过单片机那么对于ARM控制GPIO来说应该不会很陌生,上手比较容易,对于硬件的操作无非就是高低电平和寄存器的操作,所以对于ARM也是一样的。这里简单的介绍一个控制开发板上led的简单例子,对于硬件操作能有一定的基础概念和操

2010-06-15 11:21:00 2457 3

原创 Linux设备驱动之《字符设备驱动》

    Linux设备中最大的特点就是设备操作犹如文件操作一般,在应用层看来,硬件设备只是一个设备文件。应用程序可以像操作文件一样对硬件设备进行操作,如open(),close(),read(),write()等。    下面是一个字符设备驱动程序的简单实现test.c    #include #include #include #include #include #include #include #include #include #include #includ

2010-06-14 14:54:00 1259 1

原创 Linux设备驱动之《构造和运行模块》

<br />    下面的代码是一个完整的最简单的“hello world”模块<br />    C代码名称hello.c<br />#include <linux/init.h>#include <linux/module.h>/* 告知内核该模块带有自由许可证 否则会报错*/MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){ printk(KERN_ALERT "Hello,world/n"); print

2010-06-13 17:22:00 1306

原创 Linux环境编程之进程间通信

<br />    进程间通信顾名思义就是进程之间的通信机制,英文简称IPC,进程见通信主要有一下几种方式:<br />    信号(signal):亲缘进程和非亲缘进程都可以, 也可以进程自己给自己递送信号。<br />    信号量(semaphore):主要是线程间和亲缘进程间的同步手段,不做数据传输之用。<br />    命名信号量:可以在非亲缘进程间使用。<br />    管道:只允许亲缘进程间的通讯。<br />    命名管道(FIFO):除了亲缘进程可以通讯外,非亲缘进程

2010-06-12 15:20:00 1847

原创 Linux环境编程之信号

    信号的概念    信号是软件中断。它即可以作为进程间通信的一种机制,更重要的是,信号总是中断一个进程的正常运行,它更多地被用于处理一些非正常情况。信号是异步的,进程并不知道信号什么时候到达。进程既可以处理信号,也可以发送信号给特定进程。每个信号都有一个名字,这些名字都以SIG开头。例如:SIGABRT是进程异常终止信号。    信号的来源    硬件异常产生信号:除数为0、无效的存储访问等等。这些条件通常由硬件检测到,并将其通知内核。然后内核为该条件发生时正在运行的进程产生适当的信号。软件产生异常信

2010-06-10 11:02:00 2106 1

原创 Linux环境编程之多线程

可以认为一个进程就是只有一个线程的模型,那么多线程就是一个进程中有多个线程。下图很明显的说明了一个进程和线程的区别。多线程的代码段,数据段,文件描述符都是共享的,但是他们却有相互独立的寄存器和•堆。    • 下面介绍线程中常用的函数,pthread大概有60多个函数,包括线程的创建、终止等。Linux中实现了pthread线程库,Unix/Widows中也有pthread的实现。 Linux中使用pthead方法为:头文件加上#include ,在编译的时候要手动链接线程库,例如gcc main.c –

2010-06-08 22:04:00 1494

原创 Linux环境编程之进程

<br />    一.概念<br />    什么是进程,什么是程序。这个在操作系统的书籍上有很多种阐述。程序是一个包含可执行代码的文件,它放在磁盘等介质上。当程序被操作系统装载到内存并分配给它一定资源后,此时可称为进程。为方便操作系统管理,每个进程都会有一个唯一的非负整数编号。程序是一个静态概念,进程是一个动态概念。<br /> <br />    理解进程之前先了解一下什么是用户空间和内核空间,我们知道32位系统最大的寻址空间是4G,在Linux系统中,0~3G为用户空间,3~4G为内核空间,当进程陷

2010-06-06 17:04:00 1234

原创 Linux环境编程之文件目录

    文件IO是主要是对一个文件的操作的基本函数,这篇主要描述文件系统的其他特征和文件的性质。1.stat函数    stat函数返回一个与此命名文件有关的信息结构, fstat函数获得已在描述符 filedes上打开的文件的有关信息。lstat函数类似于stat,但是当命名的文件是一个符号连接时,lstat返回该符号连接的有关信息,而不是由该符号连接引用的文件的信息。#include #include int stat(const char *pathname, struct stat *buf

2010-06-05 12:59:00 1344

原创 Linux环境编程之文件IO

首先是从应用层开始把,这方面主要参考的书籍当然是“圣经apue”了,主要从一下几个步骤逐一开始: 1.文件IO 2.文件与目录 3.进程 4.多线程编程 5.信号 6.进程间通信 学习linux编程,首先要学会使用shell,这里一些基础命令就不介绍了。这里唯一要提的一个shell命令就是man。man是任何一个开发者都应该学会经常使用的工具,使用man比去查看任何一本教材都要来的快速准确。man可以查看一下内容:1.一般命令(s

2010-06-04 22:59:00 6136

原创 字符测试函数使用范例

Glibc库    Glibc库是GNU发布的C标准库,也是C的运行库,是linux中最底层的应用程序开发接口(API),其中提供了例如,,等我们在学习C语言时候常见的头文件。这些头文件都在/usr/include下。glibc库分为静态库和动态库两种,他们都位于/lib和/usr/lib中,其中静态库是以.o为后缀,动态库是以.so为后缀。字符测试函数 isalnum, isalpha, isdigit, isxdigit, isblank, isspace, isascii, iscntrl, is

2010-06-04 15:58:00 1135

原创 Ubuntu 10.04下构建嵌入式开发环境

1.minicom安装与配置     minicom是linux下的一个串口通讯工具,使用起来十分方便,类似在windows下的超级终端。在ubuntu下进入终端,输入sudo apt-get install minicom,或者在新立得软件包中查找minicom,见下图    安装完成后在终端下输入minicom -s 即可进入minicom的配置界面,然后进入Serial port setup,详细配置见下图。    至此minicom就配置完成了,以后登录minicom前只要在终端中键入minicom

2010-06-02 12:05:00 4161 3

原创 IP冲突检测程序源码及分析

  本程序是网上很多被人采用的IP冲突检测程序,在这里感谢作者的分享。  首先是头文件,这一部分定义了两个结构,一个是ARP包,arpMsg,其中包含了ARP请求和应答的分组格式,实际就是一个固定的arp封装。另外一个是对所有本地信息的配置,这里作者也封装了一个包server_config_t。 #ifndef __CHECKIP_H#define __CHECKIP_Hstr

2010-05-25 11:37:00 8294 7

转载 Ubuntu 10.04 安装配置指南

(转自http://hi.baidu.com/gsps/blog/item/4c72aeb74b5ca2f830add19f.html)Ubuntu 10.04 安装配置指南作者:Jandy版本:1004.1.0504---目录〇、准备一、安装二、配置三、输入法四、Fla

2010-05-22 11:01:00 7983 3

原创 Linux串口通信程序

    毕业设计用到一些接口测试代码,其中就有串口的测试,这其中基本借鉴了华清远见那本书里面的代码,读串口程序交叉编译到开发板中,写串口程序在PC端执行。代码很简单,因为串口在linux下也只是个文件,只需要打开这文件进行读写操作就好了。其中使用了2个函数,分别是配置端口和打开端口的函数,这2个函数比较死,可移植性也比较强。/**********************************

2010-05-12 10:26:00 6170 1

原创 utuLinux内核定制编译全攻略

    由于最近毕业设计涉及到此类工作,虽然之前做过但是却没有系统的总结过,    所以趁这个机会整理一下。     PC上使用的是CentOS,内核版本2.6.18    utu-linux内核版本是2.6.13       1.解压内核源代码包,进入utulinux文件目录                      

2010-05-08 11:20:00 1346

原创 守护进程的设计与实现

守护进程是Linux中的后台服务进程,一般都是在后台运行的,它的生存期比较长。一般都是系统自举时启动,系统关闭时终止。在Linux中,有一个系统与用户交互的界面,成为终端,很多进程的启动和停止都与终端有很大的关系,一般我们在Linux下编写的代码都是在终端下执行或者停止的,但是守护进程突破了这种限制,它从被执行的时候开始运转,直到系统关闭时才结束,用这种方法,可以为我们的系统提供多种服务,所以

2010-04-27 10:33:00 3321

转载 mtrace检查内存泄漏

内存泄漏检查方法(for Linux) 如果你更想读原始文档, 请参考glibc info的"Allocation Debugging" 一章 (执行info libc);glibc提供了一个检查内存泄漏的方法, 前提是你的程序使用glibc的标准函数 分配内存(如malloc, alloc...): 1. 在需要内存泄漏检查的代码的开始调用void mtrace(void) (在mcheck.h

2010-04-24 11:11:00 3580 1

转载 别的程序员是怎么读你的简历的

面这个图片来源国外,是一个关于程序员面试时的简历,被人事部门和程序员本身评审的角度不同的图片。当然,这是一个从国外面试的视角制作的图片,不过,可以看出,其中很多东西都是和国内是相同的。让我们通过这个图片也来了解一下自身吧。 下面是我对其做的翻译,翻译水平有限,请大家指正。 人事部门是这样阅读简历的(+15分)如果简历中说到了和工作职位相符的技能超过5次以上。 (+8分)如果简历

2010-04-24 09:53:00 1686 1

原创 环形缓冲区的设计与实现

    环形缓冲区是嵌入式系统中十分重要的一种数据结构,比如在一个视频处理的机制中,环形缓冲区就可以理解为数据码流的通道,每一个通道都对应着一个环形缓冲区,这样数据在读取和写入的时候都可以在这个缓冲区里循环进行,程序员可以根据自己需要的数据大小来决定自己使用的缓冲区大小。    环形缓冲区,顾名思义这个缓冲区是环形的,那么何谓环形这个意思也很好理解,就是用一个指针去访问该缓冲区的最后一个内存位

2010-04-23 13:17:00 27920 9

转载 嵌入式Linux操作系统学习规划

 ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标: (1)掌握主流嵌入式微处理器的结构与原理(初步定为arm9) (2)必须掌握一个嵌入式操作系统(初步定为uclinux或linux,版本待定) (3)必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。 从事嵌入式软件开发的好处是: (1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所

2010-04-23 09:41:00 2414 4

原创 gcc gdb 学习

GCC 程序编译过程 从程序员角度,编译源代码可以分为三个阶段。预处理源代码(宏展开),生成机器指令(*.o),链接(*.a *.so),如下图 GCC是GNU Compiler Collection的缩写,gcc/g++都可以编译C或者C++代码。无论源文件的后缀是.c还是.cpp,g++都认为是C++源文件。gcc严格按照后缀来区分源文件。.c是c代码,.cpp是c

2010-04-15 21:19:00 2774 5

原创 单链表和双链表 算法与实现

链表是包含一些数据的独立数据结构(也成为节点)的集合,每个节点都是通过指针链接在一起的。通常节点是动态分配的。事实上,链表中的节点可以存在于内存中的各个地方。,所以在物理上是不是相邻并无影响。链表在数据结构中占有很大的作用,它可以根据使用情况分配内存,避免内存的浪费。它的插入,删除,查找都是根据指针的访问来实现,删除或添加一个节点不会改变其他数据的位置和内容,和数组相比,链表具有很强的灵活性和

2010-04-14 11:56:00 6250

原创 atoi() itoa() 的实现

觉得代码水平是相当的差…………写2个十分十分十分简单的先练一下……高手见笑……/**********atoi********/  1 #include   2 #include   3 #include   4   5 int main(int argc , char **argv)  6 {  7     int i,length,sum=0;  8     char buffer[256]

2010-04-13 12:09:00 910

转载 静态库和动态库

1.什么是库在windows平台和linux平台下都大量存在着库。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows和linux的本质不同,因此二者库的二进制是不兼容的。本文仅限于介绍linux下的库。2.库的种类linux下的库有两种:静态库和共享库(动态库)。二者的不同点在于代码被载入的时刻不同。静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。

2010-04-12 13:14:00 712

转载 嵌入式WEB服务器BOA的移植方法

作者:李驹光、郑耿本文摘自作者《嵌入式Linux系统开发详解-基于EP93XX系列ARM》一书的相关章节。   随着Internet技术的兴起,在嵌入式设备的管理与交互中,基于Web方式的应用成为目前的主流,这种程序结构也就是大家非常熟悉的B/S结构,即在 嵌入式设备上运行一个支持脚本或CGI功能的Web服务器,能够生成动态页面,在用户端只需要通过Web浏览器就可以对嵌入式设备进行管理

2010-04-08 21:08:00 1034

原创 fork与clone

来一段C代码,用fork创建一个子进程Code:#include     #include        int main( int argc, char **argv)    {        int a=10;        pid_t pid;           printf("before fork pid=%d/n",getpid

2010-04-08 13:05:00 1145

转载 Linux Video Streaming

http://blog.chinaunix.net/u/11910/showart_154983.html

2010-04-08 10:18:00 633

Linux环境高级编程

Linux环境中的系统编程范例,其中包括文件I/O,信号,多进程,多线程,网络编程,进程间通信等,每个文件夹下包含很多小程序,是学习Linux系统编程的好资料。

2010-05-24

Linux FTP源代码

该项目实现了在linux环境下的文件传输功能,能够将客户端的文件上传给服务器,同时能够将服务器的文件下载到客户端,可以在客户端查看更改双方路径及目录,并且支持多任务。在项目中应用了TCP网络编程,文件IO,多任务编程,进程间通信等相关知识,熟练综合运用了linux应用层相关知识。

2010-05-04

ARM9 S3C2440开发版资料

ARM9板子资料 很全 核心板加底板的电路图,器件说明,器件资料等等。对学习ARM9很有帮助!!

2009-10-25

linux文件传输程序

实现一个client/server 结构的文件传输程序。程序分为两个部分,一个是服务器端程序,另一个是客户端程序。服务器端程序能够同时接受多个客户端的链接请求,并把客户端指定的文件传输给客户端,或者接受客户端的文件存储到服务器端。 客户端要实现以下几个命令:put, get, cd, ls, pwd, lcd, lls, lpwd, quit。 put命令:put filename 把客户端所在机器的当前目录下的文件filename传输到服务器端。 get命令:get filename 把服务器端所在机器当前目录下的文件filename传输到客户端。 cd命令:改变服务器端的工作目录。 ls命令:显示服务器端当前工作目录的内容。 pwd命令:显示服务器端当前工作目录。 lcd命令:改变客户端的工作目录。 lls命令:显示客户端当前工作目录的内容。 lpwd命令:显示客户端当前工作目录。 quit命令:客户端退出,并且关闭与服务器间的链接。

2009-10-25

空空如也

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

TA关注的人

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