- 博客(83)
- 资源 (4)
- 收藏
- 关注
转载 Linux内核开发之内存与I/O访问(六)
“小王,再告诉你一个好消息,今天是咱们设备驱动程序核心基础理论的最后一节课了,战斗就已经到了最后一刻了,开心不”我眉飞色舞的对小王说。“嗯,开心,我挣扎许久了,终于结束了,只是..”小王伤感的说“只是我觉得怎么能一下就没了呢, 心里空荡荡的”.“没关系的…”看着小王噘着嘴调皮而又可爱的样子,我也心软了”核心的理论是讲完了,但你不是没动过手吗,还有很多路要走呢..我还舍…”我一把蒙住自己的嘴
2012-04-20 10:27:04
2009
转载 Linux内核开发之内存与I/O访问(五)
“小王,告诉你一个好消息,最难理解的部分不知不觉中已经讲完了,今天的课程就简单多了,而且最重要的是咱们的Linux设备驱动核心理论课也差不多了…”“最难的部分?已经讲完了?我咋没感觉呢..你讲的真是太好了,太通俗易懂了,太..”小王调皮的说。“切,就你嘴甜,我还不知道你啊,小脑筋..”我白了小王一样。 那么今天呢?今天就讲讲IO内存静态映射。在将Linux移植到目标电路板中,通常会
2012-04-20 10:25:01
1862
转载 Linux内核开发之内存与I/O访问(四)
时间:晚上7点地点:寝室中..“小王,今天就不多话了,接着昨天没讲完的,不然连不起来了,都..”我催促着。 上节讲到kmalloc()申请的内存若要被映射到用户空间可以通过mem_map_reserve()设置为保留后进行。具体怎么操作呢,给你一个模版吧:// 内核模块加载函数int __init kmalloc_map_init(void){ ../申请设备号,
2012-04-20 10:24:19
1877
转载 Linux内核开发之内存与I/O访问(三)
“小王,不瞒你说,我现在是悲喜交加啊,悲的是:这最后一章,我讲的是胆颤心惊(以前自己都没学好,现在也算还账了),喜的是每讲一张,我知道离结束就近了一点,赶快把这个东西过掉,进入下一环节,那又是我牛皮吹破天的时代了”看着小王期盼和怀疑的眼神,我,昔日的风采也不见了。“没事的,小涛哥,其实说真的,不是我安慰你哈,从开始我什么都不懂,到现在我也算个入门级的高手了,都是你一手带过来的,我已经对你推崇备
2012-04-20 10:23:14
1825
转载 Linux内核开发之内存与I/O访问(二)
“小涛哥,咱们说Linux设备驱动程序说了那么久,怎么从来不说实际设备呢,顶多就说了下内存,总感觉驱动程序是和设备分离的,怎么关联起来..”小王思索着。“不错,这也正是这次讲课的内容,设备I/O端口与I/O内存的访问”我啊,禁不住拍拍她的头。 对于一块实际的设备而言,通常会提供一组寄存器来用于控制设备,读写设备和获取设备状态,也就是我们常说的控制寄存器,数据寄存器和状态寄存器。这些寄存器
2012-04-20 10:22:12
1839
转载 Linux内核开发之内存与I/O访问(一)
“小王,今天咱们开始讲有关内存和I/O访问的内容,心里先要有点低,这部分内容还是有点烦,有点难的哦”说着话,我心里都没底,怕吓着小王,不瞒你说,当时看这部分,我可是没少费劲。“哦,那咋办,不能不学是不?没事,有小涛哥在,俺就不怕”小王信心十足的说。“哦!看不出来,还让你来安慰我了”看着小王这充满信心的样子,我也没啥顾虑了。好了,深吸一口气,开始今天的课程。 我们知道,在X86中,有
2012-04-20 10:21:15
1871
转载 Linux内核开发之中断与时钟(四)
“小王,小王,今天可是这一章节最后一节了,知识点咱们前边都讲过了,今天主要是给你用前边的东西讲一个实际例子---秒字符设备驱动程序” 这个驱动程序会在被打开的时候初始化一个定时器并将其添加到内核定时器链表中,每秒输出一次当前的jiffies,这意味着,定时器处理函数中每次都要修改新的expires。不多说了,看代码分析:#include …//必要的系统头文件#define SECO
2012-04-20 09:57:03
1684
转载 Linux内核开发之中断与时钟(三)
晚上7点10分.. “小涛哥,这章不是叫Linux设备驱动程序之中断与时钟,前边你讲了中断,还给了我很多模版,我都看懂了,这次是不是要开始讲时钟了..”“真聪明,越来越喜欢你这聪明的样子了,说的不错,今天就要开始一个新的模块--内核时钟”我很少夸人,为啥今天夸她呢了,呵呵. 定时器,意思大家都明白,我就不说了,要是不明白,把它想成个闹钟总可以吧.. 定时器分为硬件和软件定时器,
2012-04-20 09:50:21
1645
转载 Linux内核开发之中断与时钟(二)
“小涛哥,快醒醒,快醒醒..”小王使劲推着睡梦中的我,“你不是说今天要讲昨天有关的典型模板实例吗…”“啊?小姐啊,现在才早上8点,还让人睡觉不,别吵”我一头钻进被子里说。“不管,谁让你昨天不说完,还卖个小关子,害我昨天晚上都没睡好,想了一晚上…”我揉揉蒙蒙的眼说:“行,权当看在你渴求的心情上,但只此一次,下不为例,我还想好好睡懒觉呢..”昨天我们讲了有关中断方面的东西,鉴于小王你不
2012-04-20 09:46:10
1593
转载 Linux内核开发之中断与时钟(一)
“小王,醒醒,开始上课了,今天咱们开始讲中断,这可是高级东西,错过不补哈”我使劲推着睡梦中的小王。“嗯?感情好啊,快点,快点”小王一听有新东西讲,像打了鸡血似的兴奋,连我都怀疑起她是不是性格中喜新厌旧。不管那么多了,我讲我的,她厌她的… 啥叫中断?就是指cpu在执行过程中,出现了某些突发事件时CPU必须暂停执行当前的程序,转去处理突发事件,处理完毕后CPU有返回原程序被中断的位置并继
2012-04-20 09:40:22
1887
转载 Linux对I/O端口资源的管理(ZZ)
几乎每一种外设都是通过读写设备上的寄存器来进行的。外设寄存器也称为“I/O端口”,通常包括:控制寄存器、状态寄存器和数据寄存器三大类,而且一个外设的寄存器通常被连续地编址。CPU对外设IO端口物理地址的编址方式有两种:一种是I/O映射方式(I/O-mapped),另一种是内存映射方式(Memory-mapped)。而具体采用哪一种则取决于CPU的体系结构。 有些体系结构的CPU(如,
2012-04-19 16:55:45
1595
转载 Linux对I/O端口资源的管理(ZZ)
几乎每一种外设都是通过读写设备上的寄存器来进行的。外设寄存器也称为“I/O端口”,通常包括:控制寄存器、状态寄存器和数据寄存器三大类,而且一个外设的寄存器通常被连续地编址。CPU对外设IO端口物理地址的编址方式有两种:一种是I/O映射方式(I/O-mapped),另一种是内存映射方式(Memory-mapped)。而具体采用哪一种则取决于CPU的体系结构。 有些体系结构的CPU(如,
2012-04-19 16:40:44
1616
转载 linux NAND驱动之六:NAND驱动的probe流程
由前面的说明可知,我们在要对NAND 芯片进行实际操作前已经为struct mtd_info 、struct mtd_partition 和struct nand_chip 这三个结构体分配好了内存,接下来就要为它们做一些初始化工作。 其中,我们需要为struct mtd_info 所做的初始化工作并不多,因为MTD Core 会在稍后为它做很多初始化工作(这些工作在nand_scan_tail这
2012-04-16 15:40:44
1741
转载 linux NAND驱动之五:NAND驱动中probe和nand_chip结构体
在基于MTD 的NAND driver 的probe 函数中,主要可以分为两部分内容,其一是与很多外设driver 类似的一些工作,如申请地址,中断,DMA 等资源,kzalloc 及初始化一些结构体,分配DMA 用的内存等等;其二就是与MTD 相关的一些特定的工作,在这里我们将只描述第二部分内容。(1)probe 函数中与MTD 相关的结构体 在probe 函数中,我们需要为三
2012-04-16 15:40:03
1909
转载 linux NAND驱动之四:6410上的NAND读写流程
MTD对NAND芯片的读写主要分三部分: A、struct mtd_info中的读写函数,如read,write_oob等,这是MTD原始设备层与FLASH硬件层之间的接口; B、struct nand_ecc_ctrl中的读写函数,如read_page_raw,write_page等,主要用来做一些与ecc有关的操作; C
2012-04-16 15:38:48
1986
转载 linux NAND驱动之三:6410平台上的NAND驱动加载
1,platform_driver 的定义和注册 在s3c_nand.c中,static struct platform_driver s3c6410_nand_driver = { .probe = s3c6410_nand_probe, .remove = s3c_nand_remove,
2012-04-16 15:14:28
1722
转载 linux NAND驱动之二:NAND存储原理
在我们开始NAND 驱动编写之前,至少应该知道:数据在NAND 中是怎样存储的,以及以怎样的方式从NAND 中读写数据的。 1,NAND 的存储结构和操作方式 这方面的资料可以从任意一种NAND 的datasheet 中得到,而且事实上,大多数的NAND datasheet 都大同小异,所不同的大概只是该NAND 芯片
2012-04-16 15:13:47
1824
转载 linux NAND驱动之一:内核中的NAND代码布局
在Linux 内核中,MTD 源代码放在/driver/mtd 目录中,该目录中包含chips 、devices 、maps 、nand 、onenand 和ubi 六个子目录。其中只有nand 和onenand 目录中的代码才与NAND 驱动相关,不过nand 目录中的代码比较通用,而onenand 目录中的代码相对于nand 中的代码而言则简化了很多,它是针对三星公司开发的另一类Flash芯片
2012-04-16 15:10:19
1784
转载 关于linux的音频驱动(二)
3. 关于sep4020_audio_write函数:这个是整个驱动的核心,也是难点,牵涉了dma操作,buffer ring的思想,linux中信号量的思想。一下内容读起来会有点吃力,请好好理解代码●关于dma:对dma的操作,在这里使用了一个buffer ring的思想,这里我们来看一下建立dma缓冲环的代码来理解这种buffer ring:static int a
2012-04-16 14:32:09
1769
转载 关于linux的音频驱动
为了实现mp3播放,我们最近在sep4020上完成了i2s的驱动,主要经验总结如下: 1. 首先是要在probe函数里进行一系列的初始化,这些初始化对于i2s是很重要的,而且很多● 配置操作codec的L3的gpio口线;L3接口相对于一个混音器控制接口,也就是对应在驱动中的mixer结构体,在这里我们需要利用3根gpio口线实现对L3的控制,以下是初始化代码:
2012-04-16 14:31:22
2274
转载 基于linux2.6.16的nand驱动开发(三)
第三部分:根据sep4020编写具体nand驱动sep4020是一款非常好优秀的arm720T芯片,以下介绍一下sep4020的nand驱动编写 1. sep4020的nand控制器只支持dma搬运,这也是考虑到一般对nand进行读写都是一页一页的,所以利用dma可以有效的提高效率。DMA也带了一个比较重要的问题,DMA的源和目的需要用实地址,因为DMA不走cpu,在这
2012-04-16 14:20:24
635
转载 基于linux2.6.16的nand驱动开发(二)
第二部分:具体的Nand Flash驱动搞清楚了MTD,内核,nandflash设备驱动的关系后,现在就是如何编写针对我们这款处理器的驱动,首先介绍一下nandflash结构struct nand_chip●. struct nand_chip { void __iomem *IO_ADDR_R; //这是nandflash的读写寄存器,对于我们的芯片是
2012-04-16 14:16:10
490
转载 基于linux2.6.16的nand驱动开发(一)
花了近三个星期,终于和阿虚一起将sep4020上的nand驱动给搞定了。 第一部分:MTD首先是花了好几天来了解nand以及在linux下nand的开发,在linux中使用了一个mtd层来作为具体的硬件设备驱动和上层文件系统的桥梁。.mtd给出了系统中所有mtd设备(nand,nor,diskonchip)的统一组织方式。使用mtd层的好处有:●1.我们要做mtd设备的驱动模块
2012-04-16 14:12:45
631
转载 Jaguar.Yuan 的Linux驱动之行——Platform驱动框架介绍(二)
二、 platform_device与驱动的联系下面这个结构 体,对于移植过系统的来说已经不陌生了,而系统也正是通过这个结构体加载相关驱动,下面这个结构体只列出比较的几个驱动程序,其实系统中远不只如此。static structplatform_device *smdk2410_devices[] __initdata = {&s3c_device_lcd,&s3c_d
2012-04-12 10:32:12
700
转载 Jaguar.Yuan 的Linux驱动之行——Platform驱动框架介绍(一)
在进行正式的大型驱动之前,有必要先看一点基础的结构,而这些结构在前面的较为简单的驱动程序中已经出现,所以这里有必要单独抽时间来看看,加强学习。至于后面所讲到的大型驱动,除USB外有单独的框架,其它驱动也不外乎是总线、设备这些基本方法的应用,实现更为复杂的功能。一、 Platform_device和Platform_driverplatform总线是Linux内核中的一个虚拟总线,它
2012-04-12 10:29:46
992
转载 linux platform 驱动模型分析
linux platform 驱动模型分析一. 概述 platform设备和驱动与linux设备模型密切相关。platform在linux设备模型中,其实就是一种虚拟总线没有对应的硬件结构。它的主要作用就是管理系统的外设资源,比如io内存,中断信号线。现在大多数处理器芯片都是soc,如s3c2440,它包括处理器内核(arm920t)和系统的外设(lcd接口,nandflash接口等
2012-04-01 14:30:52
556
转载 写一个块设备驱动 15
第 15章 (最终章) +---------------------------------------------------+| 写一个块设备驱动 | +---------------------------------------------------+ | 作者:赵磊
2012-03-30 15:23:54
1874
转载 写一个块设备驱动 14
第 14章 +---------------------------------------------------+| 写一个块设备驱动 | +---------------------------------------------------+ | 作者:赵磊
2012-03-30 15:22:53
579
转载 写一个块设备驱动 13
第 13章 +---------------------------------------------------+ | 写一个块设备驱动 | +---------------------------------------------------+ | 作者:赵磊
2012-03-30 15:22:00
539
转载 写一个块设备驱动 12
第 12章 +---------------------------------------------------+ | 写一个块设备驱动 | +---------------------------------------------------+ | 作者:赵磊
2012-03-30 15:21:21
513
转载 写一个块设备驱动 11
第 11章 +---------------------------------------------------+| 写一个块设备驱动 | +---------------------------------------------------+ | 作者:赵磊
2012-03-30 15:20:35
487
转载 写一个块设备驱动 10
第 10 章 +---------------------------------------------------+ | 写一个块设备驱动 | +---------------------------------------------------+ | 作者:赵磊
2012-03-30 15:19:41
585
转载 写一个块设备驱动 9
第 9章 +---------------------------------------------------+ | 写一个块设备驱动 | +---------------------------------------------------+ | 作者:赵磊
2012-03-30 15:17:53
628
转载 写一个块设备驱动
第 8章 +---------------------------------------------------+| 写一个块设备驱动 | +---------------------------------------------------+ | 作者:赵磊
2012-03-30 15:17:04
499
转载 写一个块设备驱动 7
第 7章 +---------------------------------------------------+ | 写一个块设备驱动 | +---------------------------------------------------+ | 作者:赵磊
2012-03-30 15:16:08
476
转载 写一个块设备驱动 6
第 6章 +---------------------------------------------------+| 写一个块设备驱动 | +---------------------------------------------------+ | 作者:赵磊
2012-03-30 15:15:14
2060
转载 写一个块设备驱动 5
第 5章 +---------------------------------------------------+| 写一个块设备驱动 | +---------------------------------------------------+ | 作者:赵磊
2012-03-30 15:13:55
527
转载 写一个块设备驱动 4
第 4章 +---------------------------------------------------+| 写一个块设备驱动 | +---------------------------------------------------+ | 作者:赵磊
2012-03-30 15:11:19
550
转载 写一个块设备驱动 3
第 3章 +---------------------------------------------------+ | 写一个块设备驱动 | +---------------------------------------------------+ | 作者:赵磊
2012-03-30 15:10:09
903
转载 写一个块设备驱动 2
第 2章 +---------------------------------------------------+| 写一个块设备驱动 | +---------------------------------------------------+ | 作者:赵磊
2012-03-30 15:07:41
564
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人