原创 嵌入式Linux驱动程序开发和案例实践培训

2013-6-8 16:29 855 19 19 分类: 消费电子

嵌入式Linux驱动程序开发和案例实践培训

课程简介:

Linux Drivers的开发重点在于架构设计而不是语法细节,如何使用Linux已有的API来设计和实现机制良好的Linux Drivers是其重点所在。

Linux Driver Developer而言,要做的工作主要分为2个层面:

  1. Virtual Device Driver: 往上层支持 Linux kernel 所提供的 Virtual File System 层,并实作 system calls。使用者可透過 system call interface device driver 沟通;
  2. Physical Device Driver: 往下层使用 Linux kernel 所提供的 device interface 操作硬件。 Virtual device driver 的主题的重要性大于 physical device driver,如何善用 Linux 所提供的介面 (interface) 來设计Drivers,并配合 user application 来设计应用程序是重点;

与 user application 如何互动動,是编写Driver非常重要的一个环节,正确理解和处理user-space 与 kernel-space 的关系,尤其的对当今最为火爆的智能平台Android而言,这一点尤为重要。

01.jpg

 

中国电子标准协会http://www.ways.org.cn

课程目标:

本课程旨在协助工程师在掌握驱动程序设计和编写最佳实践的前提下,完整的编写出【好】的驱动程序,并以Android最核心的驱动Binder驱动为案例,让学习者一方面彻底掌握嵌入式Linux一个商业级别驱动的完整实现,另一方面也为掌握Android框架打下最坚实的基础;

培训对象:

         能看懂C语言代码;

         最好是对Linux内核有所了解;

 

 

时间

內  容

备注

第一天

第1个主题:搭建嵌入式Linux Driver开发环境

1,1 虚拟机和Linux

1,2 source insight

第2个主题:第一个嵌入式Linux Driver程序开发实战

2,1 Helloworld驱动程序;

2.2 模块参数和模块之间的通信;

2.3 将模块加入到内核;

 

第3个主题:Linux驱动架构和设计流程

3.1 通过案例反思linux驱动的架构;

3.2 Linux驱动程序的最佳设计流程;

 

第4主题:I/O

4.1 I/O端口的访问与读写函数;

4.2 I/O内存读写;

 

第5主题:read/write与wait queue

5.1  read/write;

5.2  wait queue;

 

第6个主题: Kernel Timer、Task Queue 與 Work Queue

6.1 Kernel Timer;

6.2 Task Queue;

6.3 Work Queue

 

时间

內  容

备注

 

 

 

 

 

 

 

 

 

 

 

 

第二天

第7个主题: 中断处理(Interrupt handling) 與 Bottom Half

7.1 Interrupt handling;

7.2 Bottom Half;

 

第8个主题:Memory Mapped I/O 與 User-space driver

8.1 Memory Mapped I/O;

8.2 User-space driver;

 

第9个主题: Virtual File System

9.1 Subsystem (分层架构) 架构解析;

9.2 Sysfs架构与实战;

9.3 Sysfs Class Driver;

 

第10个主题:Android & Linux Device Driver

10.1  Android 与Linux 整合: HAL 架构 ;

10.2  Kernel Space与User space;

 

 

 

时间

内容

备注

第三天

本次主题的内容是以Android最核心的驱动Binder驱动为案例,让学习者一方面彻底掌握嵌入式Linux一个商业级别驱动的完整实现,另一方面也为掌握Android框架打下最坚实的基础,具体内容如下:

1. Service Manager是如何成为一个守护进程的?即Service Manager是如何告知Binder驱动程序它是Binder机制的上下文管理者。

2. Server和Client是如何获得Service Manager接口的?即defaultServiceManager接口是如何实现的。

3. Server是如何把自己的服务启动起来的?Service Manager在Server启动的过程中是如何为Server提供服务的?即IServiceManager::addService接口是如何实现的。

4. Service Manager是如何为Client提供服务的?即IServiceManager::getService接口是如何实现的。

5. Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析。

 

 

 

 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
19
关闭 站长推荐上一条 /3 下一条