admin 管理员组

文章数量: 887017

最近几年,几乎所有的IT企业对应届毕业生都有抱怨:动手能力太差,编程水平低下。大学期间,老师授课以理论为主,学生缺少各种实践。这造成很多学生就业难;学生找不到工作,而企业招不到合适的人!本课程不仅系统的梳理了一遍工作中常用的知识,更是通过大量编码实践,快速的提高了学生的整体编程水平,使之达到了企业的用人要求。

嵌入式linux长期就业班4月开班,欢迎报名

◆授课特点

   本中心采用的是理论与实践交叉进行的教学方式;ÿ天的课程都是理论->实践->理论->实践......这样交叉进行。所有的课程设置,都是以实际软件开发中经常用到的,非常系统。ÿ天课后,老师都会布置练习题;ÿ门课程结束,都会有一个项目实训和考试。ÿ天晚上,都会安排老师值班,为学生解答疑难。

◆课程设置

第一阶段 嵌入式Linux开发基础基础(32课时)

Linux安装配置;Linux常用命令、简单shell编程;常用服务器配置;GCC编译、GDB调试、MAKE编写

第二阶段 C语言基础编程和高级编程(160课时)

C语言基础;强化数组、指针、函数,从内存操作的本质上讲解它们。实际工作中结构、联合、文件操作的使用方式;高级宏定义和条件编译的各种用法;λ运算。算法:多种链表、多种排序、多种二叉树、动态规划分析、散列表、基本加密算法。高质量c/c++编程,企业级编码规范介绍。

第三阶段 Linux系统编程 (96课时)

Linux操作系统的各种特征、进程和线程的状态变迁、调度、并发;信号量3个代表性问题;文件IO操作;静态库和动态库的创建和使用;多进程、多线程、进程间通信IPC开发;多进程、多线程的并发管理

第四阶段 C++与QT编程(120课时)

主要训练面向对象的编程思想。类、构造函数、析构函数;成员权限控制;继承和多态;静态成员、友元和运算符重载;模板和STL原理、使用。Qt项目的建立、图形界面开发、常用类使用、界面与后台关联等

第五阶段 Linux网络编程与3G(120课时)

Linux网络协议模型,使用抓包工具抓取数据包分析ÿ一层的协议;常用网络编程函数send、recv、accept、select等;若干实际的网络开发案例分析,如:Tftp协议实现、Http协议实现等

第六阶段 ARM原理及应用(24课时)

ARM基本概念、体系结构;ADS集成开发环境;ARM汇编指令集;ARM协处理器、MMU等

第七阶段 Bootloader与Linux内核开发(32课时)

理解Bootloader的原理和功能;了解u-boot启动原理和流程,能进行不同平台的移植。学会Linux内核编译方法,学会内核裁剪。建立嵌入式开发环境,学会Tiny6410开发板的使用和开发。

第八阶段 Linux驱动开发(56课时)

Linux内核模块的添加、删除等操作;编写字符驱动;内核级并发控制;IO阻塞与非阻塞;中断处理,上半部和底半部;内核内存的分配,IO端口和IO内存;块设备驱动;MTD开发等

第九阶段 就业指导及工作推荐(20课时)

IT发展方向讲解;简历指导;常见面试问题指导;工作推荐,安排面试

嵌入式ARM linux驱动开发全程就业班

入学要求:

理工科类专科(包括专科)以上学历,有C语言基础,喜欢并有志投身于IT事业。

课程大纲:

教学大纲

第一阶段 Linux基础学习


编号

课程内容

课时安排(时)

1

概述与规划

2

2

Linux与Ubunt

0.5

3

Ubuntu安装与配置

1.5

4

Ubuntu体验

2

5

Linux系统补充知识

1

6

X-Windows介绍

1

7

Ubuntu桌面环境及设置

1

8

Ubuntu添加删除程序及软件包管理

1

9

Shell环境基础及设置

1

10

Vi/Vim编辑器

1

11

文件与目录管理

2

12

Ubuntu文件属性与权限

2

13

压缩命令和查找系统

2

14

硬盘管理

2

15

用户管理

2

16

进程管理及作业调度

2

17

Shell高级应用及Shell脚本

2

18

综合练习

2

19

嵌入式Linux开发环境

2


第二阶段 ARM驱动编程


编号

课程安排

