|
课程特色:
|
||
◆全国唯一,从零开始手写至少5款驱动,绝非驱动的普通移植,真正的嵌入式核心 培训,触摸屏驱动、LCD驱动、音频驱动、网卡驱动、Watch Dog(看门狗)驱动及 相应的DMA驱动的编写。能否写出驱动是衡量嵌入式培训水平的唯一标准 ◆全程实际开发产品伴随,最后学员做一个真正的设备,核心部分使用自己的编码, 可以作为求职时的项目经验,高强度授课,全部项目型教学,每个环节都有案例 ◆从零开始手写Linux驱动和控制程序,直接用自己的代码控制处理器 ◆三星2440开发板+触摸屏+仿真器,让学员的程序立刻可见 ◆全部Linux平台开发环境,真正真实工作环境开发,拒绝Windows下模拟,拒绝照 PPT照本宣科 ◆全程不下20个实际的案例,包括手写驱动,网络攻击程序分析等 ◆共17周授课,每天面授6小时,有辅导老师值班下自习4小时,强制晚上9点回家 |
||
|
全真项目设计:
|
||
基于ARM9 S3C 2440芯片的智能手持设备(PDA)开发项目(嵌入式开发板+触摸屏) 所有内容都围绕实际项目,本设备可以直接作为MP4/MPM使用,也可以转为网络智能播放器,智能手机,GPS。我们的设备不只有开发板还有触摸屏,尚观 会让学员完成一个完整设备,真正让学员拥有一个工作经验,对找工作具有直接的推动作用。同时这个设备可以作为面试时的项目经验。 |
||
|
UEA-嵌入式Linux内核驱动就业 课程描述:
|
||
市场上嵌入式培训鳞次栉比,什么是真正的嵌入式培训?众所周知嵌入式开发包含至少两个级别,一个是嵌入式内核驱动级别,另外一个是嵌入式应用层开发,而 薪酬高的,最具价值的无疑是嵌入式内核驱动级别的开发者。识别一个嵌入式培训的好坏的标准就是,学生能不能真正进行内核驱动的编程。尚观嵌入式内核驱动核 心开发者让学员从零开始自己写至少5种驱动程序,完全Linux下进行实际代码开发,绝不按照所谓的PPT进行照本宣科,尚观配备2440开发板+触摸 屏+仿真器,让学员编程立竿见影。共17周授课,每天面授6小时,有辅导老师帮助下自习4小时,强制晚上9点回家。 |
||
|
教学目标:
|
||
| 强调从零开始写至少5种Linux驱动,让学员真正掌握ARM平台的Linux内核驱动的核心编程能力,让学员可以熟练掌握ARM汇编、ARM体系结构、 ARM平台的直接控制程序(裸驱动)。同时学员将会在ARM开发板上直接自己动手书写硬件控制程序以及Bootloader等,一定不是简单的移植,而是 真正理解并且亲自书写。 |
||
|
面向行业及岗位:
|
||
消费类电子(手机、PDA、游戏机)、数字多媒体(网络点播、机顶盒)、汽车电子(导航仪)、医疗电子、工业控制等行业的研发工程师,软件工程师,嵌入式软件工程师。 |
||
|
培养对象:
|
||
希望掌握ARM平台底层编程技术的学员;以及希望从事移动终端开发的爱好者、工程师、程序员、已及相关行业的工程技术人员;有志于从事嵌入式核心研发的软 件开发技术人员和正在学习计算机、软件、通信专业的学生,以下是主要应用方向: ◆ 手机内核驱动软件开发; ◆ 智能设备的驱动软件开发; ◆ 芯片公司的操作系统级开发; ◆智能操作系统平台驱动研发; |
||
|
课程大纲:(共17周授课,每天面授6小时):
|
||
◆嵌入式高级部分 共10周 第一、C++程序设计及Linux平台C++应用 QT编程 第二、嵌入式应用程序设计总和使用嵌入式环境进行POSIX等开发 第三、ARM平台开发与ARM体系结构、ARM汇编 裸板驱动(手写驱动的第一部分) 第四、Linux移植、Linux驱动在ARM平台下的移植 第五、Linux内核原理与结构,Linux设备驱动(手写驱动第二部分) 从零手写5种以上的驱动程序 第六、基于S3C2440 ARM平台的 PDA智能大型项目全真开发项目 嵌入式高级部分案例实践(根据地区及老师的不同,案例略有不同): C++程序设计部分案例 a. 成绩管理系统(STL实现) b. 模板库的实现(MyTL) QT程序编程部分案例 a. 画图板程序编程 b. 视频播放器 c. 嵌入式系统移植初步 ARM体系结构与裸板驱动部分案 a. ARM模拟器开发 b. Uart控制程序 (bootloader上执行) c. LCD控制程序 (bootloader上执行) d. 触摸屏控制程序 (bootloader上执行) e. IIS控制程序 (bootloader上执行) f. 网卡控制程序 g. TCP/IP协议栈移植与ARM开发板 h. bootloader开发--my-boot i. 文件系统制作 j. ARM-Linux移植 Linux内核与驱动部分案例 a. ARM-Linux GPIO驱动 b. ARM-Linux WatchDog驱动 c. ARM-Linux Udev移植 d. ARM-Linux 触摸屏输入设备驱动 e. ARM-Linux LCD显示设备驱动 f. ARM-Linux 音频设备驱动 g. ARM-Linux Nand Flash块设备驱动 h. ARM-Linux 网络设备驱动 ◆嵌入式基础部分 共9周 第一、Linux操作系统基础与Shell编程 第二、C语言程序提高,专为让C语言提升到可以实用而设计 第三、数据结构与C语言结合成为实际开发实例 第四、Linux系统程序 POSIX等 设计 第五、Linux网络程序 Socket套接字 程序设计 嵌入式基础部分案例实践(根据地区及老师的不同,案例略有不同): 嵌入式C强化部分案例 a. 自己设计一个指法练习的游戏程序 b. 自己设计一个汉诺塔游戏 c. 自己设计一个文件加密程序 嵌入式C语言与数据结构部分案例 a. 成绩管理系统 b. 电子词典程序编写 c. 输入法程序编写 d. 编写自己的计算器 e. 文件压缩器 f. 道路交通查询系统 Linux系统程序设计 POSIX编程部分案例 a. 编写自己的串口监听程序(可以做集群通信等用处) b. 手动编写一个脚本解释器-MyShell(类似Linux种的Bash或tcsh) c. 编写自己的图片浏览器 d. 编写自己的中文输入法 e. 编写一个自己的MP3播放器 Linux网络程序设计 Socket编程案例 a. 自己编写WEB服务器,类似Apache或者nginx之类的服务程序 b. 编写一个聊天程序 c. ftp服务器与客端程序 d. 音频广播程序 e. 编写一个DDos攻击程序,用于网络攻击的分析和防范研究 f. ARP攻击程序,用于网络攻击或者病毒的分析和防范研究 |
||
|
详细教学内容及目标:
|
||
------------------------------------ 第二部分 高级部分 (共计48天)------------------------------- (第一部分 基础部分大纲在后部) 六、C++程序设计 (3天) 教学目标: 能够利用C++的特性编写各种数据结构算法 (根据各地的环境以及老师的不同可能实际案例有一定变化,案例为以下其中几个) 案例实践: a. 成绩管理系统(STL实现) b. 模板库的实现(MyTL) 1. C++基础 . 面向对象思想 . C语言的面向对象 . C++的类 . C语言与C++面向对象实现方式的对比 . 访问属性 . 友元 及 实际使用 . 构造, 拷贝构造函数 . 封装 . C++的编译原理, 与C、汇编的互相调用 2.高级特性 . 继承 . 多重继承 . 虚函数 . 纯虚类 . 虚函数的实现 . 操作符重载 . 命名空间 . 静态函数 3、泛型技术 . 模板函数 . 模板类 . STL的使用 . STL的实现 七、嵌入式应用程序设计 一般的智能手机、GPS等之上应用程序设计 QT等(6天) (3天) 教学目标: 熟悉嵌入式应用程序开发 案例实践: (根据各地的环境以及老师的不同可能实际案例有一定变化,案例为以下其中几个) a. 画图板程序编程 b. 视频播放器 c. 嵌入式系统移植初步 1、嵌入式系统移植 . 初识开发板 . Bootloader的烧写 . 内核的烧写 . 根文件系统的制作 . 文件系统的烧写 . NFS文件系统 . 开发板串口通信 2、 Qtopia移植(各地根据使用的QT的版本略有不同,新版QT有变化) . 常见的图形界面 . 触摸屏输入事件获取 . Qtopia的配置 . Qtopia的编译 . Qtopia的安装 3、QT/Embedded移植 . QT/E的配置 . QT/E的编译 . QT/E的安装 . QT/E工程组织 . tmake工具安装及使用 . QT/E的Hello World . 创建窗口 . 添加按钮 . QT类的继承关系 4、Singal与Slot . 对象间通信 . Signal/Slot机制详解 . 对话框 . QT中的绘图 . QT中的键盘和触摸屏事件 5、QT/Embedded进阶 . 菜单栏与工具栏 . QT中的多线程 . QT中的网络编程 6、QT高级工具 . Qt Designer的使用 . Qvfb模拟器的使用 . Kdevelop的使用 八、ARM嵌入式开发以及ARM平台裸驱动开发 bootloader开发 (20天) 教学目标: 熟悉ARM微处理结构、指令和外围器件 案例实践: (根据各地的环境以及老师的不同可能实际案例有一定变化,案例为以下其中几个) a. ARM模拟器开发 b. Uart控制程序 (bootloader上执行) c. LCD控制程序 (bootloader上执行) d. 触摸屏控制程序 (bootloader上执行) e. IIS控制程序 (bootloader上执行) f. 网卡控制程序 g. TCP/IP协议栈移植 h. bootloader开发--my-boot i. 文件系统制作 j. ARM-Linux移植 1、ARM体系结构与ARM 处理器的体系结构 . IP核、芯片与开发板 . 处理器结构 处理器模式 . 文件系统的烧写 . 寄存器 . 流水线结构 C语言内嵌汇编格式 与编程实例 2、ARM指令系统 . 算术逻辑指令 . 指令对状态寄存器的影响 . 比较指令 . 分支指令 . 移位 . 指令位图 . 识别机器指令; 3、内存访问与内存控制 . 数据总线与地址总线的使用与实例 . STR/LDR 4、ARM过程调用标准 . LDM/STM . 反汇编 . APCS . C语言函数与汇编的互相调用 5、ARM AT&T汇编 . AT&T汇编语法详解 . gas工具的使用 . label标签的作用 . 数据与代码的分布 6、链接脚本ld-script . 段地址的确定 . 编写ld-script . ELF格式与libc函数库的关系 7、时序电路基础 . 电平信号 . 电路图分析 . 时序图分析 . datasheet查看 . s3c2440的外围器件结构 . GPIO操作 8、AMBA总线标准 . AMBA总线标准 . FCLK/HCLK/PCKL频率分配与设置 . Watchdog计时操作 . UART操作 9、ARM中断体系 . 异常向量表 . ARM模式切换t . ARM中断控制器 . Linux系统调用的实现 . ARM中断控制器 10、Nand Flash控制器 . Flash原理 . Nand控制器原理及时序分板 . k9f1208时序分析 11、内存控制器 . s3c2440物理地址分布 . SDRAM原理与时序 . 内存控制器的物理连接 . 地址对齐 . SRAM访问 12、内存管理单元 . MMU的原理 . ARM协处理器指令 . section模式 . small page模式 . 内存控制器的物理连接 . I & D TLBs . I & D Cache . 哈佛结构的原理与实现 13、DMA 直接内存访问 的机制与使用 . DMA的状态机 . 编写ld-script . DMA的控制 14、触摸屏接口与ADC接口 与实例 . ADC原理 . 触摸屏接口与控制 15、LCD控制器 . 图形显示原理 . LCD控制器 . LCD时序 . LCD驱动相关的框架与体系 16、I2S音频总线 . 音频硬件原理 . I2S时序 . s3c2440上I2S的操作 音频设备的裸驱动讨论 17、CS8900网卡控制 . 逻辑链路层与MAC层 . CS8900原理与时序分析 后续网卡裸驱动讨论与体系结构 18、TCP/IP协议栈移植,与网络体系结构 . LwIP TCP/IP协议栈简介 . LwIP配置与编译 . tftp配置与编译 19、Bootloader原理与移植 . u-boot的配置、编译 . u-boot启动过程分析 . ARM-Linux的启动要求 . ARM-Linux kernel的ld-sript分析 . u-boot到ARM-Linux的跳转代码分析 . 使用mkimage制作启动镜像文件 20、ARM-Linux原理与移植 . ARM-Linux的配置、编译 . ARM-Linux启动代码分析 . ARM-Linux 地址映射的关系; . Busybox的配置、编译 九、Linux内核以及设备驱动程序 操作系统高级部分 (14天) 教学目标: 强调从零开始写驱动,熟悉内核的裁剪、移植及设备驱动开发 案例实践: 我们将从以下驱动中让大家手写几款重要的 (根据各地的环境以及老师的不同可能实际案例有一定变化,案例为以下其中几个) a. ARM-Linux GPIO驱动 b. ARM-Linux WatchDog驱动 c. ARM-Linux Udev移植 d. ARM-Linux 触摸屏输入设备驱动 e. ARM-Linux LCD显示设备驱动 f . ARM-Linux 音频设备驱动 g . ARM-Linux Nand Flash块设备驱动 h. ARM-Linux 网络设备驱动 Linux内核设计部分: 1、Linux内核配置与内核模块 . 内核配置编译 . 补丁的制作 . 内核补丁 . 内核Makefile . Kconfig的编写 . 模块的编译与加载 . 导出符号 . 引用计数 . 内核空间与用户空间的区别 . printk 2、设备驱动初步 . Linux的VFS简介 . 设备文件与设备号 . 字符设备 . cdev结构 . 用户空间的操作与设备操作关系 . open、release、read、write、lseek、ioctl等 3、进程调度 . 定时器中断 . task_struct的作用 . thread_info . 抢占与非抢占 . 进程睡眠 . 等待队列 . 阻塞I/O与非阻塞I/O . select/poll 4、并发控制 . 原子操作 . 自旋锁 . 禁用抢占 . 中断屏蔽 . 信号量 . completion 5、异步通知 . Linux信号 . fasync的实现 6、内存管理与内核内存管理模块的使用 . 虚拟地址空间与MMU . 内核页管理机制 . 内核内存分配 . 高端内存 . vmalloc . 统一编址与独立编址 . I/O端口与I/O内存 . I/O静态映射 . mmap 7、内核时间与内核体系的时间控制 . 内核计时jiffies . timer . tasklet . work_struct 8、中断系统与Linux中断系统的使用 . 中断机制 . 异常向表相关代码分析 . 中断号的确定 . 上半部与下半部 . 中断共享 9、内核Debug . proc文件系统 . 模块参数 模块的相关Debug Linux驱动部分(在Bootloader部分已经在尝试裸驱动的编写,这部分是驱动的第二部分) 9、设备模型 . kobject、kset、class、subsystem与sysfs的原理和关系 . udev的原理与移植; . 总线设备驱动简介 . bus_type 总线相关体系结构 . device与device_driver原理 设备驱动体系结构 . platform_device的应用 10、LCD驱动 . ARM-Linux Frame Buffer驱动详解 Linux中图形控制体系 . LCD控制程序 LCD驱动程序编写 11、触摸屏驱动 . ARM-Linux Input设备详解 . 触摸屏控制 实际开发板上的触摸屏驱动编写 12、音频设备驱动 . OSS驱动详解 . I2S控制 13、块设备驱动 体系结构 . 块设备的注册 内核模块与块设备驱动 . 块设备的I/O的特点 . I/O请求 . 操作集合 14、网卡驱动 编写 . 设备注册 . 驱动层数据收发 . 地址解析 十、项目实践 (5天 内容贯穿在整个授课过程中 不另行安排时间) 基于ARM9 S3C 2440芯片的智能手持设备(PDA)的设计 本设备可以直接作为MP4/MPM使用,也可以转为网络智能播放器,智能手机,GPS S3C2440芯片是目前几乎市面上所有正在销售GPS等设备的ARM芯片,有大量的实际智能设备基于这款芯片,我们使用S3C2440作为主要的ARM9平台智能PDA设备有非常重要的意义。可以让学员的就业非常广阔。尚观作为对嵌入式有5年经验的最早嵌入式职业培训机构,该项目经过专门的设计。 我们的项目在ARM9 S3C2440上实现,全程Linux平台开发设计,全程开发板实验,整个项目涉及到核心为Linux内核驱动、ARM体系结构、ARM汇编,网络数据传输、QT图形界面、mplayer移植、触摸屏驱动、LCD驱动、音频驱动、网卡驱动、Watch Dog(看门狗)驱动及相应的DMA驱动。除了mplayer解码器部分外,其它所有应用程序和驱动程序全部由我们从零编写,而不是简单的“移植驱动程序”, 并且几乎含盖了嵌入式软件中的各个方面。可以从根本上学习整个嵌入式产品从硬件选型、电路设计、Bootloader开发、操作系统移植、驱动开发、应用开发、网络传输的各个细节,并能锻炼项目领导和团队合作能力。 项目优势 . 监控设备公司 监控设备方面的公司一般应用嵌入式对多个监控区域进行实时监测、录像。而一般的公司基于成本考虑,都要自行设计硬件,主流用ARM 所以上面就会涉及到触摸屏驱动、LCD驱动、音频驱动、网卡驱动、Watch Dog(看门狗)驱动及相应的DMA驱动的编写, 另外还会涉及到应用部分图象的显示等。也就是说,在上述项目稍作变更就成为一个GPS设备、智能手机、MPM播放器。 从事该项目的学员的目标职位: 目标职位: 驱动开发工程师 智能手机公司 智能手机是典型的嵌入式系统,随着用户对功能需要的增加、网络应用在手上的普极,手机大多采用ARM . 因为ARM最大的优势就在移动消费性电子领域而对于手机来讲,最常规的需求就是图形、声音和操作。而上述项目正好涉及到这些驱动以及相关应用的开发。可以毫不费力的胜任这些工作 . 目标职位: 驱动开发工程师 数码影音产品公司 数码影音产品(mp3/mp4/MPM)很大程度就是一个不带通信模块的智能手持设备 目标职位: 驱动/应用开发工程师 数字机顶盒公司 数字机顶盒的操纵界面和图像数据的输出,都离不开上述驱动和应用。而且在技术日趋成熟,机顶盒对联网功能的需求越来越明显,特别是网络电视等新兴媒体的出现,所以在机顶盒中也越来越多的采用网络,所以网络驱动及网络应用程序开发在这些产品中同是核心功能 目标职位: 驱动/应用开发工程师 GPS导航仪公司 GPS的一个重要的功能就是用户界面操作、图形显示及语音提示,上述项目完整包含此类驱动开发及相关应用开发,上述开发经验非常容易胜任此类工作 目标职位: 驱动/应用开发工程师 游戏机公司 90年代产生的街机几乎陪伴了一代人的成长,也造就了许多经典游戏的出现。那时的街机都专用主板。一个街机只能玩一个游戏。后来发展到GVD,可以一机兼容多个游戏,但游戏必须是同一公司的同类产品。到了90年代末,新的街机直接采用pc机,内嵌模拟器的形式,通过装载不同的游戏文件,就能运行不同公司的游戏,直接解决游戏的平台问题。但是PC平台价格昂贵(这也是嵌入式系统出现的原因), 所以越来越的游戏机厂商采用ARM来做了运行模拟器,以节约成本,提高竞争力。因为游戏也是依靠交互性、图形和声音的体现的一类产品,所以游戏机模拟器的开发和移植都离不开上述驱动和应用开发的经验。另外还有掌机以及电视家用机也越 来越多的采用ARM平台以降低成本 . 目标职位: 驱动/应用开发工程师 工控/行业产品公司 在众多的生产线上,如印刷机、数控机床、线切割机、贴片机等等,为了节约生产力,早在80年代末期,就开始产用电脑系统进行控制。但是由于欧美国家掌握大量的关键技术, 生产线引进成本昂贵。所以国内很多生产线还是采用 486 + DOS的过时生产线控制系统。随着嵌入式普及,国内最早从事工业控制领域的研祥工控、华北工控等公司已开始慢慢转型向成本低、可控性好、操作简便的ARM嵌入式系统,并用触摸屏来设定参数。这些领域也离不开相应的驱动和应用开发。 目标职位: 驱动/应用开发工程师 检测仪器/医疗设备公司 如汽车故障检测设备,可视化医疗检测设备等,都需要网络传输、图形显示、声音提示及友好的操控界面等。上述项目知识是不可或缺的。 学员就业公司有:阿尔卡特朗讯、华为、中兴、中软、台湾台达集团、科达通讯、华亨、海思半导体、北京中星、风河、博世、龙芯、Moto Broadcom等智能设备及芯片提供商 ------------------------------------ 第一部分 基础部分 (共计45天) ------------------------------- 一、Linux系统基础 (10天) 教学目标: 能比较熟练的安装、操作Linux系统, 并能配置开发环境与常用服务 1.Linux及嵌入式系统设计简介 . Linux 与 嵌入式学习方法与快速进阶 . Linux系统结构与实际运用的实例 . Linux系统构建及安装 . Linux控制台操作 2.Linux文件及用户管理 . Linux下开发的多种帮助方法以及如何在嵌入式开发中“渔” . 文件系统以及文件系统结构 . 文件属性以及文件属性修改 . 用户组与用户权限 . 文本处理与编辑 以及 Vi编辑器的高级用法 3.Linux常用命令 . 文件的多种查找命令 . Linux下文件压缩命令与习惯用法 . Linux系统中输入/出重定向 以及错误输出重定向 2> >> >等 . 管道与常见的管道用法 4.Linux系统配置与进程管理 . 进程控制 及 相关开发内容 . 进程优先级与优先级调整 . Linux系统结构与启动脚本 . Linux下的软件安装 . x-window图形体系与实际使用 5.Linux网络配置 . Linux系统中网络基础 . TCP/IP协议栈 . Linux中网卡配置 DNS配置 . Linux路由配置 6.服务配置初步 . setup . nfs 网络文件系统服务 . iptables 防火墙配置 . vsftp 安全ftp服务 . ssh 安全远程shell服务 7.嵌入式相关的网络服务配置进阶 . tftp服务器 . cvs 软件版本管理服务器 . pxe启动服务配置 . apache Web服务器配置 8.Bash Shell初步 . Shell变量以及定义 . 运算符 . Shell编程中的流程控制 . Shell编程中的环境变量 9.Bash Shell编程进阶 . Shell下文件操作及常见的实例 . Shell中使用函数 . 输入输出 10.Bash Shell高级应用编程以及文本的操作 . 正则表达式的使用与进阶 . sed 高级编程以及实际应用 . awk 高级编程以及实际应用 二、C语言程序设计 (12天) 教学目标: 能提升自己的C语言水平到真正使用C设计应用程序的水平 案例教学: (根据各地的环境以及老师的不同可能实际案例有一定变化,案例为以下其中几个) a . 自己设计一个指法练习的游戏程序 b . 自己设计一个汉诺塔游戏 c. 自己设计一个文件加密程序 1 .C语言巩固提高 各种程序语言的产生与背景 . 机器语言与汇编和C语言的关系 . C语言的特点与设计思想 . C语言的数据类型汇总 . C语言运算符汇总 . C语言表达式的巩固与汇总: C语言的关系运算符汇总 2 .C语言中的主要流程控制与汇总 . if 语句及常见用法 . switch 语句常见用法 . 循环语句的种类与常见的使用方法 3 .C语言函数汇总 . 函数的声明和定义 . 形参与实参 . 递归的使用与常见的案例 4.数组的使用与实例 . 数组的定义 . 整型数组 . 字符数组 . 字符串常量 . 数组名的意义 . 多维数组 5.加强C语言中指针与运用提高 . 指针的定义 . 指针的加减 . 动态内存分配 . 堆与栈的实例及分析 6.数组指针的实际使用 . 指针数组 以及常见实际使用 . 数组指针 7 .预定义 . 宏 . 参数宏 . 条件编译 . 声明的作用 . 头文件的作用 . ANSI VT控制码 8.开发辅助工具 . 声明与头文件 . Makefile的编写,与常见用法 . GDB的使用以及Linux下程序调试实例 . CVS与配置管理(根据地区不同有可能使用其他版本控制软件) . 静态链接库与程序跟静态链接库的使用 . 动态链接库与实例 9.C语言重点演练 指针;向指针的指针 . 二级指针 . 三级指针 . 多级指针 指针的使用与内核实例讲解 10.组合数据类型 . 结构体 . 结构体指针 . 枚举 . 共用体 (联合) 11.函数指针 . 函数指针做参数 . 结构体中的函数指针 . C语言与面向对象 12.文件操作 . 标准I/O . 系统I/O . 目录操作 三、用数据结构实现典型的企业基本应用 (10天) 教学目标: 总结以前学过的数据结构与算法进行实际工作案例的讲解 案例实践: (根据各地的环境以及老师的不同可能实际案例有一定变化,案例为以下其中几个) a. 成绩管理系统 b. 电子词典程序编写 c. 输入法程序编写 d. 编写自己的计算器 e. 文件压缩器 f. 道路交通查询系统 1 .单向链表,特别加强内核与链表的实例讲解 . 链表的创建 . 结点的添加 . 结点的删除 . 结点的查找 . 链表的遍历 2.双向链表 . 双向链表的创建 . 双向链表插入和删除 . 基于函数指针的插入条件 . 基于函数指针的删除条件 3、Linux内核链表 . Linux内核链表的创建 . 插入、删除、查找等函数的抽象 . List结构的作用 . 有头与无头链表 4、广义表 . 组合链表的应用 . 广义表 5、队列和堆栈 . 数组存储 . 链式存储 6、Hash表 . Hash算法 . Hash表的创建 . 遍历 7、树 . 数组存储 . 链式存储 . 树的遍历 . 树的删除与插入 . 权值的概念 8、二叉树 . 数组表示法 . Huffman树 . Huffman编码 9、排序及查找 . 冒泡排序 . 快速排序 . 选择排序 . 查入排序 10、图 . 图的建立 . 数组存储 . 链式存储 . 路径搜索 四、Linux系统程序设计 POSIX编程 (8天) 教学目标: 熟悉应用程序的设计 案例实践:(根据各地的环境以及老师的不同可能实际案例有一定变化,案例为以下其中几个) a. 编写自己的串口监听程序(可以做集群通信等用处) b . 手动编写一个脚本解释器-MyShell(类似Linux种的Bash 或 tcsh) c. 编写自己的图片浏览器 d. 编写自己的中文输入法 e. 编写一个自己的MP3播放器 1. UNIX/Linux进程与进程管理程序开发 . 进程的创建以及Linux下常见的相关系统调用 . 进程地址空间与分配管理 . mmap 机制 . 父子进程的关系 以及相应的进程管理 . 僵尸进程与相关内容 . 孤儿进程的形成与相关内容 2. UNIX/Linux终端 . 进程的控制终端 . 进程的标准输入输出 . 规范及非规范模式 . 波特率 . select与poll 3.进程组与信号 . 进程组 . 会话的建立 . 守护进程 . 常见的系统信号 . 信号的注册 . 信号处理 4.进程间通信 . FIFO . PIPE . 共享内存 . 信号灯 . 消息队列 5. 线程 . 线程的创建 . 线程的属性 . 取消状态与取消点 . 线程的退出及状态检测 . pthread_mutex . pthread_cond 6.图形程序设计 . Frame Buffer的操作 . 位图原理与显示 . 矢量图形操作的实现 . Freetype操作与矢量文字的显示 . Xlib/QT/GTK简介 7.事件获取 . 键盘事件获取 . 鼠标事件获取 . Unicode字符获取 8.音频程序设计 . 音频原理 . OSS音频程序设计 . ALSA音频程序设计 五、Linux网络程序设计 Socket编程 (5天) 教学目标: 熟悉TCP/IP, 熟悉一般的网络服务器程序以及典型的网络攻击防范程序 案例实践: (根据尚观各地的环境以及老师的不同可能实际案例有一定变化,案例为以下其中几个) a. 自己编写WEB服务器,类似Apache或者nginx之类的服务程序 b. 编写一个聊天程序 c . ftp服务器与客端程序 d . 音频广播程序 e. 编写一个DDos攻击程序,用于网络攻击的分析和防范研究 f. ARP攻击程序,用于网络攻击或者病毒的分析和防范研究 1、网络程序的开发基础 . OSI七层详解 . TCP/IP协议层分析与代码实现的体系 . 网络协议应用层详解 . Socket编程与应用 2、 UNIX/Linux网络程序进阶 . Socket编程详解与实际案例 3、 传输层高级应用 . 基于TCP传输层协议的重复型和并发型程序设计 . 基于UDP传输层协议的重复性和并发型程序设计 4、广播和多播 . 广播程序设计 . 多播程序设计 5、网络攻击 . 原始套接口程序设计 . DDos攻击原理与网络攻击的安全防范 . ARP攻击原理与网络攻击网络病毒的安全防范 |