linux 内核驱动学习建议

 

- 第一部分 基础部分 ----- --------- --------- --------- ---- ----

一、Linux系统基础 (3天)
       
        教学目标: 能比较熟练的安装、操作Linux系统, 并能配置开发环境与常用服务.
 
           1. Linux 基 础
             . 系统安装
                 . 帮助系统
                 . 文件管理
                 . 用户组
                 . 文本处理与编辑
 
          2. Linux 常用命令
            . 查找
            . 压缩 
            . 输入/出重定向
            . 管道 
            . 启动脚本
            . 软件安装
            . x-window
    
    3. Linux 网络配置
             . TCP/IP 简介
             . 网卡配置
             . DNS 配置
             . nfs
             . ssh
 
二、shell程序设计(2天)
 
        教学目标: 能用Shell处理简单的批量化工作
 
          1. Bash Shell 初步
            . 变量
            . 运算符
            . 流程控制
            . 环境变量

 

          2 . Bash Shell 进阶

            . 文件操作
            . 函数
            . 输入输出
 
三、C语言程序设计 (10天)
 
        教学目标: 能设计普通的应用程序

        案例教学:  a、指法程序
                                 b、汉诺塔游戏
 
           1. C 语言基础
                 .  C 语言的特点
                 .  数据类型
                 .  运算符
                 .  表达式
                 .  关系运算符
                 .  if 语句
                 . switch 语句
        . 环语句
 
   2. 函 数
                . 函数的声明和定义
                . 形参与实参
                . 递归   .
 
   3. 数 组
                . 数组的定义
                . 整型数组
                . 字符数组
                . 字符串
                . 数组名的意义
                . 多维数组
 
            4. 指针
                 . 指针的定义
                 .  指针运算符
                 . 指针的加减
                 . 动态内存分配
                 . 堆与栈
 
    5 . 数组指针
        . 指针数组   
        . 数组指针
 
    6. 预编译与VT控制码
              . 声明与头文件
                  . 静态链接库
                  . 动态链接库
                  . ANSI VT 控制码
 
     7. 组合数据类型
          . 结构体
         . 结构体指针 
         . 枚举
         . 共用体 (联合)
 
     8. 指 针高级应用
          . 二级指针
                   . 三级指针
                   . 多级指针
                   . 函数指针
                   . C 语言与面向对象
 
            9. 文件操作
              . 标准I/O (fopen)
    
   10 . 辅助开发工具
         . Makefile 的 编写
         . GDB 的使用
         . CVS 与配置管理
 
四、数据结构  (7 天)
          
        教学目标熟悉常用的数据结构与算法
       教学案例:
 
           1. 成 绩管理系统
 
           2. 计算器
 
           3. 电子词典
 
           4. 文件压缩器
 
            1. 单向链表  
                  . 链表的创建
                  . 链表的遍历 
                  . 结点的添加、删除
                  . 基于函数指针的查找
 
            2 . Linux内核链表
                  . 双向链表
                  . Linux 内核链表的创建
                  . List 结构的作用
                  . 有头与无头链表
 
     3 . 排序及查找
         . 冒泡排序
        . 快速排序
        . 选择排序
        . 查入排序
 
            4 . Hash表
                   . Hash 算法
                   . Hash 表的创建
                   . 遍历
 
     5. 队列和堆栈
          . 数组存储
                   . 链式存储
 
     6 . 树与二叉树
          . 数组存储
                   . 链式存储
                   . 权值的概念
                   . Huffman
                   . Huffman 编码
 
            7 . 广义表
                   . 组合链表的应用
                   . 广义表
 
 
----------- --------- --------- ------ --- - - 第二部分 高级部分 ----- --------- --------- --------- ------ ---
  
一、C++程序设计(3天)
        教学目标: 能够利用C++的特性编写各种数据结构算法
 教学案例:
         1. 成绩管理系统(STL实现)
         2 . 模板库的实现(MyTL)
 
             1 . C++基础
                   . 面向对象思想
                   . C 语言的面向对象
                   . C++ 的类
                   . C 语言与C++面向对象实现方式的对比
                   . 友元
                   . 构造, 拷贝构造函数
                   . C++ 的编译原理, 与C、汇编的互相调用
 
            2 . 高级特性
                  . 继承
                  . 多重继承
                  . 虚函数与纯虚类
                  . 操作符重载
                   . 命名空间
                  . 静态函数
 
            3 . 泛型技术
                   . 模板函数
                   . 模板类
                   . STL 的使用
                   . STL 的实现
  
            4. 项目实践(5 天):
              . 俄罗斯方块
               注:用VT控制码 结合数据结构的知识来实现。
 
