Linux DMA Engine framework(2)_功能介绍及解接口分析

作者:wowo 发布于:2017-5-2 22:47 分类:Linux内核分析

从我们的直观感受来说,DMA并不是一个复杂的东西,要做的事情也很单纯直白。因此Linux kernel对它的抽象和实现,也应该简洁、易懂才是。不过现实却不甚乐观(个人感觉),Linux kernel dmaengine framework的实现,真有点晦涩的感觉。为什么会这样呢?

如果一个软件模块比较复杂、晦涩,要么是设计者的功力不够,要么是需求使然。当然,我们不敢对Linux kernel的那些大神们有丝毫怀疑和不敬,只能从需求上下功夫了:难道Linux kernel中的driver对DMA的使用上,有一些超出了我们日常的认知范围?

要回答这些问题并不难,将dmaengine framework为consumers提供的功能和API梳理一遍就可以了,这就是本文的目的。当然,也可以借助这个过程,加深对DMA的理解,以便在编写那些需要DMA传输的driver的时候,可以更游刃有余。

阅读全文>>

标签: Linux Kernel 内核 API dma engine

评论(7) 浏览(1044)

Linux DMA Engine framework(1)_概述

作者:wowo 发布于:2017-3-30 22:01 分类:Linux内核分析

前面文章介绍“Linux MMC framework”的时候,涉及到了MMC数据传输,进而不可避免地遭遇了DMA(Direct Memory Access)。因而,择日不如撞日,就开几篇文章介绍Linux的DMA Engine framework吧。

本文是DMA Engine framework分析文章的第一篇,主要介绍DMA controller的概念、术语(从硬件的角度,大部分翻译自kernel的document[1])。之后,会分别从Provider(DMA controller驱动)和Consumer(其它驱动怎么使用DMA传输数据)两个角度,介绍Linux DMA engine有关的技术细节。

阅读全文>>

标签: Linux Kernel 内核 framework dma engine

评论(0) 浏览(1348)

Linux MMC framework(2)_host controller driver

作者:wowo 发布于:2017-3-8 21:33 分类:通信类协议

本文是Linux MMC framework的第二篇,将从驱动工程师的角度,介绍MMC host controller driver有关的知识,学习并掌握如何在MMC framework的框架下,编写MMC控制器的驱动程序。同时,通过本篇文章,我们会进一步的理解MMC、SD、SDIO等有关的基础知识。

阅读全文>>

标签: Linux Kernel 内核 driver mmc host

评论(5) 浏览(1368)

Linux MMC framework(1)_软件架构

作者:wowo 发布于:2017-1-10 22:24 分类:通信类协议

由[1]中MMC、SD、SDIO的介绍可知,这三种技术都是起源于MMC技术,有很多共性,因此Linux kernel统一使用MMC framework管理所有和这三种技术有关的设备。

本文将基于[1]对MMC技术的介绍,学习Linux kernel MMC framework的软件架构。

阅读全文>>

标签: Linux Kernel 内核 架构 Architecture framework mmc

评论(7) 浏览(1651)

X-015-KERNEL-ARM generic timer driver的移植

作者:wowo 发布于:2016-11-2 22:31 分类:X Project

本文将基于“Linux时间子系统之(十七):ARM generic timer驱动代码分析[1]”,以bubblegum-96平台为例,介绍ARM generic timer的移植步骤。

另外,我们在[2]中完成了ARM GIC驱动的移植,但还没有测试是否可用。刚好借助timer驱动,测试GIC是否可以正常工作,顺便理解Interrupt的使用方法。

阅读全文>>

标签: Linux Kernel 内核 timer porting generic

评论(2) 浏览(1056)

X-014-KERNEL-ARM GIC driver的移植

作者:wowo 发布于:2016-10-31 22:23 分类:X Project

X Project”完成“X-012-KERNEL-serial early console的移植”之后,终止在如下的kernel panic中:

NR_IRQS:64 nr_irqs:64 0
Kernel panic - not syncing: No interrupt controller found.
---[ end Kernel panic - not syncing: No interrupt controller found.

结果很明显,系统中没有注册中断控制器。因此,本文将以“Bubbugum-96”平台为例,介绍ARM GIC驱动的移植步骤,顺便继续加深对device tree的理解和认识。

注1:由于“Bubbugum-96”的GIC符合ARM标准,Linux kernel中相关的驱动是现成的,因此GIC驱动的移植就非常简单了,只要配置一下device tree即可。

阅读全文>>

标签: Linux Kernel 内核 driver porting 移植

评论(0) 浏览(764)

Linux TTY framework(5)_System console driver

作者:wowo 发布于:2016-10-29 22:43 分类:TTY子系统

由[1]中的介绍可知,Linux kernel的console框架,主要提供“控制台终端”的功能,用于:

1)kernel日志信息(printk)的输出。

2)实现基础的、基于控制台的人机交互。

本文将从console driver开发者的视角,介绍:console有关的机制;编写一个console驱动需要哪些步骤;从用户的角度怎么使用;等等。

阅读全文>>

标签: Linux Kernel 内核 driver console

评论(11) 浏览(1365)

Linux TTY framework(4)_TTY driver

作者:wowo 发布于:2016-10-25 22:40 分类:TTY子系统

本文将从驱动工程师的角度去看TTY framework:它怎么抽象、管理各个TTY设备?它提供了哪些编程接口以方便TTY driver的开发?怎么利用这些接口编写一个TTY driver?等等。

注1:话说介绍各个framework的时候,我一直比较喜欢用provider、consumer等概念,因为非常生动、易懂。不过在TTY framework的官方俗语中,压根没有provider、consumer等概念,为了不混淆试听,就算了吧。

注2:TTY framework在Linux kernel中算得上一个比较繁琐、庞杂的framework了,再加上现在很少有人会直接去写一个TTY driver,因此本文只是介绍一些概念性的东西,以加深对TTY及其driver的理解,为后续学习serial framework打基础。一些细节的东西,大家可参考callme_friend同学写的"TTY驱动分析[2]”,特别是其中的一些图示,很清晰!

注3:本文所使用的kernel版本为“X Project”初始的“Linux 4.6-rc5”版本。

阅读全文>>

标签: Linux Kernel 内核 driver tty tty_struct tty_port

评论(11) 浏览(1603)

Linux TTY framework(1)_基本概念

作者:wowo 发布于:2016-9-18 22:55 分类:TTY子系统

由于串口的缘故,TTY是Linux系统中最普遍的一类设备,稍微了解Linux系统的同学,对它都不陌生。尽管如此,相信很少有人能回到这样的问题:TTY到底是什么东西?我们常常挂在嘴边的终端(terminal)、控制台(console)等概念,到底是什么意思?

本文是Linux TTY framework分析文章的第一篇,将带着上述疑问,介绍TTY有关的基本概念,为后续的TTY软件框架的分析,以及Linux serial subsystem的分析,打好基础。

阅读全文>>

标签: Linux Kernel 内核 tty terminal 终端 console 控制台

评论(16) 浏览(2600)

Linux kernel内核配置解析(5)_Boot options(基于ARM64架构)

作者:wowo 发布于:2016-8-12 22:46 分类:Linux内核分析

本文将介绍ARM64架构下,Linux kernel和启动有关的配置项。

注1:本系列文章使用的Linux kernel版本是“X Project”所用的“Linux 4.6-rc5”,具体可参考“https://github.com/wowotechX/linux.git”。

阅读全文>>

标签: Linux 内核 boot 配置项 menuconfig

评论(2) 浏览(1579)

Copyright @ 2013-2015 蜗窝科技 All rights reserved. Powered by emlog