
课题 * 工作
文章平均质量分 70
neohuo
这个作者很懒,什么都没留下…
展开
-
Linux下的多线程编程
1 引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面 的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许 多操作系统所支持,包括Windows/NT,当然,也包括Linux。 为什么有了进程的概念后,还要再引入线程呢?使用多线转载 2006-03-10 15:44:00 · 1369 阅读 · 1 评论 -
编译2.6内核模块出问题了,尚未解决.............
编译一个简单的字符设备驱动模块,第一次用2.6的内核编译,不出意外,扑面而来一个版面的错误提醒,看了一下2.6模块注册和操作函数接口定义和2.4的不同,删删改改,编译终于通过生成.o文件,insmod 一下,模块居然无法加入内核,估计要生成的是.ko文件,在网上找了一些资料,打算明天自己在编写一个makefile 下午运动了,晚上在实验室不想做事,居然想起有中国对伊拉克的原创 2006-03-01 23:19:00 · 1188 阅读 · 0 评论 -
spcaview.spcaserver源码详解(1)
首先看看对视频设备自定义的数据结构,源码在spcav4l中:struct vdIn { int fd; char *videodevice ; struct video_mmap vmmap; //内存影射 st原创 2006-04-01 00:20:00 · 4084 阅读 · 0 评论 -
Inject to Linux 2.6 问题解决 :-)
首先看看我自己编的一个驱动模块,下面是源码: asdf.c#ifndef __KERNEL__#define __KERNEL__#endif#ifndef MODULE#define MODULE#endif#include #include原创 2006-03-02 20:59:00 · 1297 阅读 · 1 评论 -
设备驱动中环形缓冲区数据存储和读写同步的实现
首先通过自定义数据结构,对缓冲区做几个基本的指针和参数进行定义:char * buffer_start, *buffer_end 指向buffer起始端和结束端的指针char *wp ,*rp 数据的读写指针int buffersize原创 2006-04-08 16:06:00 · 4353 阅读 · 0 评论 -
C++中线程使用的问题
g++编译线程老是报错:invalid conversion from void * to void*(*)(void*),郁闷许久。 原来是因为类模板D只有一个参数为void*的构造器,而只有0才能被合法转换为void*,因此,在g++上编译这段程序时,编译器将会给出如下错误信息,打开jthreadlib的源码,果然发现对Jthread类做了定义:virtual voi原创 2006-05-18 14:39:00 · 1500 阅读 · 0 评论 -
C/C++混合编译Makefile终于完全Debug了
##########################################################################name: RTP Makefile V.1.2#date: 2006 05 30#written by: chen yulin#usage: make clean# make objs原创 2006-05-31 12:47:00 · 4902 阅读 · 2 评论 -
linux下V4L视频采集总结
视频采集,调用V4L模块参数进行视频原始数据的采集。熟悉/include/linux/videodev.h,根据这个头文件来定义自己的video device的数据结构,下面是几个重要的数据结构,定义在videodev.h里 struct video_mmap vmmap;struct video_capability videocap;struct video_mbuf videombuf原创 2006-06-01 10:31:00 · 7643 阅读 · 1 评论 -
视频采集 (续)
写的有点乱.....还是要先看一下重要的数据结构struct videodev,这个自定义的数据结构描述了硬件如何采集视频信号,如何处理再传输到网络上的,由于篇幅,这里只列出重要的几项内容:struct videodev{ int fd; /*打开设备文件返回的描述符*/ char *videodevice ; struct video_mmap vmmap;原创 2006-06-02 16:07:00 · 3301 阅读 · 0 评论 -
视频网络传输机制的设计(续)
线程对系统内存的开支比进程要少,在视频Server端,采用两个线程在后台分别完成采集处理和网络传输的工作,两个线程的协调工作靠struct videodev *dev,所以在程序设计中,必须把这个数据结构设为全局变量。 首先看一下上述数据结构中对两个线程工作协调相关的参数: unsigned char* pFramebuffer:mmap返回的数据指针,原创 2006-06-09 11:05:00 · 1963 阅读 · 0 评论 -
root密码丢失解决
GRUB:在引导装载程序菜单上,键入 [e] 来进入编辑模式。 你会面对一个引导项目列表。查找其中类似以下输出 的句行: kernel /vmlinuz-2.4.18-0.4 ro root=/dev/hda2 按箭头键直到这一行被突出显示,然后按 [e]。 你现在可在文本结尾处空一格再添加 single 来告诉 GRUB 引导单用户 Linux 模式。按 [Enter] 键来使编辑结果生效。 你转载 2006-10-25 10:04:00 · 1479 阅读 · 0 评论 -
RTP/RTCP 视频数据传输 (续)
直接进入正题,经过JPEG压缩后的数据时通过RTP/RTCP协议传输到网络上去的,本课题使用的是Jrtplib的RTP/RTCP协议栈,首先在网上获取Jrtplib包的源码,解压缩配置编译安装,没有bugs就ok了 在源码包里面有好几个examples,都可以借鉴。在设置Server端的时候,与TCP/IP协议不一样,首先在初始化打开的Session的时候,设置一个bas原创 2006-06-22 14:45:00 · 3953 阅读 · 2 评论 -
下周工作计划
下周学习安排周一周二没有比赛,工作时间恢复正常周二下午北京西客站,1天半的时间,MPEG-4 + TCP,把做好框架设计用程序调试出来周三周四半决赛...周五准备linux驱动 勤奋。原创 2006-07-02 20:36:00 · 1748 阅读 · 3 评论 -
明天回家啦,庆祝一下,贡献一段源码,基于linux V4L视频采集摄像程序
/*****************************************************************************************************linux_m4v.cgcc -o linux_m4v linux_m4v.c -lc -lm -lxvidcore**********************************原创 2006-07-10 15:21:00 · 7046 阅读 · 5 评论 -
m4v文件播放程序
/********************************************************************************************* gcc -o mpeg4_player mpeg4_player.c `sdl-config --cflags --libs` -lxvidcore****************原创 2006-07-10 15:32:00 · 5735 阅读 · 3 评论 -
SPI总线协议
SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。 假设下面的8位寄存器装的是待发送的数据10101010,上升沿发送、下降沿接收、高位先发送。 那么第一个上升沿来的时候 数据将会是sdo=1;寄存器=0101010x。下降沿到来的时候,sdi上的电平将所存到寄存器中去,那么这时寄存器转载 2006-07-21 09:35:00 · 13371 阅读 · 6 评论 -
spcaview . spcaclient源码详解(2)
#include "utils.h"#include "tcputils.h"#include "spcaframe.h" 主要用到的自定义头文件1 . 在main函数中:/* default mmap */ int grabMethod = 1; int format = VIDEO_PALETTE_YUV420P;原创 2006-04-02 15:13:00 · 3050 阅读 · 1 评论 -
MobileLinux 强行超车
目前手机的开放式操作系统有Windows Mobile、Symbian、Linux和Palm。Linux的主要代表是MontaVista公司。为了能和Microsoft、Symbian争夺智能手机市场,MontaVista软件一直在不断地更新着Mobilelinux,以求更符合用户的需要。http://www.mobilinux.com/ Mobilelinux基于MontaVista转载 2006-02-25 21:38:00 · 912 阅读 · 0 评论 -
Scull字符设备驱动模块的内存使用分析
先看一下每个scull_dev的数据结构的定义:struct scull_qset { void **data; struct scull_qset *next;};struct scull_dev { struct scull_qset *data; /* Pointer to first quantum set */ int quantum;原创 2006-03-16 17:26:00 · 2513 阅读 · 0 评论 -
基于scull结构的驱动模块源码
本文主要给出完整代码,并在关键代码处标注必要说明,基础知识要点请详细察看中国电力出版社《LINUX设备驱动程序》首先看必要的头文件asdf.h:#ifndef _ASDF_H_#define _ASDF_H_#ifndef ASDF_MAJOR#define ASDF_MAJOR 0 /* dynamic major by default */#endif#ifndef ASD原创 2006-03-20 21:53:00 · 3072 阅读 · 1 评论 -
用iso映像从硬盘安装FC4
首先安装矮人工作室纯DOS软件,可以在google上搜一下:矮人DOS工具箱 4.2正式版,遍地都有下载的链接。下载完成后安装软件,设置属性,可以修改开机等待时间稍微长一点。安装完毕后,按网上安装文章上说应该出现一个boot文件夹,而我的机子上去没有发现这个文件夹,删掉再装也没有,百思不得其解(可能是我的系统安装版本的问题),打开DOS界面,到C盘根目录下dir一下,也没有,索性cd boot,居原创 2006-02-14 21:15:00 · 1731 阅读 · 0 评论 -
ARM+DSP双核HPI接口驱动设计[原创]
硬件连接设计 ARM外部I/O与HPI硬件连接 S3C2410与TMS320C6416硬件接口如图1所示, S3C2410的两根地址线ADDR[3:2]接HPI口的HCNTL[1:0],以实现ARM对HPI口3个寄存器的访问。S3C2410用ADDR4代替读写选通信号连接HPI口的HR/W。S3C2410片选信号nGCS1接到原创 2006-02-15 14:59:00 · 4321 阅读 · 2 评论 -
Linux rpm文件安装指南
1)用RPM安装软件包,最简单的命令如下:# rpm -ivh foo-1.0-l.i386.rpm (这里讲的软件包是foo-1.0-l.i386.rpm,以下都是)foo####################下面rpm就会输出该软件包的名称,并显示一个状态条。安装很简单。2)拆除已安装的软件包要反安装软件包foo,只需输入以下这行命令:# rpm -e foo注意:软件包名是foo,而不是r转载 2006-02-16 15:02:00 · 39877 阅读 · 0 评论 -
Linux下成功安装摄像头 :-)
一直 酝酿了很久,资料软件也找得差不多了,动手开始做事情拉. 首先要下载的是摄像头驱动程序,推荐使用spca5xx webcam drivers,可以到网站FreeWorld libland http://mxhaard.free.fr/download.html (这个网站虽然简陋,但是相当有水准,推荐!)上下载最新版本的驱动程序,我使用的是spca5xx-20060101.tar原创 2006-02-16 21:06:00 · 3965 阅读 · 0 评论 -
想成为嵌入式程序员应知道的0x10个基本问题(转载)
从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这是个愚蠢的问题吗?如要你答出某个字符的ASCII值。这些问题着重考察你的系统调用和内存分配策略方面的能力吗?这标志着出题者也许花时间在微机上而不是在嵌入式系统上。如果上述任何问题的答案是"是"的话,那么我知道我得认真考虑我是否应该去做这份工作。 从转载 2006-02-09 14:22:00 · 994 阅读 · 0 评论 -
一个完整的测试模块驱动程序
一个完整的test字符设备驱动程序,以下给出模块加载卸载方法以及简单的测试程序。首先编写一个test.h,定义各个接口函数以及包含的头文件:#define __NO_VERSION__#include #include #include #include #include #include #include #include #include static ssize_t read_t原创 2006-02-09 11:45:00 · 2552 阅读 · 0 评论 -
linux 驱动程序的hello world
首先,确保linux内核源码放在/usr/src下面,安装好编译器,接下来就是程序员代码,具体如下:#ifndef __KERNEL__#define __KERNEL__#endif#ifndef MODULE#define MODULE#endif#include #include MODULE_LICENSE("GPL");#ifdef CONFIG_SMP#define __S原创 2006-02-09 13:12:00 · 1882 阅读 · 0 评论 -
内存管理
一. 采用虚拟内存技术 Linux页表--三级页表 二. 页面分配与回收 所有的物理页面用包含mem_map_t结构的链表mem_map来描叙,这些结构在系统启动时初始化。每个 mem_map_t描叙了一个物理页面。 使用free_area数组管理空闲块,实现页面的分配与回收三. 内存映射 将映象连接到进程虚拟地址空间的过程称为内存映射。原创 2006-02-10 16:11:00 · 873 阅读 · 0 评论 -
设备驱动
二. 基本原理 设备由两部分组成,一个是被称为控制器的电器部分,另一个是机械部分。控制器通过系统总线加载到 电脑上。典型的方式是,一组互不冲突的寄存器组被赋予到各个控制器。I/O端口包含4组寄存器,即状态寄存器,控制寄存器,数据输入寄存器,数据输出寄存器。状态寄存器拥有可以被主机读取的(状态)位,用来 指示当前命令是否执行完毕,或者字节是否可以被读出或写入,以及任何错误提示。控制寄存器则原创 2006-02-10 16:13:00 · 1091 阅读 · 0 评论 -
PalmSource与MontaVista推Linux手机整体方案
“加入Palm Powered移动全球,将使MontaVista更加接近广阔的PalmSource开发者社群及无线生态系统,为Linux提供工具及技术,促进应用软件在功能性上更好的创新及开发,”MontaVista软件市场副总裁Peder Ulander表示,“PalmSource及Palm OS开发了领先的移动应用软件框架。我们期待加强与PalmSource合作,推出最好的产品,结合最好的移动L原创 2006-02-10 16:51:00 · 850 阅读 · 0 评论 -
Linux环境下的Socket编程
Socket建立 为了建立Socket,程序可以调用Socket函数,该函数返回一个类似于文件描述符的句柄。socket函数原型为: int socket(int domain, int type, int protocol); domain指明所使用的协议族,通常为PF_INET,表示互联网协议族(TCP/IP协议族);type参数指定socket的类型:SOCK_STREAM 或S转载 2006-02-14 11:09:00 · 1128 阅读 · 0 评论 -
展望Linux操作系统开始在移动电话上的应用[转载+评论]
移动电话市场的成熟正引起早期入市和新近入行的移动电话制造商之间的激烈竞争。随着市场增长速度放缓,移动电话制造商在替代业务方面的竞争日益加剧。其结果是,移动电话制造商杀出重围的路只有二条,要么在降低成本上胜人一筹,要么保持性能方面的领导地位。但在所有这些情况下,这一发展趋势已经迫使所有制造商全力对开发和材料清单(BOM)成本进行优化。 对运营商而言,市场成熟度已经导致他们更加关注通过附加服原创 2006-02-15 19:50:00 · 967 阅读 · 0 评论 -
ARM MPlayer移植过程
ARM MPlayer移植过程 以下是个人移植的经验,如有什么不对的地方,欢迎高手出来拍砖,谢谢! ○. 移植前的准备源代码包选用目前最新的MPlayer-1.0pre7try2.tar.bz2,这些很容易从网上找到来就不给出联结了。编译工具选择arm-linux-gcc-3.3.2.tar.bz2,这个有70多M,也忘了当初从哪里收集回来的,本人就有这些收破烂的嗜好,没转载 2006-02-21 13:30:00 · 6029 阅读 · 0 评论 -
spca5xx-LE in S3C2410
做个step by step步骤解释一下:1.下载针对2.4内核的驱动补丁,http://mxhaard.free.fr/ -〉usb-2.4.31LE06.patch;2.将这个patch放到$(KERNEL)/driver/usb下,然后常规配置: 解压:tar -xvzf usb-2.4.31LE06.patch 打补丁:patch -p1 3.根据在(KERNEL)/driver/原创 2006-08-02 15:50:00 · 4641 阅读 · 22 评论