嵌入式高级软件工程师培训计划.docx
《嵌入式高级软件工程师培训计划.docx》由会员分享,可在线阅读,更多相关《嵌入式高级软件工程师培训计划.docx(18页珍藏版)》请在冰豆网上搜索。
嵌入式高级软件工程师培训计划
深圳嵌入式高级软件工程师培训
(课程编号:
247422
C/C++嵌入式高级软件工程师培训课程专注于培养企业需求量大,就业率高,目前人才市场紧缺的C++高级软件工程师、嵌入式软件工程师以及系统分析师。
本课程将C++和嵌入式有机地结合起来,培训内容包括理论知识强化、实际案例训练、企业项目实战等内容,让学生扎实掌握C++和嵌入式编程的各项关键技术,获得C++和嵌入式软件开发丰富的项目经验,为学员高质量高薪就业打下扎实的基础。
C/C++嵌入式高级软件工程师教学大纲由资深C++嵌入式领域专家根据嵌入式系统的设计原则和市场要求设计和制定,实践证明本教学大纲科学合理,能够快速培养实用的C++嵌入式工程师。
通过培训可以获得扎实的开发技能,积累至少相当二年的工作开发经验。
本课程系统介绍了C++开发环境和IDE介绍、C语言、C++/OOP程序设计、GP和标准模板类库(STL、Windows编程、VisualC++/MFC程序设计、网络编程技术、数据库编程技术、Unix/Linux编程、面向对象的系统分析与设计方法、计算机系统的基本原理,操作系统、接口技术、嵌入式系统开发详解等基本知识。
通过这些知识的学习,让学生掌握C++的关键技术和嵌入式系统开发的基本原理和设计方法,并通过实际项目的开发,让学生掌握嵌入式系统开发的整
个流程,操作系统移植的基本思想、移植原则,应用程序及驱动程序的开发和调式方法。
由有关专家、学者和优秀的一线资深C++嵌入式工程师,集合国际先进嵌入式技术和理论,对嵌入式开发过程进行综合分析,结合最新的软件开发环境,进行实际案例的培训;实战训练贯穿于全部课程中,学员学练结合、学以致用,以培养实际工作能力,快速获得项目经验。
每半月进行一次测试,确保学员掌握所学知识。
目录第1部分:
LINUX操作系统基础入门4
第1天LINUX操作系统基础4
第2天LINUX基本命令4
第3天LINUX下C编程基础4
第2部分C/C++编程4
第4天C/C++语言简介、数据类型和操作符4
第5天复合类型5
第6天指针5
第7天循环和关系表达式5
第8天分支语句和逻辑操作符6
第9天函数6
第10天类(17
第11天类(27
第12天继承7
第13天代码重用8
第14天友元、异常和类模板8
第3部分数据结构和算法8
第15天数据结构和算法(18
第16天数据结构和算法(28
第17天数据结构和算法(38
第18天阶段考试9
第4部分嵌入式系统和ARM介绍9
第19天嵌入式系统和ARM介绍9
第5部分嵌入式LINUX系统编程9
第20天嵌入式LINUX开发环境的搭建9第21天文件I/O编程9
第22天进程控制开发10
第23天进程间通讯10
第24天多线程编程10
第25天嵌入式LINUX网络编程10
第26天嵌入式LINUX设备驱动开发10第27天QT图形编程11
第6部分WINDOWS编程11
第28天WINDOWS程序内部运行机制11第29天MFC框架11
第30天简单绘图与文本编程11
第31天菜单和对话框12
第32天绘图控制和文件12
第33天网络编程(113
第34天网络编程(213
第35天多线程(113
第36天静态、动态连接库、组件编程13
第7部分WINCE编程14
第37天WINDOWSCE操作系统的介绍14
第38天建立WINDOWSCE开发环境14
第39天平台模拟器的建立和使用14
第40天WINCE操作系统设计14
第41天WINDOWSCE窗口消息机制与屏幕输出15
第42天WINCE下多线程编程,文件操作与串口通信15第43天WINDOWSCE下MFC程序的开发15
第8部分MTK手机软件15
第44天手机设计基础理论15
第45天MTK开发环境介绍15
第46天MTK开发工具介绍16
第47天MTK软件编译及工程源程序介绍16
第48天由浅入深的手机软件开发16
第49天如何在开发板上进行项目实践16
第9部分结业考试16
第50天结业考试16
第10部分项目实战16
第51~100天项目开发16
C++&嵌入式软件工程师培训教学大纲
第1部分:
Linux操作系统基础入门
第1天Linux操作系统基础
1.介绍Linux操作系统的基本知识,包括发展概述,目前应用情况,技术优势和特点等。
2.Linux系统的安装准备,Linux文件系统。
3.实验内容:
安装Linux操作系统
第2天Linux基本命令
1、Linux常用操作命令,包括用户系统相关命令,文件目录相关命令,压缩打包相关命令,网络相关命令等。
2、Linux启动过程详解
3、Linux系统服务
4、实验内容:
Linux系统常用命令操作
第3天Linux下C编程基础
1.C语言编程概述
2.Vi等编辑工具使用
3.Gcc和GDB的使用
4.Make工程管理器
5.实验内容:
Vi使用,用GDB调试程序,编写简单的Makefile
第2部分C/C++编程
第4天C/C++语言简介、数据类型和操作符
1.软件开发流程和方法,行业现状
2.c/c++语言起源和历史发展
3.c/c++语言的特点和应用领域
4.c++集成开发环境介绍。
讲解vc++IDE环境的使用,包括编译,链接,运行和调试。
5.学习c/c++程序设计的方法
6.c/c++简单程序的结构
7.计算机处理数据的抽象层次
8.c++的基本数据类型的处理
9.数据溢出的结果和应对方法
10.C++的算术操作符
11.自动类型转换
12.强制类型转换
第5天复合类型
1.数组
2.字符串
3.string类
4.结构
6.枚举
第6天指针
1.指针
2.内存分配
3.指针、数组、字符串之间的关系
4.指针算术
5.字符串的指针操作。
6.多维数组和指针访问。
7.空指针的意义。
8.指针练习。
第7天循环和关系表达式
1.for循环
2.关系表达式
3.while循环
4.dowhile循环
5.嵌套循环
6.多维数组
7.控制台输入输出
第8天分支语句和逻辑操作符
1.if语句
2.逻辑表达式
4.switch语句
5.break
6.continue
7.return
8.简单文件输入输出
第9天函数
1.函数原型
2.函数参数和按值传递
3.参数为数组(一维和多维的函数
4.参数为指针的函数
5.参数和返回类型维结构的函数
6.处理string对象的函数
7.函数指针
8.内联函数和宏的使用
9.引用变量
10.函数重载的机制
11.函数模板
12.c++程序的内存模型和几种内存的分配方式
13.结构化程序设计的原则
14.源文件和头文件的物理布局以及对程序模块划分和程序编译的影响
15.静态变量
16.名称空间
第10天类(1
1.面向过程编程和面向对象编程的区别
2.面向对象和程序设计语言的关系
3.类的概念和抽象层次
4.接口的概念和客户/服务器模型
5.类的定义和数据封装
6.构造函数和析构函数
7.this指针和对象数组
第11天类(2
1.指针类成员以及动态分配内存的初始化
2.含指针成员的类的=操作符重载和拷贝构造函数的定义
3.按成员拷贝(bit-wisecopy和deepcopy的区别
4.什么时候需要考虑深拷贝(deepcopy
5.操作符重载
6.友元类和友元函数
7.类的自动转换和强制类型转换
第12天继承
1.继承和派生的概念
2.继承的访问控制和继承方式
3.构造函数成员初始化列表
4.基类和派生类对象的构造顺序
5.继承和对象模型(对象的赋值和切割
6.虚函数的语法和定义
7.继承和多态的关系
8.静态联编和动态联编
9.虚析构函数
10.虚函数表和多态实现的编译器机制
11.含有虚函数的类的对象模型
第13天代码重用
1.Has-a关系
2.包含成员对象的类
3.私有和保护继承
4.多重继承
5.虚基类
第14天友元、异常和类模板
1.友元
2.异常
3.类模板和具体化
第3部分数据结构和算法
第15天数据结构和算法(1
1.常用的字符串的c函数的具体的代码实现
2.数据结构概论
3.算法基本概念
4.时间和空间复杂度
5.单链表的实现及其应用
6.循环链表的实现及其应用
第16天数据结构和算法(2
1.双向链表的实现
2.堆栈实现及其应用
第17天数据结构和算法(3
1.队列的实现及应用
2.字符串的查找,替换,连接等操作
3.数组,字符串,指针,多维数组的相互关系和归纳
4.递归算法
5.二叉排序树的实现及应用
6.二叉树的前序遍历、中序遍
7.历、后序遍历。
8.常见排序方法和二分查找
第18天阶段考试
第4部分嵌入式系统和ARM介绍
第19天嵌入式系统和ARM介绍
1.嵌入式系统概述
2.ARM硬件平台介绍,ARM处理器体系结构
3.嵌入式软件开发流程
4.实验内容:
用JTAG工具烧写NANDFLASH第5部分嵌入式Linux系统编程
第20天嵌入式Linux开发环境的搭建
1、嵌入式交叉编译环境的搭建
2、超级终端的配置和使用
3、编译嵌入式linux内核
4、制作文件系统
5、Bootloader介绍
6、实验内容:
移植Linux内核
第21天文件I/O编程
1、Linux系统调用和用户编程接口
2、Linux中文件和文件描述符介绍
3、不带缓存的文件I/O操作
4、嵌入式Linux串口应用开发
5、标准I/O开发
6、实验内容:
文件读写和上锁,串口读写
第22天进程控制开发
2、Linux进程控制编程
3、Linux守护进程
4、实验内容:
编写多进程程序,编写守护进程第23天进程间通讯
1、管道通信的创建和关闭
2、信号通信的发送和捕捉
3、共享内存的实现
4、消息队列的实现
5、实验内容:
管道通信编写程序,共享内存实验第24天多线程编程
1、Linux下线程概述
2、Linux线程实现
3、实验内容:
“生产者消费者”实验
第25天嵌入式Linux网络编程
1、TCP/IP协议介绍
2、Socket基础编程
3、网络高级编程
4、Ping源代码分析
5、实验内容:
NTP协议实现
第26天嵌入式Linux设备驱动开发
2、字符设备驱动编写
3、块设备驱动编写
4、中断编程
5、实例介绍:
LCD驱动和键盘驱动的实现
6、实验内容:
Skull驱动
第27天Qt图形编程
1、嵌入式GUI概述
2、Qt/Embeded开发入门
3、搭建Qt/Embeded开发环境
4、Qt/Embeded图形界面编程
5、实验内容:
使用QT编写“HELLOWORLD”程序第6部分Windows编程
第28天Windows程序内部运行机制
1.API与SDK
2.窗口与句柄
3.消息与消息队列
4.WinMain函数
5.第一个windows程序
6.消息循环的错误分析
7.变量的命令约定
第29天MFC框架
1.MFCAppWizard
2.基于MFC的程序框架剖析
3.窗口类、窗口类对象与窗口第30天简单绘图与文本编程
1.MFC消息映射机制
2.绘制线条
3.使用画刷绘图
4.绘制连续线条
5.绘制扇形效果线条
6.插入字符
7.窗口重绘
8.路径
9.字符输入
第31天菜单和对话框
1.菜单命令响应函数
2.菜单命令的路由
3.基本菜单操作
4.动态菜单操作
5.电话本示例程序
6.对话框基本知识
7.对话框的创建和显示
8.动态创建按钮
9.控件的访问
10.对话框伸缩功能的实现
11.输入焦点的传递
12.默认按钮的进一步说明
第32天绘图控制和文件
1.简单绘图
2.设置对话框
3.颜色对话框
4.字体对话框
5.改变对话框和控件的背景和文本颜色
6.显示位图
7.坐标空间和转换
8.图形的保存和重绘
9.窗口滚动功能的实现
10.元文件
11.兼容设备描述表
第33天网络编程(1
1.计算机网络概述
2.OSI七层模型和TCP/IP协议栈
3.客户机/服务器的通信方式
4.物理层和数据链路层
6.TCP和UDP协议
第34天网络编程(2
1.基于WinAPISOCKET编程基础
2.面向无连接的协议和面向连接的协议
3.流式协议和数据报协议的区别
4.套接字选项的配置
5.网络层相关技术
6.字节顺序(Byte-order
7.基于MFC的CSocket类的网络编程
第35天多线程(1
1.进程和线程
2.线程创建函数
3.Sleep函数
4.使用互斥对象实现线程同步
5.保证应用程序只有一个实例运行
第36天静态、动态连接库、组件编程
1.事件对象
2.关键代码段
3.线程死锁
4.互斥对象、时间对象与关键代码段的比较
5.基于消息的异步套接字
7.动态库
第7部分WinCE编程
第37天WindowsCE操作系统的介绍
1、WindowsCE的结构功能概览
2、进程、线程与调度
3、内存管理
4、存储管理与文件系统
5、驱动管理与服务
6、用户界面与图形系统
7、WindowsCE的应用特性
第38天建立WindowsCE开发环境
1.WindowsCE应用程序开发的几点说明
2.应用程序开发流程
3.WindowsCE的应用编程接口
4.开发工具介绍及对比
第39天平台模拟器的建立和使用
1.建立模拟器环境
2.建立硬件开发板环境
第40天WinCE操作系统设计
1.在PC机上运行WindowsCE
2.PlatfromBuilder集成开发环境
3.定制WindowsCE操作系统的一般流程
4.WindowsCE的目录组织
第41天WindowsCE窗口消息机制与屏幕输出
1.建立一个HelloWorld程序
6、添加窗口消息响应函数
7、编写文字输出程序
8、编写屏幕绘图程序
第42天WinCE下多线程编程,文件操作与串口通信
1.多线程的实现
2.WindowsCE中的文件操作
3.WindowsCE中的串口通信
第43天WindowsCE下MFC程序的开发
1.建立基于MFC框架的WindowsCE应用程序
2.编程实现菜单,对话框,窗口的操作与消息通讯
3.编程实现MFC中的基本控件的功能
4.编写WindowsCE下的串口调试工具
第8部分MTK手机软件
第44天手机设计基础理论
1、手机软硬件原理介绍
2、手机重要技术指标介绍
第45天MTK开发环境介绍
1、MTK手机芯片介绍
2、MTK软件架构分析
第46天MTK开发工具介绍
1.烧写程序下载工具FlashTools
2.编译工具和辅助工具update,ActivePerl
3.Trace工具:
catcher
4.手机工程测试工具:
META(MobileEngineeringTestingArchitecture第47天MTK软件编译及工程源程序介绍
第48天由浅入深的手机软件开发
1.熟悉编译过程
2.改变编译参数/宏定义来实现手机配置的改变或设定
3.更换资源文件实现新的手机界面
4.利用MTK辅助工具实现手机新功能
5.修改源程序实现复杂的功能更改或增加
6.修改NVRAM数据来改变手机的功能/性能
7.新功能模块的开发
第49天如何在开发板上进行项目实践
第9部分结业考试第50天结业考试第10部分项目实战第51~100天项目开发~嵌入式项目阶段项目实战内容包括:
PDA、MP3、MP4、手机、IC卡门禁系统、GPS导航仪等嵌入式产品软件开发项目可选择。
1、PDA项目:
采用WinCE或者嵌入式Linux操作系统,实战内容包括BootLoader编程、UI编程、应用程序编程。
2、MP3项目:
采用C语言编程,在矩力MP3芯片平台上编写UI。
3、MP4项目:
在Sunplus芯片平台,学习编写MP3、MP4、FM、图片浏览等模块程序。
4、手机项目:
在MTK手机平台上,学习编写电话簿、短信、MP3、MP4、数码相机的模块软件。
5、GPS导航仪项目:
在三星2440平台上,采用WinCE操作系统,学习编写GPS导航仪模块软件。
6、另外还有更多实际产品开发工作,可提供学员参与。
C++项目阶段++项目阶段++A.数据库实践(一SQLServer(1一1.数据库的体系结构介绍2.标准SQL的数据类型3.表的设计。
表内的约束:
主键,唯一,检查。
索引。
4.表之间的关系的设计。
包括一对一、一对多、多对多。
表间的外键约束。
5.数据操作语句6.常用函数7.关联查询8.嵌套查询9.连接查询(二SQLServer(2二1.T-SQL的基本语法2.数据类型3.变量4.条件分支5.循环控制(三SQLServer(3三
1.视图2.游标3.过程(四SQLServer(4四1.函数2.触发器3.事务4.ADO和ODBC编程B.实战项目i.类UC语音视频网络聊天室:
文本,语音,视频聊天集于一体,重点掌握网络和多线程序编程,数据压缩,传输。
ii.远程教学系统:
实现远程教学,屏幕传输,课件文件设计,制作,播放,声音,视频传输,数据库管理。
iii.类QQ游戏大厅:
管理游戏用户登陆,游戏下载,房间管理,实现1-2个最基本的多人在线游戏,如斗地主,拱猪,升级等。
iv.类雷霆战军3D游戏:
运行Direct3D技术,强调设计模式,在线多人游戏,实现通关功能,界面和逻辑分离思想,外挂制作技术原理。
v.CVT版本控制工具:
三层架构,实现软件项目管理,人员管理,权限管理,版本控制,项目数据外部备份,文件的签入签出,文件蒙合操作,文件历史对比,项目人员在线沟通功能。