驱动移植 供应商无法提供相应的驱动程序,不过在 linux 最新的内核倒是有一份 pcf85363 的驱动,看代码并核对寄存器功能,是可以兼容 pcf85263 芯片.只是我们用的内核比较老 linux 4.9,rtc 子系统的接口有些变化,不能直接拿来用.根据 Linux 4.9 现有的驱动程序,修改了 pcf85363 驱动,可以正常的使用. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/dri…
之前做过STM32的usb HID复合设备,闲来看看linux下USB设备驱动是怎么一回事, 参考资料基于韦东山JZ2440开发板,以下,有错误欢迎指出. 1.准备知识 1.1USB相关概念: USB枚举过程:https://blog.csdn.net/go_str/article/details/80802452 USB其它概念: Linux platform平台总线.平台设备.平台驱动 (1)usb是主从结构,usb的传输都是主机发起: (2)usb右四种传输类型:控制.批量.中断.实时传输…
之前研究Linux设备驱动时做的零零散散的笔记,整理出来,方便以后复习. 1.1驱动程序的的角色 提供机制 例如:unix图形界面分为X服务器和窗口会话管理器 X服务器理解硬件及提供统一的接口给用户程序 窗口管理器实现了特别的策略但对硬件一无所知 目标:实现对策略透明 1.2划分内核 进程管理 负责创建和销毁进程,并处理它们与外部的联系(输入和输出). 实现了多个进程在一个单个或几个CPU之上的抽象. 内存管理 为每一个进程在有限的可用资源上建立了虚拟地址空间. 文件系统 在非结构化的硬件之上建…
一.设备驱动相关文件 1.1. 驱动框架相关文件 1.1.1. drivers/video/fbmem.c a. 创建graphics类.注册FB的字符设备驱动 fbmem_init(void) { proc_create(, NULL, &fb_proc_fops); if (register_chrdev(FB_MAJOR,"fb",&fb_fops)) printk("unable to get major %d for fb devs\n",…
最近在鼓捣lnux字符设备驱动,在网上搜集的各种关于linux设备驱动的代码和注释,要么是针对2.4的,要么是错误百出,根本就不能运行成功,真希望大家在发博客的时候能认真核对下代码的正确性,特别是要把代码的运行环境和依赖条件列举出来,否则会对读者造成很大的误解. 以下代码的运行环境为: 操作系统:debian 6 内核版本:2.6.32(amd 64) gcc版本:4.4.5 源代码如下所示(源代码确保编译可通过,运行无bug): #include<linux/module.h> #inclu…
PMBus协议规范介绍 PMBus是一套对电源进行配置.控制和监控的通讯协议标准.其最新版本为1.3,该规范还在不断演进中,比如新标准中新增的zone PMBus.AVSBus等特性.在其官网上有详细的规范文档,本节不尝试翻译规范文档,重点记录作者在了解PMBus过程中的疑问和解答. PMBus与I2C.SMBus的区别? PMBus在SMBus(System Management Bus)基础上增加了一套电源配置.控制和监控规范.SMBus最初是为电池智能管理而开发的一套标准,其基于I2C协议…
/*********************************************************************************** * * 字符设备驱动基本操作及调用流程 * * 声明: * 1. 本系列文档是在vim下编辑,请尽量是用vim来阅读,在其它编辑器下可能会 * 不对齐,从而影响阅读. * 2. 以下所有的shell命令都是在root权限下运行的; * * 2015-3-7 阴 深圳 尚观 Sbin 曾剑锋 *******************…
6.1 字符设备驱动结构 先看看字符设备驱动的架构: 6.1.1 cdev cdev结构体是字符设备的核心数据结构,用于描述一个字符设备,cdev定义如下: #include <linux/cdev.h> struct cdev { struct kobject kobj; struct module *owner; const struct file_operations *ops; // 文件操作结构体 struct list_head list; dev_t dev; // 设备号,12…
学习了将近半个月的设备驱动程序的编写,也有一些体会,这里写下来也给学习做一个总结,为后面的学习做更好的准备. 首先,个人感觉驱动程序的设计是很有套路的,最基本的要求就是要掌握这些套路.所谓的套路就是一个比较标准的流程,更具体一点就是某个函数是什么时候调用,函数的作用等.这些函数都是内核提供好了的.还有一点要注意,就是写驱动程序虽说是内核编程,但是不应该过分去了解内核的相关知识,否则目标就会转移,而不是停留在我们最根本的驱动程序的学习上了. 其次,就是对驱动类型的一些看法,由于块设备和套节字还没有…
1,printk类似于用户态的printf函数,但是比printf函数多了一个日志级别,内核中最常见的日志输出都是通过调用printk来实现的,其打印级别有8种可能的记录字串, 在头文件 <Linux/kernel.h> 里定义: KERN_EMERG  0用于紧急消息, 常常是那些崩溃前的消息. KERN_ALERT  1需要立刻动作的情形. KERN_CRIT  2严重情况, 常常与严重的硬件或者软件失效有关. KERN_ERR  3用来报告错误情况; 设备驱动常常使用KERN_ERR 来…