首页
学习
活动
专区
工具
TVP
发布

Linux驱动开发: LinuxRTC实时时钟驱动

Linux内核版本: 3.5 1.1 LinuxRTC时间读写分析 1.1.1 系统时间与RTC实时时钟时间 Linux系统包含两个时间:系统时间和RTC时间。...系统时间:是由主芯片定时器进行维护时间,一般情况都会选择芯片上最高精度定时器作为系统时间定时基准,以避免在系统运行较长时间后出现大时间偏移。特点是掉电后不保存。...内核默认选择CPU本身自带RTC作为系统实时时钟。 驱动源码\linux-3.5\drivers\rtc\ rtc-s3c.c是三星公司编写RTC驱动。.../include/linux/rtc.h 定义了与RTC有关数据结构 Linux内核源码自带RTC驱动代码存放位置: \linux-3.5\drivers\rtc\目录下全是RTC驱动示例代码...33.2798 秒,143 kB/秒 默认没有RTC驱动情况,获取系统时间是从1970年开始: 1.3.2 RTC驱动代码编写—框架示例 以下代码只是演示了RTC驱动注册框架。

37.8K10
您找到你想要的搜索结果了吗?
是的
没有找到

32.Linux-2440DMA驱动(详解)

学了这么多驱动,不难推出DMA编写套路: 1)注册DMA中断,分配缓冲区 2)注册字符设备,并提供文件操作集合fops   -> 2.1)file_operations里设置DMA硬件相关操作,...来启动DMA 由于我们是用字符设备测试方法测试,而本例子只是用两个地址之间拷贝来演示DMA作用,所以采用字符设备方式编写 1.驱动编写之前,先来讲如何分配释放缓冲区、DMA相关寄存器介绍、使用...//*handle:申请到物理起始地址   //gfp:分配出来内存参数,标志定义在,常用标志如下:     //GFP_ATOMIC 用来从中断处理和进程上下文之外其他代码中分配内存...ioctlcmd来判断是使用DMA启动两个地址之间拷贝,还是直接两个地址之间拷贝 -> 2.2)若是DMA启动,则设置DMA相关硬件,并启动DMA传输 2.1 所以,驱动代码如下所示: #include... #include #include #include #include <linux

3.7K90

Linux驱动开发_块设备驱动开发(内存模拟存储)

一、前言 块设备驱动块是Linux3大设备驱动框架之一,块设备主要是针对存储类型设备设计驱动,配合文件系统完成数据存储。...所以大致总结下:块设备驱动目的是给Linux文件系统提供底层接口。 二、编写块设备驱动思路 既然学到了驱动开发,了解到块设备开发。...在Linux下完成块设备驱动编写,主要是要完成来至文件系统存储请求,文件系统让你把数据存到那个扇区,你驱动就去存,文件系统让你从那个扇区读取输出来,驱动就去读取。...没有依赖于硬件,所以:可以在任何Linux编译安装测试,完成块设备驱动了解学习。...看懂块设备框架,使用模拟内存。 2.​ 加入SD卡驱动,配合块设备框架,完成完整块设备驱动编写。

4.4K30

linux驱动ioctl函数,Linux中与驱动相关ioctl函数