课时安排(时)

1

熟悉ARM处理器

2

2

ARM体系结构

4

3

ARM指令系统

4

4

ARM编程技术

4

5

ADS1.2操作范例

2

6

ARM映像文件及分散加载

2

7

初始化代码(Bootloader)分析与研究

2

8

嵌入式C语言复习

2

9

GPIO接口

4

10

存储控制器

4

11

内存管理单元MMU

2

12

NAND Flash控制器

4

13

NOR Flash的访问

4

14

中断体系结构

2

15

系统时钟和定时器

2

16

通用异步收发器UART

2

17

IIC接口

2

18

LCD控制器

2

19

ADC和触摸屏的接口

2

20

RTC实时时钟

2

21

DMA访问

4

22

IIS串行音频接口

4

23

相机接口CAMIF

4


中期实践项目

1

S3C2440核心板设计

2

数码相框

3

电子复读机

4

音乐播放器

5

自带项目


第三阶段嵌入式ARM linux内核驱动开发


编号

课程安排

课时安排(时)

1

Linux基础复习

4

2

搭建嵌入式ARM Linux开发环境

6

3

Kernel开发初步

2

4

模块编程

2

5

字符设备驱动开发初步

6

6

内存管理

4

7

嵌入式QT开发

2

8

中断

5

9

调试技术

2

10

时间管理

2

11

Linux设备模型

4

12

平台类总线设备驱动

2

13

udev & misc

2

14

wdt

2

15

触摸屏驱动

2

16

input子系统及tslib移植

2

17

LCD驱动开发

6

18

移植U-Boot

2

19

移植Linux内核

2

20

SD卡驱动程序移植

2

21

USB驱动程序移植

2


后期实践项目

1

MP4

2

网络摄像机

3

自带项目

整个课程的学时数=理论169学时+实践学时=300个学时(注:总的学时数会在300上下浮动,以便于授课老师根据每个班的不同情况适当延长或缩短实践时间)。入式Linux高级编程

· Linux基础

· Linux核心命令

· Linux Shell编程

· 标准C编程

· 数据结构

· UC高级编程

· 数据库及SQL

· 标准C++编程

· UQT高级编程

· ARM处理器编程

· ARM硬件接口开发

· 嵌入式Linux内核编程

· 嵌入式Linux驱动编程

· 系统移植和部署

· 嵌入式应用开发

课程目标






  通过本课程的系统学习,可以使学员由浅入深地对嵌入式Linux系统全面学习,能够独立胜任嵌入式Linux应用开发、系统开发等多方面工作。课程目标包括:
       1、精通嵌入式C语言高级编程
       2、精通Linux操作系统使用
       3、精通Linux系统基础编程
       4、了解基于QT的GUI开发
       5、熟悉ARM体系结构
       6、熟悉嵌入式Linux内核裁减移植及Bootloader启动过程
       7、掌握嵌入式Linux 平台搭建
       8、熟悉嵌入式Linux 驱动开发
       9、独立完成Mplayer项目开发
       10、掌握嵌入式Linux实际项目案例开发流程






第一阶段:嵌入式C高级编程






本期目标:在嵌入式领域中大部分低层开发,都会用到C语言。C语言简洁、紧凑、使用方便灵活加上GNU在实际项目开发中的扩展,使得C语言在整个嵌入式开发过程中起着至关重要的作用。更重要的是在嵌入式平台下可移植性比较强。一个精通C语言程序设计的程序员,可以很容易地进入Linux、WinCE、Vxworks、uc/os等嵌入式操作系统下的软件开发工作。本阶段学习目标是掌握C语言基本知识、巩固C编程语法基础,以及深入C语言高级编程,为将来的编程工作打下坚实的基础。






序号

课程名称

课程内容

掌握要求






1

嵌入式C语言高级编程

C语言是嵌入式领域最重要也是最主要的编程语言,本课程将在学员C语言基础知识之上,通过大量编程实例重点讲解C语言的基础编程以及高级编程知识,包括常用函数与程序结构、字符串操作、指针、数组、结构体、宏、枚举、常用算法、库函数、文件的使用等知识。另外,本节还重点讲解数据结构的基础内容,包括顺序表、链表、队列、栈、树、图、哈希表、常用查找算法等内容的应用与C语言实现。各知识点都通过一个个实例,使理解更加深入。

