自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

linux-tools:vim73 cscope ctags .vimrc

linux-tools:vim73 cscope ctags .vimrc

2016-03-25

车载GPS监控终端的代码 与监控中心的通讯采用GPRS

stm32 sim900a模块的gprs通信和gsm短信收发 车载GPS监控终端的完整代码,与监控中心的通讯采用GPRS

2013-07-26

利用gprs 传输gps定位信息的c源代码

这是一个利用gprs 传输gps定位信息的c源代码

2013-07-26

VC++实现GPS全球定位系统定位数据的提取

VC++实现GPS全球定位系统定位数据的提取

2013-07-26

仿真GPS接受机

这是GPS接收机仿真的程序, GPS数据由给定文件来模拟,对于GPS爱好者很实用

2013-07-26

GPS测试及接收通信程序

GPS测试及接收通信程序 gps-232

2013-07-26

tcpip协议在MCS-51上移植的C语言源代码

tcpip协议在MCS-51上移植的C语言源代码

2013-07-26

单片机c8051实现tcp/ip协议栈

在单片机c8051上成功实现tcp/ip协议栈的全部源代码

2013-07-26

gprs无线通信接口程序

基于GPRS无线网络和IP协议的数据传输系统 通信模块C51单片机程序-GPRS

2013-07-26

51单片机实现TCPIP协议

51单片机实现TCPIP协议原理图,可以参考一下

2013-07-26

车载终端与中心通过GPRS通信

本GPRS终端运输层采用UDP用户数据包协议,网络层采用IP网际协议,链路层采用PPP点对点协议。车台在32秒之内如果没有需向中心回传的信息,自动向中心回传一条网络测试信息,中心在收到此信息后必须自动回传一条确认信息。

2013-07-26

h264协议(中英文对照)H264解码手册

h264协议(中英文对照)H264解码手册

2012-05-17

移植PPP2.4.5到ARM进行TD-SCDMA网络的拨号

移植PPP2.4.5到ARM进行TD-SCDMA网络的拨号

2012-05-17

arm linux下调试Huawei的3G USB 上网模块

arm linux下调试Huawei的3G USB 上网模块

2012-05-17

PPP2.4.5的CMDA拨号在S3C2440移植方法

PPP2.4.5的CMDA拨号在S3C2440移植方法

2012-05-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除