linux相关
wangyi84971224
一个很平凡的人
展开
-
linux键盘驱动范例(2008-10-23 19:58:51)
键盘在所有的驱动之中最为简单的一种,但它却包含了驱动的基本框架,对以后继续深入学习其他复杂的驱动大有裨益,以下便为你逐步剖析驱动的开发。采用的是查询方式。一.内核模块的注册和撤销 在加载模块的时候,首先运行的是内核模块的注册函数。它的功能包括内核注册设备以及变量的初始化。static int head,tail;int _init Keypad_init(void){ int r转载 2009-11-04 13:18:00 · 257 阅读 · 0 评论 -
appweb移植到2410(2009-05-07 13:16:09)
在众多的web server中有许多轻量级的web server,如boa , thttp, lighttpd等,但如果要有较高的安全性和能为后期的web开发开发提供便利的嵌入式web服务器,上面提到的几个web server显得太单薄了.公司要求用web来管理开发的嵌入式产品,并且要有一定的安全性能.综合比较了大几款轻量级,嵌入式web server.最后推荐都是由Michael O原创 2009-11-04 14:12:00 · 912 阅读 · 0 评论 -
查看指定进程(2009-05-08 17:29:25)
ps | grep vfdkey|grep -v grep原创 2009-11-04 14:15:00 · 117 阅读 · 0 评论 -
memest(2008-11-16 22:59:29)
memest原型 (please type "man memset" in your shell) void *memset(void *s, int c, size_t n);memset:作用是在一段内存块中填充某个给定的值,它对较大的结构体或数组进行清零操作的一种最快方法。常见的三种错误第一: 搞反了c 和 n的位置.一定要记住 如果要把一个char a[20]清转载 2009-11-04 13:44:00 · 139 阅读 · 0 评论 -
Request_irq参数dev_id的真正作用(2008-12-06 13:34:40)
Request_irq的作用是申请使用IRQ并注册中断处理程序。request_irq()函数的原型如下:int request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_regs *), unsigned long irqflags, const char *devnam转载 2009-11-04 13:54:00 · 398 阅读 · 0 评论 -
打开文件(2009-03-14 20:56:21)
今天遇到一个怪问题,在一个函数中实现打开文件的操作,可是交叉编译时老是提示段错误,现在明白了,原来那个函数中就已经打开了一个文件,我在打开时就会发生段错误,也就是不能同时打开2个文件。。原创 2009-11-04 13:58:00 · 110 阅读 · 0 评论 -
boa移植(2009-03-24 14:01:45)
第一步 Boa程序的移植1、下载Boa源码下载地址: http://www.boa.org/, 或者http://sourceforge.net最新发行版本: 0.94.13下载 boa-0.94.13.tar.gz,注意:从boa上下载的是boa-0.94.13.tar.tar,解压方式一样解压:# tar xzf boa-0.94.13.tar.gz2、生成Makefile文件直转载 2009-11-04 13:58:00 · 199 阅读 · 0 评论 -
snmp(2009-04-22 14:39:12)
接触snmp有3个星期左右了吧,现在来总结下子自己在这期间做了些什么,老板给我的任务有以下几项: 1:aggen.cpp与globaltime版本对齐,就是个个文件是对应的,都保证是相互兼容的,不一定都是最新的。 2:写一个gpd的驱动,他主要是用于电源的管理,用来查询和通知snmp电源现在的状况。 3:系统的一些状态。例如cpu利用率,内存利用率。 4:代理端发原创 2009-11-04 14:06:00 · 907 阅读 · 1 评论 -
debug
Auvitek.c: At top level:Auvitek.c:76: error: conflicting types for AU_InitialATSCAuvitek.h:74: error: previous declaration of AU_InitialATSC was here类型冲突说明定义和声明这个函数不一样,可能是参数的个数或类型,或是返回值的类型。原创 2009-11-30 08:49:00 · 148 阅读 · 0 评论 -
I2c出错解决
int I2C_Read(unsigned char msSlaveAddr,unsigned char* writeDataP, int wrDataLen, unsigned char* readDataP,int rdDataLen){ int retval; hw_i2c.DevAddr = msSlaveAddr; RTOS_MutexLo原创 2009-12-01 16:51:00 · 470 阅读 · 0 评论 -
sysinfo
Linux中,sysinfo是用来获取系统相关信息的结构体。函数声明和原型: #include int sysinfo(struct sysinfo *info);结构体信息:在Linux 2.3.16中,结构体的信息是(单位是字节): struct sysinfo { long uptime; /* 启动到现在经过的时间 */转载 2009-12-29 14:19:00 · 479 阅读 · 0 评论 -
RTP/RTCP/RTSP协议初探
一.产生的背景随着互连网的发展,人们已经不满足于传统的HTTP,FTP和电子邮件等文本信息和服务,而对内容丰富多彩的多媒体信息,服务以及多媒体通信方式提出了需求,包括声音,图象,图形,视频信息等等,而这些不但传输的数据量大而且对交互性和实时性要求很高。这时,基于HTTP的TCP协议无法达到要求,故产生RTP协议来进行多媒体数据实时传输. 二.RTP/RTCP/RTSP协转载 2010-01-11 13:34:00 · 699 阅读 · 2 评论 -
player
上次刚搞完live555的客户端基本上能播放ts流,可以seek。还没来的及写上博客,然后中途做了一段时间的android。搞笑的是先让我画界面,哥刚学会点java准备画了,上面说不用了,你做player吧,懂的人都知道player是什么。好大的工程呀,努力。原创 2010-04-07 13:51:00 · 343 阅读 · 0 评论 -
live555客户端
以下是我个人总结的(桂堂东的博客给了我很大的帮助。一会把他那篇转出来):程序从rtsp_player_task这个线程开始进入进入到live555的客户端。1:char *argv[5]={"openRTSP", "-b", "80000", "-t", ""};这是输入参数。b代表FileSink的大小具体值为80000. T代表用tcp run_live_rtsp(int ar原创 2010-04-07 13:55:00 · 4024 阅读 · 5 评论 -
在Livemedia的基础上开发自己的流媒体客户端
在Livemedia的基础上开发自己的流媒体客户端 V 0.01桂堂东一、背景... 3二、Livemedia框架介绍... 41.总体框架... 42.客户端框架... 42.1 客户端openRTSP流程... 42.2增加一种新的媒体... 92.2.1增加媒体的format 92.2.2 新媒体需要考虑的问题.转载 2010-04-07 13:59:00 · 1973 阅读 · 4 评论 -
sqlite3
做了一个星期的sqlite,感觉程序写完了,改谢谢文章了。 /************函数名:sqlite3read************************//************入口参数:char *s 代表路径,例如:/AA/BB/C AA,BB表示目录名,C表示键值,buffer代表读入的缓冲区,size代 表要读入数据的大小,type代表读出数据的类型(1:16原创 2010-04-28 17:43:00 · 236 阅读 · 0 评论 -
signal_pending(2008-11-16 22:52:46)
signal_pending( current )―――》检查当前进程是否有信号处理,返回不为0表示有信号需要处理。-ERESTARTSYS表示信号函数处理完毕后重新执行信号函数前的某个系统调用。也就是说,如果信号函数前有发生系统调用,在调度用户信号函数之前,内核会检查系统调用的返回值,看看是不是因为这个信号而中断了系统调用.如果返回值-ERESTARTSYS,并且当前调度的信号具备-EREST转载 2009-11-04 13:32:00 · 126 阅读 · 0 评论 -
atoi() fread fgets sprintf mmap (2009-04-13 10:18:06)
int m, n ; float a, b , c; FILE *fd3; char sz[5]; fd3 = fopen("/var/cpu1.info","r"); //以流方式打开 if(NULL == fd3) return 0; else { if(fgets(sz, 4, fd3) !=原创 2009-11-04 14:04:00 · 443 阅读 · 0 评论 -
电源驱动(2009-04-09 14:55:37)
做电源的有无分析要用到2410的2引脚gpd14,15脚,要取出里面的高低电平驱动程序如下:#include #include #include #include #include #include #include #include #include #include #include #include #define DEVICE_NAME "power"原创 2009-11-04 14:02:00 · 176 阅读 · 0 评论 -
irqreturn_t(2008-11-16 22:46:47)
以下是一个统计中断时间间隔的中断服务程序。irqreturn_t short_interrupt(int irq, void *dev_id, struct pt_regs *regs) { static long mytime=0; static int i=0; struct net_device *d转载 2009-11-04 13:28:00 · 482 阅读 · 0 评论 -
MEMMAP(2008-11-16 22:51:35)
1 寄存器MEMMAP的取值MEMMAP 功能 描述 00 Boot装载程序模式 中断向量从Boot Block重新映射。一般情况下,即为地址0x7FFFE00001 用户Flash模式 中断向量不重新映射,它位于Flash中。一般情况下,即转载 2009-11-04 13:31:00 · 467 阅读 · 0 评论 -
ssize_t(2008-11-16 22:53:20)
ssize_t是signed size_t,size_t是标准C库中定义的,应为unsigned int。使用强制转换可于int类型进行转换原创 2009-11-04 13:34:00 · 146 阅读 · 0 评论 -
等待队列(2008-11-16 22:56:16)
How Processes Are Organized------------------------------------ The runqueue lists group all processes in a TASK_RUNNING state. When it comes to grouping processes in other states, the variou转载 2009-11-04 13:37:00 · 137 阅读 · 0 评论 -
Linux下的shell与make(2008-11-16 23:01:02)
Linux下的shell与make一、shell1.1 什么是shell● 用户与Linux的接口● 命令解释器● 支持多用户● 支持复杂的编程语言● Shell有很多种,如:csh,tcsh,pdksh,ash,sash,zsh,bash等。Linux的缺省Shell为bash(Bourne Again Shell)。Shell是用户和操作系统之间最主要接口转载 2009-11-04 13:49:00 · 128 阅读 · 0 评论 -
ARM基础知识(2008-12-06 13:18:59)
基础知识一ARM处理器共有37个寄存器。其中包括:**31个通用寄存器,包括程序计数器(PC)在内。这些寄存器都是32位寄存器。**6个状态寄存器。这些寄存器都是32位寄存器。ARM处理器共有7种不同的处理器模式,每一种模式中都有一组相应的寄存器组。在任何时刻,可见的寄存器包括15个通用寄存器(R0-R14),一个或两个状态寄存器及程序计数器(PC)。在所有的寄存器中,有些是各模式公用一个物理寄转载 2009-11-04 13:52:00 · 105 阅读 · 0 评论 -
vsftp指定目录(2009-03-26 16:35:47)
Local_enble=yes (本地帐户能够登陆)Write_enable=no (本地帐户登陆后无权删除和修改文件)Chroot_local_user=yes (本地所有帐户都只能在自家目录)Chroot_list_enable=yes (文件中的名单可以调用)Chroot_list_file=/任意指定的路径/vsftpd.chroot_list注意:vsftpd.chroot_l原创 2009-11-04 14:00:00 · 165 阅读 · 0 评论 -
4个信号(2009-04-02 15:16:55)
SIGTERM:内核中要reboot的时候,首先会发送SIGTERM给进程,然后发送SIGKILLSIGINT:用户按下ctrl+c时,进程被中断,此时就有SIGINT信号发出SIGSEGV:段错误alarm 可设置定时器. 定时器到期时, 将产生 SIGALRM 信号setitimer 是另一个设置间隔定时器的函数, 更加灵活原创 2009-11-04 14:01:00 · 171 阅读 · 0 评论 -
2.6内核编译(2008-10-22 23:46:01)
第一次编译2.6的内核,十分不顺手,老是有问题。(fedora8,内核2。6。25) 开始的时候我用的是2.6.26的内核在root目录下解压,在make menuconfig之后没有位子可以选择arm的,在网上查了后输入命令make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig,但这也有问题,因为你在menuconfig的选项都没有被保存下来,它还原创 2009-11-04 13:12:00 · 955 阅读 · 0 评论 -
atomic_t(2008-10-23 19:58:51)
原子操作 所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位,因此这里的原子实际是使用了物理学里的物质微粒的概念。 原子操作需要硬件的支持,因此是架构相关的,其API和原子类型的定义都定义在内核源码树的include/asm/atomic.h文件中,它们都使用汇编语言实现,因为C语言并不能实现这样的操作。 原子操作转载 2009-11-04 13:21:00 · 403 阅读 · 0 评论 -
MAM(2008-11-16 22:50:17)
ARM处理器运行速度很快,当系统时钟为60Mhz时,一条指令的执行时间只需十几纳秒(ns)。Flash存储器的速度无法满足ARM处理器对指令的需求。ARM通过将内部flash部件的总线宽度扩展成128位宽度,来解决这个问题,虽然Flash的一次读写操作仍要50ns左右,但是一次操作可以获取4条ARM指令(或者八条Thumb指令),平均一条指令只有几十ns,和处理器相当。 用存储器转载 2009-11-04 13:30:00 · 243 阅读 · 0 评论 -
安装编译器(2008-11-16 22:55:12)
安装编译器很简单1.解压到相应文件夹,如/usr/local/arm2.添加路径,即编辑 /etc/bashrc,在最后添加export PATH=/usr/local/arm/3.4.1/bin/:$PATH两步搞定。没有什么很多说法原创 2009-11-04 13:35:00 · 114 阅读 · 0 评论 -
字符设备驱动相关函数及数据结构简介(2008-11-16 22:57:40)
设备号 分为主次设备号,看上去像是两个号码,但在内核中用dev_t()一种结构表示,同时不应该自己去假设赋值设备号,而是使用宏()来取得.MAJOR(dev_t dev);MINOR(dev_t dev);即使你有确定的主,次设备号也要用dev=MKDEV(int major, int minor);1.1分配设备号静态分配int register_chrdev转载 2009-11-04 13:40:00 · 337 阅读 · 0 评论 -
阻塞非阻塞(2008-11-16 22:59:00)
阻塞操作是指,在执行设备操作时,若不能获得资源,则进程挂起直到满足可操作的条件再进行操作。非阻塞操作的进程在不能进行设备操作时,并不挂起。被挂起的进程进入sleep状态,被从调度器的运行队列移走,直到等待的条件被满足。 在Linux驱动程式中,我们能够使用等待队列(wait queue)来实现阻塞操作。wait queue很早就作为一个基本的功能单位出现在Linux内核里了,他以队列为基础转载 2009-11-04 13:42:00 · 128 阅读 · 0 评论 -
usb框架2.6(2008-12-23 20:22:27)
#include #include #include #include #include #include #include #include #include #define USB_SKEL_VENDOR_ID 0xfff0#define USB_SKEL_PRODUCT_ID 0xfff0 stat转载 2009-11-04 13:56:00 · 228 阅读 · 0 评论 -
动态库静态库的完成
有一篇很好的文章关于静态库:linux下库文件的创建和使用及其他 首先说明一下头文件、库文件、库函数这三个概念的区别。头文件:即后缀为.h的文件,在其中对变量和函数原型进行了声明。库文件:提供有库函数的文件。一种是静态连接的后缀为.a的文件,在程序编译时连接;一种是共享库,文件后缀为.so,在程序运行的时候才进行连接。库函数:在库文件里提供的函数。下面,我们用一个实例介绍一下怎么样创建库文件以及原创 2010-04-28 17:59:00 · 212 阅读 · 0 评论