精通






2

项目实战——歌词解析器

本项目在C语言阶段是非常具有代表性的,通过本项目对C语言的重点知识灵活运用,完成lrc格式歌词的文件读取、解析、存入链表等,并通过屏幕与歌曲同步实时显示。通过该项目能熟练掌握C语言基本数据结构,培养良好的编程规范。

精通






第二阶段:嵌入式Linux系统开发






       本期目标:嵌入式Linux应用开发和系统开发是嵌入式Linux中最重要的一部分,也是企业人才需求最广的一部分。本期学习的主要目标是精通嵌入式Linux下的程序设计,熟练掌握嵌入式Linux的开发环境,深刻体会整个嵌入式Linux项目开发流程,强化学员对Linux应用开发的能力,了解QT GUI开发。能够独立完成Mplayer应用开发项目。在工作中能很快适应项目中所涉及到的多任务编程,并且能快速转移到其它操作系统应用开发。






序号

课程名称

课程内容

掌握要求






3

Linux操作系统应用开发

本课程主要讲解Linux操作系统的概念和安装方法。详细介绍Linux下的目录结构、基本命令、管理配置和编辑器,包括VI编辑器,GCC编译器,GDB调试器和 Make 项目管理工具以及Makefile、shell脚本编写等知识。并进行嵌入式开发环境的搭建。

精通






4

嵌入式Linux高级系统编程

本课程从系统调用开始,重点讲解标准I/O库,Linux多任务编程中的多进程和多线程,以及进程间通信、线程间通信、管道、消息队列、信号等重要知识。最后讲解基于s3c2440实验仪的GPIO,让学员与实际应用相联系。

精通






5

项目实战——Mplayer播放器

利用TFT图形库,在不带GUI的情况下自己实现Mplayer UI界面的设计。实现Mplayer播放、暂停、上一首、下一首、静音、播放列表等功能,该项目中涉及到多进程、多线程以及进行间通信,重定向等系统编程知识,是对前面所学知识点的强化和提升。

精通






6

基于QT的GUI开发

QT具有跨平台、面向对象、丰富API、支持2D/3D渲染、支持XML、多国语等强大功能,在嵌入式领域的GUI开发中得到了广范的应用,在本阶段的课程中将了解到基于QT的GUI开发、并移植QT应用程序到S3c2440平台。

熟悉






第三阶段:嵌入式Linux设备驱动开发






       本期目标:驱动程序设计是嵌入式Linux开发工作中重要的一部分,也是比较困难的一部分。需要熟悉Linux的内核机制、驱动程序与用户级应用程序的接口,需要考虑系统对设备的并发操作,熟悉所开发硬件的工作原理。具备ARM硬件接口的基础知识,熟悉ARM处理器S3c2440各资源、掌握Linux设备驱动原理框架,了解工程中常见Linux高级字符设备驱动开发。在工作中能独立胜任底层驱动开发。






序号

课程名称

课程内容

掌握要求






7

ARM体系结构

ARM处理器在全球范围内,占据了低功耗、低成本和高性能的嵌入式系统应用领域的领先地位。课程主要以S3c2440为主,介绍其系统资源,如IO、时钟电源、中断、键盘扫描、定时器、AD、触模屏、LCD等,为Linux设备驱动开发打好基础。

熟悉






8

ARM Linux设备驱动开发

掌握Linux内核模块编程,用户态与内核态数据交换,掌握Linux操作系统下驱动原理,重点讲解嵌入式Linux下常用字符设备驱动的编写方法,熟悉字符设备驱动框架,能独立完成常见Linux设备驱动开发。

掌握






9

嵌入式Linux驱动高级开发

了解Linux设备驱动模型、并发与竞态、Linux驱动中的阻塞与非阻塞,为应用层提供具有高内聚低偶合的健壮底层代码接口。

熟悉






第四阶段:嵌入式Linux平台开发及Android平台搭建






       本期目标:Android是基于Linux平台的开源手机操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的真正开放和完整的移动软件,目前它的应用不再局限于移动终端,还包括数据电视、机顶盒、PDA等消费类电子产品。该阶段让学员掌握如何从零开始搭建嵌入式Linux开发环境,熟悉Bootloader启动过程,了解Android操作系统开发流程。由于Android操作系统具有开源稳定等优势,它的应用领域还在不断扩张。






