嵌入式Linux驱动开发培训班(FSLD3002)
  • 课程背景

    开放的 Linux 受到广泛的欢迎,得到越来越多公司的支持,但是阻碍 Linux 在各个领域广泛应用的主要因素就是内核/驱动高端人才极度缺乏,Linux源代码中85%是设备驱动,嵌入式系统中驱动程序更为重要,几乎每一个嵌入式系统都是从驱动程序员手中调试出来的。然而面对巨大的市场需求,国内很难找到一家专门系统培训Linux驱动工程师的培训机构,因为培训难度大,对老师的经验和知识面要求高,大部分培训机构的课程仅仅对Linux 浅尝即止,难以达到培养 Linux 高水平人才的目的。 嵌入式linux驱动培训是华清远见的金牌课程,本课程融合了讲师多年的项目开发经验,这些经验无疑是学员短期内提升驱动开发水平最有效的捷径。

  • 课程目标

    驱动程序开发是嵌入式Linux项目中工作量最大的一部分内容,开发出高质量的驱动程序是项目成功的关键。随着产品上市周期的缩短,市场对于驱动程序开发 人员的要求也在日益增加。 本课程旨在培养具备开发Linux下驱动程序的人才,采用理论教学与实验相结合的方式,系统地介绍Linux下设备驱动程序开发过程。通过本课程的 学习,学员可以掌握Linux下字符设备、块设备、网络设备、framebuffer设备、sd卡等驱动程序、usb驱动的开发,同时掌握嵌入式Linux的系统开发和分析方法。

  • 入学要求

    学员学习本课程应具备下列基础知识:

    ◆ 熟练使用Linux操作系统,如学员具有一定的Linux内核阅读经验,效果会更好;

    ◆ 熟悉C语言,熟悉指针、结构体等概念;

    ◆ 了解接口电路和数字电路的知识,最好具有电路设计经验。

  • 师资团队

    刘老师

    华清远见学术总监,金牌讲师,ARM公司全球认证讲师,企业级嵌入式系统方案设计解决专家。《高等院校嵌入式人培养规划教材》系列丛书主编。10年嵌入式系统开发经验,精通ARM体系结构,在多款ARM硬件平台上完成过原理图设计、PCB布线、Bootloader移植、Linux系统移植、文件系统构建、驱动程序开发、GUI图形编程等工作。具有丰富的ARM-LINUX系统软、硬件产品开发经验,主持开发过多个大型嵌入式项目,涉及工业控制、网络、通讯、消费电子等各行各业。近两年正专注于3G技术领域,对Android的系统核心代码有深入研究。[刘老师授课视频]

    李老师

    华清远见高级讲师,八年以上嵌入式软件及硬件的开发经验,曾任职于北大方正等国内多家知名企业,从事专业UNIX/Linux平台的嵌入式产品研发工作。资深研发工程师,项目经理。精通Unix/Linux操作系统和Linux环境C/C++/Shell编程技术,熟练掌握网络编程技术及相关的网络协议;熟悉基于ARM体系架构嵌入式系统的软硬件开发流程和方法,对基于ARM的Linux应用开发及系统开发具有深刻的理解和丰富的经验。熟悉Linux内核及驱动开发;对嵌入式系统在网络安全领域内的应用有非常深入的研究,深入了解网络安全领域原理与技术并实际研发多种网络安全产品。

    王老师

    具有六年嵌入式系统软、硬件开发经验。从intel51,MSP430单片机系统到基于SPARC,ARM的嵌入式Vxworks和Linux的平台移植,驱动开发,多核多进程间通信开发,multi-media framework,H264压缩编码,video 3A处理,都有深入的研究。参加的项目涉及航空电子,工业控制,消费电子等领域。目前主要从事arm-based linux的视频驱动的开发。

    熊老师

    华清远见高级讲师, 四川大学硕士,8年嵌入式系统开发经验,曾担任国内知名公司教学及项目总监多年,主要研究嵌入式实时操作系统、模式识别、机器视觉,智能电子警察交通管理、大型系统授时服务,视频监控等领域的应用。熟悉ARM,PowerPC,MIPS系列等多种平台,包括S3C2410/2440, PXA255/PXA270, AT91RM9200,ADM5120,MPC8315e等,精通linux2.4/2.6内核驱动架构,深入理解PCI, LCD,网络,触摸屏,块设备等驱动的实现。对DSP处理器有较深入的研究,曾在TI的多个DM642之间实现数据的实时传输和有效控制。曾主持过数次国内、外企业员工内训,具有丰富的教学和培训实践经验。

    王老师

    熟练汇编、Java语言;精通51、cortex3、cortex4、cortex-a9等开发;精通Unix/Linux操作系统和Linux C语言编程;精通Linux下的驱动开发;具有丰富的项目实战经验;

  • 教材

    ◆ 《华清远见-嵌入式Linux驱动开发培训讲义》

    ◆ 《Linux设备驱动开发详解》第2版 华清远见教材编写组 编著

  • 实验环境

    为了保证培训效果,增加互动环节,我们坚持小班授课,每期报名人数限15人,多余人员安排到下一期进行。人手一套开发板和开发用的PC主机。    >>单击查看实验设备

  • 上课时间地点

    本课程每期班限额15名,报满即停止报名,请提前在线报名(点击这里)或电话预约。

    ◆ 时间:根据报名人数确定,需提前预约。

    ◆ 地点:北京、上海、深圳、成都、南京、武汉、西安、广州、沈阳、济南、重庆

    华清远见保留开课时间调整的权利,欢迎来电洽询 400-611-6270

  • 学时费用

    ◆课时:共6天,每天6学时,总计36学时

    ◆费用(含教材费和午餐费):公司费用3900元(含发票),个人自费3200元(不含发票),学生自费(2500元,凭有效证件)

    ◆认证费(可选):培训合格学员可获工业和信息化部《国家信息技术应用技能嵌入式Linux驱动开发工程师认证证书》(认证费500元),Atmel公司全球统一《Atmel嵌入式工程师认证证书》(认证费500元),红帽公司《Linux驱动开发工程师证书》(认证费600元)。

    ◆外地学员:代理安排食宿(需提前预定)

  • 最新优惠

    ◆团体报名优惠措施:两人95折优惠,三人或三人以上9折优惠!

    ◆套餐课程同时报名优惠措施(以下套餐优惠只能任选一种):

    1、同时报选《ARM开发培训班》,即享受500元优惠!

    2、同时报选《嵌入式Linux系统开发班》,即享受500元优惠!

  • 质量保证

    1、培训过程中,如有部分内容理解不透或消化不好,可免费在下期培训班中重听;

    2、培训结束后免费提供一个月的技术支持,充分保证培训后出效果;

    3、培训合格学员可享受免费推荐就业机会。

  • 课程大纲
    时间 课程大纲
    第一天
    学习目标    通过本课学习,学员可以:从用户设备I/O编程角度深入了解设备驱动的原理;通过了解字符设备驱动框架和具体硬件设备I/O操作,能够进行字符设备驱动开发;了解内核的设备模型及、linux3.14内核设备树模型及掌握udev的使用。
    9:00
    |
    12:00

    1.LINUX字符设备驱动程序开发
       1.1 LINUX字符设备驱动基础
       1.2 字符设备驱动程序实现框架与典型驱动分析
       1.3 用户空间与内核空间的数据传输
       1.4 同步、互斥、阻塞、睡眠机制
       1.5 Linux设备模型与sysfs文件系统
       1.6 Linux-3.14 设备树模型
       1.7 udev与devfs文件系统

    13:00
    |
    16:00

    实验:
       1、驱动开发编程环境与内核配置、编译
       2、编写模块化字符设备驱动程序与测试
       3、如何为内核程序传递参数
       4、在驱动代码中加入创建proc结点方法
       5、蜂鸣器驱动程序编写与测试
       6、编写驱动实现包含等待队列、信号量、fifo等功能
       7、学会利用udev和sysfs文件系统动态创建设备结点

    第二天
    学习目标   通过本课习,学员可以掌握在基本字符设备驱动的基础上增加复杂的内核机制;了解1inux内核中断子系统的实现原理,掌握linux中断处理程序编写方法;掌握内核延时机制及内存管理机制。熟悉基于Cortex-A9 4核处理器的FS4412平台。
    9:00
    |
    12:00

    2.设备驱动中常用的内核机制
       2.1 Poll和select操作
       2.2 异步通知机制
       2.3 1inux内核中断子系统
       2.4 中断处理程序编写
       2.5 驱动程序上/下半部处理与延缓执行机制
       2.6 内核定时器与延迟机制
       2.7 内核内存管理机制

    13:00
    |
    16:00

    实验:
       1、编写驱动实现包含poll功能
       2、编写驱动实现包含异步通知功能
       3、编写秒表字符设备,掌握定时器用法
       4、编写驱动实现tasklet功能
       5、编写驱动实现工作队列功能
       6、FS4412平台上按键中断实验
       7、FS4412平台上A/D转换实验

    第三天
    学习目标   通过本课学习,学员可以:明白Linux中块设备驱动的特点及框架,独立分析Linux中大部分块设备的驱动方法,并熟悉eMMC设备驱动的特点与框架,具备eMMC驱动程序开发的能力。通过实验,学员还可以掌握IDE、Ramdisk驱动移植方法。
    9:00
    |
    12:00

    3.LINUX块设备驱动程序开发
       3.1 块设备及其驱动的特点
       3.2 两个关键结构体GEN_DISK与REQUEST
       3.3 块设备驱动程序的注册与请求处理
       3.4 EXYNOS4412上的eMMC控制器简介

    13:00
    |
    16:00

    实验:
       1、编写简单的块设备驱动程序
       2、实现RAMDISK驱动
       3、FS4412上完成eMMC驱动

    第四天
    学习目标   学员可以:深入理解Linux网络驱动程序中有关套接字(socket)、套接字缓冲区(sk_buff)等概念,了解网络驱动程序的数据交换过程。通过实际的动手操作,学员将掌握如何移植或编写具体网卡的驱动程序,并在此基础上实现更为高级的网络功能。
    9:00
    |
    12:00

    4.LINUX网络设备驱动程序开发
       4.1 OSI网络参考模型
       4.2 套接字(SOCKET)简介
       4.3 套接字缓冲区(SK_BUFF)
       4.4 NET_DEVICE结构分析
       4.5 数据包传送与接收
       4.6 网络驱动的中断处理
       4.7 网络设备驱动程序的基本实现
    5. I2C驱动子系统开发
    6. SPI驱动子系统开发

    13:00
    |
    16:00

    实验:
       1、编写简单的虚拟以太网卡驱动程序
       2、移植并编写DM9000网卡驱动程序
       3、配置网络参数,测试网卡驱动程序行为

    第五天
    学习目标   通过对Linux帧缓冲内容的学习,学员可掌握嵌入式Linux显示驱动程序的开发方法,理解嵌入式Linux图形驱动程序实现机制,能够移植或编写嵌入式显示控制器驱动程序,并完成针对各种LCD硬件的定制。
      掌握电容触摸屏工作原理,能够移植或编写触摸屏驱动程序。
    9:00
    |
    12:00

    7.LINUX帧缓冲驱动程序开发
       7.1 帧缓冲显示技术
       7.2 帧缓冲驱动程序显示原理
       7.3 帧缓冲驱动程序的数据结构
       7.4 帧缓冲驱动程序的API
       7.5 帧缓冲驱动程序的基本实现
       7.6 使用高级图形库
    8.电容触摸屏驱动开发
       8.1 电容触摸屏驱动程序编写

    13:00
    |
    16:00

    实验:
       1、熟悉FRAMEBUFFER驱动的结构
       2、熟悉FRAMEBUFFER中的重要数据结构
       3、编写EXYNOS4412彩色LCD控制器驱动程序
       4、编写测试程序控制屏幕显示
       5、编译高级图形库例子,显示图形
       6、熟悉触屏驱动程序
       7、编写触屏测试代码

    第六天
    学习目标   掌握USB通讯规范及拓扑结构中的主机控制器、HUB、USB设备的工作流程;掌握EXYNOS4412 USB device控制器的工作原理。
      通过Linux下USB Host驱动和USB Gadget开发内容的学习,学员将深入理解Linux内核USB子系统,掌握USB驱动程序编写技术。经过学习后的学员能够移植或编写USB Host和USB Gadget设备驱动程序。
    9:00
    |
    12:00

    9.LINUX下USB驱动开发基础
       9.1 USB规范介绍
       9.2 USB主机控制器
       9.3 USB HUB
       9.4 USB设备状态
       9.5 USB描述符
       9.6 USB请求
       9.7 USB通讯数据格式
       9.8 EXYNOS4412 USB device控制器
       9.9 编写usbtransfer固件程序
    10.LINUX下USB驱动高级开发
       10.1 Linux USB驱动层次
       10.2 Linux USB主机控制器驱动介绍
       10.3 Linux USB HUB驱动介绍
       10.4 Linux USB 设备驱动程序
       10.5 Linux USB Host设备驱动程序
       10.6 Linux USB Gadget设备驱动程序
    11.Linux下其它高级设备驱动简单介绍
       11.1 PCI/PCIE设备驱动介绍
       11.2 V4L2摄像头驱动介绍
       11.3 MTD Flash驱动介绍

    13:00
    |
    16:00

    实验:
       1、使用usbview工具观察USB设备
       2、使用sysfs分析USB层次结构
       3、LINUX下编写USB Host设备驱动
       4、LINUX下编写USB Gadget设备驱动