【课程目标】
通过本课程的系统学习,可以使学员由浅入深地对ARM+Linux+Android系统全面学习。本课程针对嵌入式行业软硬兼施的特点,软件方面从C语言、数据结构、Linux操作基础、C++语言、java语言,逐步深入到Linux环境应用编程,C++方向的QT应用编程,java方向的Android应用编程;硬件方面从ARM体系结构、各外设接口裸编、Linux内核系统移植到Linux设备驱动、Android底层驱动;整体上从应用程序开发到底层的驱动开发,终融会贯通。学完后能够独立胜任嵌入式Linux C/C++应用软件开发、Android应用软件开发、ARM+Linux平台驱动开发等多方面工作,是志在从事嵌入式工程师职业发展的理想课程,也是目前武汉华嵌热门的课程,已经开设48期,为社会输送了大量嵌入式人才,很多企业嵌入式研发部门都有我们的学员,学员素质深受企业赞许。
【就业**】
四个阶段同报,签订就业协议,通过阶段考核和结业答辩,**就业,不就业退款!考核不通过,免费重学!
【上课课时】
本课程培养周期为全日制18周(4个半月), 总课时为720学时,
【课程目标】
1. 精通linux操作系统使用;
2. 精通linux下C、数据结构、C++语言、java语言编程;
3. 精通嵌入式linux应用开发,如IO、进程、线程、网络、数据库编程等;
4. 精通Qt GUI开发;
5. 精通Android应用开发;
6. 精通ARM处理器平台及其接口硬件开发;
7. 掌握嵌入式Linux内核裁减移植及内核调试技巧;
8. 掌握嵌入式Linux下 Bootloader的编写方法;
9. 掌握嵌入式Linux下常用接口的驱动开发;
10. 掌握Android移动互联应用软件开发流程;
11. 熟悉Android系统驱动开发流程;
12. 精通嵌入式实际项目案例开发流程
13. 职业素质培养:如简历制作、面试技巧、职场心得、模拟面试
【课程大纲】
阶段:嵌入式软件开发基础(3周)
阶段目标:熟练使用C、C++语言程序设计的程序员,可以很容易地进入Linux、WinCE、Vxworks等嵌入式操作系统下的软件开发工作;本阶段学习目标是强化C语言编程、数据结构、C++编程语法基础和Linux操作系统的使用 ,并熟练掌握嵌入式Linux的开发环境,为下一阶段嵌入式应用软件的编程工作打好基础。
1.嵌入式Linux C语言编程与500强企业笔试题剖析
C语言是嵌入式领域重要也是主要的编程语言,本课程将在学员C 语言基础知识之上,通过大量编程实例重点讲解C语言的编程知识,包括函数与程序结构、数组、函数、指针、结构体、文件、常用算法、内存管理的使用等知识,穿插500强企业笔试题,加深理解。另外,对软件编码规范有严格要求,使学员养成良好的编码习惯。
2.数据结构与算法
程序=数据结构+算法。本节包括链表、队列、栈 、树、图等内容,以及一些常见算法的实现。是对C语言的结构体与指针,特别是内存管理和算法描述的实际检验。
3.Linux操作系统使用
本课程从零起点,讲解Linux操作系统的概念和安装方法,详细介绍 Linux下的基本命令、管理配置和编辑器,包括VI编辑器,GCC编译器,GDB调试器和 Make 项目管理工具等知识。
4.C++面向对象编程
C++是Linux应用开发主要语言之一,本节重点让学员掌握面向对象编 程的基本思想,以及C++语言的基础内容,围绕封装、继承、多态特性展开,为第二阶段的Qt软件开发课程打好基础。
第二阶段:嵌入式应用软件开发(7周)
阶段目标:参加本期培训的学员应该已经掌握嵌入式C、C++语言编程技巧和Linux操作系统基础,而掌握好java语言,对从事Android应用软件开发有着重要意义。嵌入式应用软件开发是嵌入式产品开发中非常重要的一部分,也是企业人才需求广的一部分。本期学习的主要目标是精通嵌入式Linux和Android下的程序设计,熟悉嵌入式软件开发流程,强化学员对应用开发的理解和编码调试的能力。后通过几个典型的企业全真案例,进一步巩固本期课程内容,使学员真正学以致用。
5.嵌入式Linux编程--文件I
嵌入式Linux应用开发是嵌入式Linux中重要的一部分,也是就业面广的方向。本课程的主要目标是精通嵌入式Linux下的程序设计,精通嵌入式Linux开发环境,强化学员对Linux应用开发的理解和编码调试的能力。本部分主要讲解缓冲文件系统、非缓冲文件系统的API应用,文件目录遍历算法,ls命令实现方法等
6.嵌入式Linux编程--多进程多线程
本部分主要讲解多进程程序编写方法,API函数fork、execl、waitpid等用法,P、V操作原理 ;进程间通信方法,如管道、信号、消息队列、共享内存、信号量等实例讲解;多线程程序编写方法,用信号量、互斥锁、条件变量 等实现多线程的同步与互斥等。
7.嵌入式Linux编程--网络编程
本部分主要讲解TCP/IP协议框架、Dos攻击原理,基于client/server的TCP和UDP协议通信实例 ,实现ping命令的方法,要求学员实现文字版ftp工具和局域网聊天工具。
8.嵌入式Linux编程--嵌入式数据库
本部分主要讲解嵌入式数据库sqlite的安装与编程方法,sqlitebrowser的使用方法,编程实现对数据库的增、删、改、查、排序等操作,学员自主实现一个文字版的小型管理系统。
9.QT GUI图形界面程序设计(使用C++语言)
本课程可以使学员快速掌握QT GUI编程技术,可以编写自己的Qt 应用程序,能够从事嵌入式Linux下Qt应用开发相关的项目开发。重点学习:Qt开发环境构建,Qt基本控件用法讲解,Qt与数据库,Qt多进程与多线程编程,Qt网络编程技术,Qt定时器、国际化、菜单、工具栏 、状态栏,QTE在ARM开发板平台上的移植等。学员完成项目:1、电子相册2、简易局域网聊天工具
10.java编程基础
java是Android应用程序开发主要语言,本节主要以Java语言编程基础为主,内容包括Java开发工具的安装和配置,Java的数据类型 ,运算符,表达式,数组,流程控制等Java基础编程知识;让学员掌握面向对象编程的基本思想,内容包括抽象类、接口、内部类、类的继承、多态等面向对象编程知识,为Android应用开发课程做好铺垫。
11.Android应用编程(使用java语言)
目前,移动互联应用也是嵌入式的一个很重要的方向。Android系统本身来源于Linux,其底层基于Linux内核,上层应用主要使用java语言。在学完前面的知识后,学员已经具备相当的软件开发能力,这是对Linux应用程序开发在智能移动平台的一个扩展,对完善软件知识体系和扩大学员就业面很有帮助。包括用户界面UI开发、图形编程接口、四大应用程序组件;sqlite数据存储、网络编程、google地图、打包发布;传感器开发、设备相关编程、JNI等。通过大量的现场代码演示达到讲授目的,并通过阶段项目起到强化训练的效果。学员完成项目:1、手机版仓储温度监测系统2、手机版超市进销存管理系统
第三阶段:嵌入式Linux底层驱动开发(5周)
阶段目标:参加本阶段培训的学员应该已经掌握嵌入式C语言和Linux系统操作。本课程内容循序渐进,在掌握硬件接口编程的同时可独立编写硬件BSP层程序,独立完成linux的裁剪、驱动移植、文件系统部署;深入掌握Linux驱动程序开发技巧,能够熟练编写常用外设的设备驱动程序。
12.ARM处理器体系结构与编程
ARM是嵌入式领域主要的CPU处理器,了解ARM处理器的基础知识将 为后面课程的底层开发打好坚实基础,本课程内容包括ARM处理器体系结构、编程环境、指令集、寻址方 式、调试、汇编和混合编程等方面的内容,为后面移植课程的学习打好基础。
13.ARM硬件接口开发
本课程重点实例讲解ARM的常用接口开发及硬件电路设计基础(包括 IO、 串口、看门狗、实时时钟、SPI、IIC、扫描键盘、FLASH操作等),为以后的设备驱动的学习打好基础。
14.嵌入式Linux系统移植
系统开发是嵌入式Linux底层开发必备的基本技能,本课程将教会学员在硬件电路板做好的情况下,如何从零开始搭建嵌入式Linux运行环境,内容包括内核裁减、内核移植 、交叉编译、内核调试、启动程序Bootloader编写、根文件系统制作和集成部署Linux系统等整个流程。
15.嵌入式Linux内核结构分析
本课程是驱动开发的基础课程,深入内核框架细节,了解Linux相关 运行机制,为后面的驱动开发打好基础,内容包括内核源码结构、内存管理、进程管理、中断管理、系统 调用、内核同步、时钟和定时器管理、信号、调度、进程间通信、文件系统和I/O设备管理等方面的内容 。
16.嵌入式Linux驱动之关键技术点
一、介绍嵌入式Linux驱动开发相关概念及开发流程,了解驱动涉及到的关键技术点:
1、驱动模块的加载与卸载、模块参数,驱动程序的静态编译与动态加载;
2、file_operation结构体,对驱动框架中的open、release、read、write、ioctl、mmap、poll、fasync等结构的实例讲解;
3、驱动的并发与竞态:原子变量、自旋锁、信号量、互斥锁的原理与实例讲解;
4、IO的三种访问方式,等待队列、轮询、异步通知的原理与实例讲解;
5、驱动中的中断处理子系统,中断的申请与释放,中断服务程序ISR中的上下半部问题;
6、中断延迟的3种方法:tasklet、工作队列、内核定时器的原理与实例讲解;
7、内核地址空间与内存映射,ioremap等内核函数的实例讲解;
8、DMA方式实例讲解;
9、input子系统实现触摸屏、按键等输入设备的驱动实例;
二、重点学习字符设备驱动开发,包括I/O、PWM、看门狗、实时时钟、SPI、IIC、扫描键盘 、A/D转换、串口、定时器等接口的驱动开发,为深入学习驱动开发打好基础。
17.嵌入式Linux驱动之复杂设备驱动开发要点
驱动开发是嵌入式Linux开发难度高的内容,也是目前嵌入式行业紧缺的人才之一。有了前面课程知识的铺垫,本课程将重点讲解嵌入式Linux下常用接口驱动的编写方法,内容包括:
1、flash驱动:掌握在linux环境下驱动常见flash存储器(nor flash、nand flash);
2、块设备驱动:掌握块设备驱动的原理、学会ramdisk的编写;
3、网卡驱动:掌握网卡设备的编写原理、能够熟练移植各种网卡驱 动。在对网卡硬件寄存器熟悉的基础上,有能力为其编写出完善的网卡驱动;
4、液晶LCD驱动:掌握frambuffer驱动的原理。有能力在有控制器的嵌入式平台上参考液晶手册实现各种常见液晶驱动;
5、sd卡驱动:掌握sdio接口操作,熟悉sd卡驱动的原理;
6、usb设备驱动:了解usb主机设备驱动的结构及编程方式。
18.Android驱动开发实例剖析
介绍Android系统和嵌入式Linux系统差异化,了解Android系统的体系结构、开发特点以及关键技术点,掌握ARM平台上的Android相关开发工具和解决方案,介绍Android系统底层驱动开发和嵌入式Linux驱动开发的差异化,使学员全面了解Android系统的开发过程及发展前景。后,以一个LED设备驱动实例,详细剖析开发android设备驱动的全部流程。
第四阶段:职业素质与综合项目实训(3周)
1.证书:工信部《 信息技术应用技能嵌入式Linux工程师认证证 书:NICE 》(认证费500元),武汉华嵌《嵌入式Linux工程师 职业资格证书》(认证费500元)
2.阶段目标:后,本阶段将重点让学员从零开始完整完成一个真实项目的设计,使学员在巩固所学内容的同时,迅速积累项目设计经验,达到并超过企业用人需求,另外,通过实际项目案例,可以发现学员知识薄弱环节进行重点加强。目前提供的真实项目包括:基于android手机的远程视频监控系统、商用POS机、汽车GPS导航系统、电站数据采集与控制系统,学员可完整完成其中一个项目。
19.职业素质课程
主要包括简历制作、面试技巧、职业素质培养、职场成长之路、模拟 面试、企业现场招聘会等,旨在提高学员职业素养,增强就业竞争力,入职后快速成长。
20.嵌入式项目开发流程
本课程主要通过实际企业项目演示,让学员从宏观了解嵌入式项目开发流程,让学员建立起整体架构的概念,包括嵌入式产品需求分析和底层移植、启动代码、驱动开发、系统部署、应用软件开发、调试、维护等整个过程。
21.综合嵌入式项目实践(华嵌毕业设计,接纳高校毕业设计课题和企业项目作为华嵌毕业设计)
本课程将通过一个真实完整的项目案例,让学员了解真实项目的开发流程,让学员知道如何将所学知识应用到项目开发中。本课程将模拟真实项目的管理过程,培养学员项目团队协同开发能力,项目文档编写能力和新知识的学习能力,为下一步就业做好知识上和心理上的充分准备。目前学员在华嵌可完成的真实项目包括:基于ARM+Android智能手机/平板电脑的智能家居系统、智能农业系统等,商用电子交易POS机终端、基于QTE/Android平板电脑的电站运行监控系统、自制wifi智能小坦克等,学员可在学习期间独立完成其中一个项目。也可以接纳高校毕业设计课题和企业项目作为项目实战内容,华嵌老师负责指导完成。
【教学师资】
冯老师
讲师,工学硕士,曾任武汉某上市公司研发经理,10年ARM、Linux嵌入式系统开发经验,5年嵌入式培训讲师经验。作为研发骨干完成了多项嵌入式系统与软件开发项目,开发出多款手持终端和消费终端,对于ARM+Linux的嵌入式系统开发和编程有着丰富的经验,尤其专注 Linux下的驱动开发。专长研究方向: ARM系统开发与设计,Linux系统应用编程,Linux/Android底层驱动开发。