嵌入式Linux实践教程

嵌入式Linux实践教程"

作者:罗怡桂
ISBN:9787302272953
定价:¥26
字数:千字
页数:
出版时间:2011.06.01
开本:
版次:1-1
装帧:
出版社:清华大学出版社
简介

本书按“理论联系实践、分阶段循序渐进”的思想将内容分成了5个部分,共11章。第1部分是入门部分,分为2章,主要讲嵌入式系统、嵌入式Linux的发展、简单的实践。第2部分是开发环境的建立,分3章,主要讲U-Boot的建立、交叉编译工具的建立、调试环境

的建立。第3部分是内核的定制,这一部分主要包括进程调度与内存管理2章,其目的为: 一是学习Linux的内核技术,了解内核中的结构、函数,为后一部分嵌入式Linux驱动、应用程序的优化打基础; 二是学习嵌入式Linux内核的定制技术,为今后高端嵌入式Linux设计与应用作准备。第4部分是嵌入式Linux驱动程序的开发,包括驱动的基本技术、USB驱动的开发与CAN总线驱动的开发。第5部分以宇嵌千里眼中的应用程序为例讲嵌入式Linux应用程序的开发。在这5个部分中融合了嵌入式Linux的系统技术。本书的实践配套同济大学嵌入式系统创新实验平台及其操作手册,读者可以边做边学。

前言

诚如Linux的创始人Linus Torvalds 所言: “我对嵌入式市场感兴趣,因为那里会有些别处找不到的特殊用途”。Linux操作系统因为其性能良好、开放、稳定、日益进步的特点与嵌入式系统可定制的要求“一拍即合”。嵌入式Linux被广泛用于各种嵌入式设备中。

然而嵌入式Linux系统的学习是复杂的。其复杂性在于它涉及的知识面宽、理论性和实践性强。在本书中,试图将嵌入式Linux的学习分阶段进行,侧重于理论与实践的结合,强调动手实践。本书将嵌入式Linux的学习分为入门阶段、模块知识学习阶段、系统知识学习阶段与创新开发阶段。

本书的内容安排也体现了上述思想。第1部分是入门部分,分为2章,主要讲嵌入式系统、嵌入式Linux的发展、简单的实践。第2部分是开发环境的建立,分3章,主要讲U-Boot的建立、交叉编译工具的建立、调试环境的建立。第3部分是内核的定制,这一部分主要包括进程调度与内存管理两章。将这一部分安排到这里有两个目的: 一是学习Linux的内核技术,了解内核中的结构、函数,为后一部分学习嵌入式Linux驱动、应用程序的优化打基础; 二是学习嵌入式Linux内核的定制技术,为今后学习高端嵌入式Linux设计与应用做准备。第4部分是嵌入式Linux驱动程序的开发,包括驱动的基本技术、USB驱动的开发与CAN总线驱动的开发。第5部分以“宇嵌千里眼”中的应用程序为例讲嵌入式Linux应用程序的开发。本书目前没有将系统技术单独列出作为一部分,而是将系统技术融合在各章节中,尤其是内核定制、驱动开发与应用程序设计中。本书的实践作业与同济大学嵌入式系统创新实验平台及其操作手册相配套。同时,嵌入式系统创新实验平台及手册支持读者进行创新实践开发。

