成都嵌入式开发课程
【所属机构:成都学到牛牛】
嵌入式开发是指利用分立元件或集成器件进行电路设计、结构设计,再进行软件编程(通常是高级语言),实验,经过多轮修改设计、制作,最终完成整个系统的开发。这种嵌入式开发,适用于未来产品比较单一,产量比较大,产品开发周期比较长,成本控制比较严格的系统。
【课程名称】:嵌入式开发就业班
【课程周期】:5个月
【课程目标】:本课程旨在培养嵌入式驱动研发工程师,能从事嵌入式驱动开发、Android底层开发、多平台驱动开发、Linux应用程序开发等相关工作。
【课程对象】:零基础、转行学习开发人员
【三位一体专属定制服务】:
1、就业规划师:简历设计、面试指导、职业规划,内推+企业双选会;
2、专业讲师:理论+实践手把手教学,内推+企业双选会;
3、班主任:学员管理、监督,学习方案规划。
【环境展示】:
【课程大纲】:
第一阶段:C语言核心(学习时长:5周)
一、Linux系统基础
Linux系统安装、命令讲解、文件管理、用户管理;linux各种软件安装、shell脚本、环境变量;系统网络配置,TCP/IP简介,网络文件系统。
二、C语言核心
1、C语言表达式、基础运算符、C语言关键字、基本数据类型;
2、内存图,取地址与解地址、指针与内存、内存管理;逻辑运算和位运算;
3、程序结构,顺序结构、分支结构、循环结构;
4、数组,一维数组、二维数组、多维数组、指针数组、字符数组等;
5、编译原理,宏定义与预处理、内存分段、代码段、数据段、堆栈段等;
6、函数,参数传递和返回值传递规则、递归函数、回调函数;
7、字符串,字符串基本操作、字符串函数实现等;
8、指针,一级指针、二级指针、多级指针、数组指针、函数指针等;
9、自定义数据结构,结构体、联合、枚举;
10、标准库文件操作,文件打开、关闭、读、写、读写缓冲区等;
11、强制类型转换,C语言封装与设计;C语言头文件、动态库和静态库、大型工程文件布局与头文件的使用。
三、辅助工具:
Makefile、GDB调试软件、GIT版本控制管理;visual studio使用、Eclipse入门;Source Insight代码查看与编写、Putty工具。
四、数据结构:
单链表操作,链表构建、销毁、插入、删除、排序、逆转;冒泡、选择、插入、快速排序;队列、循环队列、栈;二分查找、哈希表构建;树、二叉树、哈弗曼树;Linux内核链表、双向循环链表;this指针、container_of等。
教学案例:学生管理系统、俄罗斯方块、贪吃蛇。
课程目标:达到在Linux系统使用和开发,C语言程序开发,并深入C语言,尤其是内存使用,达到能够看懂Linux内核代码水平。
第二阶段:系统编程和网络编程(学习时长:3周)
一、系统文件
POSIX标准介绍、Unix和Linux关系;Linux系统I/O、文件读写、锁、mmap等操作;视频显示设备FrameBuffer操作;LinuxI/O多路复用。
二、进程和线程
系统进程创建、通信、退出机制;Linux线程操作、互斥操作;Linux系统进程间通信;Linux线程创建、退出等操作;Linux线程间同步与互斥。
三、网络接口调用
UDP和TCP接口编程,数据的发送与接收;Sniffer抓包程序分析,TCP/IP五层详解,各层数据原理;网络数据封装,各层数据的发送与接收;网络文件传输、消息打包等;简明局域网聊天软件。
四、网络数据构建
I/O多路复用、广播、多播程序;ARP请求与攻击;路由器、交换机、网关原理;Sniffer网络抓包程序分析,TCP/IP五层详解;网络数据封装,各层数据的发送和接收;广播、多播程序。
教学案例:TCP和UDP网络文件传输、局域网络聊天。
课程目标:使学员理解系统编程,尤其是文件、进程和数据库;对网络五层有深入了解,能够抓包、分析包和封装包,熟悉基于TCP和UDP的编程;理解C++语言与C语言的优缺点,并能够基于QT图形化编程。
第三阶段:C++QT开发(学习时长:4周)
一、C++核心
1、C++、C和汇编语言三者之间的联系与区别,输入输出流、文件IO流、引用、友元、命名空间,函数重载、默认参数等;
2、面向对象编程思想,类的封装和继承;
3、对象内存,对象内存的动态分配和释放、this指针;类的成员函数和成员变量、静态成员和静态成员函数;
4、构造函数、析构函数、拷贝构造函数(深拷贝、浅拷贝),友元函数和友元类,内联函数,操作符重载、仿函数functor、谓词函数;
5、C++多态、虚函数、纯虚函数、虚函数表、抽象类和接口类;
6、C++类型转换,向上造型和向下造型、static_cast、dynamic_cast、const_cast、reinterpret_cast;
7、STL模板、类模板、函数模板、迭代器、容器、适配器、算法等;
8、泛型、Boost库、ACE框架;
9、C++设计模式,单例模式、工厂模式、代理模式等;
10、C++异常,C++标准异常库、异常的抛出和捕获;
11、C++11新标准:类型推导、Lambda表达式、正则表达式、模板增强、区间迭代等。
二、QT编程基础
1、QtCreator集成开发环境介绍(设置开发环境,设置编译环境,视图切换,快速查声明);
2、QT编程基础,源文件、头文件、ui文件、qrc资源文件、pro工程文件等;
3、QT编译器与编译流程;
4、QT Designer,控件和布局、主界面区域、控件属性区域、控件列表区;
5、元对象系统,元对象属性,QT信号和槽机制。
三、数据结构
1、QByteArray字节数组,QString字符串;
2、顺序容器,QList、QLinkList、QVector、QQueue、QStack,掌握数组、栈和链表的操作;
3、关联容器,QSet、QMultiSet、QMap、QMultiMap、QHash、QMultiHash;
4、迭代器iterator的使用,掌握对容器的迭代遍历,掌握二叉树和哈希表等操作。
四、QT图形界面
1、QT组件布局(QLayout):QBoxLayout,QFormLayout,QGridLayout和QStackedLayout;
2、QT按键,QAbstractButton、QPushButton、QCheckBox、QRadioButton、QToolButton;
3、QT Widget:QListWidget、QTableWidget、QTreeWidget等;
4、QT窗口,主界面、菜单栏、工具栏、状态栏等;
5、QT样式表(QSS)。
五、QT对话框
1、QT对话框,模态对话框和非模态对话框;
2、QT标准对话框,QFileDialog、QFontDialog、QColorDialog、QMessageBox等;
3、QT自定义对话框。
六、QT事件
1、QT事件,QT事件循环、鼠标事件、按键事件、事件过滤器;
2、Painter事件,QPen和QBrush、QT系统坐标、绘画系统、QPainter绘图;update函数;绘图设备(QPixmap、QBitmap、QImage、QPicture)。
七、文件操作
抽象文件引擎类:QIODevice;文本流与二进制数据流;文件和数据流的基本原理和概念;使用QFile、QTextStream、QDataStream与文件的读出和写入;INI文件使用;XML文件使用;JSON文件使用。
八、数据库
QT QSqlDatabase与数据库交互操作;QSqlQuery执行SQL语句,数据库数据增删改查;Navicat安装与使用。
九、进程和线程
1、QT进程,进程创建、进程间通信和进程退出机制;
2、QT线程,QT线程(QThread)创建、moveToThread创建;
3、QT线程的互斥和同步,QMutex、QReadWriteLock、QSemphore和QWaitCondition。
十、网络编程
TCP/IP网络通信基础;UDP网络通信(QUdpSocket);TCP网络通信(QTcpSocket、QTcpServer)。
教学案例:TCP和UDP网络文件传输、局域网络聊天、计算器软件、数据管理系统。
课程目标:理解C++语言与C语言的优缺点,并能掌握QT图形化编程;熟悉基于QT的TCP和UDP编程,对网络五层有深入了解,能够抓包、分析包和封装包;深入学习基于QT的文件和数据库操作;了解进程;深入学习基于QT线程。
第四阶段:模块项目(学习时长:2周)
项目列表:装备管理系统;串口网络调试助手;文本编辑器;FeiQ通信软件;网络抓包工具;音视频播放器;ModScan32软件。
课程目标:熟练使用前期课程内容,完成项目内容,掌握项目需求分析及文档编写,项目时间及进度评估,项目模块化及任务分工,了解代码测试用例编写及BUG调试,提高解决问题能力,熟练使用项目工程代码版本管理工具SVN及GIT,熟悉项目汇报文档编写及项目汇报。
第五阶段:Linux内核驱动(学习时长:2周)
一、开发板环境搭建:
嵌入式系统软硬件介绍,ARM、三星、Exynos4412开发板等介绍;主流软硬件8051、DSP、FPGA、X86介绍;Uboot烧写、Linux内核烧写、网络文件系统挂载;嵌入式交叉编译环境搭建。
二、内核构建:
Linux内核编译配置与编译;Linux内核裁剪;根文件系统制作、Busybox编译配置与安装。
三、Linux内核机制:
Linux内核IO;Linux内核中断;Linux内核字符设备驱动模型;应用层、Linux内核与硬件之间的关系;输入设备访问程序开发,Camera,Mouse,Keyboard,Touch Screen。
教学案例:Linux系统移植、图片格式转换、视频文件播放、输入类设备驱动。
课程目标:能够构建基于A9开发板的工作环境,并使学员理解从应用层与内核的关系,掌握Linux内核机制;通过两种驱动,从应用层、内核层再到硬件之间关系,明白内核驱动的真正含义;最后熟悉各种平台的研发,满足不同公司和平台的需求。
第六阶段:实战项目(学习时长:4周)
一、项目列表:
Android系统移植与开发,数码相框,人脸识别系统开发,无人机飞控系统,物联网数据采集网关,5G物联网环境监测系统……
二、项目专题:
总线设备驱动模型;USB总线设备驱动;IIC总线设备驱动;LCD底层驱动,内核图形设备管理,多平台驱动研发。
课程目标:掌握项目需求分析及文档编写,项目时间及进度评估,项目模块化及任务分工,了解代码测试用例编写及BUG调试,提高解决问题能力,熟练使用项目工程代码版本管理工具SVN及GIT,熟悉项目汇报文档编写及项目汇报,商业项目开发运营模式,真正实现与企业项目无缝对接。
第七阶段:就业指导(学习时长:1周)
内容涵盖:
个人简历制作指导;讲解不同企业/职位面试经验;模拟企业一对一、多对一面试现场;向合作企业内推学员简历或组织专场招聘会。
课程目标:指导学员知晓、理解、掌握面试流程及技巧,学会分析自我能力是否匹配企业职位,并在面试时可以清晰准确的表达出自己的亮点及优势,最终拿到职业offer。
【企业项目实战,就业技能全覆盖】:
无线水文检测系统项目简介:
无线水文检测系统是一种利用无线传感器技术来进行水文监测的系统。它可以实时采集水文数据并将其传输到监测中心或者云端平台,从而实现对水文情况的监控和分析。
项目涉及知识点:
传感器技术,通信技术,数据处理技术,自动化控制技术,环境监测技术,电子工程知识。
2、5G物联网数据展示平台项目简介:
5G物联网数据展示平台是一种基于5G网络技术和物联网技术的数据展示平台,它可以帮助企业、政府等机构将分散在各个物联网设备中的数据整合起来,通过数据可视化的方式呈现出来,以便更好地进行分析、决策和管理。
项目涉及知识点:
5G技术,物联网技术,数据可视化,数据分析,云计算,大数据技术,数据库技术,数据安全。
3、安防视频检测系统项目简介:
安防视频检测系统通常由硬件设备、软件系统和数据存储三个部分组成,硬件设备包括摄像头、服务器、存储设备等,软件系统则包括图像处理算法、数据分析模块、报警系统等。
项目涉及知识点:
计算机视觉,人工智能,数据库技术,传感器技术,网络技术,安全与隐私保护。
【师资介绍】:
周老师
老师介绍:成都市金熊猫人才,学到教学总监;成都理工大学硕士,四川多所高校兼职教师,四川省软件行业理事;曾就职多家物联网500强企业,从事嵌入式和物联网项目研发和管理;物联网M2M通信解决方案先行者;13年工业物联网开发经验,九年以上教学经验,嵌入式和物联网研发方面人士。
主导项目:物联网M2M通信解决方案、设备运行监控系统、设备全生命周期与健康管理平台、嵌入式设备消息队列、大容量数据库、工业设备网关、物联网通信集成等。
任老师
老师介绍:毕业于电子科技大学,曾在研究所从事软件研发相关工作;软件工程师,七年以上教学经验;具有丰富的教学实践经验,精通多门编程语言,熟悉Linux系统驱动开发;主导并参与多个大型项目的架构设计,如跨平台频谱分析控件,DSP音频降噪,OSG飞行仿真系统,雷达复听仿真系统等。
【机构简介】: 学到牛牛专注军工软件人才培养,总部位于成都市,创办于2012年,是一家培养IT人才的科技品牌,作为国内专业的军工软件人才服务企业,学到被赋予一份责任和使命,在军工行业信息技术快速发展的形势下,持续带领者着军工软件人才在技术上的飞速成长,目前学到牛牛业务涵盖人才服务、学校合作、软件开发三大板块,通过高新技术和专业的解决方案,满足社会及学校的信息化、智能化需求,如今,学到牛牛带着“学到”标签的高新技术人才更是遍布全国各地,为国防军工失业建设添砖加瓦。