嵌入式系统是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等都是典型的嵌入式系统。
权威部门统计,我国嵌入式人才缺口每年50万人左右。根据前程无忧网发布的调查报告,嵌入式软件开发是未来几年最热门和最受欢迎的职业之一,一个成熟的高级嵌入式工程师年薪在30万元左右。
1. Linux c应用开发工程师
2. 嵌入式开发工程师
3. C软件工程师
4. Linux驱动开发工程师
5.Android驱动开发工程师
6.Linux网络开发工程师
1.熟悉Linux操作系统的安装使用
2.掌握Linux操作系统下的各种命令及服务管理
3.掌握嵌入式C语言核心技术。
4.掌握gtk图形界面开发技术
5.掌握Linux多任务开发
6.掌握Linux下网络socket编程
7.掌握Sqlite数据库及SQL数据库语言
8.熟悉Linux下bootloader、内核、文件系统的开发
9.掌握Linux系统下字符驱动设备开发
10.熟悉Linux系统下块设备驱动开发
嵌入式课程体系 | |||||
课程目标 | |||||
通过本课程的系统学习,可以使学员由浅入深地对嵌入式Linux系统全面学习,能够独立胜任嵌入式Linux应用开发、系统开发、设备驱动开发以及Linux衍生产品等多方面工作,可以系统了解嵌入式物联网相关知识,胜任物联网相关技术岗位开发工作。课程目标包括: 1、精通嵌入式C语言高级编程 2、精通各常用数据结构与算法相关知识 3、精通GTK图形库应用开发技术 4、精通Linux操作系统使用 5、精通Linux系统编程 6、精通Linux系统网络编程 7、精通Linux网络路由及数据交换技术 8、掌握嵌入式数据库SQLite 9、精通嵌入式C++语言编程 10、熟悉ARM体系结构 11、熟悉Bootloader启动过程 12、熟悉常见Bootloader(Uboot)源码及平台移植 13、通过制作简易Bootloader掌握系统引导启动过程以及原理 14、掌握嵌入式Linux内核裁减以及移植 15、掌握嵌入式Linux平台搭建技术及技巧 16、熟悉嵌入式硬件底层开发 17、掌握嵌入式Linux设备驱动移植以及开发 18、通过七大项目实践,掌握嵌入式Linux实际项目案例开发流程,提高研发技能 | |||||
第一阶段:嵌入式高级c编程 | |||||
本期目标:在嵌入式领域中大部分开发都会用到C语言。C语言简洁、紧凑、使用方便灵活加上GNU在实际项目开发中所做的扩展,使得C语言在整个嵌入式开发过程中起着至关重要的作用。更重要的是用C语言开发的程序在嵌入式平台下可移植性比较强。一个精通C语言程序设计的程序员,可以很容易地从事Linux、WinCE、Vxworks、μc/os等嵌入式操作系统下的软件开发工作。本阶段学习目标是掌握C语言基本知识、巩固C编程语法基础,以及深入C语言高级编程和数据结构与算法,为将来的程序设计工作打下坚实的基础。 | |||||
序号 | 课程名称 | 课程内容 | 掌握要求 | ||
1 | 嵌入式C语言高级编程 | C语言是嵌入式领域最重要也是最主要的编程语言,本课程将在学员已有C语言基础知识之上,通过大量编程实例来讲解C语言的基础编程以及高级编程知识。包括: 1、程序结构设计、数组、函数、预处理:《打字游戏》、《个税征收查询系统》 2、字符串操作、指针:《手机短信分析程序》、《条形码生成器》 3、结构体、共用体、宏、枚举、链表: 《GPS信息分析程序》、《学生信息管理系统》 4、文件I/O操作:《文件加密器》 | 精通 | ||
2 | 项目实战 ——《lrc歌词解析器》 | 本项目在C语言阶段具有非常好代表性。通过本项目对C语言的重点知识灵活运用,能够完成对lrc格式歌词文件的读取、解析、存入链表等功能,并且能够实现与歌曲同步实时显示。通过该项目能熟练掌握C语言各种字符串处理方法、基本数据结构,培养良好的编程规范。 | 独立完成 | ||
第二阶段:Linux基础及图形库(GTK)开发 | |||||
本期目标:Linux系统是嵌入式领域发展最为迅速以及占有率最高的嵌入式操作系统,对其掌握的熟练程度直接关系到在嵌入式领域的发展。 本阶段主要围绕Linux系统安装、配置、Linux系统常用工具使用、Linux下图形开发技术—GTK等Linux环境下开发必备知识进行学习,为在Linux系统下开发打下坚实基础。 | |||||
序号 | 课程名称 | 课程内容 | 掌握要求 | ||
3 | Linux环境配置与开发工具学习 | 本课程从零起点,讲解Linux操作系统的概念知识和安装方法: 1、详细介绍Linux下的目录结构、基本命令、常用网络服务管理配置——nfs、ssh、samba 2、熟练掌握Linux下编辑器(vi)、编译器GCC、调试器GDB 3、熟练掌握Linux下项目管理工具Make以及Makefile工作原理及其编写 4、熟练掌握Linux下shell脚本相关知识及其编写 5、熟练进行嵌入式开发环境的基本概念及其搭建——bootloader、kernel、roofs。 | 熟练 | ||
4 | Linux应用及图形开发技术— GTK | 全面学习Linux下经典图形开发技术—GTK图形库的基本知识与编程技巧,熟悉: 1、GTK下常用控件——button、label、text edit等 2、GTK下常用布局方式——水平布局、垂直布局、网格布局、相对布局等 3、GTK下常用事件及信号处理技术——信息回调、鼠标、键盘事件等 4、GTK下时间编程、数据存储、绘图机制、定时器处理、多任务处理等 完成:《GTK版猜数字》 《GTK版电子相册》 《GTK班实时时钟显示系统》 | 精通 | ||
第三阶段:Linux系统编程开发 | |||||
本期目标:Linux系统提供了许许多多的功能,作为一个软件开发人员我们必需学会如何编程去使用操作系统提供的功能。 本阶段主要围绕Linux系统调用、进程、线程、进程间通信等知识进行学习,全面掌握Linux系统下必备的编程技能,能够编写Linux系统下的应用程序。 | |||||
5 | Linux系统编程高级技术 | 本课程从零起点,讲解Linux系统编程基本概念及编程方法,通过上课及课后练习让学员与实际应用相联系,提升学员对Linux系统编程的理解和代码调试的能力。 1、熟悉操作系统提供的五大功能 2、精通多任务编程-进程 3、精通进程间通信-信号 4、精通进程间通信-管道 5、精通进程间通信-命名管道 6、精通进程间通信-消息队列 7、精通进程间通信-共享内存 8、精通进程间通信-信号量 9、精通多任务编程-线程 10、精通多任务编程-互斥、同步 完成:《Linux shell命令解释器》 《基于消息队列的QQ聊天系统》 《基于命名管道的命令行版Mplayer播放器》 《经典的生产者与消费者的练习》 | 精通 | ||
6 | LinuxIO控制技术 | 数练掌握linux系统下的io控制技术 1、熟悉linux下设备文件的概念 2、熟悉Linux文件系统/dev目录的作用 完成:《Linux IO输出控制技术—LED》 《Linux IO输入控制技术—GPIO》 | 精通 | ||
7 | 项目实战 ——《Mplayer 音乐播放器》 | 利用GTK图形库实现Mplayer UI界面的设计,即图形界面的开发,通过触摸屏和按键进行控制,实现Mplayer播放、暂停、上一首、下一首、静音、音量调节、播放列表、歌曲信息、播放进度、歌词同步等功能。该项目中涉及到多进程、多线程以及进行间通信、重定向等系统编程知识,是对前面所学知识点的强化和提升。 | 独立完成 | ||
第四阶段:Linux网络编程开发 | |||||
本期目标:信息技术网络化是人们生活以及技术的发展的一个重要方向:手机、电脑、平板网络已成为必备功能,电视、打印机、冰箱等传统家电行业网络化也逐步提上日程,网络已经成为大势所趋。本阶段主要通过网络相关知识学习,让学员从上到下的熟悉整个网络通信过程,熟练掌握网络应用编程、底层编程技术,为进行网络开发打下坚实的基础。 | |||||
序号 | 课程名称 | 课程内容 | 掌握要求 | ||
8 | Linux网络基本概念 | 熟悉网络开发常见基本概念 1、熟悉TCP\IP 4层基本协议划分与各层基本功能 2、熟悉HTTP、FTP、TCP、UDP、IP、路由器、集线器等基本协议与设备 2、熟悉端口号、soctket套接字、B/S、C/S等基本网络概念 | 熟悉 | ||
9 | Linux网络应用编程 | 计算机网络在嵌入式Linux系统应用开发过程中使用非常广泛,本课程从Linux网络发展、TCP/IP协议、socket编程、TCP网络编程、UDP网络编程、Web编程开发等方面入手,全面讲解Linux网络应用程序开发。重点介绍网络编程相关API,熟练掌握TCP协议服务器的编程方法和并发服务器的实现,了解HTTP协议及其实现方法,熟悉UDP广播、多播的原理及编程方法,掌握混合C/S架构网络通信系统的设计,熟悉HTML,Javascript等Web编程技术及实现方法。 完成:《基于TCP协议的QQ聊天器》 《基于HTTP协议的Web服务器》 《基于UDP协议的TFTP服务器》 | 精通 | ||
10 | Linux网络数据通信过程 | 1、熟悉IPv6与IPv4基本联系与区别,掌握其编程接口 2、熟悉网络数据通信过程 3、熟悉网络原始套接字概念及编程接口 4、熟悉网络路由层基本知识 完成:《飞鸽欺骗》 《网络数据分析器》 《MAC地址扫描器》 | 熟练 | ||
11 | 项目实战 ——《路由器》 | 本项目利用Linux下网络编程原始套接字接口,完成模拟路由器的基本转发功能:实现数据的各层封包与解包功能,实现数据的路由转发分析,实现最优线路选择功能,实现数据有效性检测与验证等 | 独立完成 | ||
第五阶段:C++语言及数据库 | |||||
本期目标:本阶段我们主要学习Linux系统在设备应用开发过程中涉及到的一些技术细节以及开发方法,实际上,在项目开发过程中,涉及内核编程的内容并不是很多,但无论是哪一种产品,底层驱动、电路设计都大同小异,真正的工作量都集中在应用程序的编写上,我们必须重视应用程序的开发,可以说,有Linux的地方,就要用到设备应用开发。 | |||||
12 | C++语言 |
| 精通 | ||
13 | Linux数据存储技术—数据库 | 在嵌入式产品中经常会涉及到大量数据快速排序、查找、数据更新、数据加密等数据管理,数据库的加入使得嵌入式数据管理变得安全高效。本阶段主要讲解数据库概念、数据库类型、常见数据库、SQLite数据库介绍及其安装与移植、SQL数据库语言( 数据定义语言(DDL)、数据操作语言(DML)、数据查询语言(DQL)、数据控制语言(DCL) ),及windows下的图形化数据库管理软件SQLite Expert Professional。最后通过sqlite数据库C语言编程中的各种SQL指令执行函数完成对数据库的控制。 | 精通 | ||
14 | 项目实战—— 《音、视频推送项目》 | 本项目主要完成手机上音乐、视频的推送,完成的主要功能有获取音视频名称、手机音视频的在pc端的播放、音视频上一曲下一曲进度条的控制等。项目完成可以分为两个部分,一部分是开源工程使用和代码的分析阅读以及阅读文档,主要让你体会真正研发的步骤流程,另一部分是功能完成部分,对开源工程代码的理解和c++知识、以及以前Mplayer项目的知识。 | 独立完成 | ||
第六阶段:嵌入式Linux设备驱动开发 | |||||
本期目标:驱动程序设计是嵌入式Linux开发工作中重要的一部分,也是比较困难的一部分。本阶段课程让学员熟悉Linux的内核机制、驱动程序与用户级应用程序的接口,掌握系统对设备的并发操作。熟悉所开发硬件的工作原理,具备ARM硬件接口的基础知识,熟悉ARM cortex-a8处理器s5pv210各资源、掌握Linux设备驱动原理框架,熟悉工程中常见Linux高级字符设备、块设备、网络设备、USB设备等驱动开发,在工作中能独立胜任底层驱动开发。 | |||||
序号 | 课程名称 | 课程内容 | 掌握要求 | ||
15 | 嵌入式Linux内核工作原理分析及其移植 | 本课程要求学员了解Linux内核的目录及源码结构,熟悉内核移植、裁剪等过程及内核配置机制,重点掌握Linux2.6.35.7内核在s5pv210开发平台的移植及修改过程。 完成:《Linux-3.2.6内核在s5pv210平台上的移植》 《LCD/触摸屏/IIS/SD/USB/网卡等驱动在s5pv210平台移植》 | 掌握 | ||
16 | 嵌入式Linux根文件系统组成分析及其制作 | 本课程重点讲解Linux文件系统的基本概念及其基本架构,要求学员掌握一个完整的根文件系统的组成及其制作过程,掌握基本应用程序,如TFTP/FTP/TELNET/HTTP的配置及使用,熟悉cramfs、yaffs、nfs格式根文件系统的制作。 完成:《基于Busybox的嵌入式根文件系统制作》 《嵌入式根文件系统下FTP/TFTP/TELNET服务器配置》 《基于nfs/yaffs2/cramfs嵌入式根文件系统制作》 | 掌握 | ||
17 | 嵌入式Bootloader原理分析及其移植 | 本课程要求学员了解嵌入式Linux的系统组成,熟悉Bootloader的目录结构、启动过程、源码分析,重点讲解u-boot的配置机制及其编译原理,Uboot目录结构和源码分析以及在s5pv210上的修改和移植过程。 完成:《u-boot在s5pv210上移植》 | 掌握 | ||
18 | 嵌入式Linux高级驱动程序设计 | 掌握Linux下高级驱动设计模型,完成从基本驱动程序设计到高级驱动设计的飞跃,更加深入的理解Linux内核工作原理与实现机制。 主要内容包括: 1)Linux下块设备驱动框架——RAMdisk驱动实例编写 2)SD卡驱动原理——SD卡三种模式、十大状态切换与数据传输技术 3)Linux下framebuffer机制驱动讲解 4)常见lcd接口:MCU(8080/6800)、RGB、SPI在Linux下驱动程序的实现 5)常见网卡驱动(CS8900、28J60、DM9000、LAN9220等)以及虚拟网络设备驱动等 6)USB设备硬件设计原理、驱动协议架构、驱动关键数据结构等 7)了解Linux设备驱动模型(kobject、kset、子系统、底层sysfs操作、总线与设备等) | 掌握 | ||
19 | 项目实战—— 《电容屏驱动》 | 本项目是通过对驱动课程软硬件知识的学习,自己动手完成对电容式触摸屏模块的驱动的编写,通过本项目学员可以对项目开发流程有一个完全的认识,为将来项目开发积累丰富的经验。 | 独立完成 | ||
第七阶段:嵌入式知识综合复习 | |||||
本期目标:复习前几个阶段学习的知识点、代码、项目,将遗忘的知识重新捡起来。做企业真实的笔试题,通过笔试题的训练,对以前学过的知识查漏补缺,并且增加学生找工作时的笔试通过率。 | |||||
第八阶段:职业素质课、就业辅导 | |||||
本期目标:本阶段主要给学生讲解职业心态:积极心态、乐观心态、职业心态。职业化素质:职业化、沟通技巧、性格测评。职业竞争力:时间管理、商务礼仪、人际关系、职业规划。求职技巧:简历修改、总结报告、模拟面试。 通过此阶段的锻炼,学生在找工作的时候能够在各个方面注意,增加人事面试通过率。并且对学生工作后,尽快进入工作状态有所帮助。 |