本书的撰写得到上海宇嵌电子科技有限公司的大力支持: 提供了宇嵌千里眼报警系统案例,授权使用部分相关代码,并对同济大学嵌入式系统创新实验平台及操作实践手册提供了配套服务(http://www.skyenest.com/tongji_platform.html)。

本书在编写过程中得到同济大学“十一五”教材编写资金的支持,并得到清华大学出版社、同济大学软件学院领导及同事的支持。

在本书的编写过程中,范茂志参与了第3章与第10章的部分编写工作,林秀参与了本书的部分编辑工作。

值此本书付梓之际,谨对上述支持者表示衷心感谢。

作为一本教材或者技术类参考书,本书面向的对象为嵌入式Linux系统的学习者、工程师。本书以及配套的创新实验平台、实践操作手册构成一个学习与实践的完整体系。如果这一体系的设计能为读者朋友提供一些帮助,我将甚感欣慰。

非常欢迎读者朋友及同行提出各种意见、建议,在此先致以诚挚谢意!

罗怡桂电子邮箱: yigui.luo@gmail.com2011年4月于上海嘉定汽车城

目录

第1部分嵌入式Linux入门

第1章嵌入式Linux简介

1.1嵌入式系统

1.1.1什么是嵌入式系统

1.1.2嵌入式系统的需求特点

1.2嵌入式Linux

1.2.1Linux与嵌入式Linux

1.2.2嵌入式Linux的现状

小结

实践作业1

推荐阅读1

第2章嵌入式Linux系统的开发过程及简单实践

2.1嵌入式Linux的开发环境

2.2嵌入式Linux系统的开发过程

2.3嵌入式教学创新实验平台简介

2.4实践1

2.5实践2

2.5.1内核编译与下载

2.5.2根文件系统的制作与下载

小结

实践作业2

推荐阅读2

第2部分开发环境的建立

第3章交叉编译环境的建立

3.1什么是交叉编译环境

3.2GCC交叉编译工具链

3.3重建交叉编译器

3.3.1建立工作

3.3.2建立环境变量

3.3.3安装Linux的头文件

3.3.4编译安装Binutils

3.3.5编译安装Gcc的C编译器

3.3.6编译安装库Glibc

3.3.7编译安装Gcc的C、C++编译器

3.3.8测试交叉编译工具链

小结

实践作业3

推荐阅读3

第4章U-Boot

4.1U-Boot项目简介

4.2U-Boot结构

4.3U-Boot的版本选择

4.4编译U-Boot

4.5修改内存配置

4.6配置Flash

4.7驱动E28F128

4.8驱动DM9000

4.9增加命令与应用

4.10从U-Boot到Linux

4.10.1U-Boot向内核传递参数

4.10.2启动内核

小结

实践作业4

推荐阅读4

第5章调试工具

5.1GDB+GDB Server

5.2二进制文件辅助工具

5.3mtrace

5.4hooks

5.5硬件仿真器

小结

实践作业5

推荐阅读5

第3部分内 核 定 制

第6章进程调度

6.1嵌入式Linux进程调度概述

6.2进程的描述

6.3Linux 2.4内核的调度算法

6.4Linux 2.4应用程序中对进程调度的控制

6.5从Linux 2.4调度算法到Linux 2.6调度算法

6.6Linux 2.6调度算法分析

6.6.1静态优先级

6.6.2动态优先级

6.6.3时间片的计算

6.6.4休眠进程与唤醒进程

6.6.5调度的时机

6.6.6Linux 2.6内核中CPU的负载平衡

6.6.7调度策略

6.6.8内核算法的调优

6.7从Linux 2.6调度算法到嵌入式Linux调度

6.7.1关键性混杂实时任务集调度算法

6.7.2最大利用便携设备后备电池的实时任务调度算法

6.7.3基于GUI的交互式嵌入式系统的调度

小结

实践作业6

推荐阅读6

第7章内存管理

7.1Linux内存管理概述

7.2物理内存管理

7.3内核内存管理

7.4虚拟内存管理器

7.5内核虚拟内存管理器

7.6从Linux内存管理到嵌入式Linux内存管理

7.6.1调度协助请页预取

7.6.2主动交换延迟回写

7.6.3改进Buddy系统

小结

实践作业7

推荐阅读7

第4部分驱 动 开 发

第8章驱动开发

8.1基础知识

8.1.1文件与设备

8.1.2虚拟文件系统

8.1.3设备驱动的加载

8.2框架驱动开发

8.3中断使用

8.3.1Linux内核的中断处理机制

8.3.2中断的申请

8.4内存使用

8.4.1分配Slab小块内存

8.4.2分配物理页

8.4.3内核虚拟地址空间分配

8.4.4Bootmem

8.4.5虚拟内存区(VMA)与内存映射

8.5IO及IO映射

8.6时间与时延使用

8.6.1时钟的类型

8.6.2延迟的使用

8.6.3内核定时器

小结

实践作业8

推荐阅读8

第9章USB驱动开发

9.1USB概述

9.2USB总线互连结构

9.3USB的电气接口

9.4USB数据流模型

9.5USB设备通信模流

9.6USB驱动框架

9.7URB的使用

9.8控制消息的传输

9.9批量数据传输

9.10同步数据传输

9.11中断数据传输

9.12嵌入式系统USB设备驱动的实现方案设计

9.12.1传输方式的确定

9.12.2建模

9.12.3数据流分析

9.12.4控制流分析

9.12.5内存使用分析

9.12.6调试方案

9.12.7实现技术

9.12.8模块划分

9.12.9实现

小结

实践作业9

推荐阅读9

第10章CAN总线驱动开发

10.1CAN总线标准概述

10.2CAN总线特点

10.3CAN总线的数据格式

10.4一种CAN总线系统的实现方法

10.5MCP2510器件功能介绍

10.6CAN总线驱动程序的方案设计

10.6.1CAN总线驱动程序的体系结构

10.6.2CAN总线驱动程序建模

10.7CAN总线的Linux驱动程序的实现

10.7.1S3C2410寄存器地址映射

10.7.2CAN总线驱动的入口和出口

10.7.3设置SPI接口

10.7.4MCP2510的初始化

10.7.5MCP2510发送数据和接收数据

10.7.6中断函数

10.7.7读写函数

10.8CAN总线驱动测试程序

小结

实践作业10

推荐阅读10

第5部分应用程序的开发

第11章宇嵌千里眼主控程序开发

11.1嵌入式应用程序的需求特点

11.2宇嵌千里眼应用开发的要求

11.3宇嵌千里眼主控程序开发实践

11.3.1建模

11.3.2控制流分析

11.3.3数据流分析

11.3.4内存使用分析

11.3.5实时性分析

11.3.6进一步确定实现技术

11.3.7模块划分

11.3.8再看实现技术

11.3.9程序实现

小结

实践作业11

推荐阅读11

附录A一种新型Petri Net: 双层变迁定时Petri Net

附录B双层变迁定时Petri Net抽象化

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个