行云

行至水穷处,坐看云起时。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  Unix/Linux/驱动

Unix系统,Linux系统,驱动
摘要:我的环境:OS: ubuntu 12.10android-ndk-r7 ffmpeg: 0.8下面是编译步骤:第一步:安装配置ndk运行ndk-build,如果显示如下信息,则表示安装成功通过设置宏NDK_PROJECT_PATH来指定工程目录export NDK_PROJECT_PATH=/home/robin/Desktop/wshare/jni第二步:下载ffmpeg源码第三步:建立文件夹jni,把ffmpeg源码解压至jni目录下,用ndk编译时,jni目录是必须的,否则编译出错。这一步后目录结构如下:ndk-build 默认编译jni下的文件,如果它找不到该目录,就要通过设置NDK_ 阅读全文
posted @ 2013-01-17 15:41 windflying 阅读(6751) 评论(0) 推荐(0)

摘要:● 互斥锁互斥锁用来保证同一时间内只有一个线程在执行某段代码(临界区)。多线程编程最容易出问题的地方,就是临界区的界定和访问控制。下面是一个生产者,消费者的简单例子。生产者、消费者公用一个缓冲区,这里假定缓冲区只能存放一条消息。#include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <sys/time.h>static char buff[50];int have_msg=0;pthread_mutex_t mutex;int delay=1;void consumeIt 阅读全文
posted @ 2013-01-01 16:18 windflying 阅读(8126) 评论(0) 推荐(0)

摘要:● 概述Linux下进行多线程编程,要包含头文件<pthread.h>,编译时要连接pthread库(-lpthread)。例如:gcc –o test test.c –lpthread一篇讲的很全的文章:http://www.cnblogs.com/BiffoLee/archive/2011/11/18/2254540.html●线程的创建创建线程的函数是pthread_create。若创建线程成功则返回0,否则返回错误编号。原型:pthread_create(pthread_t *thread, const pthread_attr_t *attr, void * (start 阅读全文
posted @ 2013-01-01 15:07 windflying 阅读(964) 评论(0) 推荐(0)

摘要:使用select函数的套接字如果你想保持现有连接的同时,侦听新的连接,怎么办呢?普通的做法(使用recv, accept是做不到的)。当使用accetp等待新的连接时,程序是阻塞的,也就没办法再同原有连接保持通信。另一种做法是,使用非阻塞方式,但这会浪费了宝贵的CPU时间(你的不停的轮询轮询)。有没有更好的办法呢?答案是肯定的 – 使用select函数。select可以帮助你同时监听多个套接字。它会告诉你哪个套接字读数据就绪, 哪个套接字写数据就绪,哪个套接字发生错误。使用select意味着使用I/O多路技术。select函数头文件:#include <sys/time.h>#in 阅读全文
posted @ 2012-07-18 09:31 windflying 阅读(1590) 评论(0) 推荐(0)

摘要:InetdInternet超级服务器可以使用inetd来设计网路程序,使我们不用考虑复杂的socket编程。只要设计好通讯协定(需要什么样的输入什么样的输出)就好了。所需要的技巧,仅仅是文字分析技巧。利用inetd来开发网路应用步骤如下:设计好本地运行的程序(hello:是一个hello world!程序)配置inetd/etc/services: 配置程序使用的端口eg: hello 20001/tcp 其意义为hello这项服务是在端口20001、是一个TCP连接。/etc/inetd.conf: 配置连接上面的服务时要执行的程序eg: hello streamtcp nowait rob 阅读全文
posted @ 2012-07-17 22:20 windflying 阅读(487) 评论(0) 推荐(0)

摘要:1 建立管道int pipe(int filedes[2]);pipe()会建立管道,并将文件描述符由参filedes数组返回filedes[0]为管道里的读取端,filedes[1]则为管道的写入端。下面的程序建立了两个管道,分别绑定到子进程父进程标准输入输出:View Code #include <unistd.h>#include <stdio.h>int main(){ int fdins[2], fdouts[2]; pid_t pid; char buff[20]={0}; pipe(fdins); pipe(fdouts); pid=f... 阅读全文
posted @ 2012-06-18 13:53 windflying 阅读(325) 评论(0) 推荐(0)

