风云再起嵌入式linux学习之路.docx
- 文档编号:8248351
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:19
- 大小:23.63KB
风云再起嵌入式linux学习之路.docx
《风云再起嵌入式linux学习之路.docx》由会员分享,可在线阅读,更多相关《风云再起嵌入式linux学习之路.docx(19页珍藏版)》请在冰豆网上搜索。
风云再起嵌入式linux学习之路
曾几何时,您是否还迷失在嵌入式学习的路途之上?
曾几何时,您是否还不清楚该如何去规划自己的嵌入式学习生涯?
曾几何时,您是否满怀着对未来的憧憬,但却不知道从何做起?
请看看下面的资料吧!
嵌入式学习之路
第一阶段嵌入式linux应用开发
课程大纲
1嵌入式Linux开发环境搭建
目标:
通过今天课程的学习,学员能掌握嵌入式Linux的开发流程,掌握诸如tftp、nfs等Linux下服务器的配置方法,为嵌入式Linux的高效开发做铺垫。
1.1嵌入式LINUX简介与发展
1.2LINUX快速入门
1.3建立嵌入式LINUX开发环境
1.4熟悉嵌入式开发平台
1.5嵌入式LINUX开发工具
1.6LINUX下的调试技巧
1.7MAKE工程管理器
1.8交叉编译
【实验】
1、学习LINUX系统命令
2、配置TFTP服务
3、配置NFS服务
4、建立嵌入式开发环境
5、下载内核到嵌入式平台
6、下载根文件系统
7、编写并下载应用程序到嵌入式平台
2嵌入式LINUX进程及进程间通讯开发
目标:
通过今天课程的学习,学员将了解到Linux系统中的进程的概念,从内核的角度了解进程的原理和实现。
同时会掌握Linux下守护进程的编写方法,了解Linux下几种进程间通讯的方法,并具备编写进程间通讯编程的能力。
2.1进程的属性和状态
2.2进程的控制和调度
2.3进程的创建、执行、消亡
2.4进程的相关系统调用
2.5守护进程
2.6进程间通信基本概念
2.7管道(PIPE)
2.8信号(SIGNAL)
2.9内存映射(MAPPEDMEMORY)
2.10消息队列(MESSAGEQUEUE)
2.11信号量(SEMAPHORE)
2.12共享内存(SHAREMEMORY)
【实验】
1、使用PS命令查看进程信息
2、使用PROC文件系统查看进程信息
3、使用SYSTEM()系统调用运行和等待
4、EXIT和EXEC系统调用实例
5、编写一个守护进程
6、编写基于串口通信的多进程程序
3嵌入式Linux下的网络开发
目标:
通过今天课程的学习,学员能了解网络的基础知识,了解Linux下的网络结构和套接字编程,具备Linux下网络程序设计的能力。
3.1ISO/OSI七层协议模型与IP网络四层模式
3.2TCP/IP协议簇
3.3基于嵌入式LINUX的TCP/IP网络结构
3.4基于嵌入式LINUX的SOCKET编程
3.5UDP与TCP的区别
3.6UDPSERVER-CLIENT关系程
【实验】
1、SOCKET套接字编程
2、分析并加强PING程序
3、TFTP服务器设计
4嵌入式GUI与数据库开发
目标:
通过今天课程的学习,学员能够了解嵌入式Linux下的几种常见GUI及其特点,重点能掌握QT的有关内容,具备QT程序设计能力。
了解嵌入式数据库的配置与开发。
4.1嵌入式LINUXGUI介绍及QT/MINIGUI之间比较
4.2QT介绍及其信号插槽机制
4.3QT图形界面编程技术
4.4QVFB虚拟帧缓存的建立和模拟开发调试
4.5QT程序移植技术
4.6QT在实际项目中具体应用
4.7嵌入式数据库的概念
4.8嵌入式数据库的移植与编程
【实验】
1、基于QT实现HELLOWORLD对话框程序
2、建立主机虚拟帧缓存实验
3、基于QT图形界面的温度计的实现
5综合项目实践“基于QT的网络通信系统”
目标:
经过前几天的学习,学员基本上掌握了嵌入式linux常用的应用编程方法,今天通过一个综合项目案例巩固、加深前面的知识,并使学员了解嵌入式Linux项目开发流程。
5.1项目实现的功能
5.1.1QT界面设计
5.1.2网络消息传输功能
5.1.3网络文件传输功能
5.1.4系统管理功能
5.2项目涉及到的技术
5.2.1项目流程及项目管理方法
5.2.2QT界面开发
5.2.3QT多线程
5.2.4QT网络编程
5.2.5Linux文件操作
5.2.6Qt移植(软件移植到S3C2440开发平台)
5.2.7程序优化、测试(包括:
内存泄漏、系统调用跟踪、函数执行时间及频率检测、coredump处理等)
第二阶段嵌入式linux系统开发
课程大纲
1嵌入式Linux开发环境构建
目标:
通过今天课程的学习,学员能掌握嵌入式Linux交叉开发环境的搭建、交叉编译工具链的使用、交叉编译工具链制作的原理、及学会通过crosstool制作自己的交叉工具链。
1.1交叉开发环境介绍
1.2编译交叉开发工具链
1.3配置主机开发环境
1.4建立交叉开发环境
1.5编译器和二进制工具详解
1.6交叉调试应用程序
【实验】
(1)安装开发工具和文件
(2)配置超级终端/minicom
(3)配置TFTP网络服务
(4)配置NFS网络服务
(5)引导目标板启动Linux内核
(6)制作crosstool交叉工具链
(7)交叉调试应用程序
2开发系统引导程序
目标:
理解嵌入式linux引导程序的原理,掌握如何在FS2410硬件平台上移植u-boot。
2.1Bootloader介绍
2.2u-boot工程介绍
2.3u-boot的编译使用
2.4u-boot源码分析
2.5u-boot资源分配
2.6u-boot移植过程
【实验】
(1)u-boot常用命令
(2)添加u-boot新命令
(3)设置u-boot环境变量
(4)配置编译u-boot
(5)移植FS2410的u-boot-1.3.4
●支持网卡、串口功能
●支持从nor、nandflash启动
●支持nor、nandflash烧写
●支持yaffs2、jffs2文件系统烧写
●支持u盘文件读取
3配置编译Linux内核
目标:
熟悉内核的原码结构和kbuildMakefile语法;掌握和内核、驱动模块编译相关的原理及方法。
3.1Linux内核介绍
3.2Linux内核特点
3.3Linux内核源代码结构
3.4Linux内核选项解析
3.5Linux内核编译链接
3.6内核模块编译、使用方法
【实验】
(1)配置交叉开发环境
(2)熟悉菜单配置文件的组织结构
(3)熟悉内核配置过程选项
(4)加入Kconfig新选项
(5)编译交叉开发环境所需要的内核
(6)在内核中加入自己的字符设备程序
4移植Linux内核源码
目标:
通过今天课程的学习,学员能够熟悉内核启动流程、掌握内核移植的一般方法、分析平台相关代码结构,并能够自己动手移植高版本内核支持FS2410开发板。
4.1Linux内核移植介绍
4.2Linux内核移植平台相关代码分析
4.3动手修改Linux内核源代码
4.4分析编译过程错误和宏定义的关系
4.5Linux启动过程源代码分析
4.62.6内核平台设备结构介绍
【实验】
(1)配置编译高版本的Linux内核
(2)移植高版本(linux-2.6.26)内核支持FS2410板
●网卡驱动移植
●mtd支持及flash分区方法
●yaffs2文件系统移植
●sd卡驱动
●液晶支持
●u盘功能
(3)分析解决编译过程中的错误
5集成部署Linux系统
目标:
理解嵌入式linux引导程序的原理,掌握如何在FS2410硬件平台上移植u-boot。
5.1Linux文件系统制作
5.2Linux系统集成测试
5.3文件系统和存储设备的选择
5.4部署Ramdisk文件系统的过程
5.5部署JFFS2文件系统的过程
5.6部署Yaffs2文件系统的过程
【实验】
(1)制作最小的文件系统
(2)添加udev支持
(3)部署ramdisk文件系统
(4)部署cramfs文件系统
(5)部署jffs2文件系统
(6)部署yaffs2文件系统
(7)配置u-boot使系统独立运行
6调试Linux内核及优化linux内核
目标:
掌握内核调试的常用方法、内核优化的方法策略。
6.1Linux内核调试概述
6.2Linux内核的打印函数
6.3Linux内核启动过程错误分析
6.4解析oops信息
6.5常用调试方法和工具
6.6基本的驱动程序分析
6.7系统启动时间优化
6.8电源管理方法
●动态、静态功耗介绍
●嵌入式处理器对电源管理的支持
●嵌入式linux电源管理结构
●用户层电源管理策略
●设备驱动层电源管理策略
【实验】
(1)通过基本调试手段解决内核启动过程错误
(2)分析、处理oops错误
(3)优化系统,加快系统启动速度
(4)优化系统,降低系统功耗
第三阶段嵌入式linux驱动开发
课程大纲
通过本课学习,学员可以从用户设备I/O编程角度深入了解设备驱动的原理;通过了解字符设备驱动框架和具体硬件设备I/O操作,能够进行字符设备驱动开发;了解linux2.6内核的设备模型及掌握udev的使用。
1.LINUX字符设备驱动程序开发
1.1LINUX字符设备驱动基础
1.2字符设备驱动程序实现框架与典型驱动分析
1.3用户空间与内核空间的数据传输
1.4同步、互斥、阻塞、睡眠机制
1.5Linux-2.6设备模型与sysfs文件系统
1.6udev与devfs文件系统
【实验】
1、驱动开发编程环境与内核配置、编译
2、编写模块化字符设备驱动程序与测试
3、如何为内核程序传递参数
4、在驱动代码中加入创建proc结点方法
5、蜂鸣器驱动程序编写与测试
6、编写驱动实现包含等待队列、信号量、fifo等功能
7、学会利用udev和sysfs文件系统动态创建设备结点
通过本课学习,学员可以掌握在基本字符设备驱动的基础上增加复杂的内核机制;了解1inux内核中断子系统的实现原理,掌握linux中断处理程序编写方法;掌握内核延时机制及内存管理机制。
2.设备驱动中常用的内核机制
2.1Poll和select操作
2.2异步通知机制
2.31inux内核中断子系统
2.4中断处理程序编写
2.5驱动程序上/下半部处理与延缓执行机制
2.6内核定时器与延迟机制
2.7内核内存管理机制
【实验】
1、编写驱动实现包含等待队列、信号量、fifo等功能
2、编写驱动实现包含poll功能
3、编写驱动实现包含异步通知功能
4、编写秒表字符设备,掌握定时器用法
5、编写驱动实现tasklet功能
6、编写驱动实现工作队列功能
7、按键中断实验
8、A/D转换实验
通过本课学习,学员可以明白Linux中块设备驱动的特点及框架,独立分析Linux中大部分块设备的驱动方法,并熟悉MTD设备驱动的特点与框架,具备MTDNandFlash驱动程序开发的能力。
通过实验,学员还可以掌握IDE、Ramdisk驱动移植方法。
3.LINUX块设备驱动程序开发
3.1块设备及其驱动的特点
3.2块设备驱动程序中两个关键结构体GEN_DISK与REQUEST
3.3块设备驱动程序的注册与请求处理
3.4MTD设备的特点以及与块设备的关系
3.5MTD设备驱动的框架及关键结构体分析
3.6S3C2410(S3C2440)中的NANDFLASH控制器分析
3.7S3C2410(S3C2440)NANDFLASHMTD驱动分析
【实验】
1、编写简单的块设备驱动程序
2、实现RAMDISK驱动
3、IDE硬盘的驱动移植
4、移植S3C2410闪存控制器驱动
5、配置MTD内核选项
6、移植嵌入式文件系统
网络设备是嵌入式产品开发,特别是基于网络的产品开发中最重要的内容之一。
通过本课学习,学员可以深入理解Linux网络驱动程序中有关套接字(socket)、套接字缓冲区(sk_buff)等概念,了解网络驱动程序的数据交换过程。
通过实际的动手操作,学员将掌握如何移植或编写具体网卡的驱动程序,并在此基础上实现更为高级的网络功能。
了解MMC/SD卡的物理及电气特性,熟悉相关的工作协议,并在此基础上能够移植或编写Linux下的MMC/SD控制器的驱动程序。
4.LINUX网络设备驱动程序开发
4.1OSI网络参考模型
4.2套接字(SOCKET)简介
4.3套接字缓冲区(SK_BUFF)
4.4NET_DEVICE结构分析
4.5数据包传送与接收
4.6网络驱动的中断处理
4.7网络设备驱动程序的基本实现
5.LINUX下MMC/SD卡驱动开发
5.1嵌入式系统中几种常见存储介质的比较(NOR/NANDFLASH、CF、MMC/SD)
5.2MMC/SD卡物理及电气规范简介
5.3MMC/SD卡工作中的关键命令及关键结构信息
5.4S3C2410(S3C2440)中MMC/SDHOST控制器分析
5.5LINUX中MMC/SD存储卡驱动程序结构分析
5.6S3C2410(S3C2440)中MMC/SDHOST控制器的驱动实现
【实验】
1、编写简单的虚拟以太网卡驱动程序
2、移植并编写CS8900A网卡驱动程序
3、移植并编写DM9000网卡驱动程序
4、配置网络参数,测试网卡驱动程序行为
5、MMC/SD协议分析
6、在LINUX源码中加入针对ARM平台的MMC/SD主控制器驱动的支持
通过本课学习,学员可掌握嵌入式Linux显示驱动程序的开发方法,理解嵌入式Linux图形驱动程序实现机制,能够移植或编写嵌入式显示控制器驱动程序,并完成针对各种LCD硬件的定制。
6.LINUX帧缓冲驱动程序开发
6.1帧缓冲显示技术
6.2帧缓冲驱动程序显示原理
6.3帧缓冲驱动程序的数据结构
6.4帧缓冲驱动程序的API
6.5帧缓冲驱动程序的基本实现
6.6使用高级图形库
7.触摸屏驱动开发
7.1触摸屏工作原理
7.2S3C2410触摸屏控制器工作原理
7.3触摸屏驱动程序编写
【实验】
1、熟悉FRAMEBUFFER驱动的结构
2、熟悉FRAMEBUFFER中的重要数据结构
3、编写S3C2410彩色LCD控制器驱动程序
4、编写测试程序控制屏幕显示
5、编译高级图形库例子,显示图形
6、熟悉触屏驱动程序
7、写触屏测试代码
掌握USB通讯规范及拓扑结构中的主机控制器、HUB、USB设备的工作流程;掌握S3C2410USBdevice控制器的工作原理;最后在S3C2410开发板上编写usbtransfer固件程序,结合PC机上windows环境下的DNW软件,实现基于usb的文件下载功能。
通过Linux下USB驱动开发内容的学习,学员将深入理解Linux内核USB子系统,掌握USB驱动程序编写技术。
经过学习后的学员能够移植或编写USB主机OHCI和设备驱动程序,最后通过对usbtransfer设备的驱动编程,实现在linux环境下的文件下载功能(替换DNW的下载功能)。
8.LINUX下USB驱动开发基础
8.1USB规范介绍
8.2USB主机控制器
8.3USBHUB
8.4USB设备状态
8.5USB描述符
8.6USB请求
8.7USB通讯数据格式
8.8S3C2410USBdevice控制器
8.9编写usbtransfer固件程序
9.LINUX下USB驱动高级开发
9.1LinuxUSB驱动层次
9.2LinuxUSB主机控制器驱动介绍
9.3LinuxUSBHUB驱动介绍
9.4LinuxUSB设备驱动程序
9.5编写usbtransfer设备驱动程序
9.6编写usbtransfer设备应用程序
【实验】
1、在开发板上烧写并测试USB固件程序
2、usbtransfer固件程序分析与编写
3、使用usbview工具观察USB设备
4、使用sysfs分析USB层次结构
5、LINUX下编写usbtransfer设备驱动实现USB下载
嵌入式系统工程师应该学习哪些东西?
1、Linux基础
安装Linux操作系统
Linux文件系统
Linux常用命令
Linux启动过程详解
熟悉Linux服务能够独立安装Linux操作系统
能够熟练使用Linux系统的基本命令
认识Linux系统的常用服务
Linux基本命令实践
设置Linux环境变量
定制Linux的服务Shell编程基础使用vi编辑文件
使用Emacs编辑文件
使用其他编辑器
2、Shell编程基础
Shell简介
认识后台程序
Bash编程
熟悉Linux系统下的编辑环境
熟悉Linux下的各种Shell
熟练进行shell编程熟悉vi基本操作
熟悉Emacs的基本操作
比较不同shell的区别
编写一个测试服务器是否连通的shell脚本程序
编写一个查看进程是否存在的shell脚本程序
编写一个带有循环语句的shell脚本程序
3、Linux下的C编程基础
linuxC语言环境概述
Gcc使用方法
Gdb调试技术
Autoconf
Automake
Makefile
代码优化
熟悉Linux系统下的开发环境
熟悉Gcc编译器
熟悉Makefile规则,编写Hello,World程序
使用make命令编译程序
编写带有一个循环的程序
调试一个有问题的程序
4、嵌入式系统开发基础
嵌入式系统概述
交叉编译
配置TFTP服务
配置NFS服务
下载Bootloader和内核
嵌入式Linux应用软件开发流程
熟悉嵌入式系统概念以及开发流程
建立嵌入式系统开发环境制作cross_gcc工具链
编译并下载U-boot
编译并下载Linux内核
编译并下载Linux应用程序
5、嵌入式系统移植
Linux内核代码
平台相关代码分析
ARM平台介绍
平台移植的关键技术
移植Linux内核到ARM平台
了解移植的概念
能够移植Linux内核移植Linux2.6内核到ARM9开发板
6、嵌入式Linux下串口通信
串行I/O的基本概念
嵌入式Linux应用软件开发流程
Linux系统的文件和设备
与文件相关的系统调用
配置超级终端和MiniCOM
能够熟悉进行串口通信
熟悉文件I/O
编写串口通信程序
编写多串口通信程序
7、嵌入式系统中多进程程序设计
Linux系统进程概述
嵌入式系统的进程特点
进程操作
守护进程
相关的系统调用
了解Linux系统中进程的概念
能够编写多进程程序
能够编写一个守护进程程序
sleep系统调用任务管理、同步与通信
Linux任务概述
任务调度
管道
信号
共享内存
任务管理API
了解Linux系统任务管理机制
熟悉进程间通信的几种方式
熟悉嵌入式Linux中的任务间同步与通信
编写一个简单的管道程序实现文件传输
编写一个使用共享内存的程序
8、嵌入式系统中多线程程序设计
线程的基础知识
多线程编程方法
线程应用中的同步问题
了解线程的概念
能够编写简单的多线程程序
9、嵌入式Linux网络编程
网络基础知识
嵌入
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 风云 再起 嵌入式 linux 学习