序号

课程名称

课程内容

掌握要求






10

嵌入式Linux 平台架构

本课程将使学员掌握从零开始搭建嵌入式Linux运行环境,包括内核裁减、内核移植、交叉编译、内核调试、Bootloader编写、根文件系统制作以及向内核中添加自己的模块,并在s3c2440实验仪上运行自己制作的Linux系统,集成部署Linux系统整个流程。

熟悉






11

嵌入式Linux在3G领域的典型应用

——3G手机Android操作系统

主要针对目前嵌入式设备上另外一个主流的应用程序开发平台Android,了解Android系统如何由嵌入式Linux衍生出来的,以及Android系统和嵌入式Linux系统差异化,了解Android系统的体系结构、开发特点以及关键技术点,包括Android体系结构和原理,Android平台移植,Android应用程序开发工具的使用。

熟悉






[课程描述]






   基于Linux的嵌入式系统目前获得了广泛应用,在嵌入式Linux核心层的开发中,设备驱动的编写占据了大部分的工作量,能编写出真正可用的驱动程序存在着很多技术要点,本课程的开设兼顾初学者和有一定开发经验人员的需要,通过对嵌入式Linux系统理论知识和实际代码分析相结合的方式,了解和学习目前在嵌入式Linux驱动开发中比较重要的几项驱动和其框架结构,如块设备驱动程序框架,LCD Frambuffer,网络设备驱动,USB驱动等。通过大量精心设计的驱动实验,使学员真正掌握嵌入式系统驱动开发的关键技术。






[培养对象]






 对Linux驱动设计及嵌入式系统开发有一定经验和兴趣的电子、通信、计算机、自动化等相关专业专科生、本科生及研究生,相关专业的技术工程师,开发人员。






[基础要求]






 基本掌握C语言编程
 基本的Linux使用和应用程序编写基础
 具有数字电路、模拟电路的基础






[推荐教材]






 《linux设备驱动(第三版)》








[教学环境]




 ARM6410 (人手一块)







[教师简介]






   秦老师,硕士,国内著名公司操作系统部部门经理,作为主要负责人负责公司自主知识产权的操作系统和Linux 3G手机产品核心驱动的开发研究工作。具有多年的嵌入式系统开发经验,丰富的操作系统和驱动开发经验。
   石老师,国际知名操作系统供应商高级工程师,主要负责Linux BSP的开发研究工作。具有多年的嵌入式系统开发经验,丰富的操作系统和驱动开发经验。









[开课情况]






写报名表并办理报名手续。(报名时需携带本人身份证复印件1张及本人一寸照片3张)






[课程大纲]







驱动开发课程大纲

课程安排

课程内容

理论课

1. Linux操作系统核心基础
   ◆ 调度,互斥量和锁等的实现原理
   ◆ 中断的上下部,定时器,内核线程
   ◆ 等待队列和工作队列,tasklet等
   ◆ Linux核心的内存管理(页面分配,slab,kmalloc,DMA内存)
   ◆ Linux设备管理模型和sysfs文件系统

理论课

2. 驱动程序与模块概念
   ◆ Linux设备驱动的概念
   ◆ Platform device模型介绍
   ◆ 模块的概念
   ◆ 模块的构建、编译和加载

理论课

3. 字符设备驱动程序
   ◆ 字符设备驱动程序概念
   ◆ 主设备号和次设备号
   ◆ fs_operation结构分析
   ◆ 驱动程序调试技术简单介绍

实验课

第一部分 驱动基础实验
   实验一:模块的构建、编译和装载,hello world模块的实现
   实验二:Platform device模型实验
   实验三:GPIO按键实验——使用中断机制访问

理论课

4. Linux块设备驱动程序开发
   ◆ Linux块设备驱动程序概要
   ◆ 块设备驱动程序的特点和工作原理
   ◆ 块设备驱动的设备文件接口概念
   ◆ 块设备驱动的文件系统接口概念
5. Linux块设备驱动程序实现要素分析
   ◆ 块设备驱动的注册接口(register_blkdev等)
   ◆ 块设备驱动操作接口(open,release,ioctl等)
   ◆ 块设备驱动的request队列和request操作
6. 块设备代码分析(vdisk.c)
   ◆ vdisk.c的注册接口
   ◆ vdisk.c的open,release,ioctl
   ◆ vdisk.c的request队列和request操作