摘要:信号是一种软件中断,程序收到信号时,就会调用相应的处理函数(如果有注册)。void (*signal(int signum,void(* handler)(int)))(int); -- 设置信号处理方式信号处理函数原型void foo(int arg);系统定义的信号有:/* Signals. */#define SIGHUP1/* Hangup (POSIX). */#define SIGINT2/* Interrupt (ANSI). */#define SIGQUIT3/* Quit (POSIX). */#define SIGILL4/* Illegal instruction (. 阅读全文
posted @ 2012-06-17 10:09 windflying 阅读(757) 评论(0) 推荐(0)

摘要:守护进程是脱离终端并在后台运行的进程。守护进程脱离终端是为了避免进程在执行过程中的信息在任何终端上显示,并且进程也不会被任何终端所产生的中断信息打扰。守护进程一般生存周期都很长。一般都是默默的在后台做一些事情,用户不会直接感受到它的存在。创建守护进程的步骤1 与终端脱离创建子进程,父进程退出。2 在子进程中创建新会话意义在于:让守护进程独立让进程摆脱原会话的控制让进程摆脱原进程组的控制让进程摆脱原控制终端的控制那么,在创建守护进程时为什么要调用setsid函数呢?由于创建守护进程的第一步调用了fork函数来创建子进程,再将父进程退出。由于在调用了fork函数时,子进程全盘拷贝了父进程的会话期、 阅读全文
posted @ 2012-06-17 08:49 windflying 阅读(418) 评论(0) 推荐(0)

摘要:<Uinx 环境高级编程笔记>当执行程序时,main函数时如何被调用的?C程序总是从main函数开始执行。当内核在启动C程序时,在调用main之前先调用一个特殊的启动例程。可执行程序将次启动例程指定为程序的起始地址 -- 这是由连接编辑程序设置的,而连接编辑程序则由C编译程序调用。启动例程从内核取得命令行参数和环境变量,然后为调用main函数做好安排。进程的终止1 正常终止 a) 从main返回 b)调用exit c)调用_exit exit先执行一些清理再进入内核。2 异常终止 a) 调用abort b)由一个信号终止在程序终止前可以调用其它函数,这可以通过int atexit 阅读全文
posted @ 2012-06-14 20:04 windflying 阅读(394) 评论(0) 推荐(0)

摘要:<Uinx 环境高级编程笔记>以前经常遇到两种I/O操作一类是f打头的fopen, fread, fwrite一类是没有f打头的open, read, fwrite原来一个是UNIX I/O(在类Unix系统上实现),另一类是标准I/O(在很多系统上都有实现,包括windows)使用标准I/O的好处因为在出UNIX的很多操作系统(包括Windows, linux)上都实现了此库,所有有利于软件的移植。与UnixI/O的主要区别UNIX I/O的函数都是针对文件描述符的,而标准I/O的操作都是围绕流进行的。所为的流就是一个FILE *标准I/O提供了缓存--为了尽量减少write, 阅读全文
posted @ 2012-06-13 13:54 windflying 阅读(1018) 评论(0) 推荐(0)

摘要:<Uinx 环境高级编程笔记>文件的相关信息文件有哪些相关信息呢?用户关心的:文件类型、文件名、文件大小、文件目录、文件所有者、文件访问修改日期。这些信息保存在struct stat结构中(sys/stat.h)系统关心的:文件状态、文件的存储信息。系统相关的信息大部分在inode, vnode, 文件表中。获取stat结构的API: int stat(const char * file_name,struct stat *buf);使用stat函数最多的可能是 ls -l命令int lstat (const char * file_name.struct stat * buf); 阅读全文
posted @ 2012-06-13 08:35 windflying 阅读(1878) 评论(0) 推荐(0)

