- 博客(30)
- 收藏
- 关注
原创 阻塞与非阻塞I/O
<br />阻塞操作是指在执行I/O操作时,若不能获得资源,则进程睡眠直到满足可操作的条件时再进行操作。非阻塞操作是指是执行I/O操作时,如果设备没有准备好,立即返回。<br />在Linux中,阻塞访问是通过等待队列(wait queue)来实现的。下面先简单介绍一下。<br />(一)等待队列的实现方式<br />In Linux, a wait queue is managed by means of a “wait queue head,” a structure of<br />type wait
2010-12-14 10:07:00
817
原创 从NFS启动Linux
<br />搞嵌入式的,不懂NFS,那绝对是一个悲剧。如果你连调试一个普通的Linux C程序,都要经历“编译->打包 -> 烧写 -> 重启”这些过程,那么你离正式产品不是一天比一天远,就是产品没出,你已经厌倦了这个工作。笔者就曾经看到一个娃,在一台内存只有512MB的机器上,装了一个VMWare虚拟机,跑了一个Red Hat 9来编译调试他的ARM Linux程序——我问他为什么不用NFS。他答曰,不知为何物——于是决定在这分享分享快乐喜悦的调试方法。Linux 启动过程回顾<br />有人要多
2010-12-10 19:49:00
5412
原创 Qt/Linux 下的摄像头捕获(Video4Linux2)
Linux下使用各种设备是一件令人兴奋的事情。在Unix的世界里,用户与硬件打交待总是简单的。最近笔者在Linux下搞了摄像头的开发,有一点感想发于此处。Linux中操作一个设备一般都是打开(open),读取(read)和关闭(close)。使用Read的大多是一些字符型设备,然而对于显示屏或者摄像头这种字符设备而已,挨个字的读写将使得系统调用变得频繁,众所周之,系统调用对于系统而已是个不小的开销。于是有内存映射(mmap)等物,本例中将讲述在Linux下开发摄像头的一般过程以及使用Qt进行界面开发的实例。
2010-12-10 19:02:00
1313
原创 Linux系统多线程编程
<br />也许大家头听过,生产者-消费者 模型吧, 就是利用线程同步的方法来实现的,本博文使用线程锁的方式来实现线程同步:<br /> 头文件:<br /> **************************************************<br /> * # include <stdio.h> *<br /> * # include <pthread.h> *<br /> * # include <time.h>
2010-11-10 22:04:00
472
转载 Linux多点触碰协议
<br />为了使用功能强大的多点触控设备,一种方案是上报用户层所需的详细的手指触摸数据。这个文档所描述的多点触控协议可以让内核驱动程序向用户层上报任意多指的数据信息。<br /> 使用说明<br /> 任何一个手指的触控数据都是打包成 ABS event 包按顺序发送,只有 ABS_MT event包能作为多点触控数据被识别,调用 input_mt_sync()函数可以产生一个 SYN_MT_REPORT event ,这个函数接收并处理当前手指的信息并准备接收其它手指的触控信息。最后调用 input
2010-11-10 21:57:00
1177
1
原创 获取屏幕宽度和高度
<br />QApplication::desktop()->width() ;<br />QApplication::desktop()->height() ;<br />即得到屏幕分辨率,如1024*768,800*600.
2010-09-12 16:11:00
1090
原创 Qt子窗口全屏显示
<br /><br />Qt全屏显示函数 window.showFullScreen()<br />Qt最大化显示函数 window.showMaximized()<br />Qt最小化显示函数 window.showMinimized()<br />Qt固定尺寸显示函数 window.resize(x,y)子窗口全屏显示: 将要全屏的Qt主窗口中的子窗口调用函数setWindowFlags(Qt::Dialog),然后调用sho
2010-08-01 16:39:00
10574
3
原创 编译和移植qt-embedded-linux-opensource-src-4.5.3
最初的动机是不想使用qtopia来开发qt界面,在网上搜索到qt/embedded也是可以解决的。在网上搜索了好多关于这方面的内容,我找了一个亲身实践的来讲吧。开发平台:Ubuntu 9.10目标平台:hfrk s3c2410交叉工具:arm-linux 版本4.1.2qt版本:qt-embedded-linux-opensource-src-4.5.3 下载地址:ftp://ftp.qt.nokia.com/qt/source/qt-embedded-linux-opensource-src-4.5.3.
2010-08-01 01:39:00
6618
原创 linphone Ubuntu下运行
http://people.ubuntu.com/~happyaron/udc-cn-dev/ch03s06.html
2010-07-30 22:55:00
1488
原创 Liblinphone库的简介和使用
<br />liblinphone is a high level library to make a SIP phone. <br />This library includes ALL the features of linphone.<br />It is designed to be easy to use, directly from a user interface.<br />Its API is described in coreapi/linphonecore.h .<br />Makin
2010-07-30 13:26:00
5410
原创 gcc的使用例子
<br />gcc -o hello -O2 hello.c <br /><br />-o参数指定生成的可执行程序的文件名, -O2是优化级别。该命令会编译生成hello可执行程序<br /> <br />gcc -o libhello.so -O2 -fPIC -shared hello.c <br /><br />-fPIC参数声明链接库的代码段是可以共享的,-shared参数声明编译为共享库。请注意这次我们编译的共享库的名字叫做libhello.so,这也是Linux共享库的一个命名的惯例了:后缀使用
2010-07-30 11:14:00
894
原创 linux下开发摄像头
这次是在linux下开发摄像头的程序,主要用的是video4linux来做的,界面用qt来实现,开始准备用frame buffer来直接写屏但是效果不怎么好,后来就用qt来做了,这样用起来效果还蛮好的,帧率也可以,可以上到30fps;运用v4l来编程主要掌握其 api,要提高帧率最重要的是用到内存映射,其实用qt和frame buffer的时候都要用到内存映射来做,只有这样才可以达到较高的帧率,不过要注意资源的利用问题.mmap后一定要munmap.对于frame buffer是很有意思的一个东西,特别是驱
2010-07-18 20:50:00
961
原创 qtopia-2.2.0在S3C2410上的移植过程
I.准备工作<br /><br />交叉编译工具2.95.3:<br /> arm-linux-toolchains.tgz<br /><br />所需源码包:<br /> qtopia-free-2.2.0.tar.gz<br /> jpeg-6b-src.tar.gz<br /> e2fsprogs-1.34.tar.gz<br /><br /><br /><br />II.交叉编译<br /><br />1.安装交叉编译工具<br /><br />$su<br />#cd /<br />#tar zx
2010-07-16 19:43:00
1353
原创 Qtopia Core在嵌入式Linux上的移植及应用
<br />1 引言<br /><br />嵌入式Linux以其开放的源代码,精简高效的内核、易定制和易裁减的特征以及硬件支持广泛等优势,而深受嵌入式开发者的青睐,在消费类电子产品和工业控制、智能仪表等领域中有着广泛的应用。Qt是 Trolltech公司推出的一个跨平台的 C++图形用户界面应用程序开发框架。Qt是完全面向对象的,很容易扩展,并且允许真正的组件编程。<br /><br />Qtopia Core是适用于嵌入式 Linux 所支持的单一应用设备的主导性应用框架,能够稳定、可靠地运行于嵌入式 L
2010-07-16 19:41:00
1025
原创 枚举类型的使用
<br />enum jit_files {<br /> JIT_BUSY,<br /> JIT_SCHED,<br /> JIT_QUEUE,<br /> JIT_SCHEDTO<br />};<br /> JIT_BUSY=1<br /> JIT_SCHEDTO=4<br />
2010-07-12 11:03:00
603
原创 使模块可以添加参数
<br />static char *whom="hello";<br />static int howmany=1;<br />module_param(howmany, int, S_IRUGO----权限:读 用户);<br />module_param(whom, charp, S_IRUGO);<br />例:insmod hello.ko howmany=10 whom="abc"
2010-07-12 10:56:00
438
转载 Linux内核定时器
<br /> 定时器的使用非常方便,只需要执行一些初始化的操作,设置一个超时时间,指定超时发生时执行的函数,然后激活定时器就可以了。它的处理和工作队列还是有点类似的。其实,在Linux内核开发中,很多的操作都是类似的。还有一点需要注意的,内核定时器并不是周期运行,它在超时后自动销毁。因此,如果要实现周期轮询,就需要在定时器执行函数返回前再次激活定时器。<br />下面看看一个实现轮询操作的小例子: <br /> struct timer_list polling_timer; ini
2010-07-12 10:03:00
924
原创 编译qvfb出现cannot find -lXtst解决
<br />/usr/bin/ld: cannot find -lXtst<br />collect2: ld returned 1 exit status<br />make: *** [../../bin/qvfb] 错误 1<br />上面是错误情况<br />在终端执行sudo apt-get install libxtst-dev<br />然后继续编译就OK了
2010-06-06 17:03:00
1967
原创 编译qt-x11解决QSqlRelationalDelegate问题
<br />books/bookdelegate.h:48:34:error:QSqlRelationalDelegate: No such file or directory<br />上面是我在编译qt-x11时候遇到的问题,在编译demo的books出现这个问题,重试了好久,还是会,一开始以为是因为我多装一个QT ubuntu版本影响到,我卸载调QT,再编译,还是这个问题,干脆修改demo的Makefile,不让它编译books,ok<br />
2010-06-06 16:40:00
1383
转载 qte4.5.2+qt creator-2009.05交叉编译环境搭建法2
之前安装这个软件最后不是很成功,所以这次通过uncle Google又找到了另一种方法进行尝试。3x uncle Google,通过这次亲身体会到了uncle比baidu强大的地方来。 安装环境:VMware ACE + CentOS 5.4 交叉编译器:arm-linux-3.4.1
2010-05-20 22:30:00
2815
1
转载 ubuntu 9.04下建立Qt/Embedded 4.5开发环境
前两天由于Ubuntu8.04频繁死机,一激动给系统来了个大换血,装了个Ubuntu9.04 Final版,重新编译了一下QT4.5和Qt/Embedded 4.5。都是目前最新版本的记录如下: 说明: 我的开发环境: 【硬件】: CPU:P4 2.8 内存:2G 硬盘:160G。 【操作系统】:Ubuntu 9.0.4。 【交叉编译器】:arml
2010-05-20 09:11:00
2096
转载 Qt,Qt/E,Qtopia Core, Qtopia的区分
关于Qt,Qt/E,Qtopia Core, Qtopia这些版本之间的区别和联系,似乎在本版没有看到一个主贴讨论,总结一下个人的理解: Qt泛指Qt的所有桌面版本,比如Qt/X11,Qt Windows,Qt Mac等。由于Qt最早是在Linux中随着KDE流行开来的,因此通常很多人说的Qt都指用于Linux/Unix的Qt/X11。 Qt/E(Qt/Embe
2010-05-19 20:21:00
607
原创 u-boot 启动内核问题
网络上看到的一个网友提问的解答:回复: u-boot 启动内核问题引用:1.如何对nand 分区。修改mtdparts环境变量就可以了么?对于目前的U-boot而言,是的.而且, 设置了mtdparts变量之后,你可以在nand read/write/erase命令中直接使用分区的名字而不必指定分区的偏移位置.set bootargs noinitrd console=
2010-05-10 17:00:00
2382
原创 从头到尾配置 使用ssh与Ubuntu互传文件
我在我的虚拟机内安装了Ubuntu9.10,一直苦于没有办法使用ssh secure file transfer与Ubuntu传文件,今天无意间弄好了。现在我把具体的设置写出来:默认情况下Ubuntu是使用系统自动的连接,即Auto eth0,现在我新建mycon连接,连接的内容是,这的MAC地址我是从系统Auto eth0中复制过来的。选择IPv4,然后在里面“添加”,根据你
2010-05-08 10:33:00
3400
原创 u-boot的重要细节
主要分析流程中各函数的功能。按启动顺序罗列一下启动函数执行细节。按照函数start_armboot流程进行分析: 1)DECLARE_GLOBAL_DATA_PTR; 这个宏定义在include/global_data.h中: #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm
2010-05-08 09:55:00
2299
转载 u-boot源代码重要数据结构
1、u-boot的启动流程:从文件层面上看主要流程是在两个文件中:cpu/arm920t/start.s,lib_arm/board.c, 1)start.s 在flash中执行的引导代码,也就是bootloader中的stage1,负责初始化硬件环境,把u-boot从flash加载到RAM中去,然后跳到lib_arm/board.c中的start_armboot中去执行。
2010-05-08 09:33:00
722
转载 u-boot工程的总体结构
1、源代码组织对于ARM而言,主要的目录如下:board:存放电路板相关的目录文件,每一套板子对 应一个目录。如smdk2410(arm920t)cpu:存放CPU相关的目录文件,每一款CPU对应一个目录,例如:arm920t、 xscale、i386等目录lib_arm:存放对ARM体系结构通用的文件,主要用于实现ARM平台通用的函数,如软件浮点。common:通用的多功能函
2010-05-07 13:40:00
507
转载 用BusyBox制作根文件系统
前言: 文件系统的制作其实并没有想像中那么难。一个基本的文件系统应该包括: busybox (提供 shell 命令集)、配置文件(用来初始化和布局你的文件系统)、设备文件(如果是用 devfs 的话这个就免了)、必要的库文件系统(如果 busybox 是静态编译的话,那根本不用为 busybox 用到的库文件而烦。在我制作的文件系统里,只是为了用户程序和 qt 的运行才放置了一些库文件
2010-05-06 11:31:00
622
转载 使用busybox做一个小巧的linux操作系统
1.基础知识 一个操作系统可以简单的抽象为,引导程序 内核 文件系统。 vmlinuz是Linux 内核的镜像文件,可以被引导程序加载,从而启动Linux系统。 initrd的全称是boot loader initialized RAM disk,它是系统启动时所使用的根文件系统映像文件,这个文件系统中包含几个驱动模块,用来装载实际的根文件系统,比如一个IDE或
2010-05-06 11:16:00
510
原创 文件系统初识
在Linux中主要的文件系统有ext2/ext3/jffs2/reiserfs/cramfs/nfs/procfsext2和ext3是电脑Linux中常用的文件系统,而我们嵌入式主要用到的就是jffs2和nfs了。jffs2是用在nor flash中的文件系统,具有日志的功能。nfs文件系统更多的是用在对程序调试的时候用到,通过电脑来网络传输文件,这样就可以不关心开发板的flash大小,把程序
2010-05-05 20:14:00
444
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人