实验课

第二部分 块设备驱动实验
   实验一: 修改vdisk.c支持多个设备
   实验二: 在实验一基础上为vdisk.c添加字符设备接口实现
   (实现open,close,ioctl,read,write,lseek方法)

理论课

7. 网络设备驱动程序开发
   网卡设备介绍
   ◆ 常见网卡
   ◆ 网卡芯片所实现的协议层功能
   ◆ cs8900网卡芯片手册导读
   ◆ cs8900网卡硬件电路分析
8. Linux网络驱动结构
   ◆ Linux TCPIP网络结构概述
   ◆ Linux网络设备结构

实验课

第三部分 字符设备驱动实验
   实验一:ifconfig等命令实验
   实验二:字符设备的网卡驱动实现(上)
   实验三:字符设备的网卡驱动实现(下)
   实验四:驱动的测试程序编写

驱动高级研修大纲

课程安排

课程内容

理论课

1. Linux的input驱动
   * 嵌入式系统中的键盘和触摸笔硬件结构原理
   * Input子系统介绍
   * Input的事件和设备驱动框架结构
   * button代码分析

实验课

第一部分 实验
   * 实验1:编写开发板下的button驱动
   * 实验2:利用开发板的蜂鸣器实现按键音

理论课

2. Linux下的MTD驱动
   * Nor和NAND Flash硬件结构
   * Linux的MTD子系统
   * Yaffs文件系统和MTD子系统的结合
   * Nandsim驱动代码分析

实验课

第二部分 实验
   * 实验1:配置和调试Nandsim驱动代码
   * 实验2:mtdutils工具的学习和使用
   * 实验3:Yaffs文件系统的烧写和配置

理论课

3. LCD Framebuffer设备驱动程序开发
   * Framebuffer驱动程序原理,结构分析、及数据结构
   * Framebuffer驱动程序设计

实验课

第三部分 实验
   *实验1:LCD Framebuffer——通过mmap操作fb设备
   *实验2:LCD Framebufferr——通过mmap显示图片

理论课

4. Linux下的USB驱动
   * USB工作原理介绍
   * Linux的Host端驱动代码结构
   * Linux的device端驱动代码结构
   * usb 地址端点的使用
   * usb 四种传输类型及其作用
   * usb 协议实现及其详解
   * usb 设备即插即用过程
   * 驱动代码分析

实验课

第四部分 实验
   * 实验1:学习使用Linux下的usb分析工具
   * 实验2:配置和实现Linux的cdc-acm驱动,
            实现PC和开发板间的USB通信
   * 实验3:配置和实现Linux的mass_storage驱动,
            实现将开发板配置为一个U盘




基于Linux的嵌入式系统目前获得了广泛应用,在嵌入式Linux核心层的开发中,设备驱动的编写占据了大部分的工作量,能编写出真正可用的驱动程序存在着很多技术要点,本课程的开设兼顾初学者和有一定开发经验人员的需要,通过对嵌入式Linux系统理论知识和实际代码分析相结合的方式,了解和学习目前在嵌入式Linux驱动开发中比较重要的几项驱动和其框架结构,如块设备驱动程序框架,LCD Frambuffer,网络设备驱动,USB驱动等。通过大量精心设计的驱动实验,使学员真正掌握嵌入式系统驱动开发的关键技术。










[培养对象]










 对Linux驱动设计及嵌入式系统开发有一定经验和兴趣的电子、通信、计算机、自动化等相关专业专科生、本科生及研究生,相关专业的技术工程师,开发人员。










[基础要求]










 基本掌握C语言编程
 基本的Linux使用和应用程序编写基础
 具有数字电路、模拟电路的基础










[推荐教材]










 《linux设备驱动(第三版)》











[教学环境]


 ARM6410 (人手一块)




[教师简介]




   秦老师,硕士,国内著名公司操作系统部部门经理,作为主要负责人负责公司自主知识产权的操作系统和Linux 3G手机产品核心驱动的开发研究工作。具有多年的嵌入式系统开发经验,丰富的操作系统和驱动开发经验。
   石老师,国际知名操作系统供应商高级工程师,主要负责Linux BSP的开发研究工作。具有多年的嵌入式系统开发经验,丰富的操作系统和驱动开发经验。






