
内核驱动
文章平均质量分 72
分驱动模块,介绍linux内核驱动,从基本的gpio,pinctrl到v4l2, mmc, mtd,display.
蜀远Linux
linux爱好者,目前就职于北京某芯片半导体公司,主要从事于芯片soc的bring up及驱动开发,喜欢分析linux内核内存管理、调度、中断子系统等内核机制。
展开
-
对CAN驱动中的NAPI机制的理解
NAPI 是 Linux 上采用的一种提高网络处理效率的技术,它的核心概念就是不采用中断的方式读取数据,而代之以首先采用中断唤醒数据接收的服务程序,然后 通过poll的方法来轮询数据。采用NAPI技术可以大大改善短长度数据包接收的效率,减少中断触发的时间。 可以这样理解,在NAPI机制没有出现时,由于网络设备接收数据是采用中断方式的,假设每次数...转载 2021-11-02 08:32:06 · 858 阅读 · 0 评论 -
对Linux CAN驱动的理解
在Ti的AM335X系列Cortext-A8芯片中,CAN模块采用D_CAN结构,实质即两路CAN接口。 在此分享一下对基于AM335X的Linux CAN驱动源码的理解。下面来分析它的驱动源码及其工作方式。 在Linux内核源码中,CAN设备驱动文件如下: drivers/net/can/d_can/d_can_platform.c ...转载 2021-11-01 18:03:26 · 2914 阅读 · 0 评论 -
对Socket CAN的理解(3)——【Socket CAN发送数据流程】
转载请注明出处:http://blog.youkuaiyun.com/Righthek 谢谢! 对于本文,我们将从用户层使用Socket CAN进行数据发送时,数据从用户空间到底层驱动的整个通信流程,用户层使用Socket CAN可参考上一篇文章《对Socket CAN的理解(2)——【Socket的原理及使用】》。 当我们在用户层通过socket进行CAN...转载 2021-11-02 09:52:02 · 3011 阅读 · 0 评论 -
对Socket CAN的理解(3)——【Socket CAN发送数据流程】
转载请注明出处:http://blog.youkuaiyun.com/Righthek 谢谢! 对于本文,我们将从用户层使用Socket CAN进行数据发送时,数据从用户空间到底层驱动的整个通信流程,用户层使用Socket CAN可参考上一篇文章《对Socket CAN的理解(2)——【Socket的原理及使用】》。 当我们在用户层通过socket进行CAN...转载 2021-11-02 10:20:52 · 1113 阅读 · 0 评论 -
对Socket CAN的理解(5)——【Socket CAN控制器的初始化过程】
转载请注明出处:http://blog.youkuaiyun.com/Righthek 谢谢! 对于一般的CAN模块,进行初始化时,最关键的是以下两步: 1、 配置CAN的位时序; 2、 配置CAN的消息报文; ...转载 2021-11-02 11:05:10 · 909 阅读 · 0 评论 -
对Socket CAN的理解(1)——【CAN总线原理】
转载请注明出处:http://blog.youkuaiyun.com/Righthek 谢谢! 由于Socket CAN涉及到CAN总线协议、套接字、Linux网络设备驱动等。因此,为了能够全面地了解Socket CAN的原理。我们需要了解以下几个方面的知识点: (1)CAN总线协议; (2)Socket原理; (3)Linux网络设备驱动; 当熟悉以下三个方面的知识点后,我们再去分析基于Linux...转载 2021-11-02 09:38:54 · 1529 阅读 · 0 评论 -
对Socket CAN的理解(4)——【Socket CAN接收数据流程】
转载请注明出处:http://blog.youkuaiyun.com/Righthek 谢谢! 现在我们来分析一下CAN总线的接收数据流程,对于网络设备,数据接收大体上采用中断+NAPI机制进行数据的接收。同样,我们现在的CAN模块也是采用同样的方式进行数据的接收。由于我们只针对CAN总线接收数据这条主线进行分析。因些,会忽略一些针对CAN协议的...转载 2021-11-02 10:49:49 · 1493 阅读 · 0 评论 -
CAN总线详解
1、简介 CAN是控制器局域网络(Controller Area Network, CAN)的简称,是一种能够实现分布式实时控制的串行通信网络。 优点: 传输速度最高到1Mbps,通信距离最远到10km,无损位仲裁机制,多主结构。近些年来,CAN控制器价格越来越低。 Ø 低成本:ECUs通过单个CAN接口进行通信,布线成本低。 Ø 高集成:CAN总线系统允许在所有ECUs上进行集中错误诊断和配置。 Ø ...转载 2021-11-01 16:44:16 · 6322 阅读 · 0 评论 -
对Socket CAN的理解(2)——【Socket的原理及使用】
转载请注明出处:http://blog.youkuaiyun.com/Righthek 谢谢! 为了能够对Socket CAN的深入理解,我们需要了解Socket的机制。...转载 2021-11-02 09:49:30 · 4194 阅读 · 0 评论 -
Linux mmc驱动框架(1)——基本概念
Linux mmc驱动框架 SD/MMC/SDIO基础概念的介绍MMC驱动目录结构Linux MMC子系统代码结构SD总线协议CommandsCard registerResponse SD/MMC/SDIO基础概念的介绍 SD/MMC/SDIO基础概念的介绍...转载 2021-11-03 11:22:12 · 921 阅读 · 0 评论 -
Linux mmc驱动框架(2)——重要数据结构
Linux mmc驱动框架 概述mmc_hostmmc_cardmmc_iosmmc_dirvermmc_bus_opsmmc_host_opsmmc_commandmmc_datammc_requestsdio_func 概述 数据结构描述struct mmc_ho...转载 2021-11-03 11:26:18 · 954 阅读 · 0 评论 -
Linux mmc驱动框架(4)——卡检测及初始化
Linux mmc驱动框架 卡检测函数SD卡初始化MMC卡初始化SDIO卡初始化热插拔内核自带GPIO热插拔设备树配置 总结 上文讲到mmc_add_host函数执行到最后会激活卡检测的延迟工作队列。延迟工作队列的执行函数为mmc_rescan,即卡检测函数...转载 2021-11-03 11:29:25 · 1402 阅读 · 0 评论 -
Linux mmc驱动框架(3)——host驱动初始化
Linux mmc驱动框架 Host驱动设备树Host驱动platform_driver数据结构控制器驱动初始化函数`sunxi_mmc_probe->mmc_add_host``sunxi_mmc_probe->mmc_add_host->mmc_star...转载 2021-11-03 11:27:39 · 850 阅读 · 0 评论 -
eMMC(三)——工作模式
目录 Overview 1. Boot Operation Mode 1.1 Boot From eMMC Device 1.2 Boot Acknowledge 1.3 Boot Bus 配置 1.4 Boot Data 更新 2. Device Identification Mode 2.1 设备复位 2.2. Voltage Range 2.3 Memory Access ...转载 2021-11-02 14:56:26 · 1651 阅读 · 0 评论 -
SD3.0协议解读三
SD卡功能描述 所有主机和SD卡间的通信都是由主机控制的,这和USB是一致的,例如:U盘并没有主动通知USB控制器的能力,USB鼠标也没有主动通知USB控制器的能力,当然,SD卡也是没有主动通知SD控制器的能力的。 主机发送的命令有两种,一种是一对多,另一种自然是一对一了,他们分别是:1.广播命令:广播命令发送给所有挂在SD总线上的SD卡,有一些广播命令需要SD卡作出响应。2.寻址(点对点)命令:寻址命令只...转载 2021-11-03 13:38:38 · 3106 阅读 · 1 评论 -
eMMC(二)——分区管理
参考: Embedded Multi-Media Card (e•MMC) Electrical Standard (5.1) [PDF]Disk partitioning [Web]Master Boot Record [Web]GUID Partition Table [Web]Linux Kernel internals[Web]目录 0. 概述 FLASH分区...转载 2021-11-02 14:16:22 · 1794 阅读 · 0 评论 -
SD3.0协议解读一
前言: 老衲我近期研究的是SD/MMC卡驱动,研究过的SD/MMC驱动的贫僧们都应该知道SD/MMC协议是必不可少的一部分,除非你不想研究透SD/MMC驱动,那你大可只研究driver/mmc/host目录下的文件即可。说到SD/MMC协议,网上一搜,SD3.0的协议只有英文版的资料,要想真正理解协议,英文水平差的贫僧就可吃力了,老衲英文水平实在是一般,但是网上对SD3.0协议的解读相关的中文资料实在是少的可怜。...转载 2021-11-03 13:35:13 · 2036 阅读 · 1 评论 -
eMMC(补充)——总线上电
1 通讯线 e•MMC 总线有 10 条通讯线: CMD: 命令线,双向信号。主机和设备驱动器以两种模式工作,开漏和推挽。 DAT0-7: 数据线,双向信号。主机和设备工作在推挽模式下。 CLK: 时钟,是主机发往设备的信号...转载 2021-11-03 10:55:59 · 829 阅读 · 0 评论 -
eMMC(一)——基本架构
目录 1. eMMC是什么 1.1 个人理解 1.2 eMMC 的整体架构 2. 各组成部分 2.1 NAND Flash 2.2 Flash Controller 2.3 标准接口 1. eMMC是什么 eMMC (Embedded Multi Media Card)是MMC协会订立、主要针对手机或平板电脑等产品的内嵌式存储器标准规格。由一个嵌入式存储解决方案组成,带有MMC(多媒...转载 2021-11-02 11:25:56 · 2268 阅读 · 0 评论 -
SD3.0协议解读二
在阅读本文章之前,请先思考一下什么是总线,总线的作用是什么?相信大家都学过I2C总线,它由SCL和SDA两条线组成,通过这两条线就能完成各种通信。同样地,SD卡通信也需要有自己的总线模式。SD卡还比较牛逼,支持SD总线和SPI总线,老衲接触的比较多的是SD总线,所以这篇文章仅介绍SD总线,对于SPI总线老衲以后有机会再介绍。SD总线: 大家都知道总线一般支持多种频率,在默认的频率下,SD总线支持一(主)对多...转载 2021-11-03 13:37:14 · 847 阅读 · 0 评论 -
eMMC(补充2)——总线数据流
参考资料: Embedded Multi-Media Card (e•MMC) Electrical Standard (5.1) [PDF]SD/MMC Controller, Hard Processor System (HPS) Technical Reference Manual (TRM) [PDF]CRC wiki [WEB]目录 1. 总线接口&nb...转载 2021-11-03 10:57:11 · 2378 阅读 · 1 评论 -
SD3.0协议解读四
前面的文章提到过SD卡主要分为两个操作模式,一是初始化和识别操作模式,另一种就是这篇文章需要分析的数据传输模式啦。 数据传输模式: 数据传输模式主要有六种状态,分别是Stand-by状态、Transfer状态、Sending-data状态、Receive-data状态、Programming状态、Disconnect状态。这六种状态通过不同的Command就可以切换到某种状态,换句话说,这六种状...转载 2021-11-04 09:31:12 · 964 阅读 · 0 评论 -
eMMC(四)——基本命令
目录 1. Basic commands (class 0 and class 1) CMD0 CMD1 CMD2 CMD3 CMD4 CMD5 CMD6 CMD7 CMD8 CMD9 CMD10 CMD12 CMD13 CMD14 CMD15 CMD19 2. Block-oriented read commands (class 2) CMD16 CMD17 CMD18...转载 2021-11-03 10:52:59 · 1940 阅读 · 0 评论 -
linux 音频驱动实验
文章目录 一、音频接口简介1. 为何需要音频编解码芯片2. WM8960简介3. I2S总线接口4. 6u SAI简介 二、硬件原理图三、音频驱动使能1. 修改设备树1. Wm8906 i2c接口设备树2. 6u SAI接口设备树3. I.MX6ULL sound 节点...转载 2021-12-27 16:13:07 · 2852 阅读 · 1 评论 -
DRM 驱动程序开发(开篇)
前言 在前面的《最简单的DRM应用程序》系列文章中,我们学习了如何使用 libdrm 接口编写 DRM 应用程序。从本篇开始,我们将进入一个全新的世界,一起来学习如何在 kernel 空间编写 DRM 驱动程序。 Objects 在开始编写 DRM 驱动程序之前,我有必要对 D...转载 2021-11-01 11:06:23 · 967 阅读 · 0 评论 -
DRM 驱动程序开发(VKMS)
前言 距离上一篇《DRM 驱动程序开发(开篇)》已经过去快整整1年了,如果再不更新的话,这个 DRM 系列教程很可能就夭折了。之所以现在才写本文,主要有两个原因:1. 本人工作内容发生变动。2. 始终没找到合适的硬件平台来做示例讲解。其中第2点是我一直拖延的主要原因,因为作为示例教...转载 2021-11-01 14:29:49 · 3304 阅读 · 0 评论 -
关于 DRM 中 DUMB 和 PRIME 名字的由来
前言 在上一篇《DRM驱动程序开发(VKMS)》文章里,我们学习了如何编写一个最简单的 KMS 驱动。而本篇,我将以叙述的形式为大家讲解 DRM GEM 的相关概念,代码留到下一篇进行讲解。 我知道,大多数的 DRM 初学人员,在刚接触到 GEM 相关概念时,首先困惑的不是 GE...转载 2021-11-19 16:21:31 · 1004 阅读 · 0 评论 -
DRM 驱动程序开发(VKMS)
前言 距离上一篇《DRM 驱动程序开发(开篇)》已经过去快整整1年了,如果再不更新的话,这个 DRM 系列教程很可能就夭折了。之所以现在才写本文,主要有两个原因:1. 本人工作内容发生变动。2. 始终没找到合适的硬件平台来做示例讲解。其中第2点是我一直拖延的主要原因,因为作为示例教...转载 2021-11-19 13:53:18 · 1240 阅读 · 0 评论 -
DRM 驱动程序开发(开篇)
前言 在前面的《最简单的DRM应用程序》系列文章中,我们学习了如何使用 libdrm 接口编写 DRM 应用程序。从本篇开始,我们将进入一个全新的世界,一起来学习如何在 kernel 空间编写 DRM 驱动程序。 Objects 在开始编写 DRM 驱动程序之前,我有必要对 D...转载 2021-11-19 10:52:51 · 1036 阅读 · 0 评论 -
DRM(Direct Rendering Manager)学习简介
学习DRM一年多了,由于该架构较为复杂,代码量较多,且国内参考文献较少,初学者学习起来较为困难。因此决定将自己学习的经验总结分享给大家,希望对正在学习DRM的同学有所帮助,同时交流经验。 由于本人工作中只负责Display驱动,因此分享的DRM学习经验都只局限于Display这一块...转载 2021-11-01 10:38:12 · 821 阅读 · 0 评论 -
linux驱动之DMA
转载自:https://www.jianshu.com/p/e1b622234d13 一、前言 在 嵌入式Linux 的内核及驱动中,DMA 常常被人提起。我们也许清楚它的原理且很明白它非常重要,但在某种程度上,对于 DMA 的使用者来说,我们一般使用其接口,而很少去了解整个 DMA 的运作方式。那么本文就从头到尾,简单地说一下 DMA 吧注意:本文对DMA的概念不做讲述,请各位读者自行了解DMA的概念。 二...转载 2021-11-04 10:05:43 · 2596 阅读 · 0 评论 -
Linux Framebuffer(一) - 概述
了解Linux framebuffer. 1.Framebuffer Intro FrameBuffer是出现在 2.2.xx 内核当中的一种驱动程序接口。Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linux...转载 2021-11-04 09:51:26 · 390 阅读 · 0 评论