你的位置: 首页 > 公开课首页 > 语言 > 课程详情
课程介绍 评价详情(0)
本课程名称: 嵌入式Linux高级开发
查看更多:语言公开课
我要找内训供应商
授课内容与课纲相符0低0%
讲师授课水平0低0%
服务态度0低0%
课程介绍 评价详情(0)
培训受众:
课程收益:
• 深入理Linux系统的结构
• 具有嵌入式Linux的开发调试能力
• 理解Linux用户空间开发的核心
• 对不同体系结构内核移植具有一定理解
• 了解Linux系统驱动程序结构,学习重点实用驱动
结合硬件和OS的知识,学会在Linux系统增加硬件的软件支持
培训颁发证书:
课程大纲
课程 详细内容 备注
A1
嵌入式Linux开发基础
1 Linux开发环境概述
2 串口工具的使用
3 TFTP、NFS、SAMBA 特点:通用知识
重点内容:调试手段,主机-目标机关系,嵌入式Linux开发的习惯性方法
A2
嵌入式Linux开发工具
(含调试手段)
1 程序生成工具
• ARM的GCC工具
• 示例工程
• GCC的各种工具 特点:C语言编程的核心方法和理念
重点内容:主要编译宏、程序、库的结构组织、编程中问题的解决、编译和链接工具、预处理和汇编、归档工具和静态库、各种信息工具和反汇编
2 Make机制
• Make工具和Makefile
• 依赖关系实例
• 隐含规则和指定依赖的实例
• 自动生成Makefile 特点:程序生成的内容
重点内容:目标的组织、头文件的处理、伪目标的处理、依赖关系和时间戳的组织、automake原理
*某些开源软件包的组织习惯
3 GDB调试工具
• Linux中的主要调试工具
• 嵌入式系统的调试技术
• GDB调试和远程调试
• 构建嵌入式系统的GDB 特点:编译辅助内容
重点内容:各种GDB的命令、被调试程序和原始程序的关系、调试对程序运行的影响、已运行程序的调试、远程GDB调试示例
B1
Linux操作系统
1 Linux操作系统
• Linux操作系统介绍
• Linux系统的组成和构建流程
• Linux的启动流程 特点:嵌入式非嵌入式通用
重点内容:文件与进程、Linux文件的权限矩阵、
进程运行时属性、Proc文件系统运行时调试、
B2
BootLoader
2 BootLoader的构建
• BootLoader的结构和作用
• U-Boot的实现和源代码结构
• U-Boot的构建移植、扩展
X 具体三星硬件平台的U-Boot 特点:早期调试,硬件相关
重点内容:BootLoader对内核启动后的影响、前内核阶段Uboot辅助开发,内核参数传递、不同系统的u-boot改动和使用、Uboot增加命令
*现代处理器启动特点和引导
B3 Linux 内核
(需要D1-D4部分的基础)
3 Linux内核的构建
• Linux内核的基本原理
• Linux内核各部分的文件结构
• Linux内核的启动过程
• Linux内核的构建方法
X 具体三星硬件平台的内核 特点:嵌入式系统为主
重点内容:内核的Task、IPC、MM、VFS、NET模块、内核配置要点、Linux内核硬件相关与无关部分、ARM-Linux的压缩启动和非压缩启动流程、
二进制内核组成结构和调试方法、处理器级和板级差别、硬件平台硬件与软件的关系
B4
文件系统
4 Linux中的文件系统介绍
• VFS和实际的文件系统
• 嵌入式Linux的各种文件系统
• 根文件系统的结构和配置 特点:内核空间和用户空间的交接
重点内容:文件系统的组织和调试、Linux文件系统的架构、根文件系统功能、具体文件系统和硬件的关系、Yaffs文件系统、根文件系统启动参数
C1
用户空间程序
(需要A部分为基础)
1 用户空间程序
• 操作系统和整个系统
• 嵌入式Linux的C库
• Shell工具busybox 特点:用户空间的核心内容
重点内容:嵌入式和非嵌入式的差别、嵌入式C库的特点、嵌入式Linux C编程的特点和参考
C2
用户空间编程和中间件
2 用户空间程序的编程
• 文件的相关内容
• 进程和信号相关的内容
• pthread线程相关
• dlopen机制 特点:各部分内容并列、
重点内容:Linux用户空间编程的纲要和注意点、各种文件操作、System V IPC与Posix IPC、Posix多线程编程(等待、互斥、条件量)、动态打开机制与软件架构的组织、
C3
用户空间中间件
3 用户空间中间件
• 基于Socket的编程
• Linux的GUI系统
• 嵌入式数据库 特点:各部分为并列关系
重点内容:网络Socket编程、Unix Socket的典型IPC、通过典型图形系统了解程序架构、通过SQLite数据库了解开源的库
D1
驱动基础
1 Linux驱动程序基础
• 操作系统移植的概念
• Linux中驱动程序接口 特点:驱动部分的非编程内容
重点内容:通过命令行获取驱动和硬件信息、设备节点、sys文件系统查看硬件联系
D2
内核基础
(细节体现在D4-D9) 2 内核编程的基础
• Linux内核编程的方法
• 内核模块的编写 特点:另一种环境的内核C语言编程的语法
重点内容:内核C编程的主要API、内核-驱动程序调试方法、内核模块的结构
D3
Linux驱动编程技术
(实现内容在D4-D9)
3 Linux驱动编程技术
• Linux内核空间和用户空间的接口
• 实现框架技术:字符设备
• 实现框架技术:块设备
• 实现框架技术:网络设备
• 实现框架技术:使用proc文件系统
• 实现框架技术:使用sys文件系统
• 辅助:平台设备和平台驱动
• 编程技术:中断的使用
• 编程技术:内核定时器的使用
• 编程技术:竞态处理
• 编程技术:阻塞操作
• 编程技术:驱动的异步操作 特点:驱动的通用思想
主要内容:
设备文件和Socket的各种操作、各种驱动的架构
网络设备和net系统、网络协议和以太网的关系
中断上下半部的协调、软中断
tasklet、定时器的用途和实例
自旋锁和信号量的编程、用途和实例
等待队列、中断和等待队列的结合使用
硬件异步机制在驱动软件的体现
将阻塞传递到用户空间的方法
D4
典型的通用驱动
几个典型的通用驱动
• TTY驱动程序框架
• 内存设备驱动程序
• 回环块设备驱动程序
• 回环网络设备驱动 特点:基本驱动程序的组织
重点内容:
字符设备和块设备的设备号分配
Ioctl命令号在用户空间的使用
D4
驱动框架和相应驱动
1 Linux系统驱动程序组织规则
• Misc驱动程序框架
• 帧缓冲驱动程序框架
• 输入事件驱动程序框架
• GPIO驱动框架
• TTY驱动程序框架
X 三星平台的各个驱动程序 特点:通用架构与具体硬件
重点内容:
通过MISC了解驱动架构
通过FB驱动熟悉输出型驱动
通过Event熟悉输入型驱动
通过TTY了解驱动与内核接口
通过GPIO驱动了解输入输出系统
*驱动与电源管理
根据含DateSheet和平台框图开发驱动
D7 MTD系统和驱动
MTD系统和驱动
• Linux的MTD概述
• MTD的核心部分
• MTD的设备层
• CFI硬件实现层
• Nand Flash的硬件实现层 重点内容:
MTD结构和原始设备的接口
MTD字符设备和块设备
几种CFI MTD原始设备的实现
nand_chip移植层
Nand Flash实现(GPIO实现和处理器实现)
D8 USB系统
USB系统
• USB概述
• USB主机端:软件结构
• USB主机端:核心部分
• USB主机端:驱动的实现
• USB主机端:HCI的实现
• USB设备端:软件结构
• USB设备端:Gadget的核心部分
• USB设备端:Gadget驱动
• USB设备端:UDC驱动的实现 重点内容:
USB主机端三层结构(HCI、核心、驱动)
主机端核心usb_device、usb_driver和urb
USB Driver与USB规范关系
骨架实现驱动、大容量存储器驱动、串口驱动
Gadget的核心与End Point
Gadget驱动与内核其他模块的联系
Gadget驱动的组合
零实现、大容量存储器、Audio的Gadget
D9 总线型驱动
SPI总线和驱动
• SPI总线驱动的框架
• 简单字符设备spidev
• SPI从设备的驱动
I2C总线和驱动
• I2C的具体设备驱动
• I2C驱动和具体功能的结合
• I2C总线驱动的框架
• I2C从设备的驱动 重点内容:
总线型驱动的原理和嵌入式系统联系
SPI设备的概念
GPIO实现的SPI主控制器
S3C64xx的SPI主控制器
通过I2C总线设备操作从设备
I2C从设备的独立驱动
I2C总线和算法
S3C系列处理器的I2C主控制器
培训师介绍
本课程名称: 嵌入式Linux高级开发
查看更多:语言公开课