[开课情况]








[课程大纲]




驱动高级研修大纲

课程安排

课程内容

理论课

1. Linux的input驱动
   * 嵌入式系统中的键盘和触摸笔硬件结构原理
   * Input子系统介绍
   * Input的事件和设备驱动框架结构
   * button代码分析

实验课

第一部分 实验
   * 实验1:编写开发板下的button驱动
   * 实验2:利用开发板的蜂鸣器实现按键音

理论课

2. Linux下的MTD驱动
   * Nor和NAND Flash硬件结构
   * Linux的MTD子系统
   * Yaffs文件系统和MTD子系统的结合
   * Nandsim驱动代码分析

实验课

第二部分 实验
   * 实验1:配置和调试Nandsim驱动代码
   * 实验2:mtdutils工具的学习和使用
   * 实验3:Yaffs文件系统的烧写和配置

理论课

3. LCD Framebuffer设备驱动程序开发
   * Framebuffer驱动程序原理,结构分析、及数据结构
   * Framebuffer驱动程序设计

实验课

第三部分 实验
   *实验1:LCD Framebuffer——通过mmap操作fb设备
   *实验2:LCD Framebufferr——通过mmap显示图片

理论课

4. Linux下的USB驱动
   * USB工作原理介绍
   * Linux的Host端驱动代码结构
   * Linux的device端驱动代码结构
   * usb 地址端点的使用
   * usb 四种传输类型及其作用
   * usb 协议实现及其详解
   * usb 设备即插即用过程
   * 驱动代码分析

实验课

第四部分 实验
   * 实验1:学习使用Linux下的usb分析工具
   * 实验2:配置和实现Linux的cdc-acm驱动,
            实现PC和开发板间的USB通信
   * 实验3:配置和实现Linux的mass_storage驱动,
            实现将开发板配置为一个U盘



 Linux 内核设计高级技术研修班

[课程背景]

     Linux内核是对操作系统最完美的诠释,在计算机专业教学以及相关行业工程开发中,都是必修的课程。然而它代码量巨大,代码更新速度很快,这使得工程人员及内核爱好者阅读相关书籍的同时,落后于最新的代码。Linux内核构架极其复杂,使得研究学习过程相对其他科目更为艰难,无数人在它面前不得不退缩。一个好的linux开发工程师,对于内核的理解无疑会大大提升自身工作和学习的能力。本课程适应于嵌入式/工控/手机研发/存储开发行业linux工程师,内核开发爱好者,学习linux的在校学生等。

[质量保证]

•培训合格学员可享受免费推荐就业机会。
•培训过程中如有部分内容理解不透或消化不好,可免费在下期班中重听;
•培训结束后免费提供一个月的技术支持,充分保证培训后出效果。

[基础要求]

1.具有一定的Linux使用基础和一定的核心代码阅读经验
2.熟练掌握C语言

[教 材]

《AKAE Linux 内核设计高级技术研修班讲义》

[教学环境]

ARM 6410 (人手一块)

[师资简介]

    王老师, 6年嵌入式开发经验,精通linux内核调度器,内存管理,资源控制,时间系统,文件系统等,国内著名公司研发部门经理,作为主要负责人负责公司自主知识产权的操作系统和Linux 3G手机产品核心驱动的开发研究工作,丰富的操作系统和驱动开发和授课经验,拥有国内一线android开发团队,自07年专注于Android 系统开发,精通Marvell/Qualcomm平台架构,精通Android底层驱动,中间件开发,系统框架构建,拥有十余款上市手机开发经验。国内某著名社区内核版主,长期活跃在linux内核 ,android等开发社区。

[课程内容]

               《linux内核设计高级研修班的课程大纲》

课程安排(24课时)

课程内容


理论课

(3课时)

第1部分 基础知识

1.1  Linux内核的整体架构

1.2  Linux内核版本演进规则

1.3  Linux内核源码管理工具

1.4  参与Linux内核开发

1.5  内核源码阅读工具

1.6  内核启动过程

1.7  内核调试技术

第2部分 内核编译

   2.1  内核编译方法

2.2  内核编译过程

第3部分 内核模块

  3.1 模块概念

  3.2 模块基础

  3.3 导出符号及模块参数


实验课

(3课时)

【实验1】 内核编译实践

【实验2】 内核源码分析实践

