尚官linux学习课程大纲

上传人:huo****ian 文档编号:131509076 上传时间:2022-08-06 格式:DOCX 页数:16 大小:27.93KB
返回 下载 相关 举报
尚官linux学习课程大纲_第1页
第1页 / 共16页
尚官linux学习课程大纲_第2页
第2页 / 共16页
尚官linux学习课程大纲_第3页
第3页 / 共16页
点击查看更多>>
资源描述
课程大纲:(共19周授课,每天面授6小时): 嵌入式基础部分 共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攻击程序,用于网络攻击或者病毒的分析和防范研究嵌入式高级部分 共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 网络设备驱动详细教学内容及目标:- 第一部分 基础部分 (共计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与poll3.进程组与信号 . 进程组 . 会话的建立 . 守护进程 . 常见的系统信号 . 信号的注册 . 信号处理4.进程间通信 . FIFO . PIPE . 共享内存 . 信号灯 . 消息队列5. 线程 . 线程的创建 . 线程的属性 . 取消状态与取消点 . 线程的退出及状态检测 . pthread_mutex . pthread_cond6.图形程序设计 . 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攻击原理与网络攻击网络病毒的安全防范 - 第二部分 高级部分 (共计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的编写 . 模块的编译与加载 . 导出符号 . 引用计数 . 内核空间与用户空间的区别 . printk2、设备驱动初步 . Linux的VFS简介 . 设备文件与设备号 . 字符设备 . cdev结构 . 用户空间的操作与设备操作关系 . open、release、read、write、lseek、ioctl等3、进程调度 . 定时器中断 . task_struct的作用 . thread_info . 抢占与非抢占 . 进程睡眠 . 等待队列 . 阻塞I/O与非阻塞I/O . select/poll4、并发控制 . 原子操作 . 自旋锁 . 禁用抢占 . 中断屏蔽 . 信号量 . completion5、异步通知 . Linux信号 . fasync的实现 6、内存管理与内核内存管理模块的使用 . 虚拟地址空间与MMU . 内核页管理机制 . 内核内存分配 . 高端内存 . vmalloc . 统一编址与独立编址 . I/O端口与I/O内存 . I/O静态映射 . mmap7、内核时间与内核体系的时间控制 . 内核计时jiffies . timer . tasklet . work_struct8、中断系统与Linux中断系统的使用 . 中断机制 . 异常向表相关代码分析 . 中断号的确定 . 上半部与下半部 . 中断共享9、内核Debug . proc文件系统 . 模块参数 模块的相关DebugLinux驱动部分(在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最大的优势就在移动消费性电子领域而对于手机来讲,最常规的需求就是图形、声音和操作。而上述项目正好涉及到这些驱动以及相关应用的开发。可以毫不费力的胜任这些工作 . 目标职位: 驱动开发工程师
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 机械制造 > 电气技术


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!