move to Linux 3.x for ARM

move to Linux 3.x for ARM

(0人)

免费

课程介绍

move to Linux 3.x for ARM


课程背景

  • Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”,引发ARM Linux社区的地震,随后ARM社区进行了一系列的重大修正。在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码,相当多数的代码只是在描述板级细节。

    社区必须改变这种局面,于是PowerPC等其他体系架构下已经使用的Flattened Device Tree(FDT)进入ARM社区的视野。Device Tree是一种描述硬件的数据结构,它起源于 OpenFirmware(OF)。在Linux 2.6中,ARM架构的板极硬件细节过多地被硬编码在arch/arm/plat-xxx和arch/arm/mach-xxx,采用Device Tree后,许多硬件的细节可以直接透过它传递给Linux,而不再需要在kernel中进行大量的冗余编码。 在GPIO、clock、pinctrl和DMA驱动方面,Linux 2.6时代,内核已或多或少有GPIO、clock等底层驱动的架构,但是核心层的代码太薄弱,各SoC对这些基础设施实现方面存在巨大差异,而且每个SoC仍然需要实现大量的代码。pinctrl和DMA则最为混乱,几乎各家公司都定义了自己的独特的实现和API。

    社区必须改变这种局面,于是内核社区在2011~2012年进行了如下工作,这些工作在目前的3.7内核中基本准备就绪:
    1. ST-Ericsson的工程师Linus Walleij提供了新的pinctrl驱动架构,内核新增加一个drivers/pinctrl目录,支撑SoC上的引脚复用,各个SoC的实现代码统一放入该目录;
    2. TI的工程师Mike Turquette提供了common clk框架,让具体SoC实现clk_ops成员函数并通过clk_register、clk_register_clkdev注册时钟源以及源与设备对应关系,具体的clock驱动都统一迁移到drivers/clk目录;
    3. 建议各SoC统一采用dmaengine架构实现DMA驱动,该架构提供了通用的DMA通道API如dmaengine_prep_slave_single()、dmaengine_submit()等,要求SoC实现dma_device的成员函数实现代码统一放入drivers/dma目录。

课程大纲

  • 1. ARM Linux Device Tree
  • 2. 用于操作系统节拍的timer驱动
  • 3. 多核芯片boot和CPU热插拔
  • 4. LOW LEVEL printk
  • 5. clock、pinctrl、gpio和DMA

课程目标

  • 本课程的内容旨在阐述新的3.x内核版本下,如何以规范化的方法完成高质量的ARM Linux芯片级移植和驱动开发。

本期嘉宾


    本期嘉宾:宋宝华
  • 2008年度十大畅销、十大原创图书《Linux设备驱动开发详解》作者
  • 译有《Essential Linux Device Drivers》。活跃于 Linux社区,在Linux内核提交了数万行代码,宋宝华目前也是Linux内核ARMSoC子系统内maintainer之一。近年来,致力于Linux技术在企业的推广工作,已在数十家企业实施Linux技术讲座。

互动平台

  • ↓↓↓ 扫开源力量微信二维码并关注,不会遗漏开源力量每周免费公开课及最新课程信息


更多常见问题:请点击我~

授课老师

学员动态

QQ客服: 810476411

QQ咨询: 810476411

QQ吐槽: 810476411

服务时间: 9:00 - 21:00

刘老师: 18516031455

微信公众号:开源力量