摘要:<Uinx 环境高级编程笔记>1 常用的I/O打开文件int open( const char * pathname, int flags);int open( const char * pathname,int flags, mode_t mode);返回值:文件描述符,一个整数。头文件:#include<sys/types.h> #include<sys/stat.h> #include<fcntl.h>第一个参数: 欲打开的文件路径flags: 访问模式,O_RDONLY, O_WRONLY, O_RDWR, O_CREAT,O_EXCL( 阅读全文
posted @ 2012-06-11 18:54 windflying 阅读(486) 评论(0) 推荐(0)

摘要:问题1:在Linux上一切都是文件,那么我可以通过open, close, read, write, ioctl这些函数来访问一个USB设备文件吗?----可以的问题2:那我怎么区分bulk还是interrupt传输呢?----通过ioctl问题3:既然我可以通过open,close, read, write, ioctl来访问一切设备文件,那么为什么还要有像libusb这样的库呢?----实际上在底层就是这几个函数,libusb库只不过是通过包装这几个函数,使上层更容易使用 阅读全文
posted @ 2012-03-19 21:15 windflying 阅读(190) 评论(0) 推荐(0)

摘要:常用的Makefile模板SHELL = /bin/sh# Define the searching path(s) of makeVPATH = ./windows ./LinuxLayer ./Communication# Define object file(s)OBJS = Afe.o Asic.o CanonApi.o DevADF.o DevCalib.o \ Device.o DevInit.o DevLCD.o DevMap.o DevMove.o DevScan.o \ Interface.o Motor.o Profile.o Queue.o Register.o \ Se 阅读全文
posted @ 2012-02-29 21:52 windflying 阅读(319) 评论(0) 推荐(1)

摘要:移植Tslib1 下载源码tslib-x.x.tar.gz2 解压,cd tslib3 生成configure ./autogen.sh4 配置,生成Makefile ./configure --host=arm-none-linux-gnueabi(平台) --prefix=/(安装目录) --enable-debug=no5 编译 make6 安装 make install 在指定的安装目录下生成/bin /etc /lib /include文件夹,并放入相应的文件。如果相应的文件夹已经在,则把相应的文件放入对应的文件夹。7 运行测试程序,需要配置如下参数export TS... 阅读全文
posted @ 2011-08-25 10:46 windflying 阅读(9115) 评论(1) 推荐(0)

摘要:内核概述Linux内核提供了应用程序可以运行的执行环境。因此,内核必须提供一组服务及相应的接口。内核可以说是有一个个驱动模块和一些公用模块组成的。内核响应用户空间的请求,驱动硬件提供相应的服务。更进一步可以说内核是由一系列函数和一些全局数据结构组成。系统的运行系统的运行是以一个个进程的方式进行的。内核本身并不是进程,而是进程的管理者。当进程需要用到内核提供的服务是,它通过调用系统调用转到内核执行。Linux内核包括几个所谓的内核线程。在单处理器系统中任何时候只有一个进程运行。如果进程运行在内核态,处理器就执一些内核例程。Linux内核的各个部分并不是严格按照顺序依次执行的,而是采用交错执行的方 阅读全文
posted @ 2011-08-17 13:46 windflying 阅读(325) 评论(0) 推荐(0)

摘要:【问题】背光驱动初始化先于LCD驱动初始化,导致LCD驱动初始化时出现闪屏的现象。【解决过程】1 mach-xxx.c中platform devices列表如下/* platform devices */static struct platform_device *athena_evt_platform_devices[] __initdata = { //&xxx_led_device, &xxx_rtc_device, &xxx_uart0_device, &xxx_uart1_device, &xxx_uart2_device, &xxx_ 阅读全文
posted @ 2011-08-08 13:52 windflying 阅读(4656) 评论(0) 推荐(0)