二:linux系统程序设计(7天)
       教学目标: 熟悉应用各种系统调用
 

       教学案例:
 

                              1. 串口监听程序
                              2. 图片浏览器
                              3. MP3播放器
 
            1. 系统I/O
                   . 文件操作
                   . 终端
                   . 规范及非规范模式
                   . select 与poll
                   . mmap
 
            2. 进程
                  . 进程的创建
                  . 进程地址空间
                  . 进程的控制终端
                  . 僵尸进程
                  . 孤儿进程
 
            3. 进程组与信号
                   . 进程组
                   . 会话的建立
                   . 守护进程
                   . 常见的系统信号
                   . 信号的注册
                   . 信号处 理
 
            4 . 进程间通信
                   . FIFO
                   . PIPE
                   . 共享内存
                   . 信号灯
                   . 消息队 列
 
            5 . 线程
                   . 线程的创建
                   . 线程的属性
                   . 取消状态与取消点
                   . 线程的退出及状态检测
                   . pthread_mutex
                   . pthread_cond
 
            6 . 图形程序设计
                   . Frame Buffer 的操作
                   . 位图原理与显示
                   . 矢量图形操作的实现  
                   . Freetype 操作与矢量文字的显示
                   . Xlib/QT/GTK 简介
 
            7. 音频处理与事件获取
             . 音频原理
             . OSS 音频程序设计
             . 键盘事件获取
             . 鼠标事件获取
             . Unicode 字符 获取
 
七、嵌入式网络程序设计 (3天)
       教学目标: 熟悉TCP/IP, 熟悉一般的网络服务器程序
教学案例:
                     1 . 聊天程序

                     2 . ftp程序

                     3 . 音频广播程序

                     4 . ping的实现

                     5 . DDos攻击程序

                     6 . ARP攻击程序   

 
            1 . TCP程序设计
      
            2 . 网络程序进阶
                    . UDP 传输
                    . 广播程序设计
                    . 多播程序设计 
 
            3 . 网络攻击
             . 原始套接口程序设计
             . DDos 攻击原理
             . ARP 攻击原理
 

            4. 项目实践(5 天):网络视频播放系统

 

                      利用所学的网络、图 形、声频知识构建一个完整的网络点播系统,核心解码部分

                      可用MPlayer 的相关部分。
      
八、ARM嵌 入式开发 (15 天)
        教学目标: 熟悉ARM微处理结构、指令和常用外围器件
      教学案例: (裸板驱动)
                               1. ARM 模拟器开发

                                 2. Watchdog 控制程序

                                 3. RTC 时钟控 制程序

               4. Uart 控制程序

               5. LCD 控制程序

               6. 触摸屏控制程序

                                 7. DMA 控制程序

               8. 音频控制程序
 
               9. 网卡控制程序
 
               10. 文件系统制作

                  11. ARM-Linux 移植

 
            1 . 嵌 入式系统移植 
                   . 仿真器的使用
                   . Bootloader 的烧写
                   . 内核的烧写
                   . 根文件系统的制作
                   . 文件系统的烧写
                   . NFS 文件系统
                   . 开发板串口通信
 
            2 . ARM体系结构
                   . IP 核、芯片与开发板
                   . 处理器结构
                   . 处理器模式
                   . 寄存器
                   . 流水线结构
                   . C 语言内嵌汇编格式
 
             3 . ARM指令系统
               . 算术逻辑指令
               . 指令对状态寄存器的影响
               . 比较分支指令
               . 数据总线与地址总线
               . 内存访问指令
               . 指令位图
               . 识别机器指令
 
             4 . ARM过程调用标准
               . LDM/STM
                    . 反汇编
                    . APCS
                    . C 语言函数与汇编的互相调用
 
             5 . ARM 汇编与GPIO
                    . AT&T 汇编语法详解
                    . gas 工具的使用
                    . label 标签的作用
                    . 数据与代码的分布
                    . 链接脚本ld-script
                    . 的外围器件结构
                    . GPIO 操作
 
             6. 时钟与UART 
                    . 总线标准
                    . 频率分配与设置
                    . Watchdog 计时操作
                    . RTC 时钟操作
                    . UART 操作
 
              7. ARM中断体系
                    .   异常向量表
                    . ARM 模式切换
                    . ARM 中断控制器
                    . 软中断
                    . Linux 系统调用的实现
 
            8 . Nand Flash
                   . Flash 原理
                   . Nand 控制器原理
                   . 时序分析
 
            9. SDRAM
                   . 物理地址分布
                   . SDRAM 原理与时序
                   . 内存控制器的物理连接
                   . 地址对齐
                   . SRAM 访问
                   . 软中断
                   . Linux 系统调用的实现
 
          10 . 内存管理单元(MMU)
              . MMU 的原理
                   . ARM 协处理器指令
                   . section 模式
                   . small page 模式
                   . I & D TLBs
                   . I & D Cache
                   . 哈佛结构的原理与实现
 
          11 . 触摸屏与ADC
                   . ADC 原理
                   . 触摸屏接口与控制
 
          12 . LCD 
                   . 图形显示原理
                   . LCD 控制器
                   . LCD 时序
 
          13. 音频与DMA
                   . 音频硬件原理
                   . UDA1341
                   . L3 总线
                   . 音频总线时序
                   . DMA 原理与应用
 
          14. 网卡
                   . 逻辑链路层与MAC层
                   . CS8900 原理与时序分析
 
          15. Bootloader开发
                   . u-boot 的配置、编译
                   . u-boot 启动过程分析
                   . ARM-Linux 的启动要求
                   . ARM-Linux kernel 的ld-sript分析
                   . u-boot 到ARM-Linux的跳转代码分析
 

          16. 项目实践 (5天):Bootloader开发

                     完全自主开发一个能 够引导Linux的Bootloader,需具备tftp、nand烧写等功能。
 
