全部博文(87)
分类: LINUX
2011-04-05 00:24:51
以国嵌视频为主,里面的实验至少做两遍!
项目驱动实验,实验驱动学习。
嵌入式开发包含至少两个级别,一个是嵌入式内核驱动级别,另外一个是嵌入式应用层开发,而薪酬高的,最具价值的无疑是嵌入式内核驱动级别的开发者。识别一个嵌入式内核驱动培训的好坏的标准就是,学生能不能真正进行内核驱动的编程。
从零开始写至少5种Linux驱动,真正掌握ARM平台的Linux内核驱动的核心编程能 力,熟练掌握ARM汇编、ARM体系结构、ARM平台的直接控制程序(裸驱动)。同时在ARM开发板上直接自己动手书写硬件控制程序以及Bootloader等, 一定不是简单的移植,而是真正理解并且亲自书写。
--------------------- 嵌入式 基础 -----------------
一、Linux系统基础 (3天)
目标: 能比较熟练的安装、操作Linux系统, 并能配置开发环境与常用服务.
1.Linux基础
. 系统安装
. 帮助系统
. 文件管理
. 用户组
. 文本处理与编辑
2. Linux常用命令
. 查找
. 压缩
. 输入/出重定向
. 管道
. 启动脚本
. 软件安装
. x-window
3. Linux网络配置
. TCP/IP简介
. 网卡配置
. DNS配置
. nfs
. ssh
二、shell程序设计(2天)
教学目标:能用Shell处理简单的批量化工作
1.Bash Shell初步
. 变量
. 运算符
. 流程控制
. 环境变量
2、Bash Shell进阶
. 文件操作
. 函数
. 输入输出
三、C语言程序设计 (10天)
目标: 能设计普通的应用程序
案例:
1、指法练习程序
2、汉诺塔游戏
1.C语言基础
. C语言的特点
. 数据类型
. 运算符
. 表达式
. 关系运算符
. If 语句
. switch 语句
. 循环语句
2. 函数
. 函数的声明和定义
. 形参与实参
. 递归 .
3. 数组
. 数组的定义
. 整型数组
. 字符数组
. 字符串
. 数组名的意义
. 多维数组
4. 指针
. 指针的定义
. 指针运算符
. 指针的加减
. 动态内存分配
. 堆与栈
5.数组指针
. 指针数组
. 数组指针
6. 预编译与VT控制码
. 声明与头文件
. 静态链接库
. 动态链接库
. ANSI VT控制码
7. 组合数据类型
. 结构体
. 结构体指针
. 枚举
. 共用体 (联合)
8. 指针高级应用
. 二级指针
. 三级指针
. 多级指针
. 函数指针
. C语言与面向对象
9.文件操作
. 标准I/O (fopen)
10.辅助开发工具
. Makefile的编写
. GDB的使用
. CVS与配置管理
四、数据结构 (7天)
目标: 熟悉常用的数据结构与算法
案例:
1、成绩管理系统
2、计算器
3、电子词典
4、文件压缩器
1、单向链表
. 链表的创建
. 链表的遍历
. 结点的添加、删除
. 基于函数指针的查找
2、Linux内核链表
. 双向链表
. Linux内核链表的创建
. List结构的作用
. 有头与无头链表
3、排序及查找
. 冒泡排序
. 快速排序
. 选择排序
. 插入排序
4、Hash表
. Hash算法
. Hash表的创建
. 遍历
5、队列和堆栈
. 数组存储
. 链式存储
6、树与二叉树
. 数组存储
. 链式存储
. 权值的概念
. Huffman树
. Huffman编码
7、广义表
. 组合链表的应用
. 广义表
项目实践(5天):俄罗斯方块
用VT控制码结合数据结构的知识来实现。
五、C++程序设计(3天)
目标:能够利用C++的特性编写各种数据结构算法
案例:
. 成绩管理系统(STL实现)
. 模板库的实现(MyTL)
. 编写自己的图片浏览器
1、C++基础
. 面向对象思想
. C语言的面向对象
. C++的类
. C语言与C++面向对象实现方式的对比
. 友元
. 构造, 拷贝构造函数
. C++的编译原理, 与C、汇编的互相调用
2、高级特性
. 继承
. 多重继承
. 虚函数与纯虚类
. 操作符重载
. 命名空间
. 静态函数
3、泛型技术
. 模板函数
. 模板类
. STL的使用
. STL的实现
------------------- 嵌入式 高级-----------------------
一、linux系统程序设计(7天)
目标: 熟悉应用各种系统调用
案例:
1、串口监听程序
2、图片浏览器
3、MP3播放器
1、系统I/O
. 文件操作
. 终端
. 规范及非规范模式
. select与poll
. mmap
2、进程
. 进程的创建
. 进程地址空间
. 进程的控制终端
. 僵尸进程
. 孤儿进程
3、进程组与信号
. 进程组
. 会话的建立
. 守护进程
. 常见的系统信号
. 信号的注册
. 信号处理
4、进程间通信
. FIFO
. PIPE
. 共享内存
. 信号灯
. 消息队列
5、线程
. 线程的创建
. 线程的属性
. 取消状态与取消点
. 线程的退出及状态检测
. pthread_mutex
. pthread_cond
6、图形程序设计
. Frame Buffer的操作
. 位图原理与显示
. 矢量图形操作的实现
. Freetype操作与矢量文字的显示
. Xlib/QT/GTK简介
7. 音频处理与事件获取
. 音频原理
. OSS音频程序设计
. 键盘事件获取
. 鼠标事件获取
. Unicode字符获取
二、嵌入式网络程序设计(3天)
目标: 熟悉TCP/IP, 熟悉一般的网络服务器程序
案例:
1. 聊天程序
2. ftp程序
3. 音频广播程序
4. ping的实现
5. DDos攻击程序
6. ARP攻击程序
1、TCP程序设计
2、网络程序进阶
. UDP传输
. 广播程序设计
. 多播程序设计
3、网络攻击
. 原始套接口程序设计
. DDos攻击原理
. ARP攻击原理
项目实践(5天):网络视频播放系统
利用所学的网络、图形、声频知识构建一个完整的网络点播系统,核心解码部分
可用MPlayer的相关部分。
三、ARM嵌入式开发 (15天)
目标: 熟悉ARM微处理结构、指令和常用外围器件
案例:
1. ARM模拟器开发
2. Watchdog控制程序
3. RTC时钟控制程序
4. Uart控制程序
5. LCD控制程序
6. 触摸屏控制程序
7. DMA控制程序
8. 音频控制程序
9. 网卡控制程序
10. 文件系统制作
11. ARM-Linux移植
1、嵌入式系统移植
. 仿真器的使用
. Bootloader的烧写
. 内核的烧写
. 根文件系统的制作
. 文件系统的烧写
. NFS文件系统
. 开发板串口通信
2、ARM体系结构
. IP核、芯片与开发板
. 处理器结构
. 处理器模式
. 寄存器
. 流水线结构
. C语言内嵌汇编格式
3、ARM指令系统
. 算术逻辑指令
. 指令对状态寄存器的影响
. 比较分支指令
. 数据总线与地址总线
. 内存访问指令
. 指令位图
. 识别机器指令
4、ARM过程调用标准
. LDM/STM
. 反汇编
. APCS
. C语言函数与汇编的互相调用
5、ARM 汇编与GPIO
. AT&T汇编语法详解
. gas工具的使用
. label标签的作用
. 数据与代码的分布
. 链接脚本ld-script
. 的外围器件结构
. GPIO操作
6、时钟与UART
. 总线标准
. 频率分配与设置
. Watchdog计时操作
. RTC时钟操作
. UART操作
7、ARM中断体系
. 异常向量表
. ARM模式切换
. ARM中断控制器
. 软中断
. Linux系统调用的实现
8、 Nand Flash
. Flash原理
. Nand控制器原理
. 时序分析
9、SDRAM
. 物理地址分布
. SDRAM原理与时序
. 内存控制器的物理连接
. 地址对齐
. SRAM访问
. 软中断
. Linux系统调用的实现
10、内存管理单元(MMU)
. MMU的原理
. ARM协处理器指令
. section模式
. small page模式
. I & D TLBs
. I & D Cache
. 哈佛结构的原理与实现
11、触摸屏与ADC
. ADC原理
. 触摸屏接口与控制
12、LCD
. 图形显示原理
. LCD控制器
. LCD时序
13、音频与DMA
. 音频硬件原理
. UDA1341
. L3总线
. 音频总线时序
. DMA原理与应用
14、网卡
. 逻辑链路层与MAC层
. CS8900原理与时序分析
15、Bootloader开发
. u-boot的配置、编译
. u-boot启动过程分析
. ARM-Linux的启动要求
. ARM-Linux kernel的ld-sript分析
. u-boot到ARM-Linux的跳转代码分析
项目实践 (5天):Bootloader开发
完全自主开发一个能够引导Linux的Bootloader,需具备tftp、nand烧写等功能。
四、Linux设备驱动程序 (15天)
目标: 熟悉内核的裁剪、移植及设备驱动开发
案例:
1. GPIO驱动
2. RTC时钟驱动
3. WatchDog驱动
4. Udev移植
5. 触摸屏输入设备驱动
6. LCD显示设备驱动
7. DMA驱动
8. 音频设备驱动
9. Nand Flash块设备驱动
10. 网络设备驱动
1、ARM-Linux启动过程
. ARM-Linux的配置、编译
. ARM-Linux启动代码分析
. ARM-Linux 地址映射;
. Busybox的配置、编译
2、内核配置与内核模块
. 内核配置编译
. 补丁的制作
. 内核补丁
. 内核Makefile
. Kconfig的编写
. 模块的编译与加载
. 导出符号
. 引用计数
. 内核空间与用户空间的区别
. printk
. 模块参数
3、设备驱动初步
. Linux的VFS简介
. 设备文件与设备号
. 字符设备
. cdev结构
. 用户空间的操作与设备操作关系
. open、release、read、write、lseek、ioctl等
4、进程调度
. 定时器中断
. task_struct的作用
. thread_info
. 抢占与非抢占
. 进程睡眠
. 等待队列
. 阻塞I/O与非阻塞I/O
. select/poll
5、并发控制
. 原子操作
. 自旋锁
. 禁用抢占
. 中断屏蔽
. 信号量
. completion
6、内存管理
. 虚拟地址空间与MMU
. 内核页管理机制
. 内核内存分配
. 高端内存
. vmalloc
. 统一编址与独立编址
. I/O端口与I/O内存
. I/O静态映射
. mmap
7、内核计时
. 内核计时jiffies
. timer
. tasklet
. work_struct
. Linux信号
. fasync的实现
. RTC时钟驱动
8、中断系统
. 中断机制
. 异常向表相关代码分析
. 中断号的确定
. 上半部与下半部
. 中断共享
9、设备驱动模型
. kobject、kset、class、subsystem与sysfs的原理和关系
. udev的原理与移植
. bus_type
. device与device_driver原理
. platform_device的应用
10、触摸屏驱动
. ARM-Linux Input设备详解
. 触摸屏控制
11、LCD驱动
. Frame Buffer驱动详解
. LCD控制
12、音频设备驱动
. OSS驱动详解
. I2S控制
13、块设备驱动
. 块设备的注册
. 块设备的I/O的特点
. I/O请求
14、网卡驱动
. 设备注册
. 驱动层数据收发
. 地址解析
15、ARM-Linux裁剪与移植
. 新版内核移植
. 驱动整合
项目实践(5天):ALSA音频驱动开发
开发ALSA音频驱动,并移植相应的ALSA LIB,再编写相应的应用程序。
大项目:视频采集系统
我们的项目在ARM11 S3C6410上实现,全程Linux平台开发设计,全程开发板实验,整个项目涉及到核心为Linux内核驱动、ARM体系结构、ARM汇编,网络数据传输、QT图形界面、mplayer移植、触摸屏驱动、LCD驱动、音频驱动、网卡驱动、Watch Dog(看门狗)驱动及相应的DMA驱动。除了mplayer解码器部分外,其它所有应用程序和驱动程序全部由我们从零编写,而不是简单的“移植驱动程序”, 并且几乎含盖了嵌入式软件中的各个方面。可以从根本上学习整个嵌入式产品从硬件选型、Bootloader开发、电路设计、操作系统移植、驱动开发、应用开发、网络传输的各个细节,并能锻炼项目领导和团队合作能力。
项目优势:
监控设备方面的公司一般应用嵌入式对多个监控区域进行实时监测、录像。而一般的公司基于成本考虑,都要自行设计硬件,主流用ARM.所以上面就会涉及到触摸屏驱动、LCD驱动、音频驱动、网卡驱动、Watch Dog(看门狗)驱动及相应的DMA驱动的编写, 另外还会涉及到应用部分图象的显示等。也就是说,在上述项目稍作变更就成为一个GPS设备、智能手机、MPM播放器。
xiaohengsang2018-03-02 11:28:35
2018年如何成为高薪嵌入式工程师?看完这些智能开发实践项目视频,怎能不高薪?:http://www.hqyj.com/shixun/?szt-chinaunix
xiaohengsang2018-03-02 11:28:29
2018年如何成为高薪嵌入式工程师?看完这些智能开发实践项目视频,怎能不高薪?:http://www.hqyj.com/shixun/?szt-chinaunix