-
第一部分 基础部分
-----
---------
---------
---------
----
----
一、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
天)
教学目标
:熟悉常用的数据结构与算法
教学案例:
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裁剪与移植
.
新版内核移植
.
驱动整合