当前位置: 软件测试研究室 > 其他课程大纲 >

ARM平台内核及驱动高级课程


ARM平台Linux内核以及设备驱动程序

 
教学目标: 强调从零开始写驱动,让学员真正掌握Linux驱动的编程能力,这是嵌入式程序员层次的标志,能不能进行驱动程序开发是学员是否可以拿到真正高薪的标准。同时学员还必须熟悉内核的裁剪、移植及多种内核模块的开发
 
案例实践: 我们将从以下驱动中让大家手写几款重要的
(根据各地的环境以及老师的不同可能实际案例有一定变化,案例为以下其中几个)
              a. ARM-Linux GPIO驱动
              b. ARM-Linux WatchDog驱动
              c. ARM-Linux Udev移植
              d. ARM-Linux 触摸屏输入设备驱动
              e. ARM-Linux LCD显示设备驱动
              f. ARM-Linux 音频设备驱动
              g. ARM-Linux Nand Flash块设备驱动
              h. ARM-Linux 网络设备驱动
 
Linux内核设计部分:

    1Linux内核配置与内核模块

       . 内核配置编译
       . 补丁的制作
       . 内核补丁
       . 内核Makefile
       . Kconfig的编写
       . 模块的编译与加载
       . 导出符号
       . 引用计数
       . 内核空间与用户空间的区别
       . printk
 
    2、设备驱动初步
       . Linux的VFS简介
       . 设备文件与设备号      
       . 字符设备
       . cdev结构
       . 用户空间的操作与设备操作关系
       . open、release、read、write、lseek、ioctl等
 
    3、进程调度
       . 定时器中断
       . task_struct的作用
       . thread_info
       . 抢占与非抢占
       . 进程睡眠
       . 等待队列
       . 阻塞I/O与非阻塞I/O
       . select/poll
             
    4、并发控制
       . 原子操作
       . 自旋锁     
       . 禁用抢占
       . 中断屏蔽
       . 信号量
       . completion
             
    5、异步通知
       . Linux信号
       . fasync的实现
 
    6、内存管理与内核内存管理模块的使用
       . 虚拟地址空间与MMU
       . 内核页管理机制
       . 内核内存分配
       . 高端内存
       . vmalloc
       . 统一编址与独立编址
       . I/O端口与I/O内存
       . I/O静态映射
       . mmap
      
    7、内核时间与内核体系的时间控制
       . 内核计时jiffies
       . timer
       . tasklet
       . work_struct
 
    8、中断系统与Linux中断系统的使用
       . 中断机制
       . 异常向表相关代码分析
       . 中断号的确定
       . 上半部与下半部
       . 中断共享
 
    9、内核Debug
       . proc文件系统
       . 模块参数
        模块的相关Debug
 

Linux驱动部分(在Bootloader部分已经在尝试裸驱动的编写,这部分是驱动的第二部分)

    9、设备模型

       . kobject、kset、class、subsystem与sysfs的原理和关系
       . udev的原理与移植;
       . 总线设备驱动简介
       . bus_type 总线相关体系结构
       . device与device_driver原理 设备驱动体系结构
       . platform_device的应用
 
    10LCD驱动
       . ARM-Linux Frame Buffer驱动详解
        Linux中图形控制体系
       . LCD控制程序
        LCD驱动程序编写
 
    11、触摸屏驱动
       . ARM-Linux Input设备详解
       . 触摸屏控制
       实际开发板上的触摸屏驱动编写
 
    12、音频设备驱动
       . OSS驱动详解
       . I2S控制
             
    13、块设备驱动体系结构
      . 块设备的注册
        内核模块与块设备驱动
       . 块设备的I/O的特点
       . I/O请求
       . 操作集合
 
    14、网卡驱动编写
       . 设备注册
       . 驱动层数据收发
       . 地址解析