1 ARM体系结构
1.1 ARM简介
1.2 ARM体系结构
1.3 流水线
1.4 处理器工作模式
1.5 ARM处理器核
2 ARM指令集
2.1 V4T指令
2.2 V5TE指令
2.3 V6指令
2.4 Thumb指令
|
| 实验
1、使用RealView MDK环境构建基本工程
2、基本ARM指令练习
3、数据搬运练习
|
|
|
|
| 3 ARM与Thumb交互
3.1 交互工作基础
3.2 子程序交互和veneers
3.3 ARM V5TE架构扩展
4 RealView MDK开发工具介绍
5 异常处理
5.1 中断处理
5.2 Abort处理
5.3 SWI 处理
5.4 复位和未定义指令处理
|
| 实验:
1、ARM/Thumb交互
2、Thumb下的块拷贝实验
3、异常处理实验
|
|
|
|
| 6 C/C++ 编译器提示和技巧
6.1 arm编译优化础
6.2 汇编、c、c++混合编程
6.3 arm编译器规则
6.4 局部和全局变量
7 嵌入式软件编程
7.1 调整c库使其适合目标平台
7.2 调整内存映射使其适合目标平台
7.3 复位和初始化
7.4 编译和调试目标镜像
|
| 实验:
1、C语言程序实验
2、汇编和C混合编程实验
3、调整C库和内存映射,编写能够在目标硬件运行的LED测试程序
|
|
|
|
| 8 基于ARM的嵌入式硬件平台接口设计
8.1 基于ARM的SOC组成
8.2 构建ARM嵌入式系统
9 嵌入式硬件平台(基于s3c2410/s3c2440)接口操作
9.1 GPIO接口
9.2 ADC接口
9.3 UART接口
9.4 I2C接口
9.5 定时器
9.6 中断接口
9.7 DMA接口
|
|
|
|
|
|
| 10 从零编写bootloader
10.1 嵌入式linux系统的构成
10.2 引导程序的任务
10.3 引导程序的结构及启动流程
10.4 实现串口下载功能
10.5 实现usb下载功能
10.6 实现 nandflash读写功能
10.7 引导linux内核
|
| 实验:
1、bootloader编写实验(基于realview MDK环境)
2、linux系统编译实验
3、制作文件系统实验
4、bootloader通过USB下载内核、文件系统实验
|
时间
| 内 容
|
| (1)Linux概述; (2)Linux安装、内核定制、使用及初始化流程分析。
(3)linux的管理和网络应用 (4)shell程序设计;
(5)实验:(a)安装与定制Red hat Linux系统、定制Linux内核;
(b)实验:编写shell程序。
(c)实验:linux命令实践和网络应用。
|
|
(1)Linux进程管理,包括进程的PCB管理、进程状态及迁移、进程的创建与消亡、进程间通信;系统调用基础知识。
(2)Linux存储管理,包括Linux下进程的虚地址空间的概念、进程的虚存段VMA、内存映射、共享存储等;
(3)实验:编写应用程序,实现进程之间通过共享存储进行通信。
(4)Linux文件系统,介绍VFS技术、EXT2、EXT3文件系统;
|
(1) 设备驱动程序结构介绍,内核模块技术及内核模块编程知识;
(2) Linux下的应用程序结构介绍;Make file讲解。
(3) 实验:学习编写一个Linux TCP/IP 通讯程序。
|
|
(1)嵌入式的基本概念
(2)嵌入式微处理器分类
(3)ARM嵌入式系统的硬件结构
|
(1)基于ARM的GUI技术的介绍
(2)MINIGUI的GUI实验
(3)QTE的GUI实验
|
|
(1)ARM嵌入式系统硬件开发相关技术
(2)ARM7体系结构(ARM7 S3C44B0X)
和ARM9体系结构(ARM9 atm9200)
|
(1)ARM嵌入式系统的指令及编程
(2)ARM汇编指令实验
|
| 上午:
(1)嵌入式linux系统简介
(2)嵌入式linux开发环境的介绍
(3)嵌入式linux内核分析
| 下午:
(1)嵌入式linux设备驱动程序开发
(2)嵌入式多线程开发
(3)实时嵌入式linux系统介绍
|
| 上午:
(1)嵌入式系统开发的组网结构实验;
(2)嵌入式linux内核编译实验;
(3)嵌入式linux文件格式改变实验;
| 下午:
(1)嵌入式文件系统实验;
(2)嵌入式应用程序实验;
(3)嵌入式驱动程序实验;
(4)嵌入式系统稳定性测试实验
|
1. LINUX字符设备驱动程序开发
1.1 LINUX内核结构
1.2 LINUX内核配置与编译
1.3 LINUX内核模块编程与加载
1.4 LINUX-2.6设备驱动模型与SYSFS文件系统
1.5 LINUX设备驱动程序基础与设备I/O
1.6 LINUX字符设备驱动基础
1.7 字符设备驱动程序实现框架与典型驱动分析
1.8 用户空间与内核空间的数据传输
1.9 阻塞与非阻塞I/O设计
|
| 【实验】
1、驱动开发编程环境与内核配置、编译
2、编写模块化字符设备驱动程序与测试
3、如何为内核程序传递参数
4、蜂鸣器驱动程序编写与测试
5、阻塞型字符设备驱动编写与测试
|
|
学习目标
| 通过字符设备驱动程序开发高级篇的学习,学员能够进行复杂的字符设备驱动程序开发,包括掌握设备硬件中断服务程序编写、操作延迟与中断上下部的编程以及掌握内核空间内存的使用等。
|
| 2. LINUX字符设备驱动程序高级开发
2.1 LINUX内核中断子系统
2.2 中断处理程序编写
2.3 驱动程序上/下半部处理与延缓执行机制
2.4 内核定时器与延迟机制
2.5 内核地址空间与内存使用
2.6 内核与驱动程序调试
|
| 【实验】
1、编写一个简单的驱动程序,使用3种内存分配机制
2、扫描键盘的驱动原理
3、内核定时器的使用
4、编写带中断支持的扫描键盘驱动
5、上下部支持的键盘驱动编写
|
|
学习目标
| 块设备常用于存储,如闪存等。通过这一天块设备驱动程序开发的学习,学员能够明白Linux中块设备驱动的特点及框架,独立分析Linux中大部分块设备的驱动方法,并熟悉MTD设备驱动的特点与框架,具备MTD Nand Flash驱动程序开发的能力。通过实验,学员还可以掌握IDE、Ramdisk驱动移植方法。
|
| 3. LINUX块设备驱动程序开发
3.1 块设备及其驱动的特点
3.2 块设备驱动程序中两个关键结构体GEN_DISK与REQUEST
3.3 块设备驱动程序的注册与请求处理
3.4 MTD设备的特点以及与块设备的关系
3.5 MTD设备驱动的框架及关键结构体分析
3.6 S3C2410(S3C2440)中的NAND FLASH控制器分析
3.7 S3C2410(S3C2440) NAND FLASH MTD驱动分析
|
| 【实验】
1、编写简单的块设备驱动程序
2、实现RAMDISK驱动
3、IDE硬盘的驱动移植
4、移植S3C2410 闪存控制器驱动
5、配置MTD内核选项
6、移植嵌入式文件系统
|
|
学习目标
| 网络设备是嵌入式产品开发,特别是基于网络的产品开发中必须掌握的一种设备。通过Linux网络设备驱动程序开发的学习,学员将深入理解Linux网络驱动程序中有关套接字(socket)、套接字缓冲区(sk_buff)等概念,了解网络驱动程序的数据交换过程。通过实际的动手操作,学员将掌握如何移植或编写具体网卡的驱动程序,并在此基础上实现更为高级的网络功能。
|
| 4. LINUX网络设备驱动程序开发
4.1 OSI网络参考模型
4.2 套接字(SOCKET)简介
4.3 套接字缓冲区(SK_BUFF)
4.4 NET_DEVICE结构分析
4.5 数据包传送与接收
4.6 网络驱动的中断处理
4.7 网络设备驱动程序的基本实现
|
| 【实验】
1、了解网络设备驱动中常用的数据结构
2、分析网络驱动程序结构
3、编写简单的虚拟以太网卡驱动程序
4、移植并编写CS8900A网卡驱动程序
5、移植并编写DM9000网卡驱动程序
6、配置网络参数,测试网卡驱动程序行为
|