
linux驱动
Destihang
这个作者很懒,什么都没留下…
展开
-
linux下网络驱动
在stmmac_dvr_probe函数中,一开始获取linux中的硬件资源,分配一个网络设备的内存空间alloc_etherdev(本质还是调用alloc_netdev_mqs()).,接下来比较重要的是stmmac_mac_device_setup()函数。里面将mac_device_info中的三个operations注册了回调函数,以便让接下来的函数stmmac_probe()进行调用。原创 2016-02-15 22:20:56 · 1212 阅读 · 0 评论 -
ADC按键驱动
ADC是有通道的概念的,每一个GPIO可以被复用一个ADC按键,公司芯片有8个ADC通道。至于为什么要用ADC按键,因为按键可以通过形成一个阵列的方式,每一个开关按键分到不同的电压,通过ADC就能软件判断到底是哪一个按键在产生作用。这样的话就大大提高了gpio管脚 的利用率。首先设置ADC控制器CFG模块使能位。读取ADC控制器中断位,并且清相对应的中断。当然最终要打开ADC相对应的pad原创 2016-07-04 22:16:58 · 5483 阅读 · 0 评论 -
linux下SPI驱动
进入xxx_spi_probe()函数,首先分配spi_master内存空间,spi主控制器被抽象为spi_master spi_bitbang是对spi主控制器的硬件操作函数和参数的封装。 在probe中要注册上面这些回调函数。 之后就是获得一些platform的资源(时钟,中断,内存空间等),再对spi主控制器进行复位(控制,地址,数据和命令进行写零操作)。 之后调用s原创 2016-02-15 21:41:07 · 914 阅读 · 0 评论 -
linux下DMA驱动
/** * dma_request_channel - try to allocate an exclusive channel * @mask: capabilities that the channel must satisfy * @fn: optional callback to disposition available channels * @fn_param:原创 2016-07-20 23:05:46 · 3455 阅读 · 0 评论 -
LCD驱动
因为上头任务的安排,需要将Linux上的LCD驱动移植到Nuttx(一种实时操作系统,据说现在很火,还是一个外国人自己在维护,这真是一个大牛!有很多接口和Linux上的接口都不怎么相同,甚至有的都没有相对应的接口,同时该操作系统没有底层和应用层的概念,最后所有的程序镜像都合成一个nuttx镜像,该镜像中有已经有事先写好的程序)。因为之前已经在Linux上已经写好了驱动程序,所以任务还是比较简单的,原创 2016-06-26 22:50:15 · 756 阅读 · 0 评论 -
linux下模块编译基本知识和格式
Make -c 只编译不链接Make -C切换到指定目录再执行make过程make -C $(LINUXROOT) M=$(PWD)EXTRA_CFLAGS="$(EXTRA_FLAGS)" modules当用户需要以某个内核为基础编译一个外部模块的话,程序会自动到指定的dir目录中查找模块源码,将其编译,产生ko文件。原创 2016-02-21 15:49:39 · 1194 阅读 · 0 评论 -
platform_device和platform_driver
上班已经3个月了,本来就打算工作中有什么收获就能够写出来的,虽然这段时间里看了很多linux子系统(I2C,TTY,SPI,MTD,网络,USB)相关的内容,但是,因为没有做过比较多的实践经验,所以不敢马上写出来,但是又怕过了段时间很多东西都忘了,所以还是先把这段时间的感悟和心得写下来。如果要开始写linux系统的话,我觉得就不得不从platform_device和platform_driver开原创 2016-02-14 19:59:53 · 832 阅读 · 0 评论 -
linux下TTY驱动(serial)
之前因为是刚入门所以看了串口有关的东西,一开始看了stm32f407上的串口编程(Keil MDK),那算是裸的驱动了。 linux下的串口如果要正常工作的话,就必须通过TTY这个子系统,TTY子系统算是比较复杂,概念也是比较复杂的,有三类驱动程序:控制台,串口,pty。任何tty驱动程序的主要数据结构是结构tty_driver.概念性的问题还是去看一下《linux设备驱动程序》这本书,它也原创 2016-02-15 20:28:35 · 4036 阅读 · 0 评论 -
linux下I2C驱动
说起Linux下的子系统,I2C子系统已经算是比较简单的框架了。 首先相关代码在driver/i2c下.built-in.o.cmd .i2c-dev.o.cmd algos/ i2c-boardinfo.c i2c-core.h i2c-dev.o muxes/.i2c-boardinfo.o原创 2016-02-14 21:48:29 · 1226 阅读 · 0 评论 -
linux下MTD驱动
因为之前不是很了解文件系统,所以要探究一下mtd来加深一下印象。原创 2016-02-16 21:58:02 · 7057 阅读 · 0 评论 -
linux下USB驱动
USB拓扑结构不是以总线方式的,而是一棵由几个点对点的连接构成的树,连接线由4根电缆组成(电源,地线,两个数据线)。USB主控制器负责询问每一个USB设备是否有数据需要发送,也就是说一个USB设备在没有主控制器要求的情况下是不能发送数据的。USB端点(endpoint):只能往一个方向传送数据。控制端点:用于配置设备获取设备信息,发送命令到设备或获取设备的状态报告中断端点:每当US原创 2017-01-15 23:01:32 · 1162 阅读 · 0 评论