linux driver
JDSH0224
这个作者很懒,什么都没留下…
展开
-
ARM Linux S3C2440之ADC驱动实现
参考:http://www.linuxidc.com/Linux/2012-02/54967.htm硬件描述:S3c2440有一个10-bit的CMOS ADC 模数转换器,支持8个模拟通道输入,10位的分辨率,最高速度可达500KSPS(500 千次/每秒)。 从图中可知:模拟ADC,包含了2部分功能,一部分是触屏功能,另一部分就是普通ADC功能,分别可以产生INT_TC和转载 2013-05-22 22:18:53 · 748 阅读 · 0 评论 -
linux CLK时钟驱动
前述:本篇linux时钟驱动以UART6串口为例。一、时钟设备寄存器配置1. UART6有两种时钟源选择APLL\UPLL(可通过技术手册查看),如图clk[uart6_aplldiv] = nuc970_clk_divider("uart6_aplldiv", "apll", REG_CLK_DIV5, 16, 3);clk[uart6_uplldiv] = n原创 2017-04-30 17:28:21 · 3536 阅读 · 0 评论 -
linux中断与定时器
linux中断分为顶半部与低半部,顶半部主要用来处理紧急的功能,如硬件中断;不能花太长的时间在处理,所以这里引入低半部,顶半部产生的中断进行登记,然后又低半部进行处理。1. linux中断编程 1.1 申请中断 int request_irq(unsigned int irq, irq_handler_t handler, unsigned long irqflags, co原创 2016-07-11 22:01:58 · 3192 阅读 · 0 评论 -
Linux spi驱动框架之执行流程
Linux spi驱动架构由三部分构成:SPI核心层、SPI控制器驱动层、和SPI设备驱动程序。原创 2016-04-24 22:45:12 · 2713 阅读 · 0 评论 -
linux I2C之RTC8025、fm24cl16
linux I2C之RTC8025、fm24cl16。原创 2016-05-02 22:37:44 · 3137 阅读 · 1 评论 -
字符设备注册platform平台驱动机制
怎么利用平台设备驱动机制来写驱动:-------------------------------------------------------------------------1.先实现设备方向的: 1)看芯片手册,和原理图获取资源 2)构建平台设备结构体,将平台资源加入进来 3)把我们的设备资源挂在到虚拟总线的设备连表中去2. 再实现设备驱动原创 2016-04-14 23:13:52 · 2252 阅读 · 0 评论 -
以太网PHY 芯片之 MII/MDIO接口详解
本文主要分析MII/RMII/SMII,以及GMII/RGMII/SGMII接口的信号定义,及相关知识,同时本文也对RJ-45接口进行了总结,分析了在10/100模式下和1000M模式下的设计方法。MII接口提供了MAC与PHY之间、PHY与STA(Station Management)之间的互联技术,该接口支持10Mb/s与100Mb/s的数据传输速率,数据传输的位宽为4位。提到MI转载 2016-04-08 00:03:54 · 4729 阅读 · 0 评论 -
linux spi驱动
最近在学习Linux spi驱动,中途出现了诸多疑问,天苍苍野茫茫,坚持总是可以看到牛羊的,本文以新唐NUC972这颗芯片为例进行逐步分析参考很有价值的两篇文章: http://www.th7.cn/system/lin/201507/122488.shtml http://blog.chinaunix.net/uid-25445243-id-4026974.html 1、SPI 总线原创 2016-04-04 16:33:17 · 1436 阅读 · 0 评论 -
linux驱动之PWM(定时器)
说明:以下由两部分组成,定时器驱动、定时器应用程序构成;1.驱动程序;#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #includ原创 2016-02-25 23:37:36 · 3202 阅读 · 0 评论 -
linux spi驱动与应用调用流程
linux spi驱动与应用调度流程一. 驱动注册流程1. static int nuc970_spi1_probe(struct platform_device *pdev)2. err = spi_bitbang_start(&hw->bitbang);3. INIT_WORK(&bitbang->work, bitbang_work);//初始化工作队列4.原创 2017-05-21 23:43:26 · 4296 阅读 · 0 评论 -
linux pinctrl驱动
前言:linux系统下采用pinctrl子系统管理所有的IO管脚,并对设备外围管脚(如串口、I2C、spi、LCD)都有相应的配置模式,本博客以pinctrl子系统细说该驱动架构。1. pinctrl设备注册、退出static int __init nuc970_pinctrl_init(void){ return platform_driver_register(&nu...原创 2017-12-11 23:40:23 · 9422 阅读 · 0 评论 -
TTY 字符设备几个重要的结构体
1. struct tty_operationsstruct tty_operations { struct tty_struct * (*lookup)(struct tty_driver *driver, struct inode *inode, int idx); int (*install)(struct tty_driver *driver, struct tty_str...原创 2019-02-24 22:59:25 · 907 阅读 · 0 评论 -
TTY驱动在注册时绑定的操作符关系
1. tty_io.c层的操作描述符static const struct file_operations tty_fops = { //对应应用层的系统调用 .llseek = no_llseek, .read = tty_read, .write = tty_write, .poll = tty_poll, .unlocked_ioctl = tty_ioctl, ....原创 2019-02-27 23:39:26 · 411 阅读 · 0 评论 -
clk_get函数实现,Linux内核时钟框架
clk_get函数实现,Linux内核时钟框架s3c2410_baseclk_add(){ ..........clkp = init_clocks_disable; for (ptr = 0; ptr < ARRAY_SIZE(init_clocks_disable); ptr++, clkp++) { ret = s3c24xx_regi...转载 2015-01-03 10:18:11 · 1135 阅读 · 0 评论 -
linux驱动之Hello world
接触驱动好多年了,但一直没有一个系统的归纳,现在重新从最简单的hello world驱动说起,后续将持续更新其它的驱动,所有的驱动TQ2440开发板进行学习 1、printk打印输出的优先级#define KERN_EMERG "<0>"/*紧急事件消息,系统崩溃之前提示,表示系统不可用*/#define KERN_ALERT "<1>"...原创 2015-01-08 22:39:21 · 692 阅读 · 0 评论 -
linux security(LSM)
LSM(Linux security module)1. security_init初始化内核启动流程:start_kernel()-->security_init()2. security_init LSM子系统初始化 static struct security_operations *security_ops; //安全操作接口static struct sec...原创 2018-05-15 18:04:47 · 2231 阅读 · 0 评论 -
linux 结构体部分成员初始化
1. 结构体 struct file_system_type { const char *name; int fs_flags;#define FS_REQUIRES_DEV 1 #define FS_BINARY_MOUNTDATA 2#define FS_HAS_SUBTYPE 4#define FS_USERNS_MOUNT 8 /* Can be mounted...原创 2017-12-03 23:05:53 · 1562 阅读 · 0 评论 -
linux phy napi
概述: NAPI是linux新的网卡数据处理API,据说是由于找不到更好的名字,所以就叫NAPI(New API),在2.5之后引入。简单来说,NAPI是综合中断方式与轮询方式的技术。中断的好处是响应及时,如果数据量较小,则不会占用太多的CPU事件;缺点是数据量大时,会产生过多中断,而每个中断都要消耗不少的CPU时间,从而导致效率反而不如轮询高。轮询方式与中断方式相反,它更适合处理...原创 2018-07-15 00:15:46 · 435 阅读 · 0 评论 -
linux kobject kobject_type kset
前言:linux设备模型包括kobject、kobject_type、kset。为了更好的理解,举个栗子:kset就像一张蜘蛛网,而在网上有许多连线的交点,这些交点就是内核对象kobject,只是kset具备内核对象kobject的归类! 1. kobject内核对象功能:路径:linux-3.10.x\include\linux\kobject.h struct...原创 2017-12-18 23:05:16 · 846 阅读 · 0 评论 -
linux驱动之按键(中断)
说明:以下由两部分组成,按键驱动、按键应用程序构成;1.驱动程序;#include #include #include #include #include #include #include #include #include #include #include #include #define DEVICE_NAME原创 2016-02-21 23:49:06 · 1250 阅读 · 0 评论 -
linux驱动之并发与竟态
一、并发与竞态1、中断屏蔽1.1中断屏蔽使用方法local_irq_disable()//屏蔽中断 .........critical section//临界区.........local_irq_enable()//开中断----------------------------------------local_irq_save(flags原创 2016-01-18 23:14:34 · 529 阅读 · 0 评论 -
linux I2C驱动
概述linux I2C体系结构由三部分组成①I2C核心:提供I2C总线驱动和设备驱动的注册、注销方法②I2C总线驱动:主要包括两个数据结构,适配器I2c_adapter(包括algorithm结构体指针)、和algorithm数据结构(最终I2C的通信是由algorithm结构控制发送与接受数据)③I2C设备驱动:是对I2C硬件体系结构中设备端的实现,两个数据结构,分别是I2c_d原创 2013-09-15 20:28:38 · 681 阅读 · 0 评论 -
linux内核外驱动编程
#include #include int __init hello_init(void){printk("My Test\n");return 0;}void __exit hello_exit(void){printk("End\n");}MODULE_LICENSE("GPL");MODULE_AUTHOR("MIKECHEN");module_init(hello_init);module原创 2013-08-10 17:36:39 · 843 阅读 · 0 评论 -
Linux arm9260 ADC驱动程序
Linux ARM9260 ADC驱动编程#include #include #include #include #include #include #include #include #include #include #include #include #define ADC_CR 0x00原创 2013-05-30 22:28:01 · 2489 阅读 · 2 评论 -
Linux设备驱动,等待队列
设备驱动程序:#include #include #include #include #include #include #include MODULE_LICENSE("GPL");#define BUF_SIZE 256#define DEVICE ((const char*)"kgrunt")struct kgrunt_原创 2013-05-28 22:08:22 · 1365 阅读 · 0 评论 -
Linux driver编程
#include #include #include void usb_dev_release(struct device *dev);struct bus_type my_usb_bus = { .name = "my_usb", //总线的名字,注册成功后会在/sys/bus/目录下看到};struct device my_usb_device原创 2013-05-28 22:04:32 · 932 阅读 · 0 评论 -
Linux bus总线
#include #include #include struct bus_type my_usb_bus = { .name = "my_usb", //总线的名字,注册成功后会在/sys/bus/目录下看到};#define COUNT_SIZE 100char data[COUNT_SIZE] = "Hello MikeChen";原创 2013-05-28 21:57:38 · 1717 阅读 · 0 评论 -
Linux 内核定时器
#include #include #include #include struct timer_list my_timer;void func(unsigned long data){ printk("time out!\n data: %ld, pid: %ld\n", data, current->pid); mod_timer(&my_t原创 2013-05-28 21:51:01 · 796 阅读 · 0 评论 -
Linux 设备编程
设备挂载到bus总线上#include #include #include void usb_dev_release(struct device *dev);struct bus_type my_usb_bus = { .name = "my_usb", //总线的名字,注册成功后会在/sys/bus/目录下看到};struct device原创 2013-05-28 22:01:22 · 890 阅读 · 0 评论 -
linux设备模型之内核集合、内核对象
引言:最近上班特无聊,发发牢骚,特地对内核对象、内核集合进行了了解,写此文章,方便日后一目了然设备模型构成:①内核对象②内核集合 一:内核对象定义:内核对象是设备模型中最基本的数据类型,内核对象与sysfs(伪文件系统,通常挂载/sys目录下)文件系统中的目录一一对应,其父子关系对应着目录的层次关系,属性对应着目录中的文件(文件名、以及文件属性)内核对象的数据类型struc原创 2013-10-18 17:22:19 · 1871 阅读 · 0 评论 -
linux驱动之S3C2440 Uart
#include #include #include /* printk() */#include /* kmalloc() */#include /* everything... */#include /* error codes */#include /* size_t */#in原创 2015-03-23 22:49:00 · 729 阅读 · 0 评论 -
ARM-Linux驱动相关头文件知识点
#include 在linux-2.6.31/include/linux下面寻找源文件#include 在linux-2.6.31/arch/arm/include/asm下面寻找源文件#include 在linux-2.6.31/arch/arm/mach-s3c2410/include/mach下面寻找源文件#include 在linux-2.6.31/arch转载 2015-03-14 10:33:49 · 471 阅读 · 0 评论 -
platform驱动管理机制
作者yuanlulu httpblogcsdnnetyuanlulu版权没有但是转载请保留此段声明第1章platform驱动管理机制platform_device数据结构注册流程platform_driverplatform使用例子lpc32xx的i2cplatform驱动的使用总结Linux资源树================转载 2015-03-07 10:02:47 · 802 阅读 · 0 评论 -
linux之软看门狗的实现
//softwareWdt.h/**功能: 监测各线程间的运行状态(软看门狗)**作者:JDSH**时间:2015-01-15 22:20*/#include #include #include #include #include "Typedef.h"#define REQUEST_WDT_MAX_NUM 20class CSoftwareWdt {pr原创 2015-01-16 22:33:25 · 4738 阅读 · 0 评论 -
linux驱动之S3C2440看门狗驱动
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #undef S3C_VA_WATCHDOG#define S3C_VA_WATCHDOG (0)#inclu原创 2015-01-11 00:33:04 · 860 阅读 · 0 评论 -
(收藏) Linux设备驱动程序学习-Linux设备模型(总线、设备、驱动程序和类)
详细的介绍:http://blog.csdn.net/funy_liu/article/details/5322040原创 2013-10-19 11:28:14 · 683 阅读 · 0 评论 -
linux驱动模块之间通信
一、EXPORT_SYMBOL内核模块函数导出机制1. 案例:笔者要实现一个功能,驱动模块(adc.ko)与驱动模块(gpio.ko)之间通信。2. 修改adc.ko驱动,在函数内部增加读取adc状态的接口函数static unsigned char g_hardware_version = 0x7e;unsigned char get_hardware_version_by_ad...原创 2019-09-07 11:58:17 · 2734 阅读 · 0 评论