ioctl是设备驱动程序中对设备I/O通道进行管理函数,所谓对I/O通道进行管理,就是对设备一些特性进行控制,例如,在串口线上收发数据通过read/write操作,而串口波特率、校验位、停止位通过...ioctl函数是文件结构中一个属性分量,就是说如果你驱动程序提供了对ioctl支持,用户就可以在用户程序中使用ioctl函数控制设备I/O通道。...例如,我们可以在驱动程序中实现write时候检查一是否有特殊约定数据流通过,如果有的话,那么后面就跟着控制命令(一般在socket编程中常常这样做)。...要记住,用户程序所作只是通过命令码告诉驱动程序它想做什么,至于怎么解释这些命令和怎么实现这些命令,这都是驱动程序要做事情。...定义设备结构体 struct vdIn{ int fd; //设备描述符 char *videodevice; //设备节点,在linux,通用视频采集设备节点为/dev/video0 struct

2.1K180

Linux驱动之网卡驱动剖析

Linux 网络设备驱动架构 驱动架构自上而下分为4层: 协议接口层 设备接口层 设备驱动功能层 网络设备与媒介层 协议接口层 协议接口层主要功能是给上层协议提供接收和发送接口。...传递数据被描述为套接字缓冲区,用struct sk_buff结构描述,该结构体定义位于include/linux/skbuff.h中,用于在Linux网络子系统中各层之间传输数据,该结构在整个网络收发过程中贯穿始终...源码分析 笔者基于是 S5PV210 DM9000 驱动,会大体上对 DM9000 驱动源码进行分析, 分析源码位于DM9000 源码 platform 框架分析 DM9000 驱动是基于 platform...,DM9000 配置在了 16bit 模式,所以这一部分设置只有dm9000_set_io(db, 2);是成功。...NAPI 方式接收介绍 通常情况,网络驱动以中断方式接收数据,但是当数据量大时候会频繁产生中断,CPU 要频繁去处理中断导致效率低下而不如纯轮询模式。

54.8K20

Linux驱动开发-编写按键驱动

杂项设备注册函数 这篇文章介绍,如何使用杂项设备框架编写一个简单按键驱动,完成编写、编译、安装、测试等流程,了解一个杂项字符设备驱动开发流程。...>0表示未拷贝成功数量。 2. 编写按键驱动 使用杂项设备注册按键驱动,应用层使用read接口读取按键值。 编写驱动之前需要先找到按键原理图,找到按键接到CPU那个IO上。...2.1 按键驱动源代码 #include #include #include #include <linux...(*GPX3DAT&1<<5)) //判断按键是否按 { key_val=0x4; } /*数据拷贝函数: 给应用层空间赋值--将驱动数据拷贝给应用层*/ /*copy_to_user...*驱动出口--卸载驱动时候执行*/ MODULE_LICENSE("GPL"); /*设置模块许可证--GPL*/ 2.2 makefile文件 编译驱动makefile代码。

19.3K31

Linux驱动开发: USB驱动开发

注意:高速设备首先会被识别为全速设备,然后再通过集线器和设备二者的确认最后切换到高速模式。 在高速模式,采用是电流传输模式,这个时候上拉电阻需要从D+上断开。...四、 linux内核下USB相关API函数与数据结构 前面介绍了USB相关一些基础概念与重要数据结构,接下来就分析在linux内核中如何编写一个USB 驱动程序,编写与一个USB设备驱动程序方法和其他总线驱动方式类似...该宏定义在 这个宏有两个参数,第一个参数设备名,第二个参数该设备加入到模块中时对应产生设备搜索符号,这个宏生成了一个名为__mod_pci_device_table...#include /* 本程序为USB鼠标驱动程序,要安装本驱动,需要先将内核自带USB驱动程序卸载掉 */ //定义USBIDTAB 24ae:2002 static...该宏定义在 这个宏有两个参数,第一个参数设备名,第二个参数该设备加入到模块中时对应产生设备搜索符号,这个宏生成了一个名为__mod_pci_device_table

68.6K20

Linux SPI 驱动

四、指纹SPI设备驱动框架 在对硬件有了较高基础理解后,其实代码主要就是开始对SPI接口做软件实现了。...由于平台厂商通常给我们做好了spicontroller以及spicore部分,接下来总结主要是针对SPI设备驱动部分。...代码部分均来自于linuxkernel开源代码https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/?...五、总结 个人理解现在这个科技发展风口,手机、IOT、车机等终端设备齐放异彩大背景,新终端生态搭建、基础智能设备整合、大健康趋势,Sensor发展是一个非常关键驱动力,基础驱动软件能力掌握也是重中之重...,linux给了我们一个很好平台让我们能在前辈肩上进行各种高质量代码学习,我们也需抓住这个机会,在做好本质工作基础上静心努力钻研,不断前行,祝愿各位也祝愿我自己在技术道路上越走越远。

17.8K12

Linux——Linux驱动之基本理论常识总结(什么是Linux驱动Linux驱动需要掌握哪些?)

2 Linux驱动程序需要掌握内容 3 Linux驱动可参考资源 4 ARM处理器体系架构 5 ARM前世今生 ---- 0 引言 前面Linux专题中关于Linux系统编程总结了17篇博文,主要是为了提高...LinuxC编程应用能力,熟悉Linux编程应用环境,从此篇博文起开始Linux驱动总结,后面计划加一些综合实践项目练习。...Linux驱动可参考资源 Linux本身就是一个开源软件,开源好处大家都知道,资料丰富,我们做Linux驱动开发,能找到技术支持和相应资源有如下,列出,对于新手来说,建议最佳顺序是从1到5:...对上:Linux设备驱动给上层提供调用接口; 对中:Linux设备驱动要注册到内核中,标准说法是 挂载在总线上; 对:直接操作硬件,如GPIO、IIC、SPI、PWM等; 以上三个,Linux内核都提供了大量接口函数...、结构体,其实Linux驱动,就是掌握了这些东西怎么用,适应到自己要写驱动程序中。

7.7K30

LinuxGPU云服务器安装 NVIDIA Tesla 驱动

驱动安装途径: 目前腾讯云环境支持安装GPU驱动方式如下: 使用预装 GPU 驱动镜像,参考链接:https://cloud.tencent.com/document/product/560/30129...目前官网控制台支持,后台自动安装GPU驱动,如下图: image.png 安装驱动: NVIDIA Telsa GPU Linux 驱动在安装过程种需要编译 kernel module,所以要求系统安装好了...gcc 和编译 Linux Kernel Module 所依赖包,例如 kernel-devel-$(uname -r) 等。...image.png 注意:操作系统选择 Linux 64-bit 代表下载是 shell 安装文件,如果选择具体发行版下载文件则是对应包安装文件。...例如,对文件名为NVIDIA-Linux-x86_64-440.33.01.run加执行权限: # chmod +x NVIDIA-Linux-x86_64-440.33.01.run 安装当前系统对应

4.9K00

领域驱动设计-

领域服务: 基础层:是一个交互层次,为其它各层提供通用技术基础服务,包含三方工具、驱动、MQ、API网关、文件、缓存、DB、基础服务等;最常用还是提供DB持久化。...DDD四层架构规范 领域中对象由实体和值对象组成;对值对象访问必须经由其所属实体对象。 相关联一组实体和值对象组成聚合;对聚合内对象访问必须经由聚合根对象。...细化子域 领域就是问题域,有边界,领域中有很多问题; 任何一个系统要解决那个大问题都对应一个领域; 通过建立领域模型来解决领域中核心问题,模型驱动思想; 领域建模目标针对我们在领域中所关心问题...,即只针对核心关注点,而不是整个领域中所有问题; 领域模型在设计时应考虑一定抽象性、通用性,以及复用价值; 通过领域模型驱动代码实现,确保代码让领域模型落地,代码最终能解决问题; 领域模型是系统核心...,结合其他架构经验一起为业务服务,但是DDD也存在一些不足 性能:DDD是基于聚合来组织代码,对于高性能场景,加载聚合中大量无用字段会严重影响性能,比如报表场景中,直接写SQL会更简单直接; 事务:

66030

Linux系统驱动之最简单LCD驱动_基于QEMU

资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...视频观看 百问网驱动大全 百问网技术交流群,百万嵌入式工程师聚集地: https://www.100ask.net/page/2248041 最简单LCD驱动_基于QEMU 本节视频对应源码在GIT...注意: 使用QEMU不是必须 QEMU只是提供另一个角度学习方法,比如: LCD驱动:使用QEMU可以时,可以简化硬件操作 中断子系统:可以跟踪调用过程 你可以只看QEMU相关视频,不使用...为什么要用QEMU Linux驱动 = 驱动框架 + 硬件操作。 如果硬件操作足够简单,我们就可以把精力放在驱动程序框架上,这才是Linux核心。...使用QEMU,虚拟出一款简单LCD控制器,可以简化硬件操作,让我们把精力放在驱动框架上。 2.

2.7K10

Linux驱动开发IIC设备驱动投机取巧

前言 LinuxIIC驱动想必大家都耳熟能详,网上也有很多相关教程。 网上教程总结,比如: 方法问题描述Linux 3.X.X版本之后,设备树+驱动此方法是比较符合linux驱动写法。...他将会操作多个文件 上面的做法都有些困难及弊端存在,经过摸索了一遍LinuxI2C驱动框架,我发现可以很精简写一个I2C设备设备驱动。...而且是放在内核态中,这样处理一GPIO或者中断什么都很方便。 投机取巧I2C驱动 I2C设备驱动说明 投机取巧I2C驱动是参考I2C总线驱动代码实现。...分析I2C总线驱动说明 I2C总线驱动代码在linux源码中--i2c-dev.c中。 在代码中可以看到他提供一套文件操作接口,open,read,write,close接口。...i2cdev_ioctl_rdwr()接口是i2c总线驱动对从设备操作进一步封装,我们进一步看一这个函数。

1.7K20

Linux驱动开发-安装驱动参数传递

一、简介 在Linux进行C语言开发时,经常在命令行传递参数给C程序,常见Linux命令也是需要传参,这样用起来就很灵活,根据不同参数可以执行不同效果。...Linux驱动安装时也支持传递参数,和命令行上运行命令原理类似。 只不过在编写驱动时候,需要在驱动代码里提前将相关信息声明好才可以使用。...这篇文章就介绍如果在命令安装驱动时,传递参数给驱动代码,演示各种类型参数传输情况。 在驱动代码里声明传入参数类型、权限,接收变量名称。...module_param(变量名称,类型,权限) 二、在驱动代码里声明传递参数格式 /*传递整型类型数据*/ int int_data = 0; module_param(int_data, int.../kernel.h> #include #include #include #include <asm

15.2K40

详解linux 驱动编写(sd卡驱动

随着sd卡流行,sd卡在嵌入式设备上使用场景也越来越多。那下面我们可以看一linux驱动框架上是怎么处理sd卡驱动?...obj-$(CONFIG_MMC_S3C) += s3cmci.o 4、根据s3c阅读Kconfig,确认s3csd卡还依赖哪些文件 config MMC_SDHCI_S3C tristate...If unsure, say N. 5、MMC_S3C和MMC_SDHCI_S3C是主要macro,接着了解两个macro对应文件数据结构 首先看一s3cmci.c文件, static const....set_uhs_signaling = sdhci_set_uhs_signaling, }; 6 、从host角度来说,有了platform driver和上面的host driver,驱动流程就算搞清楚了...但是如果深入下去的话,还是需要好好读一sd协议,这里面花时间最多。 以上就是本文全部内容,希望对大家学习有所帮助。

12K32

Linux驱动开发: 块设备驱动开发

块设备是与字符设备并列概念, 这两类设备在 Linux驱动结构有较大差异,总体而言, 块设备驱动比字符设备驱动要复杂得多,在 I/O 操作上表现出极大不同,缓冲、 I/O 调度、请求队列等都是与块设备驱动相关概念...在Linux中,驱动对块设备输入或输出(I/O)操作,都会向块设备发出一个请求,在驱动中用request结构体描述。...但对于一些磁盘设备而言请求速度很慢,这时候内核就提供一种队列机制把这些I/O请求添加到队列中(即:请求队列),在驱动中用request_queue结构体描述。...编写块设备驱动时,使用一些单位介绍: 1. 扇区(Sectors):任何块设备硬件对数据处理基本单位。通常,1个扇区大小为512字节。(对设备而言) 2....,而不是这写一,那写一然后再回来,IO调度就是将上层发下来IO请求顺序进行重新排序以及对多个请求进行合并,这样就可以实现上述提高效率、节约磁盘目的。

31.5K30
领券