有一定工作经验的嵌入式Linux开发工程师。对嵌入式Linux开发有兴趣的开发人员。
| 课程编号 | 开课日期 | 地点 | 培训天数 | 选择报名 |
有一定工作经验的嵌入式Linux开发工程师。对嵌入式Linux开发有兴趣的开发人员。
时间地点: 上海 2012年10月28-29日
课程费用: 4000元/人
培训对象: 有一定工作经验的嵌入式Linux开发工程师。对嵌入式Linux开发有兴趣的开发人员。
学员基础: 具备一定的C/C++开发经验。
课程背景
课程内容全程以案例展开,设计案例约20个,以实际案例展开剖析驱动编程注意事项,分层和分离的设计思想,官方内核对驱动的设计规范;内核中较新的中断底半部机制threaded_irq,较新的连续内存分配器(CMA)也将以实例展开;关于Linux的移植,讲师作为官方Linux内核的维护者,将现身说法讲明新的SoC支持Linux的全过程,以及官方内核对Linux的设计规范要求,社区维护者的思维方式;实际运行Linux各种调试工具,以电路板捕获的真实数据剖析smem、oprofile、LTTng的作用。
培训目标:
使培训人员基本掌握Unix和Linux平台使用以及程序开发。包括:
Linux和Unix系统基础知识及操作;
Linux和Unix系统软件开发;
跨平台软件开发
授课方式: 定制课程 + 案例讲解 + 小组讨论,60%案例讲解,40%实践演练
课程特点:1、理论与实践相结合,解决你的实际问题。2、真实案例的剖析,深入浅出的讲解,使你能学以致用。
培训内容:2天
进入嵌入式Linux的精彩世界 Linux的特点、版本演进与发展方向
嵌入式Linux系统组成
开发环境构建
安装设置ARM工具链
安装设置NFS、SSH、TFTP服务
GNU工具链和GDB调试
嵌入式Linux构建与启动过程分析 文件系统组成
Busybox编译与配置
加入C库
Linux启动过程
Bootloader
内核启动过程
用户空间init
嵌入式Linux裁剪
内核Kconfig和Makefile
内核源代码目录
内核裁剪
文件系统裁剪
Linux内核进程调度 task_struct
进程调度算法
进程调度时机
实时性
Linux内核内存管理 mm_struct, vma
buddy系统
slab、kmalloc
DMA、NORMAL、HIGHMEM ZONE
静态内存映射
连续内存管理,CMA
Linux内核文件系统 虚拟文件系统
inode、dentry、superblock
文件系统与block层
Flash文件系统
Linux 内核系统调用 Linux系统调用实现原理
Linux系统调用实现
增加一个新的系统调用
内核编程主要API 同步与并发
等待队列
内核延时
内存申请和释放
定时器
中断顶底半部
软中断
tasklet
工作队列
threaded_irq
Linux内核线程
IO与内存访问
DMA与cache一致性
Linux内核模块 内核模块init和exit
输入参数
输出参数
案例部分:4个试验案例演示模块各个功能
Linux内核调试方法 printk
Oops和panic
内核debug选项
gdb、kgdb和kdb
使用仿真器
Linux设备驱动模型 Linux设备分类
Sys,总线,设备和驱动
热插拔
电源管理
udev
Linux字符设备驱动结构 Linux字符设备驱动结构
globalmem虚拟设备实例描述
globalmem设备驱动
globalmem驱动的编译与加载
globalmem驱动在用户空间的验证
Linux设备驱动中的并发控制 并发控制的概念
何时需要并发控制
自旋锁
信号量,mutex
增加并发控制后的globalmem驱动
Linux设备驱动中的阻塞与非阻塞I/O 阻塞与非阻塞I/O
poll操作的概念
何时需要poll操作
等待队列waitqueues
Linux poll操作相关数据结构与函数
支持poll操作的globalmem驱动
Linux 设备驱动中的异步通知 异步通知的概念
何时需要异步通知
Linux异步通知相关数据结构与函数
支持异步通知的globalmem驱动
在globalmem驱动中增加异步通知
在用户空间验证globalmem的异步通知
Linux MTD子系统与FLASH驱动 Linux MTD子系统结构
NOR FLASH驱动
NAND FLASH驱动
FLASH文件系统:JFFS2/YAFFS2/UBI
Linux 网络设备驱动 Linux网络协议栈
sk_buff
Linux网络设备驱动结构
数据发送流程
数据接收流程
设备驱动的分层 设备驱动分层框架
实例1:input子系统
实例2:LCD子系统
I2C驱动 I2C主机驱动
I2C client驱动
I2C驱动电源管理
I2C板文件信息
SPI驱动 SPI主机驱动
SPI client驱动
SPI驱动电源管理
SPI板文件信息
platform设备驱动 platform驱动
platform设备
platform设备板级信息
将Linux移植到一个新的ARM SoC early_printk
L2 cache
OS timer
clk tree
GPIO
pinmux
IRQ chip
DMA
MACH_INIT
device tree
社区维护
Linux调试与性能优化 strace
core dump
gdb与多线程
常用工具(top/vmstat/iostat/sysctl等)
性能优化: oprofile, LTTng, gprof
开机速度: bootchart
功耗:powertop
延迟:latencytop
内存分析: procmem、procrank、smem
top, iostat, netstat等