【实验3】 模块实验


理论课

(3课时)

第4部分  进程管理

  4.1 进程描述符

  4.2进程创建

  4.3线程机制

  4.4进程切换

  4.5进程终结

第5部分  进程调度

  5.1调度策略

5.2调度算法分析

第6部分  内核同步机制

6.1 基本概念

6.2自旋锁

6.3信号量

6.4其他同步机制


实验课

(3课时)

【实验1】 进程列表显示实验

【实验2】 进程调度实验

【实验3】 同步机制实验


理论课

(3课时)

第7部分  内存管理

7.1 物理地址、逻辑地址与虚拟地址

  7.2 分页

  7.3 内存在内核中的分配

  7.4 进程的内存组织

  7.5 内存映射mmap

  7.6 页面缓存

第8部分  中断与异常

  8.1 中断管理的硬件支持

8.2 Linux内核中平台相关的中断管理

  8.3 中断处理

  8.4 软中断

第9部分  系统调用

9.1 系统调用号,参数与返回值

9.2 系统调用与用户library

9.3 系统调用实现


实验课

(3课时)

【实验1】 Linux内存管理实验

【实验2】 piano实验

【实验3】 增加系统调用


理论课

(3课时)

第10部分  定时器和时间管理

10.1 内核中的时间概念

10.2 jiffies

10.3硬时钟和定时器

10.4 时钟中断处理程序

10.5定时器

第11部分  虚拟文件系统

  11.1 VFS的体系结构

  11.2 重要数据结构

  11.3 文件系统的实现

第12部分  内核驱动开发基础

  12.1驱动开发基础

12.2字符设备驱动


实验课

(3课时)

【实验1】 定时器实验

【实验2】 文件系统实例实验

【实验3】 简单驱动实验



课程安排


课程简介




第一阶段
Linux 操作和编程基础


   预备营阶段主要讲解 Linux 的基本命令和linux培训基础编程知识,包括Linux的文件操作和目录操作命令,VI编辑器,GCC编译器,GDB调试器和 Make 项目管理工具等知识。
   该阶段学生可以通过学习Linux下编程方法,完成实现一个简单的游戏编程,例如五子棋、俄罗斯方块、贪吃蛇等。此项任务完成后,学员的编码量可以达到1000行,能够进行基本程序开发。




第二阶段
嵌入式环境开发核心技能


   初级营阶段主要讲解在嵌入式开发编程中C语言的重要概念和编程技巧中的重点难点,以复习串讲和实例分析的形式,重点介绍包括函数与程序结构,指针、数组和链表,库函数的使用等知识。
   该阶段学员会进行大量的编码练习,主要包括整数算法训练,递归和栈编程训练,位操作训练,指针训练,字符串训练,链表和二叉树训练、掌握常用C库函数编程接口实践,函数指针、动态内存分配,程序预处理、链接原理,ELF文件格式,标准I/O库等核心技能,强化学员对嵌入式开发环境下基本编程开发的理解和编码调试的能力。
   该阶段学员在完成上述编码练习任务后,将独立完成“快译通”宝典项目开发,实现一个类“金山词霸”字典功能的实用程序开发。该项目完成后,学员的编码量可以达到5000-8000行,具备初级程序员开发能力,能够胜任企业一般开发编码类的任务要求。




第三阶段
嵌入式Linux环境高级
编程和项目开发实践


   中级营阶段主要讲解包括系统编程(信号/系统调用/管道/FIFO/消息队列/共享内存等),文件I/O编程(文件描述符/文件读写接口/原子操作/阻塞与非阻塞IO等),多任务和多线程编程(进程标识/用户标识/fork与vfork/多线程概念/线程同步等),网络编程(网络基本概念/套接口编程/网络字节次序/ Client/Server 结构/ UDP 编程);掌握Linux下Socket编程的开发流程,熟悉网络编程的调用接口函数和相关数据结构,使学员初步具备在Linux上进行系统编程开发的能力。同时还会讲解搭建嵌入式 Linux 开发环境,包括嵌入式Linux基本概念和开发流程、内核裁减配置和交叉编译、根文件系统制作、网络编程等知识。
   该阶段学员将综合之前所学内容和编程技术,以小组为单位进行一个团队合作项目的开发,完成一个嵌入式产品“数码相框”的设计和实现,涉及技术内容包括文件I/O编程,多线程编程,网络编程和项目文档编写。该项目完成后,学员的编码量可以达到10000-15000行,具备中级程序员开发能力,能够胜任企业项目开发和产品开发类的任务要求。




