课程目标 |
|
|
|
|
|
通过本课程的系统学习,可以使学员由浅入深地对嵌入式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盘 |
|
|
|