[课程描述]
    基于Linux的嵌入式系统目前获得了广泛应用,在嵌入式Linux核心层的开发中,设备驱动的编写占据了大部分的工作量,能编写出真正可用的驱动程序存在着很多技术要点,本课程的开设兼顾初学者和有一定开发经验人员的需要,通过对嵌入式Linux系统理论知识和实际代码分析相结合的方式,了解和学习目前在嵌入式Linux驱动开发中比较重要的几项驱动和其框架结构,如块设备驱动程序框架,LCD Frambuffer,网络设备驱动,USB驱动等。通过大量精心设计的驱动实验,使学员真正掌握嵌入式系统驱动开发的关键技术。
[培养对象]
  对Linux驱动设计及嵌入式系统开发有一定经验和兴趣的电子、通信、计算机、自动化等相关专业专科生、本科生及研究生,相关专业的技术工程师,开发人员。
[基础要求]
  基本掌握C语言编程
  基本的Linux使用和应用程序编写基础
  具有数字电路、模拟电路的基础
[推荐教材]
  《linux设备驱动(第三版)》
[教师简介]
    秦老师,硕士,国内著名公司操作系统部部门经理,作为主要负责人负责公司自主知识产权的操作系统和Linux 3G手机产品核心驱动的开发研究工作。具有多年的嵌入式系统开发经验,丰富的操作系统和驱动开发经验。
    石老师,国际知名操作系统供应商高级工程师,主要负责Linux BSP的开发研究工作。具有多年的嵌入式系统开发经验,丰富的操作系统和驱动开发经验。
    王利明:大连理工硕士,亚嵌高级讲师,SkyEye嵌入式开源项目核心开发成员,5年嵌入式系统开发经验,3年嵌入式行业教学经验。组织并参与多款ARM,MIPS,PowerPC平台的系统开发,精通嵌入式系统移植及驱动开发。
[开课情况]
  开课时间:理论讲述:15学时; 实验操作:15学时;
  上课地点:亚嵌教育中科院校区
  学    费:公司 4800元;个人 4200元;学生 3600元
            为保证教学质量,本班为小班授课,15人为满,报满15人即停止报名或顺延下一期,如您决定上课请
  及时填写报名表并办理报名手续。(报名时需携带本人身份证复印件1张及本人一寸照片3张)
   课程安排 课程内容
第一天上午
理论课
3学时
Linux驱动程序开发基础
   1. 驱动程序与模块概念
      ◆ Linux设备驱动的概念
      ◆ Platform device模型介绍
      ◆ 模块的概念
      ◆ 模块的构建、编译和加载
   2.字符设备驱动程序
      ◆ 字符设备驱动程序概念
      ◆ 主设备号和次设备号
      ◆ fs_operation结构分析
         ◇ open和release,
         ◇ read/write(包括内核与用户空间互访),ioctl,
         ◇ poll/select,阻塞I/O,
         ◇ mmap等,
      ◆ 驱动程序调试技术简单介绍
   3. 中断处理
      ◆ 中断机制
      ◆ softirq机制
第一天下午
实验课
3学时
实验一:模块的构建、编译和装载,hello world模块的实现
实验二:Platform device模型实验
实验三:GPIO按键实验——使用中断机制访问
第二天上午
理论课
3学时

Linux块设备驱动程序开发
   1 Linux块设备驱动程序概要
      ◆ 块设备驱动程序的特点和工作原理
      ◆ 块设备驱动的设备文件接口概念
      ◆ 块设备驱动的文件系统接口概念
   2. Linux块设备驱动程序实现要素分析
      ◆ 块设备驱动的注册接口(register_blkdev等)
      ◆ 块设备驱动操作接口(open,release,ioctl等)
      ◆ 块设备驱动的request队列和request操作

第二天下午
代码分析课
实验课

1. 代码分析(vdisk.c) (1学时)
      ◆ vdisk.c的注册接口
      ◆ vdisk.c的open,release,ioctl
      ◆ vdisk.c的request队列和request操作
2. 实验课 (2学时)
      实验一: 修改vdisk.c支持多个设备
      实验二: 在实验一基础上为vdisk.c添加字符设备接口实现
              (实现open,close,ioctl,read,write,lseek方法)

第三天上午
理论课
3学时

LCD Framebuffer设备驱动程序开发
   1. Framebuffer设备驱动
      ◆ Framebuffer驱动程序原理,结构分析、及数据结构
      ◆ Framebuffer驱动程序设计

第三天下午
实验课
3学时

实验一:LCD Framebuffer——通过mmap操作fb设备
实验二:LCD Framebufferr——通过mmap显示图片

第四天上午
理论课
3学时

网络设备驱动程序开发
   1. 网卡设备介绍
      ◆ 常见网卡
      ◆ 网卡芯片所实现的协议层功能
      ◆ cs8900网卡芯片手册导读
      ◆ cs8900网卡硬件电路分析
   2. Linux网络驱动结构
      ◆ Linux TCPIP网络结构概述
      ◆ Linux网络设备结构
         ◇ 网络设备的注册
         ◇ net_device结构分析
         ◇ 网络设备驱动的发送,接收和中断处理
   3. 网卡设备介绍
      ◆ 常见网卡
      ◆ 网卡芯片所实现的协议层功能
      ◆ cs8900网卡芯片手册导读
      ◆ cs8900网卡硬件电路分析

第四天下午
实验课
3学时

实验一:ifconfig等命令实验
实验二:字符设备的网卡驱动实现(上)

第五天上午
实验课
3学时

实验三:字符设备的网卡驱动实现(下)
实验四:驱动的测试程序编写

第五天下午
理论课
3学时

USB设备原理
      ◆ usb 概念介绍
      ◆ usb host/client分类说明
      ◆ usb 地址端点的使用
      ◆ usb 四种传输类型及其作用
      ◆ usb 协议实现及其详解
      ◆ usb 设备即插即用过程

  16期:2008年08月02日
  17期:2008年09月20日
  18期:2008年11月01日
  19期:2008年12月13日
  清华大学
  中科院计算通信学院
  中国科技大学
  中国传媒大学
  中国地质大学
  中国工程物理研究院
  中国管理软件学院
  中国矿业大学
  中国农业大学
  中南大学
  中南民族大学
  中原工学院
  中北大学
  北京航空航天大学
  北方工业大学
  北京工商大学
  北京工业大学
  北京化工大学
  北京交通大学
  北京科技大学
  北京理工大学
  北京师范大学
  北京邮电大学
  北京服装学院
  北京联合大学
  北京吉利大学