第四阶段
嵌入式Linux开发方向 Android开发方向
(2选1)


  高级营课程将按照学员兴趣和特长,选择2个专业选修方向进行深入学习,包括:
 ·嵌入式ARM硬件开发(公共部分)
 ·嵌入式Linux开发方向
 ·Android手机开发方向
   该阶段完成后,学员的编码量可以达到和超过20000行,具备独立开发项目,完成嵌入式产品软件设计和实现的能力。




以下为这2个方向的详细描述:




嵌入式ARM硬件开发
(公共部分)


  该部分学习的内容包括ARM体系结构、指令集、裸板开发等等,该阶段要求学员完成从0开始的Bootloader项目:
 ·Bootloader项目(从0启动硬件,加载Linux内核)
   该项目主要涉及 ARM体系结构及其基本编程知识,包括指令分类,寻址方式、指令集、存储系统、异常中断处理、ARM汇编语言以及C和汇编语言的混合编程,ARM开发板启动代码的框架分析等知识。同时要求结合ARM嵌入式开发板硬件设计原理图分析各种外设的工作原理和驱动机制,并自己动手实践完成一个ARM开发板上的Bootloader编程大作业。




嵌入式Linux开发方向
—上层应用开发


  该部分主要针对上层应用开发,学习的内容包括C++面向对象编程基础、QT图形界面开发、网页脚本语言、SQLite数据库等知识。
   该阶段要求学员设计并实现1个真实完整的嵌入式项目开发流程,该方向的项目选题可以从以下项目案例中任选:
 ·广告机项目(交互式多媒体网络系统)
 ·飞鸽传书项目(局域网文件共享系统)
 ·QQ聊天室项目(多客户登录即时通讯系统)
 ·数据采集和远程控制项目(Web远程控制系统)
   以上项目开发,涉及到文件I/O编程、数据库编程、网络通讯、以及图形界面开发等多种嵌入式Linux编程技术,要求学员建立起团队开发和协同工作的企业项目开发模式的概念和流程,强化学员对编写项目概要设计文档和详细设计文档的理解,为就业的职业技能和素质训练做好充分准备。




嵌入式Linux开发方向
—底层驱动开发


  该部分主要针对底层驱动开发, Linux设备驱动程序开发规范、USB协议规范、LCD液晶屏/TS触摸屏/网卡/AC97声卡等硬件驱动开发知识。
   该阶段要求学员实现2-5个真实的硬件设备驱动,该方向的项目选题可以从以下项目案例中任选:
  ·CS8900网卡驱动  ·USB驱动
  ·LCD液晶屏驱动   ·TS触摸屏驱动
  ·AC97声卡驱动    ·串口驱动
   上述项目主要涉及嵌入式 Linux 上驱动程序开发规范,包括设备驱动程序概念、字符设备驱动程序、块设备与网络设备、网卡驱动以及常用嵌入式设备驱动开发等知识。要求学员独立实现至少2种嵌入式设备驱动程序的编写,包括驱动模块的调试和加载以及完整的项目开发文档的编写。




专业选修方向二
Android开发方向


  该方向主要为了满足人才合作单位对Android高端技术人才的需求而设,基于对市场最前沿高端平板电脑产品方案的研发实践,使学员系统全面地掌握多核Android平台上的开发技术,满足企业对有实际开发经验的Android高端工程师的需求。
   该阶段要求学员学习Android系统框架、Android系统移植优化和Android应用开发等知识,完成2个商业级android项目。该方向的项目选题可以从以下项目案例中任选:
 ·mp3/mp4播放器(实现各种媒体格式的播放功能)
 ·云点阅读器(能够浏览epub、txt等文档)
 ·点菜系统(酒店点菜系统, 实现菜单浏览,下单)
 ·游戏引擎(开发完整的android平台游戏引擎)
   上述项目均采用最新Android高端硬件平台:NVIDIA Tegra2双核1GHz,3D、flash、高清硬件加速,基于ARM Cortex-A9内核,支持重力传感,WiFi无线网络,3G上网,HDMI高清接口。

本文标签: 嵌入式 课程 简介