- 博客(32)
- 资源 (17)
- 收藏
- 关注
转载 linux设备驱动归纳总结(三):7.异步通知fasync
linux设备驱动归纳总结(三):7.异步通知fasync感谢diytvgy分享此文转自:http://cuaib.chinaunix.com/space.php?uid=25014876&do=blog&id=62725xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx异步通知fasync是应用于系统调用signal和sigaction函数,下面我会使用signal函数。简单的说,si
2011-05-27 16:51:00 760
原创 Linux 2.6.36以后file_operations和DECLARE_MUTEX 和kmem_cache_create的变化
<br />今天尝试在2.6.39内核上编译一个驱动, 在编译驱动时发现从2.6.36的内核开始,include/linux/semaphore.h 和 include/linux/fs.h中有了两处变化与驱动相关:<br /> <br />1, 在include/linux/semaphore.h 中<br />在编译阶段初始化的变化:<br />将#define DECLARE_MUTEX(name) 改成了 #define DEFINE_SEMAPHORE(name) <br /> <br />#
2011-05-16 17:00:00 2116
转载 Linux中put_user和memcpy的区别
<br />我在从事linux kernel开发的时候,知道user app和kernel模块之间传输数据不能使用memcpy,必须使用copy_to/from_user或是put/get_user。原因就是kernel和user app内存不能直接互访。仅仅明白到这个层次。具体为什么不能直接互访,也说不出什么来。<br />最近在ARM平台上开发,看了一下kernel中put_user的代码和关于linux kernel的资料,自己对这个问题的理解有加深了一些。现在总结如下<br />首先 Linux的k
2011-05-16 13:45:00 965
转载 在framebuffer 下 用C语言做弹球游戏,键盘控制. linux C
<br /><br />http://hi.baidu.com/pengsor/blog/item/460b2a030cc8089ed53f7cff.html<br /> <br /> <br />/*********************************************************************************<br />* fine name :jumpball.c<br />* description : jumpball in framebuffe
2011-05-09 19:32:00 1777
转载 Linux下的帧缓冲lcd应用编程及Framebuffer驱动程序模型
<br />一、Linux的帧缓冲设备<br />帧缓冲(framebuffer)是 Linux 为显示设备提供的一个接口,把显存抽象后的一种设备,他允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。这种操作是抽象的,统一的。用户不必关心物理显存的位置、换页机制等等具体细节。这些都是由Framebuffer 设备驱动来完成的。帧缓冲驱动的应用广泛,在 linux 的桌面系统中,Xwindow 服务器就是利用帧缓冲进行窗口的绘制。尤其是通过帧缓冲可显示汉字点阵,成为 Linux汉化的唯一可行方案。<b
2011-05-09 19:27:00 1382
转载 Linux系统中LCD驱动的实现原理
<br />LCD(液晶显示)模块满足了嵌入式系统日益提高的要求,它可以显示汉字、字符和图形,同时还具有低压、低功耗、 体积小、重量轻和超薄等很多优点。随着嵌入式系统的应用越来越广泛,功能也越来越强大,对系统中的人机界面的要求也越来越高,在应用需求的驱使下,许多工 作在Linux下的图形界面软件包的开发和移植工作中都涉及到底层LCD驱动的开发问题。因此在嵌入式系统中开发LCD驱动得以广泛运用。<br />本文以三星公司ARM9内核芯片S3C2410的LCD接口为基础,介绍了在Linux平台上开发嵌入式LCD
2011-05-09 19:26:00 1181
转载 framebuffer 驱动笔记
<br /> <br />http://hi.baidu.com/%D7%D4%D3%C9%B5%C6%CB%FE/blog/item/9ea758f23a1be505b17ec562.html<br /> <br /> <br />1.一般显示设备有以下三种同步信号<br /> 1. 帧同步信号<br /> 2. 行同步信号<br /> 3.像素时钟<br /> <br />2.Linux 帧缓冲设备主设备号为29 对应 /dev/fb%d设备文件<br /> <b
2011-05-09 19:24:00 491
转载 怎样写 Linux LCD 驱动程序
本文分析了frame buffer 设备驱动的主要数据结构,在此基础上介绍了LCD驱动程序的开发。 <br />基本原理通过 framebuffer ,应用程序用 mmap 把显存映射到应用程序虚拟地址空间,将要显示的数据写入这个内存空间就可以在屏幕上显示出来; 驱动程序分配系统内存作为显存;实现 file_operations 结构中的接口,为应用程序服务;实现 fb_ops 结构中的接口,控制和操作 LDC 控制器; 驱动程序将显存的起始地址和长度传给 LCD 控制器的寄存器 (一般由 fb_set_v
2011-05-09 19:21:00 493
转载 FrameBuffer
<br /> FrameBuffer<br /> <br />大家都知道Unix/Linux系统是由命令驱动的。那么最基本的系统是命令行的(就是想DOS一样的界面)。X-Window-System是Unix/Linux上的图形系统,它是通过X-Server来控制硬件的。但有一些Linux的发行版在引导的时候就会在屏幕上出现图形,这时的图形是不可能由X来完成的,那是什么机制呢?答案是FrameBuffer。<br />FrameBuffer不是一个图形系统,更不是窗口系统。它比X要低级,简单来说FrameBu
2011-05-09 19:18:00 488
转载 Linux驱动程序开发学习步骤
<br />出处:http://hi.baidu.com/crystalsoft/blog/item/06be7b2445f9b725c89559e5.html<br /> <br /> <br /> <br />1. 学会写简单的makefile<br /> <br />2. 编一应用程序,可以用makefile跑起来<br /> <br />3. 学会写驱动的makefile<br /> <br />4. 写一简单char驱动,makefile编译通过,可以insmod, lsmod, rmmod. 在
2011-05-09 18:46:00 643
转载 嵌入式linux busybox ntp时间同步
转自:http://hi.baidu.com/uc100200/blog/item/cccef6b517b512de37d3ca02.html一、背景机器装的是busybox,使用的是最小集合的linux。硬件时钟是本地时间,而内核时钟是UTC时间,没有设置时区,也没有任何时区设置的选项。二、需求这台机器需要定时进行NTP时间同步。同步之后显示给用户的是本地时间。三、过程1.时区的支持(1)hwclock为了查看硬件时钟是否为本地时间,运行命令hwclock –r。结果系统提示:“Could not ope
2011-05-09 18:39:00 9362
转载 linux用busybox制作ramdisk的方法
出处:http://hi.baidu.com/wch20088082008/blog/item/4d2cebf969574803d9f9fdf5.html 目前的嵌入式开发大多采用linux操作系统,linux操作系统运行的一般方式都是内核(如bzImage)加上根文件系统(rootfs),内核的编译裁剪说的很多,也不麻烦,我这里想说的是使用busybox来制作rootfs的方法,<br /> 废话不说那么多,我制作了一个sh脚本程序,可以直接生成我需要的ramdisk,先将脚本贴出来:<br />
2011-05-09 18:36:00 1026
转载 构建Linux根文件系统三:编译/安装Busybox
1.执行make menuconfig命令进入配置界面,配置之后保存退出即可;<br />2.编译:先修改Makefile文件,ARCH ?= arm <br />CROSS_COMPILE ?= arm-linux-<br />然后执行"make"进行编译;<br />3.安装:执行"make CONFIG_PREFIX=dir_path install"就可以将Busybox安装在dir_name指定的目录下。<br /><br />安装完成后,在dir_make目录下,就生成三个文件夹:bin, sb
2011-05-09 18:31:00 694
转载 构建Linux根文件系统二:Busybox init进程的启动
<br />出处:http://hi.baidu.com/chris_zheng/blog/item/4116c1b44625e3c337d3ca68.html<br /> <br /> <br />如果存在/etc/inittab文件,Busybox init程序解析之,然后按照文件的只是创建各种子进程,否则使用默认的配置创建子进程。/etc/inittab文件中每个条目用来定义一个子进程,并确定它的启动方法,格式如下:<br /><id>:<runlevels>:<action>:<process><b
2011-05-09 18:30:00 766
转载 构建Linux根文件系统一:内核init进程的启动分析
<br />出处:http://hi.baidu.com/chris_zheng<br /> <br />内核启动的最后一步就是启动init进程,代码在init/main.c文件中:<br />/* This is a non __init function. Force it to be noinline otherwise gcc<br />* makes it inline to init() and it becomes part of init.text section<br />*/<br />
2011-05-09 18:29:00 814
转载 BusyBox——嵌入式Linux中的瑞士军刀
<br />转自:http://hi.baidu.com/guoggn/blog/item/eefc706072bcbccc8db10d91.html<br /> <br /> <br /> <br />BusyBox (http://www.busybox.net)将数以百计的常用Unix/Linux命令集成到一个可执行文件中(名为busybox).它体积小巧, 功能却不失强大. 常用Linux命令实现的功能它都能提供. 它甚至还提供了tftp, http服务程序. 尽管少数的Linux命令的某些选项Bu
2011-05-09 18:25:00 758
转载 使用BusyBox制作linux根文件系统(CramFS+mdev)
转自:使用BusyBox制作linux根文件系统(CramFS+mdev)在此十分感谢tyoka分享技术经验,笔记很详细。操作系统:Ubuntu9.04内核版本:linux-2.6.24.7 开发板:博创arm2410s 交叉编译工具:arm-linux-gcc-4.1.1 BusyBox:busybox-1.11.1 CramFS:CramFS-1.1注意:由于要制作的根文件系统使用了mdev(BusyBox简化版的udev),因此,需要内 核支持sysfs、procfs和ramfs(t
2011-05-09 18:19:00 728
转载 Linux驱动程序开发 - 设备驱动模型初探(二)
<br />转自:http://hi.baidu.com/396954504/blog/item/556fe8d11ebac5289a502749.html<br /> <br /> platform bus 我们先来看看platform_bus的定义:<br /><br />struct device platform_bus = {<br />.bus_id = "platform",<br />};<br /><br />struct bus_type platform_bus_type = {<br
2011-05-09 18:14:00 560
转载 Linux驱动程序开发 - 设备驱动模型初探(一)
转自:http://hi.baidu.com/396954504/blog/item/ea4c6945ee29fe36cefca37e.html序言<br />从这一章开始,我们将详细的介绍Linux的设备驱动模型。Linux设备驱动模型是一个相当复杂的系统,对于初学者来说真有些无从入手。而且更加困难的是,随着新的Linux Kernel的release,Linux的设备驱动模型总会有或大或小的变化,我们将尽量展现 Linux Kernel 的这种变化。<br /><br />早期的Linux内核(版本2
2011-05-09 18:11:00 473
转载 C语言指针注意事项
<br />转自:http://hi.baidu.com/deep%5Fpro/blog/category/c%D7%A8%BC%D2%BB%FD%C0%DB<br />在这里表示---------大爱!!!!<br />我自认还算对c有点自信,没想到今天看到这点很是惊讶,今天如若不发现,难保以后不贻害无穷。<br />首先看程序<br />char *foo_err(int num)<br />{<br />char p[20]="tset string/n";<br />return &p;<br />
2011-05-09 18:09:00 973
转载 设备初始化函数宏
<br /><br />•名称描述<br />__devinit用于标记初始化设备的函数,例如,对于PCI驱动程序,用于初始化的函数pci_driver->probe就是用此宏标识的。被其它由_devinit标记的函数调用的函数通常也由_devinit标记。<br />__devexit用于标记设备卸载时被调用的函数。<br />__devexit_p用于初始化由__devexit 标记的函数的指针。如果内核既支持模块也支持热拔插,则__devexit_p(fn)返回fn,否则返回NULL。可以参考“其它优
2011-05-09 17:34:00 500
转载 bus,device,driver三者关系
<br />bus,device,driver三者关系<br />bus:<br />总线作为主机和外设的连接通道,有些总线是比较规范的,形成了很多协议。如 PCI,USB,1394,IIC等。任何设备都可以选择合适的总线连接到主机。当然主机也可能就是CPU本身。内存也是通过BUS连接到主机的,可内存 使用的总线不是外设总线,因此和内存使用相同类型的总线的设备,谈及BUS比较含糊。<br />一块网卡在嵌入式开发中,直接通过内存总线接入到CPU。我们在写网卡驱动时,要给该BUS定义就麻烦了。<br />dr
2011-05-09 17:32:00 468
转载 在驱动模块初始化函数中实现设备节点的自动创建
<br />我们在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点,当然前提条件是用户空间移植了udev。 <br />内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_create(…)函数,可以用它来创建一个类,这个类存放于sysfs下面,一旦创建好了这个类
2011-05-09 17:22:00 443
转载 Ubuntu 终端路径过长
我的是 sagacyp@sagacyp-desktop:~$然后输入命令 ls -a 的时候会看到很多前面加了一个“.”的文件吧~(那是代表隐藏文件)找到 .bashrc 并打开,用vi, vim, gedit随你,反正就是为了修改它。文件内容并不长,这里就是修改的是bash的相关内容啦,包括显示~找到 PS1= XXXXXXX 这行我这里是if [ "$color_prompt" = yes ]; then PS1='${debian_chroot:+($debian_chroot)}/[/03
2011-05-09 15:46:00 1361
转载 学习c++要记住的50句话
<br />1.把C++当成一门新的语言学习(和C没啥关系!真的。); <br />2.看《Thinking In C++》,不要看《C++变成死相》; <br />3.看《The C++ Programming Language》和《Inside The C++ Object <br />Model》,不要因为他们很难而我们自己是初学者所以就不看; <br />4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语
2011-05-07 19:31:00 1027 1
转载 如何提高程序设计能力
如何提高程序设计能力看到一篇感觉对大家有帮助的文章,是一个有几年编程经验的老员工说的,应该是对大家有启发的,就转载过来了:<br /> <br /> 1. 扎实的基础<br /> 2. 丰富的想象力<br /> 3. 最简单的是最好的<br /> 4. 不钻牛角尖<br /> 5. 对答案的渴求<br /> 6. 多与别人交流<br /> 7. 良好的编程风格<br /> 8. 韧性和毅力<br /><br />不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自
2011-05-07 19:26:00 4335
转载 详细讲解 关于Linux静态库和动态库的分析
<br />基本概念 库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。 例如:libhello.so libhello.a 为了在同一系统中使用不同版本的库,可以在库文件名后加上版本号为后缀,例如: libhello.so.1.0,由于程序连接默认以.so为文件后缀名。所以为了使用这些库,通常使用建立符号连接的方式。 ln -s libhello.so.1.0 libhello.so.1 ln -s libhello.so.1 libhello.so 1、使用库 当要使用静态的程序库时,连接器
2011-05-05 17:17:00 453
转载 Linux内核配置系统浅析---汤凯 (tangk73@hotmail.com)
<br />随着 Linux 操作系统的广泛应用,特别是 Linux 在嵌入式领域的发展,越来越多的人开始投身到 Linux 内核级的开发中。面对日益庞大的 Linux 内核源代码,开发者在完成自己的内核代码后,都将面临着同样的问题,即如何将源代码融入到 Linux 内核中,增加相应的 Linux 配置选项,并最终被编译进 Linux 内核。这就需要了解 Linux 的内核配置系统。<br />众所周知,Linux 内核是由分布在全球的 Linux 爱好者共同开发的,Linux 内核每天都面临着许多新的变化
2011-05-03 15:26:00 1509
转载 Linux 引导过程内幕---从主引导记录到第一个用户空间应用程序的指导
<br />早期时,启动一台计算机意味着要给计算机喂一条包含引导程序的纸带,或者手工使用前端面板地址/数据/控制开关来加载引导程序。尽管目前的计算机已经装备了很多工具来简化引导过程,但是这一切并没有对整个过程进行必要的简化。<br />让我们先从高级的视角来查看 Linux 引导过程,这样就可以看到整个过程的全貌了。然后将回顾一下在各个步骤到底发生了什么。在整个过程中,参考一下内核源代码可以帮助我们更好地了解内核源代码树,并在以后对其进行深入分析。<br />概述<br />图 1 是我们在 20,000
2011-05-03 15:24:00 542
转载 sed 用法简介
<br />1. sed 命令简介<br /> Sed(a stream editor)是流线型、非交互式编辑器。它允许你执行与vi编辑器里一样的编辑任务。Sed 程序不是与编辑器交互式工作的,而是让你在命令行里敲入编辑的命令,给文件命名,然后在屏幕上查看命令输出结果。<br />2. sed 如何工作<br />sed 编辑器按一次处理一行的方式来处理文件,并把输出送到屏幕上。<br />3. sed 可以用寻址的方式来决定想要编辑哪一行。<br />4. sed 命令和选项<br />选项 功
2011-05-03 14:00:00 576
转载 strsep函数用法
<br />strsep(),作为strtok的升级版,是一个很有用的字符串处理函数, 但是也有很多不方便的地方, 使用时需特别小心, 好在注意的事项都在 man strsep 里面有。如下:<br />#include <string.h><br /> char *strsep(char **stringp, const char *delim);<br />Be cautious when using this function. If you do use it, note that:<
2011-05-03 12:40:00 982
转载 多媒体常识
<br /> <br />一 基础篇<br />1.1 图形、图像和视频<br />图形(graphic):和图像与视频不同,有一种说法是图形就是自然界的客观世界不存在的图案。对于计算机中的图形研究,有专门的计算机图形学,主要的 研究对象是点、线、面等抽象事物。目前所谓的计算机显卡3D技术支持,主要就是图形技术相关的范畴。关于图形方面的开发,好象OpenGL是其中比较有名 的3D图形库。<br />图像(image):和图形相反,图像可以定位为自然界中客观存在的图案。图像处理和我们有关系的大
2011-05-01 17:45:00 927
车载终端与中心通过GPRS通信
2013-07-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人