上一页 1 2 3 4 5 6 7 ··· 10 下一页
摘要: 参考资料:《Linux内核中的循环缓冲区》作者:西邮 王聪 严重感谢文章作者! 但是(可能是源码版本问题)有些结论并不正确: “而kfifo_init只会接受一个已分配好空间的fifo->buffer,不能和kfifo_free搭配,用kfifo_init分配的kfifo只能用kfree释放。” 阅读源码可以得出这样的结论:kfifo_init和kfifo_alloc分配的kfifo都能用kfree释放。已经用实验证实。原文链接地址: http://www.kerneltravel.net/jiaoliu/kern-kfifo.html在学习到第十章 中断处理 时,其中的中断驱动的I/O 阅读全文
posted @ 2011-03-27 13:45 shenhaocn 阅读(893) 评论(0) 推荐(0) 编辑
摘要: 今天进入《Linux设备驱动程序(第3版)》第五章并发和竞态的学习。对并发的管理是操作系统编程中核心的问题之一。 并发产生竞态,竞态导致共享数据的非法访问。因为竞态是一种极端低可能性的事件,因此程序员往往会忽视竞态。但是在计算机世界中,百万分之一的事件可能没几秒就会发生,而其结果是灾难性的。一、并发及其管理竞态通常是作为对资源的共享访问结果而产生的。在设计自己的驱动程序时,第一个要记住的规则是:只要可能,就应该避免资源的共享。若没有并发访问,就不会有竞态。这种思想的最明显的应用是避免使用全局变量。但是,资源的共享是不可避免的 ,如硬件资源本质上就是共享、指针传递等等。资源共享的硬性规则:(1) 阅读全文
posted @ 2011-03-27 13:42 shenhaocn 阅读(477) 评论(0) 推荐(0) 编辑
摘要: 进入《Linux设备驱动程序(第3版)》第四章调试技术的学习。一、内核中的调试支持在前面已经建议过:学习编写驱动程序要构建安装自己的内核(标准主线内核)。最重要的原因之一是:内核开发者已经建立了多项用于调试的功能。但是由于这些功能会造成额外的输出,并导致能下降,因此发行版厂商通常会禁止发行版内核中的调试功能。 为了实现内核调试,我在内核配置上增加了几项: Kernel hacking ---> [*] Magic SysRq key [*] Kernel debugging [*] Debug slab memory allocations [*] Spinlock and rw-loc 阅读全文
posted @ 2011-03-27 13:34 shenhaocn 阅读(600) 评论(0) 推荐(0) 编辑
摘要: 《Linux设备驱动程序(第3版)》第三章字符设备驱动程序的学习。 这一章主要通过介绍字符设备scull(Simple Character Utility for Loading Localities,区域装载的简单字符工具)的驱动程序编写,来学习Linux设备驱动的基本知识。scull可以为真正的设备驱动程序提供样板。一、主设备号和次设备号 主设备号表示设备对应的驱动程序;次设备号由内核使用,用于正确确定设备文件所指的设备。 内核用dev_t类型(<linux/types.h>)来保存设备编号,dev_t是一个32位的数,12位表示主设备号,20为表示次设备号。 在实际使用中,是 阅读全文
posted @ 2011-03-27 13:28 shenhaocn 阅读(820) 评论(0) 推荐(1) 编辑
摘要: 设备驱动程序的作用 设备驱动程序就是这个进入Linux内核世界的大门。设备驱动程序在Linux内核中扮演着特殊的角色。它是一个独立的“黑盒子”,使某个特定硬件响应一个定义好的内部编程接口,这些接口完全隐藏了设备的工作细节。用户的操作通过一组标准化的调用执行,而这些调用独立于特定的驱动程序。将这些调用映射到作用于实际硬件的设备特有操作上,则是设备驱动程序的任务。 设备驱动的分类 字符设备:字符(char)设备是个能够像字节流(类似文件)一样被访问的设备。字符设备驱动程序通常至少要实现open、close、read和write系统调用。 块设备:一个块设备驱动程序主要通过传输固定大小的数据来访问设 阅读全文
posted @ 2011-03-27 13:17 shenhaocn 阅读(801) 评论(0) 推荐(0) 编辑
摘要: 实际上在较新的代码中(如笔者现在用的linux-2.6.30)里面其实己经有一个通用的I2C驱动了。所以在一些简单的场合,我们其实可以不用再去写驱动,只要会用就可以了,但是会用也不是一件很简单的事情,因为关于这方面的内容很少,有些时候,我们不得不去分析一下代码,才能明白如何去用。 I2C的代码是比较少的,因为协议本身也不是很复杂。我们可以从他的代码目录开始讲起。 Linux中,关于I2C的驱动代码... 阅读全文
posted @ 2011-03-26 21:38 shenhaocn 阅读(1165) 评论(0) 推荐(0) 编辑
摘要: Ubuntu下静态IP的设置(VirtualBOX)1.设置Sun VirtualBox上的网络连接方式. 在Sun VirtualBox上找到你要设置的Ubuntu,点设置->网络->本地连接1->连接方式选择Bridged Adapter (默认选择是NAT,这是导致无法互访的关键).然后Advanced下选择你对应的网卡,这里一般会自动选择。2.在Ubuntu上设置固定IP和DNS.1)打开一个终端. 2)设置固定IP 在终端上输入sudo vi /etc/network/interfaces,一般会显示为:auto loiface lo inet loopback这里 阅读全文
posted @ 2011-03-23 23:06 shenhaocn 阅读(1277) 评论(0) 推荐(0) 编辑
摘要: autoconf/automake主要用于创建makefile,本文主要介绍一下automake的简单用法。 Ubuntu下安装automake: sudo apt-get install automake即可安装automake的相关工具。 使用automake主要会用到aclocal、autoscan、autoconf、autoheader和automake这几个命令。 首先简略的说一下用a... 阅读全文
posted @ 2011-03-20 15:33 shenhaocn 阅读(865) 评论(1) 推荐(1) 编辑
摘要: 一、概述谈到在linux系统下编写I2C驱动,目前主要有两种方式,一种是把I2C设备当作一个普通的字符设备来处理,另一种是利用linux I2C驱动体系结构来完成。下面比较下这两种驱动。第一种方法的好处(对应第二种方法的劣势)有:● 思路比较直接,不需要花时间去了解linux内核中复杂的I2C子系统的操作方法。第一种方法问题(对应第二种方法的好处)有:● 要求工程师不仅要对I2C设备的操作熟悉,而且要熟悉I2C的适配器操作;● 要求工程师对I2C的设备器及I2C的设备操作方法都比较熟悉,最重要的是写出的程序可移植性差;● 对内核的资源无法直接使用。因为内核提供的所有I2C设备器及设备驱动都是基 阅读全文
posted @ 2011-03-19 23:41 shenhaocn 阅读(446) 评论(0) 推荐(0) 编辑
摘要: 【摘 要】I2C总线是一种很通用的总线,具有简单、高效等特点,广泛应用在各种消费类电子产品及音视频设备上,在嵌入式系统的开发中也经常用到。本文分析了嵌入式linux系统中I2C驱动程序的结构,并结合一个具体的I2C时钟芯片DS1307,说明在嵌入式linux系统下开发I2C设备驱动程序的一般流程。 【关键字】I2C总线 嵌入式linux 驱动开发 1、I2C总线简介I2C (Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线最主要的优点就是简单性和有效性。1.1 I2C总线工作原理 I2C总线是由数据. 阅读全文
posted @ 2011-03-19 23:39 shenhaocn 阅读(1934) 评论(0) 推荐(0) 编辑
摘要: 学编程就和学游泳是一样的,只是纸上谈兵是学不会的。没有在实践中学习,很快就忘了所学的知识,到头来只学了个大概。至于内核版本,我使用的是从 http://www.kernel.org/ 上下载的主线标准内核Linux2.6.22.2。引用《Linux设备驱动程序(第3版)》的原话:“如果想要学习驱动程序的编写,则标准内核是最好的。”·Linux设备驱动程序学习(0)-Hello, world!模块·Linux设备驱动程序学习(1)-字符设备驱动程序·Linux设备驱动程序学习(2)-调试技术·Linux设备驱动程序学习(3)-并发和竞态·Linu 阅读全文
posted @ 2011-03-19 09:31 shenhaocn 阅读(819) 评论(0) 推荐(0) 编辑
摘要: PowerPC + Linux2.6.25平台下的SPI驱动架构分析Sailor_forever sailing_9806#163.com(本原创文章发表于Sailor_forever 的个人blog,未经本人许可,不得用于商业用途。任何个人、媒体、其他网站不得私自抄袭;网络媒体转载请注明出处,增加原文链接,否则属于侵权行为。如 有任何问题,请留言或者发邮件给sailing_9806#163.com)http://blog.csdn.net/sailor_8318/archive/2010/10/31/5977733.aspx【摘要】本文以PowerPC+Linux 2.6.25 平台为例,. 阅读全文
posted @ 2011-03-15 13:05 shenhaocn 阅读(2059) 评论(0) 推荐(0) 编辑
摘要: PowerPC + Linux2.6.25平台下的I2C驱动架构分析Sailor_forever sailing_9806#163.com(本原创文章发表于Sailor_forever 的个人blog,未经本人许可,不得用于商业用途。任何个人、媒体、其他网站不得私自抄袭;网络媒体转载请注明出处,增加原文链接,否则属于侵权行为。如 有任何问题,请留言或者发邮件给sailing_9806#163.com)http://blog.csdn.net/sailor_8318/archive/2010/09/25/5905988.aspx【摘要】本文以PowerPC+Linux 2.6.25 平台为例,. 阅读全文
posted @ 2011-03-15 13:04 shenhaocn 阅读(1174) 评论(0) 推荐(0) 编辑
摘要: 最近在看Linux 2.6.21内核的I2C驱动,也在网上查了一下资料,有错也有对,有些心得,记录下来吧。里面认识或许多有不当之处,还恳请指正。 1. I2C 协议1.1 I2C总线工作原理 I2C总线是由数据线SDA和时钟SCL构成的串行总线,各种被控制器件均并联在这条总线上,每个器件都有一个唯一的地址识别,可以作为总线上的一个发送器件或接收器件(具体由器件的功能决定)1.2 I2C总线的几种信号状态 1. 空闲状态:SDA和SCL都为高电平。 2. 开始条件(S):SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。 3. 结束条件(P):SCL为低电平时,SDA由低电平向高电平跳 阅读全文
posted @ 2011-03-15 13:02 shenhaocn 阅读(639) 评论(0) 推荐(0) 编辑
摘要: 配置tftp方法一:(推荐方法)Ubuntu10.04 测试通过1.安装TFTP软件sudo apt-get install tftp-hpa tftpd-hpatftp-hpa是客户端,tftpd-hpa是服务器端2.建立tftpboot目录,作为服务器的目录sudo mkdir ~/tftpboot释放权限:(服务器目录,需要设置权限为777,chomd 777)sudo chmod 777 ~/tftpboot3.配置TFTP服务器sudo gedit /etc/default/tftpd-hpa将原来的内容为:# /etc/default/tftpd-hpaTFTP_USERNAME= 阅读全文
posted @ 2011-03-13 22:24 shenhaocn 阅读(15526) 评论(2) 推荐(1) 编辑
上一页 1 2 3 4 5 6 7 ··· 10 下一页
Support by Shenhaocn     Google Analytics