九、 Linux设备驱动程序 (15天)
 

        教学目标: 熟悉内核的裁剪、移植及设备驱动开发

 

        教学案例: (内核驱动)

                                 . GPIO驱动
                                 . RTC时钟驱动
                               . WatchDog 驱动
                                 . Udev移植
                                 DMA驱动
                                 . Nand Flash块设备驱动
                                 . LCD显示设备驱动
                                 . 触摸屏输入设备驱动
                                 . 网络设备驱动
                                 . 音频设备驱动
 
            1 . ARM-Linux启动过程
                   . ARM-Linux 的配置、编译
                   . ARM-Linux 启动代码分析
                   . ARM-Linux 地址映射;
                   . Busybox 的配置、编译
 
            2 . 内核配置与内核模块
               . 内核配置编译
               . 补丁的制作
               . 内核补丁
               . 内核 Makefile
               . Kconfig 的编 写
               . 模块的编译与加载
               . 导出符号
               . 引用计数
               . 内核空间与用户空间 的区别
               . printk
               . 模块参数
 
          3 . 设备驱动初步
            . Linux 的VFS 简介
            . 设备文件与设备 号  
            . 字符设备
            . cdev 结构
            . 用户空间的操作与设 备操作关系
            . open 、 release、read、write、lseek、ioctl等
 
           4 . 进程调度
              . 定时器中断
              . task_struct 的作用
              . thread_info
              . 抢占与非抢占
              . 进程睡眠
              . 等待队列
              . 阻塞I/O与非阻塞 I/O
              . select/poll
        
           5 . 并发控制
              . 原子操作
              . 自旋锁   
              . 禁用抢占
              . 中断屏蔽
              . 信号量
              . completion
 
           6 . 内存管理
              . 虚拟地址空间与 MMU 
              . 内核页管理机制
              . 内核内存分配
              . 高端内 存
              . vmalloc
              . 统一编 址与独立编址
              . I/O 端 口与I/O内存
              . I/O 静 态映射
              . mmap
 
           7 . 内核计时
              . 内核计时 jiffies
              . timer
              . tasklet
              . work_struct
              . Linux 信号
              . fasync 的实现
              . RTC 时钟驱动
 
          8 . 中断系统
             . 中断机制
                 . 异常向表相关代码分析
                 . 中断号的确定
                 . 上半部与下半部
                 . 中断共享
 
          9 . 设备驱动模型
            . kobject 、kset、class、 subsystem与sysfs的原理和关系
                . udev 的原理与移植
                . bus_type
                . device 与device_driver原理
                . platform_device 的应用
 
           10 . 触摸屏驱动
               . ARM-Linux Input 设备详解
                    . 触摸屏控制
  
           11. LCD驱动
               . Frame Buffer 驱动详解
                    . LCD 控制
 
         12 . 音频设备驱动
                    . OSS 驱动详解
               . I2S 控制
        
           13 . 块设备驱动
               . 块设备的注册
                    . 块设备的I/O的特点
                    . I/O 请求
    
           14 . 网卡驱动
                    . 设备注册
                    . 驱动层数据收发
                    . 地址解析
 
           15 . ARM-Linux裁剪与移植
                     . 新版内核移植
                     . 驱动整合

你可能感兴趣的:(ARM+LINUX,linux,代码分析,数据结构,linux内核,汇编,makefile)