嵌入式ARM+LINUX整体培训大纲(一)
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)嵌入式系统稳定性测试实验
LINUX调试技术培训大纲(二)
Linux初步调试
1.1 使用printk/printascii打印调试信息
1.2 使用KGDB/GDB
1.2.1 GDB原理简介
1.2.2 使用GDB调试应用程序
1.2.3 使用KGDB调试内核程序
1.3 使用PROC接口调试驱动
1.4 使用BDI2000调试器
1.5 综述
试验1:printk/printkascii调试内核启动
试验2:使用kgdb调试内核
Linux系统性能分析与优化
2.1 用内核函数跟踪工具(KFT)跟踪内核启动/关闭时间
2.1.1 内核函数跟踪工具(KFT)简介
2.1.2 KFT的使用
2.2 用Linux跟踪工具(LTT)分析执行流
2.2.1 Linux跟踪工具(LTT)简介
2.2.2 LTT的使用
2.3 用基准测试工具分析Linux特定模块性能
2.3.1 基准测试原理简介
2.3.2 LMbench/Unixbench基准测试工具介绍及使用
2.3.3 Netperf基准测试工具介绍及使用
2.3.4 LTP基准测试工具介绍及使用
2.4 解决Linux系统实时性指标
2.5 综述
实验1:使用KFT分析启动和关闭时间
实验2:使用LTT工具跟踪Linux执行流
实验3:使用LMBench分析内核各模块性能
LINUX驱动开发培训大纲(三)
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、配置网络参数,测试网卡驱动程序行为
|
|