
设备驱动
Eliot_shao
年轻人有先见之明。。。。。
展开
-
MDC/MDIO通信时序图
MDC/MDIO接口定义SMI:串行管理接口(Serial Management Interface),也被称作MII管理接口(MII Management Interface),包括MDC和MDIO两条信号线。MDIO是一个PHY的管理接口,用来读/写PHY的寄存器,以控制PHY的行为或获取PHY的状态,MDC为MDIO提供时钟。MDIO原本是为MII总线接口定义的,MII用于连接MAC...转载 2019-11-04 10:00:29 · 4833 阅读 · 0 评论 -
linux PHY驱动
本文参考3.17版本的内核,结合TI的cpsw驱动(但去掉cpsw大部分代码,保留phy相关的),追踪一下通用PHY驱动。文中使用函数及主要功能语句的形式给出调用过程。MDIO驱动Linux的mdio主要是为了管理PHY芯片寄存器的,跟踪代码发现,它会进行创建PHY设备及一些初始化工作。文件路径:drivers\net\phy\mdio_bus.c--> mdiobus_re...转载 2019-10-25 16:52:27 · 2741 阅读 · 0 评论 -
USB协通讯议--深入理解
0. 基本概念 一个【传输】(控制、批量、中断、等时):由多个【事务】组成; 一个【事务】(IN、OUT、SETUP):由一多个【Packet】组成。 USB数据在【主机软件】与【USB设备特定的端点】间被传输。【主机软件】与【USB设备特定的端点】间的关联叫做【pipes】。一个USB设备可以有多个管道(pipes)。1. 包(Packet转载 2017-06-19 15:29:49 · 617 阅读 · 1 评论 -
MIPI-DSI转HDMI
MIPI-DSI转HDMI驱动调试(lt8912)Overview屏的接口种类非常多,常见的包括RGB、HDMI、VGA、LVDS、EDP、MIPI等接口。其中,在Android移动设备上,大多采用的是MIPI接口。某些时候,由于某种需求,需要将 Android设备上的MIPI数据显示到其他接口的屏上,此时,则需要利用相关转换芯片将MIPI接口的数据转换成其他接口的数据。 比如家庭中常用的TV多数都原创 2016-09-08 09:40:35 · 25958 阅读 · 13 评论 -
在/sys下面创建属性文件
以前一直有一个疑问:驱动到底在哪里创建文件节点才有意义,才能满足应用层的需求。后来一直得不到解答,慢慢的就不干觉得有困惑。因为android的开发,从原厂拿到bsp大多数驱动都已经做好了,功能健全,通过HAL提供本地方法。其实事实还有其他的途径提供驱动接口,比如字符设备,创建一个文件节点,然后JNI层包装一下节点的操作函数,向java层提供public class;输入设备,上报按键,触摸原创 2015-11-26 18:25:38 · 3892 阅读 · 0 评论 -
Device driver development manual simplified version
Description:linux device driver model is regular ,Stand in the angle of the device driver users,just makes nodes in /dev(udev) or /sys(sysfs) .so just operate file system to build a bridge from user space file原创 2015-03-26 10:53:17 · 1371 阅读 · 0 评论 -
linux kernel的函数与抽象层
在数学领域,函数是一种关系,这种关系使一个集合里的每一个元素对应到另一个(可能相同的)集合里的唯一元素。在C语言中函数也有这种联系。自变量影响着因变量。在linux内核驱动编程经常会有抽象层的概念。硬件抽象层是位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化。它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。内核提供了简单原创 2013-06-20 13:16:49 · 2034 阅读 · 1 评论 -
The Linux device model
一提到kobject很多人就不想看了,千篇一律。但是使用这个结构,我们可以建立设备驱动模型,所以必须明白。开发驱动程序对我来说,也就是建几个目录,创几个属性文件。内核的设备驱动架构已经打好了,调几个函数来用就可以了。在sysfs文件系统里,kobject对应目录,属性(attribute)对应文件。原创 2015-03-19 17:05:21 · 1710 阅读 · 3 评论 -
从linux内核启动说起(二)
MTD分区嵌入式linux系统中的典型的分区结构图,常用的MTD设备有nandflash。在uboot和kernel中都要建立分区表,在uboot中是为了下载程序到对应的地址空间,比如下载kernel,下载根文件系统,只需要指定分区名称就可以下载;在kernel启动时会打印分区信息,挂接根文件系统。二者必须统一。Bootloader:引导加载程序,是系统上电执行的第一个程序,其原创 2013-05-13 15:46:33 · 1460 阅读 · 0 评论 -
从linux内核启动说起(三)
1、 内核启动过程分析(以ARM为例)(1)arch/arm/kernel/head.S① 确定内核是否支持该架构和单板。② 连接内核时使用的虚拟地址,所以要设置页表,使能MMU。③ 调用C函数start_kernel之前的常规工作,包括复制数据段,清除BSS段,设置栈指针,保存CPU ID到processor_id变量,保原创 2013-05-13 15:49:05 · 1797 阅读 · 0 评论 -
linux驱动移植重要的数据结构
原文转自:http://www.cnblogs.com/gumptious/对于嵌入式 Linux 系统来说,有各种体系结构的处理器和硬件平台,并且用户需要根据需求自己定制硬件板。只要是硬件平台有些变化,即使非常小,可能也需要做一些移植工作。内核移植是嵌入式Linux系统中最常见的一项工作。内核移植工作主要是修改跟硬件平台相关的代码,一般不涉及 Linux 内核通用的程序。移植转载 2012-10-21 10:06:28 · 504 阅读 · 0 评论 -
platform总线上iic probe分析笔记
/*下面是设备提供给驱动的平台数据和资源,结构体在iic.h文件中定义*/static struct s3c2410_platform_i2c default_i2c_data0 __initdata = {.flags = 0,.slave_addr = 0x10,.frequency = 100*1000,.sda_delay = 100,};static stru原创 2013-10-23 14:18:41 · 1722 阅读 · 0 评论 -
从linux内核启动说起(一)
Linux内核版本:VERSION = 3 PATCHLEVEL = 0 SUBLEVEL = 53Linux内核编译完成后会形成zImage内核文件,下载到开发板的处理器上面运行。由Bootloader将内核镜像拷贝到ram中运行,通过call_linux(0, machine_type, kernel_params_base)。 其中,machine_tpye 是Bootloa原创 2012-11-30 18:21:01 · 1237 阅读 · 0 评论 -
在s3c2440上挂载 WiFi模块
原文地址:http://blog.chinaunix.net/space.php?uid=20587912&do=blog&id=405125 在S3C2440开发上增加 USB WiFi 网卡,就可以通过无线上网。手头正好有一块现成的Zydas的WiFi网卡。试试无线通讯. 一.增加USB网卡驱动 Linux 2.6.29 加入Zydas 的转载 2012-10-21 12:39:59 · 2294 阅读 · 0 评论 -
图解Linux设备模型
udev实现了用户空间动态的方法管理/dev目录。/dev目录是设备目录,里面的文件就是设备文件。udev文件系统在用户空间工作,它可以根据sysfs文件系统导出的信息(设备号(dev)等),动态建立和删除设备文件。而不再需要使用mknod来手动建立设备文件,也不必为查找设备号(尤其是驱动中动态申请产生的设备号)而头疼。从Linux2.6以后出现了udev。Udev依赖于sysfs输出到用户空原创 2013-10-25 13:47:44 · 2096 阅读 · 0 评论 -
从linux内核启动说起~模块篇(四)
这一节主要内容讲解linux内核的模块机制。主要参考经典书籍《linux device drivers》。① 大多数小规模及中规模的应用程序从头到尾执行单个任务,而模块却只是预先注册自己一边服务于将来的某个请求,然后他的初始化函数就立即结束了。模块仅仅被链接到内核,因此它能调用的函数仅仅是由内核导出的那些函数,而不存在任何可链接的函数库。所以源文件不能包含常用的头文件。内核模块只原创 2013-05-26 22:04:56 · 2036 阅读 · 0 评论