Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1806486
  • 博文数量: 134
  • 博客积分: 2488
  • 博客等级: 大尉
  • 技术积分: 7554
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-26 21:19
个人简介

1.每日自省; 2.享受人生; 3.尽力而为; 4.坚持不懈; 5.切莫急躁; 6.慎言敏行; 7.动心忍性; 8.上善若水。

文章分类

全部博文(134)

文章存档

2014年(38)

2013年(42)

2012年(15)

2011年(39)

发布时间:2013-09-23 17:49:45

本文继续 《Linux I2C驱动分析(一)----I2C架构和总线驱动》部分,首先讲述了板级设备的注册,为讲述函数i2c_scan_static_board_info(adap)打下基础,接着又描述了I2C数据传输过程中所调用的接口函数,本文和《Linux I2C驱动分析(一)----I2C架构和总线驱动》是一种继承的关系。......【阅读全文】

阅读(15313) | 评论(1) | 转发(22)

发布时间:2013-09-17 08:51:22

        本文的RTC使用I2C接口操作pcf8563,这里针对pcf8563对Linux的RTC框架进行分析。         Linux常见的驱动在driver目录下都有一个文件夹,进入kernel主目录下的drivers/rtc,发现下面包含了许多芯片的RTC驱动,我们这里是以pcf8563.........【阅读全文】

阅读(19849) | 评论(2) | 转发(7)

发布时间:2013-09-16 11:18:03

         rtc-sysfs.c这个部分主要是有关sysfs的操作。在rtc_device_register函数中,rtc_sysfs_add_device(rtc);完成sys的操作。 void rtc_sysfs_add_device(struct rtc_device *rtc){    int err;    /* not all RTCs support both alarms an.........【阅读全文】

阅读(6855) | 评论(0) | 转发(3)

发布时间:2013-09-16 09:59:25

        在第一部分中,rtc_device_register函数调用了rtc-dev.c中的rtc_dev_prepare。 void rtc_dev_prepare(struct rtc_device *rtc) {     if (!rtc_devt)         return;     if (rtc->id >= RTC_DEV_MAX).........【阅读全文】

阅读(6275) | 评论(0) | 转发(3)

发布时间:2013-09-12 15:05:59

在学习Linux驱动的过程中,遇到一个宏叫做container_of。该宏定义在include/linux/kernel.h中,首先来贴出它的代码:/** * container_of - cast a member of a structure out to the containing structure * @ptr:        the pointer to the member. * @type:  &nbs.........【阅读全文】

阅读(1851) | 评论(0) | 转发(1)

发布时间:2013-09-05 15:16:57

IDR机制在Linux内核中指的是整数ID管理机制。实质上来讲,这就是一种将一个整数ID号和一个指针关联在一起的机制。这个机制最早在03年2月加入内核,当时作为POSIX定时器的一个补丁。现在,内核中很多地方都可以找到它的身影。 IDR机制原理:IDR机制适用在那些需要把某个整数和.........【阅读全文】

阅读(3273) | 评论(0) | 转发(2)

发布时间:2013-09-05 10:20:51

    本节中主要讲述探测函数中的初始化和移除slot,首先看下初始化:static int __init dw_mci_init_slot(struct dw_mci *host, unsigned int id){    struct mmc_host *mmc;    struct dw_mci_slot *slot;    mmc = mmc_alloc_host(sizeof(struct dw_mc.........【阅读全文】

阅读(4182) | 评论(0) | 转发(2)

发布时间:2013-09-05 09:57:59

    这一节我们看下探测函数tasklet中的两个函数,首先看下发现卡函数dw_mci_tasklet_card:static void dw_mci_tasklet_card(unsigned long data){    struct dw_mci *host = (struct dw_mci *)data;    int i;    //每个slot都执行一次,本例只有一个.........【阅读全文】

阅读(4439) | 评论(0) | 转发(3)

发布时间:2013-09-05 08:40:50

    接下来,继续第一部分,来看下DW的SD卡驱动中关于操作DAM部分,在探测函数中,主要是如下两条语句:    host->dma_ops = pdata->dma_ops;    dw_mci_init_dma(host);    由于这里是探测函数,在设备的定义中,也没有对pdata->dma_ops成员进行初始.........【阅读全文】

阅读(3430) | 评论(0) | 转发(2)

发布时间:2013-09-04 19:16:20

       分析一个驱动,一般是从module_init()和module_exit()入手,首先来看下module_init()函数。static int __init dw_mci_init(void){    return platform_driver_probe(&dw_mci_driver, dw_mci_probe);}        在platf.........【阅读全文】

阅读(6516) | 评论(0) | 转发(2)
给主人留下些什么吧!~~

Yiran_Linux2014-06-11 21:11

binggo 顶博主

回复  |  举报

apple_guet2014-01-09 09:45

ITDSLEEE:博主给力

谢谢!一起努力!

回复  |  举报

ITDSLEEE2014-01-09 09:04

博主给力

回复  |  举报
留言热议
请登录后留言。

登录 注册