驱动开发
独角鲸
这个作者很懒,什么都没留下…
展开
-
简单的I2C协议理解
一. 技术性能: 工作速率有100K和400K两种; 支持多机通讯; 支持多主控模块,但同一时刻只允许有一个主控; 由数据线SDA和时钟SCL构成的串行总线; 每个电路和模块都有唯一的地址; 每个器件可以使用独立电源二. 基本工作原理: 以启动信号START来掌管总线,转载 2013-06-14 09:59:25 · 869 阅读 · 0 评论 -
开漏(open drain)和开集(open collector)
基础知识:开漏(open drain)和开集(open collector)发布时间:2011-05-05 15:22:52技术类别:模拟技术 在电路设计时我们常常遇到开漏(open drain)和开集(open collector)的概念。 所谓开漏电路概念中提到的“漏”就是指MOS FET的漏极。同理,开集电路中转载 2013-12-07 15:50:49 · 947 阅读 · 0 评论 -
UBIFS 烧写方法
正题,关于UBIFS的介绍在此就不多说,详见:http://www.linux-mtd.infradead.org/faq/ubifs.htmlhttp://www.linux-mtd.infradead.org/faq/ubi.html1. UBIFS文件系统镜像的制作过程1.1 所需的工具制作UBIFS镜像所需的工具有mkfs.ubifs和ubinize,可以通过以下方式获转载 2013-12-06 10:45:02 · 838 阅读 · 0 评论 -
内核抢占和低延迟
2.8.3 内核抢占和低延迟相关工作(2)如果可以抢占,则需要执行下列步骤:kernel/sched.c do { add_preempt_count(PREEMPT_ACTIVE); schedule(); sub_preempt_count(PREEMPT_ACTIVE); /* * 再转载 2013-11-12 11:29:58 · 2752 阅读 · 1 评论 -
datasheet 中 assert 和 deassertion 含义
assert: set a signal to its “active” statedeassertion: set a signal to its “inactive” stateIf a signal is active-low, “asserting” it means setting it low and “deasserting” it means setting it high原创 2013-11-12 10:37:22 · 4172 阅读 · 0 评论 -
jffs2 启动的常见的问题
Q:在启动过程中出现at91sam user.warn kernel: Empty flash at 0x00f0fffc ends at 0x00f10000问题A:在mkfs.jffs2的时候,加上-e 0x20000指定擦除块的大小。-e是指定擦除块的大小,我们使用的nandflash的块大小为128K字节,因此-e后的参数为(128*1024)10=(20000)16。 Q:启转载 2013-09-18 16:39:05 · 5291 阅读 · 0 评论 -
I cannot mount JFFS2 and see "Magic bitmask 0x1985 not found" messages
http://www.linux-mtd.infradead.org/faq/jffs2.htmlI cannot mount JFFS2 and see "Magic bitmask 0x1985 not found" messagesIf you cannot mount your JFFS2 file system and you see many messages like转载 2013-09-18 10:19:26 · 1690 阅读 · 0 评论 -
linux nand bbt 坏块管理部分
闲来无事,追踪了下linux内核中对nand的坏块管理代码。大致记录一下。内核中对nand的坏块管理是在nand的驱动中实现的,一般情况下,我们在实现nand控制器的驱动时不用考虑坏块的管理,这些机制已经在nand驱动的通用框架中实现了,我们要做的就是在nand驱动的框架上对接上nand控制器私有的操作与参数就可以了,例如读写函数以及nand控制器支持的ecc布局等。当然,这里主要是分析坏块管转载 2013-09-17 11:47:48 · 2484 阅读 · 1 评论 -
platfrom的probe的详解
probe()函数是什么时候被调用,设备和驱动是怎么联系起来的平台设备的注册platform_add_devices(ldd6410_devices, ARRAY_SIZE(ldd6410_devices)); //这是bsp中添加所有的设备--> platform_device_register(devs[i]);//注册平台设备--->platform_device_转载 2013-08-28 15:34:48 · 645 阅读 · 0 评论 -
驱动之module_init/module_exit
在前面helloworld的编写里面,我们使用了两个宏分别是module_init和module_exit,这里分析下为什么使用这两个宏。在写模块的时候有两个特殊的函数,分别是init_module和cleanup_module,这两个函数分别在insmod的时候和rmmod的时候调用,并且insmod和rmmod只识别这两个特殊的函数,可是我们前面的例子里面并没有这两个函数。怎么会这样呢,那转载 2013-06-17 09:50:02 · 3659 阅读 · 0 评论 -
对I2C总线时序的一点理解以及ACK和NACK(NAK)
关于i2c的响应问题:对于每一个接收设备(从设备,slaver),当它被寻址后,都要求在接收到每一个字节后产生一个响应。因此,the master device 必须产生一个额外的时钟脉冲(第九个脉冲)用以和这个响应位相关联。在这个脉冲期间,发出响应的从设备必须将SDA拉低并在时钟脉冲的高电平期间保持住。这表示该设备给出了一个ACK。如果它不拉低SDA线,就表示不响应(NACK)。转载 2013-12-10 13:59:16 · 1012 阅读 · 0 评论