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) 浏览(16)

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

评论(0) 浏览(383)

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

评论(5) 浏览(974)

Linux serial framework(1)_概述

作者:wowo 发布于:2016-12-12 22:04 分类:通信类协议

串口设备(serial or uart,后面不再区分)是TTY设备的一种,Linux kernel为了方便串口驱动的开发,在TTY framework的基础上,封装了一层串口框架(serial framework)。该框架尽可能的屏蔽了TTY有关的技术细节(比较难懂),驱动工程师在编写串口驱动的时候,只需要把精力放在串口以及串口控制器本身即可。

本文将通过对serial framework的简单分析,理解上面的概念,并掌握基于该框架编写串口驱动的方法和步骤。

阅读全文>>

标签: Linux driver framework serial 框架 串口

评论(5) 浏览(993)

X-019-KERNEL-串口驱动开发之数据收发

作者:wowo 发布于:2016-11-29 21:55 分类:X Project

本文是“X Project”串口驱动开发的第四篇,在第二篇“uart driver框架[1]”的基础上,实现基本的、可收发数据的uart驱动,并借助这个过程,学习如下知识:

中断的申请和使用;

利用中断发送和接收数据;

uart_ops中常用函数(.startup, .start_tx, etc.)的使用。

阅读全文>>

标签: Linux driver irq serial tx rx transmit

评论(2) 浏览(521)

X-018-KERNEL-串口驱动开发之serial console

作者:wowo 发布于:2016-11-18 22:25 分类:X Project

本文是“X Project”串口驱动开发的第三篇,在第二篇“uart driver框架[1]”的基础上,实现console驱动,并借助这个过程,理解如下知识:

1)从DTS regs字段中获取设备的I/O基址,并map出来供driver访问。这是device tree最基本的使用场景。

2)从DTS aliases中获取串口的索引号。这是device tree aliases功能的一个应用场景。

3)uart port—>line和console—>index之间的关系。

阅读全文>>

标签: Linux driver serial console aliases

评论(0) 浏览(571)

X-017-KERNEL-串口驱动开发之uart driver框架

作者:wowo 发布于:2016-11-16 22:09 分类:X Project

本文是“X Project”串口驱动开发的第二篇,将以“bubblegum-96”开发板为例,介绍在linux serial framework的框架下,编写串口driver以及console driver的方法和步骤(暂不涉及实现细节)。

注1:有关串口、TTY、console等概念,可参考本站“TTY子系统[1]”的文章。Linux serial framework的分析,会在后续的文档中补充(这里故意颠倒,以便让大家理解kernel framework的妙处)。

阅读全文>>

标签: Linux Kernel driver framework serial console uart_driver

评论(2) 浏览(730)

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) 浏览(743)

Linux kernel debug技巧----开启DEBUG选项

作者:wowo 发布于:2016-11-1 19:39 分类:Linux应用技巧

kernel的source code中有很多使用pr_debug/dev_dbg输出的日志信息(例如device tree解析的代码,drivers/of/fdt.c)。默认情况下,kernel不会将这些日志输出到控制台上,除非:

1)开启了DEBUG宏,并且

2)kernel printk的默认日志级别大于7

看似简单,不过我相信每个人都问过这样的问题(不管是问自己还是问别人,特别是在调试kernel启动过程的时候,例如device tree的匹配、device probe等):怎么开启DEBUG选项?

阅读全文>>

标签: debug Linux Kernel printk pr_debug dev_dbg

评论(0) 浏览(1699)

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) 浏览(560)

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