嵌入式高级工程师 培训日程以及课程内容
内 容
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、数据搬运练习
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接口
嵌入式LINUX进程及进程间通讯开发的知识:
进程的属性和状态
进程的控制和调度
进程的创建、执行、消亡
进程的相关系统调用
守护进程
进程间通信基本概念
管道(PIPE)
信号(SIGNAL)
内存映射(MAPPED MEMORY)
消息队列(MESSAGE QUEUE)
信号量(SEMAPHORE)
共享内存(SHARE MEMORY)
学员操作 : 1、使用PS命令查看进程信息
2、使用PROC文件系统查看进程信息
3、使用SYSTEM()系统调用运行和等待
4、EXIT和EXEC系统调用实例
5、编写一个守护进程
6、编写基于串口通信的多进程程序
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测试程序
10 从零编写bootloader
10.1 嵌入式linux系统的构成
10.2 引导程序的任务
10.3 引导程序的结构及启动流程
10.4 实现串口下载功能
10.5 实现usb下载功能
10.6 实现 nandflash读写功能
10.7 引导linux内核
嵌入式Linux下的网络开发
3.1 ISO/OSI七层协议模型与IP网络四层模式
3.2 TCP/IP协议簇
3.3 基于嵌入式LINUX的TCP/IP网络结构
3.4 基于嵌入式LINUX的SOCKET编程
3.5 UDP与TCP的区别
3.6 UDP SERVER-CLIENT关系程
嵌入式GUI与数据库开发
4.1 嵌入式LINUX GUI介绍及QT/MINIGUI之间比较
4.2 QT介绍及其信号插槽机制
4.3 QT图形界面编程技术
4.4 QVFB虚拟帧缓存的建立和模拟开发调试
4.5 QT程序移植技术
4.6 QT在实际项目中具体应用
4.7 嵌入式数据库的概念
4.8 嵌入式数据库的移植与编程
相关实验配备
嵌入式Linux开发环境构建
1.1 交叉开发环境介绍
1.2 编译交叉开发工具链
1.3 配置主机开发环境
1.4 建立交叉开发环境
1.5 编译器和二进制工具详解
1.6 交叉调试应用程序
配置编译Linux内核
3.1 Linux内核介绍
3.2 Linux内核特点
3.3 Linux内核源代码结构 3.4 Linux内核选项解析
3.5 Linux内核编译链接
调试Linux内核
5.1 Linux内核调试概述
5.2 Linux内核的打印函数
5.3 Linux内核启动过程错误分析
5.4 解析oops信息
5.5 常用调试方法和工具
5.6 基本的驱动程序分析
实验内容:熟悉Linux启动过程信息打印函数,分析出错信息的位置,掌握基本的调试方法
(1) 配置交叉开发环境
(2) 通过基本调试手段解决内核启动过程错误
(3) 添加串口网口等基本驱动程序
(4) 为FS2410板添加MTD分区表
集成部署Linux系统
6.1 Linux文件系统制作
6.2 Linux系统集成测试
6.3 文件系统和存储设备的选择
6.4 部署Ramdisk文件系统的过程
6.5 部署JFFS2文件系统的过程
实验内容:基于ARM平台上完成ramdisk文件系统的制作和部署
(1) 制作最小的文件系统
(2) 部署ramdisk文件系统
(3) 部署jffs2文件系统
开发系统引导程序
2.1 Bootloader介绍
2.2 u-boot工程介绍
2.3 u-boot的编译使用
2.4 u-boot源码分析
2.5 u-boot资源分配
2.6 u-boot移植过程
移植Linux内核源码
4.1 Linux内核移植介绍
4.2 Linux内核移植平台相关代码分析
4.3 动手修改Linux内核源代码
4.4 分析编译过程错误和宏定义的关系
4.5 Linux启动过程源代码分析
实验内容:熟悉Linux内核平台相关代码,为FS2410板移植高版本的Linux内核
(1) 配置交叉开发环境
(2) 配置编译高版本的Linux内核
(3) 移植FS2410板Linux内核支持到高版本
(4) 分析解决编译过程中的错误
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、阻塞型字符设备驱动编写与测试
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、配置网络参数,测试网卡驱动程序行为
2. LINUX字符设备驱动程序高级开发
2.1 LINUX内核中断子系统
2.2 中断处理程序编写
2.3 驱动程序上/下半部处理与延缓执行机制
2.4 内核定时器与延迟机制
2.5 内核地址空间与内存使用
2.6 内核与驱动程序调试
【实验】
1、编写一个简单的驱动程序,使用3种内存分配机制
2、扫描键盘的驱动原理
3、内核定时器的使用
4、编写带中断支持的扫描键盘驱动
5、上下部支持的键盘驱动编写
. 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帧缓冲驱动程序开发
1.1 帧缓冲显示技术
1.2 帧缓冲驱动程序显示原理
1.3 帧缓冲驱动程序的数据结构
1.4 帧缓冲驱动程序的API
1.5 帧缓冲驱动程序的基本实现
1.6 使用高级图形库
【实验】
1、熟悉FRAMEBUFFER驱动的结构
2、熟悉FRAMEBUFFER中的重要数据结构
3、编写S3C2410彩色LCD控制器驱动程序
4、编写测试程序控制屏幕显示
5、编译高级图形库例子,显示图形
LINUX下USB驱动开发基础
3.1 LINUX内核对USB的支持
3.2 USB主控制器初始化
3.3 USB主控制器层次结构
3.4 USB HUB初始化
3.5 USB HUB对端口监控
3.6 USB设备探测
3.7 USB总线地址分配
3.8 USB设备的初始化
【实验】
1、使用USBVIEW工具察看LINUX内核对USB的支持,以及USB总线拓扑
2、使用SYSFS分析USB层次结构
3、调试分析USB HUB驱动,察看设备初始化过程
4、编写USB骨架程序
LINUX下MMC/SD卡驱动开发
2.1 嵌入式系统中几种常见存储介质的比较(NOR/NAND FLASH、CF、MMC/SD)
2.2 MMC/SD卡物理及电气规范简介
2.3 MMC/SD卡工作中的关键命令及关键结构信息
2.4 S3C2410(S3C2440)中MMC/SDHOST控制器分析
2.5 LINUX中MMC/SD存储卡驱动程序结构分析
2.6 S3C2410(S3C2440)中MMC/SD HOST控制器的驱动实现【实验】
1、MMC/SD协议分析与布线原则
2、在LINUX源码中加入针对ARM平台的MMC/SD主控制器驱动的支持
3、以所给的驱动模板为基础,补充初始化及命令和数据传输的关键代码,最终可以使用此代码成功驱动SD存储卡
LINUX下USB驱动高级开发
4.1 USB HOST CONTROLLER OHCI芯片实现
4.2 USB STORAGE设备初始化
4.3 USB STORAGE与SCSI块设备交互
4.4 USB STORAGE设备的协议转换
4.5 USB 网络芯片DM9601初始化
4.6 DM9601设备加载与卸载
4.7 DM9601设备数据发送与URB处理
4.8 使用USB中断
【实验】
1、调试USB STORAGE初始化过程和数据存储,实现完整的U盘驱动
2、调试DM9601芯片加载/卸载,数据包传递以及USB中断行为,构建基于DM9601芯片的USB-NET系统上下部支持
3、调试并移植USB-网卡驱动程序
4、调试并移植USB-RS232驱动程序