linux驱动
protuesjzy
dfegaeg
展开
-
Linux设备驱动剖析之SPI(二)
957至962行,一个SPI控制器用一个master来描述。这里使用SPI核心的spi_alloc_master函数请求分配master。它在drivers/spi/spi.c文件中定义:struct spi_master *spi_alloc_master(struct device *dev, unsigned size){ struct spi_master *mast...转载 2019-06-25 10:07:19 · 619 阅读 · 0 评论 -
Linux设备驱动剖析之SPI(三)
572至574行,分配内存,注意对象的类型是struct spidev_data,看下它在drivers/spi/spidev.c中的定义:00000075 struct spidev_data {00000076 dev_t devt;00000077 spinlock_t spi_lock;00000078 struc...转载 2019-06-25 10:08:42 · 298 阅读 · 0 评论 -
Linux设备驱动剖析之SPI(四)
781行之前没什么好说的,直接看783行,将work投入到工作队列里,然后就返回,在这里就可以回答之前为什么是异步的问题。以后在某个合适的时间里CPU会执行这个work指定的函数,这里是s3c64xx_spi_work函数,看它的定义:00000723 static void s3c64xx_spi_work(struct work_struct *work)00000724 {00...转载 2019-06-25 10:10:06 · 292 阅读 · 0 评论 -
Linux设备驱动剖析之SPI(一)
写在前面 初次接触SPI是因为几年前玩单片机的时候,由于普通的51单片机没有SPI控制器,所以只好用IO口去模拟。最近一次接触SPI是大三时参加的校内选拔赛,当时需要用2440去控制nrf24L01,从而实现数据的无线传输。nrf24L01是一种典型的SPI接口的2.4GHz无线收发器,当时搞了很久,由于时间比较紧,而且当时根本不熟悉Linux的SPI子系统,最后虽然采用IO口模...转载 2019-06-25 10:13:30 · 387 阅读 · 0 评论 -
linux register_chrdev函数解析
在Linux2.6内核以前注册字符设备的函数接口是register_chrdev,在2.6中其可继续使用。register_chrdev大致作用:向内核注册cdev结构体,当在用户空间打开设备文件时内核可以根据设备号快速定位此设备文件的cdev->file_operations结构体,从而调用驱动底层的open,close,read,write,ioctl等函数,当我们在用户空间o...转载 2019-06-24 16:37:56 · 7583 阅读 · 0 评论 -
Linux那些事儿之我是Block层(2)注册一个块设备驱动
看完了block子系统的初始化之后,我曾一度迷茫过,也曾辗转反侧,也曾苦恼万分,我完全不知道下一步该怎么走,几经思索,思索着我和中国的未来,徘徊过后,彷徨过后,终于决定,和scsi disk驱动同步进行往下走,因为scsi disk那边会调用许多block层这边提供的函数,于是我们就在这边来看看这些函数究竟是干什么的.第一个函数当然就是register_blkdev().55 i...转载 2019-06-24 17:57:51 · 321 阅读 · 0 评论 -
linux中class_create和class_register说明
本文介绍linux中class_create和class_register的相关使用方法 1 class结构体介绍 内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_create(…)函数,可以用它来创建一个类,这个类存放于sysfs下面,一旦创建好了这个类,再调用device_create(…)函数...转载 2019-06-24 19:10:55 · 411 阅读 · 0 评论