新書推薦:
《
亚述:世界历史上第一个帝国的兴衰
》
售價:NT$
490.0
《
大处着眼:持久战与《论持久战》
》
售價:NT$
390.0
《
人工智能与大数据:采煤机智能制造
》
售價:NT$
440.0
《
未来漫游指南:昨日科技与人类未来
》
售價:NT$
445.0
《
新民说·逝去的盛景:宋朝商业文明的兴盛与落幕(上下册)
》
售價:NT$
790.0
《
我从何来:自我的心理学探问
》
售價:NT$
545.0
《
失败:1891—1900 清王朝的变革、战争与排外
》
售價:NT$
390.0
《
送你一匹马(“我不求深刻,只求简单。”看三毛如何拒绝内耗,为自己而活)
》
售價:NT$
295.0
編輯推薦:
本书着重讲解嵌入式Linux系统的设计与实现,注重理论和实验的结合。本书配套学习资源丰富,包括:课件、学习建议、源代码和教学网站。
內容簡介:
本书详细介绍嵌入式系统开发过程中的主要技术问题,着重讲解嵌入式Linux系统的设计与实现,注重理论和实验的结合。全书分为13章,内容包括绪论、Linux基础知识、Linux编程环境、Linux外壳程序编程、构建嵌入式Linux开发平台、ARM调试环境、嵌入式Bootloader技术、Linux内核配置、ARMLinux内核分析和移植、嵌入式文件系统、嵌入式Linux多线程编程、嵌入式Web服务器设计、嵌入式Linux的GUI等内容。 本书通俗易懂,图文并茂,注重理解与实例,大部分章节配有实例和源程序,可操作性强。本书可作为计算机学科、电子信息类相关专业本科生、研究生及工程硕士的嵌入式系统课程的教材,也可供相关研究人员、工程技术人员阅读参考。
關於作者:
作者简介金伟正 武汉大学电子信息学院副教授,硕士生导师。全国安全防范报警系统标准化技术委员会TC100通信会员,广东省安防协会高级会员。有着丰富的教学经验,出版过教材和专著多部,写作经验丰富。
目錄 :
目录
第1章绪论
1.1嵌入式系统概述
1.1.1嵌入式系统的历史
1.1.2嵌入式系统的特点
1.1.3嵌入式处理器
1.1.4嵌入式系统的发展趋势
1.2嵌入式系统开发
1.2.1需求分析及概要设计
1.2.2嵌入式系统中的硬件及软件
1.2.3嵌入式系统开发的一般过程
1.3嵌入式操作系统
1.3.1嵌入式操作系统的分类
1.3.2嵌入式操作系统的特点
1.3.3典型的嵌入式操作系统
1.3.4嵌入式操作系统的选择
1.4本章小结
1.5思考题
第2章Linux基础知识
2.1认识Linux操作系统
2.1.1Linux简明历史
2.1.2Linux系统的特点和组成
2.1.3Linux的开发过程
2.2基本操作命令
2.2.1字符界面简介
2.2.2常用命令简介
2.3Linux文件与目录系统
2.3.1Linux文件系统类型介绍
2.3.2Linux目录系统
2.4shell简介
2.5网络服务简介
2.5.1Linux支持的网络协议
2.5.2Linux的网络服务
2.6本章小结
2.7思考题
第3章Linux编程环境
3.1Linux编程环境介绍
3.1.1开发工具环境
3.1.2基于文本模式的开发平台
3.1.3集成开发平台Eclipse CDT
3.1.4文档帮助环境
3.2常用编辑器
3.2.1VIM编辑器
3.2.2Emacs编辑器
3.3gcc编译器的使用
3.3.1gcc的主要选项
3.3.2GNU C扩展简介
3.4GNU make管理项目
3.4.1make简介
3.4.2编写Makefile文件的规则
3.5GDB调试
3.5.1GDB命令介绍
3.5.2GDB调试例程
3.5.3基于GDB的图形界面调试工具
3.6本章小结
3.7思考题
第4章Linux外壳程序编程
4.1创建和运行外壳程序
4.1.1创建外壳程序
4.1.2运行外壳程序
4.2使用外壳变量
4.2.1给变量赋值
4.2.2读取变量的值
4.2.3位置变量和其他系统变量
4.2.4引号的作用
4.3数值运算命令
4.4条件表达式
4.4.1if表达式
4.4.2case表达式
4.5循环语句
4.5.1for语句
4.5.2while语句
4.5.3until语句
4.5.4repeat语句
4.6shift命令
4.7select语句
4.8函数
4.9shell应用举例
4.10本章小结
4.11思考题
第5章构建嵌入式Linux开发平台
5.1GNU跨平台开发工具链
5.1.1基础知识
5.1.2GNU跨平台开发工具链的建立过程
5.2嵌入式Linux内核
5.3嵌入式Linux根文件系统
5.4Bootloader简介
5.5本章小结
5.6思考题
第6章ARM调试环境
6.1ARM调试工具简介
6.1.1JTAG仿真器
6.1.2MultiICE Server
6.2ADS软件调试工具
6.2.1使用Metrowork CodeWarrior for ARM Developer Suite
6.2.2使用RealView Debugger
6.2.3使用AXD Debugger
6.3本章小结
6.4思考题
第7章嵌入式Bootloader技术
7.1Bootloader的基本概念
7.1.1Bootloader的安装点和启动过程
7.1.2Bootloader的模式
7.1.3Bootloader与主机之间的通信方式
7.2Bootloader典型结构框架
7.2.1Bootloader总体流程
7.2.2Bootloader的stage1
7.2.3Bootloader的stage2
7.3典型Bootloader分析和移植
7.3.1Blob
7.3.2UBoot
7.4其他Bootloader简介
7.4.1Redboot
7.4.2ARMBoot
7.4.3PPCBoot
7.5本章小结
7.6思考题
第8章Linux内核配置
8.1内核概述
8.2嵌入式Linux内核代码结构
8.3内核开发的特点
8.3.1没有libc库
8.3.2GNU C
8.3.3没有内存保护机制
8.3.4不要轻易在内核中使用浮点数
8.3.5容积小而固定的栈
8.3.6同步和并发
8.3.7可移植性的重要性
8.4嵌入式Linux内核的配置
8.4.1Makefile
8.4.2配置文件
8.4.3Linux内核配置选项
8.5配置举例
8.6本章小结
8.7思考题
第9章ARMLinux内核分析和移植
9.1ARM微处理器
9.1.1RISC体系结构
9.1.2ARM微处理器的类型
9.1.3ARM微处理器的寄存器结构
9.1.4ARM微处理器的指令结构
9.2ARMLinux内存管理
9.2.1内存管理单元MMU
9.2.2ARMLinux的存储管理机制
9.2.3ARMLinux存储机制的建立
9.2.4ARMLinux对进程虚拟空间的管理
9.3ARMLinux进程管理与调度
9.3.1task_struct数据结构
9.3.2Linux进程的创建、执行和消亡
9.3.3ARM_Linux的进程调度
9.4ARMLinux中断与中断处理
9.4.1Linux处理中断概述
9.4.2ARM体系程序的执行流程
9.4.3ARM处理器对异常中断的响应及返回过程
9.5Linux驱动程序简介
9.5.1设备的分类
9.5.2设备号
9.5.3设备节点
9.5.4用户空间和内核空间
9.6Linux模块化机制
9.6.1Linux的模块化
9.6.2模块的载入
9.6.3模块的卸载
9.7ARMLinux系统启动与初始化
9.7.1内核数据结构的初始化
9.7.2外设初始化
9.7.3init进程和linittab文件
9.7.4rc启动脚本
9.7.5shell的启动
9.8ARMLinux内核裁减
9.9ARMLinux移植
9.9.1移植准备
9.9.2移植步骤
9.9.3配置内核选项
9.9.4修改Kernel文件系统部分代码
9.10本章小结
9.11思考题
第10章嵌入式文件系统
10.1Linux文件系统结构与特征
10.1.1Linux文件系统概述
10.1.2Linux文件系统布局
10.1.3Linux支持的文件系统
10.2嵌入式文件系统简介
10.2.1NOR Flash与NAND Flash介绍
10.2.2MTD介绍
10.2.3cramfs文件系统简介
10.2.4romfs文件系统简介
10.2.5JFFS文件系统简介
10.2.6YAFFS文件系统简介
10.3构建根文件系统
10.4根文件系统设置
10.5BusyBox
10.5.1BusyBox简介
10.5.2使用BusyBox构建根文件系统
10.6嵌入式文件系统的设计
10.6.1文件系统格式的选型的基本策略
10.6.2混合型文件系统的设计
10.7本章小结
10.8思考题
第11章嵌入式Linux多线程编程
11.1线程基本概念
11.1.1Linux线程简介
11.1.2Linux线程编程基础
11.2多线程同步
11.2.1互斥锁
11.2.2条件变量
11.2.3信号量
11.3生产者消费者问题
11.3.1生产者消费者问题简介
11.3.2生产者消费者问题实例
11.4本章小结
11.5思考题
第12章嵌入式Web服务器设计
12.1TCPIP协议
12.1.1TCPIP协议栈
12.1.2TCPIP协议栈的数据流向
12.1.3TCP协议与UDP协议
12.2HTTP协议
12.2.1HTTP协议的方法
12.2.2HTTP协议消息头
12.2.3HTTP协议使用举例
12.2.4内核网络服务
12.3socket编程基础
12.3.1socket描述
12.3.2socket描述符
12.4嵌入式Web服务器介绍
12.4.1协议标准
12.4.2瘦Web服务器
12.4.3嵌入式应用接口技术
12.4.4实现形式
12.4.5RomPager
12.4.6EMIT
12.5Web服务器构建
12.6本章小结
12.7思考题
第13章嵌入式Linux的GUI
13.1嵌入式GUI简介
13.1.1MiniGUI
13.1.2QtEmbedded
13.1.3NanoX
13.1.4OpenGUI
13.2MiniGUl程序设计基础
13.2.1MiniGUI V1.3.3软件包
13.2.2MiniGUI的特点
13.2.3窗口处理过程
13.2.4MiniGUI的线程机制
13.2.5MiniGUI的体系结构
13.2.6MiniGUI的底层引擎
13.2.7MiniGUI的三种运行模式
13.2.8MiniGUI移植
13.3QtEmbedded程序设计基础
13.3.1QtEmbedded图形引擎实现基础
13.3.2QtEmbedded事件驱动基础
13.3.3QtEmbedded底层支持分析
13.3.4QtEmbedded移植
13.4本章小结
13.5思考题
参考文献
內容試閱 :
前言
嵌入式系统正在重新塑造人们的认知、生活、工作和娱乐方式。随着物联网及国内外嵌入式产品进一步开发和推广,嵌入式系统已经渗透到科学研究、工程设计、军事技术、商业文化艺术及人们日常生活中的方方面面。围绕着嵌入式系统构建的智能手机、人工智能、ARVR、无人机、智能穿戴设备、汽车自动驾驶和智能家居系统等,极大地便利和丰富了人们的生活。由于嵌入式系统的研究和开发是一个理论性、实践性非常强的工作,因此开发嵌入式系统需要高素质的研发人员。它不但要求研发人员熟悉嵌入式处理器的硬件结构,还要求更多地掌握嵌入式系统开发的各个环节,如Bootloader、内核、驱动、网络和文件系统等,同时还必须具备所属行业的相关知识和丰富的实践经验。
嵌入式Linux操作系统遵循GNU的GPL条款,具有源代码开放、代码工整、工作稳定、内核结构清晰、移植方便、系统内核小、执行效率高和网络功能强大等特点,从而成为嵌入式市场的领先者。
本书大部分内容曾作为武汉大学电子信息学院研究生嵌入式原理与应用课程的讲义连续使用多届,取得良好的教学效果。编者总结了多年的科研经验和案例,力求从基本概念、基本原理、基本方法和基本应用出发,使读者能扎实、系统地掌握嵌入式Linux系统开发的方法和技能。
全书分为13章: 第1章绪论; 第2章为Linux操作系统入门基础; 第3章介绍Linux系统环境下的程序设计基础; 第4章学习Linux外壳程序的编程方法; 第5章介绍如何构建嵌入式Linux开发平台; 第6章对ARM调试工具、编译环境进行介绍; 第7章对嵌入式Bootloader技术进行详细的分析; 第8章详细讲述Linux内核配置方法; 第9章以嵌入式操作系统ARMLinux为例,对其内核进行详细的剖析,其原理也适用其他架构的处理器; 第10章对嵌入式文件系统进行综合描述和具体分析; 第11章介绍嵌入式Linux多线程编程方法; 第12章就构建嵌入式Web服务器使用的相关技术进行了详细的分析; 第13章详细介绍嵌入式图形用户界面的原理和设计方法。
本书特点
图文并茂,注重整体内容框架的讲解,培养学生的大局观。例如,第1章用多幅图片描述嵌入式Linux系统开发的整体框架及开发流程,便于读者快速入门; 第8章用一张框图描述整个Linux内核代码树的结构,便于理解与记忆。
通俗易懂,注重理解与实例。大部分章节配有实例和源代码,引导读者逐步熟悉各种开发工具和环境,使读者建立感性认识,为进一步深入学习打下良好的基础,可操作性极强。
代码规范细致,内容深入,起点较高。在实例源代码中,进行了非常详细的注释,可以引导读者理解和掌握编写程序的关键过程。在注重基础和实践的同时,注重知识的扩充,如本书对线程、网络编程及图形用户界面编程做了深入的讲解,使读者对嵌入式Linux系统的开发水平有本质的提高。
每章都给出了主要内容、本章小结以及思考题,有利于提升读者的自学效果。
作者分工与致谢
本书由金伟正编著,徐颖、金诗怡参与了部分翻译和编辑工作,他们的工作对本书的定稿起了很大的作用。本书参考了Embedded Linux Primer: A Practical, RealWorld Approach、Linux Kernel Development 3rd Edition等书籍,有些内容取材于国内外最新的教材和技术资料,详见参考文献,有兴趣的读者可以进一步查阅。在此,谨向多位原作者表达诚挚的敬意和真诚的感谢。本书的部分资料来自网络,无法一一列举,在此一并感谢。同时,特别感谢武汉大学电子信息学院对本书给予的大力支持。
联系作者
由于编写时间仓促,编著者的水平有限,书中难免存在不妥或错误之处,如果您对本书有任何意见或建议,或对本书中的内容或章节有兴趣,不妨发电子邮件告诉我们(电子邮箱jwz@whu.edu.cn),您提出的问题和建议是编著者前进的动力。
金伟正2017年3月于武汉大学
学习建议
本书定位
本书可作为计算机学科、电子信息类相关专业本科生、研究生及工程硕士的嵌入式系统课程的教材,也可供相关研究人员、工程技术人员阅读参考。
建议授课学时
如果将本书作为教材使用,建议将课程的教学分为课堂讲授和学生自主上机两个层次。课堂讲授建议36~48学时,学生自主上机建议18~24学时。教师可以根据不同的教学对象或教学大纲要求安排学时数和教学内容。
教学内容、重点和难点提示、课时分配
序号
教学内容
教学重点
教学难点
课时分配
第1章
绪论
嵌入式系统开发的一般过程、嵌入式操作系统
嵌入式系统开发的一般过程及方法
2学时
第2章
Linux基础知识
认识Linux操作系统、
Linux基本操作命令、
Linux文件与目录系统、
Linux网络服务
Linux基本操作命令的使用
2学时
第3章
Linux编程环境
Linux编程环境、VIM及Emacs的使用、GNU make使用及Makefile编程、
GDB的使用方法
GNU make使用及Makefile编程方法
2学时
第4章
Linux
外壳程序编程
创建和运行外壳程序、外壳程序的编程
2学时
第5章
构建嵌入式
Linux开发平台
GNU跨平台开发工具链、
嵌入式Linux内核及根文件系统、Bootloader简介
GNU跨平台开发工具链的建立过程
4学时
第6章
ARM调试环境
ARM调试工具简介、
ADS软件调试工具
2学时
第7章
嵌入式
Bootloader技术
Bootloader的基本概念、典型结构框架、分析和移植
Bootloader的移植
6学时
第8章
Linux内核配置
内核开发特点、嵌入式Linux内核代码结构、嵌入式Linux内核配置
嵌入式Linux内核配置原理及方法
6学时
第9章
ARMLinux
内核分析和移植
ARMLinux的结构组成、
ARMLinux的移植
ARMLinux的移植
6学时
续表
序号
教学内容
教学重点
教学难点
课时分配
第10章
嵌入式文件系统
Linux文件系统结构与特征、嵌入式文件系统的类型、根文件系统的构建
根文件系统的构建及设计
4学时
第11章
嵌入式Linux
多线程编程
Linux线程编程基础、线程的同步与互斥
4学时
第12章
嵌入式Web
服务器设计
TCPIP、UDP及HTTP等协议、socket编程基础、嵌入式Web服务器介绍、Web服务器构建
嵌入式Web服务器类型及Web服务器构建
4学时
第13章
嵌入式Linux
的GUI
嵌入式GUI简介、MiniGUI及QtEmbedded程序设计
MiniGUI及Qt
Embedded的移植
4学时
网上资源
本书的教学资源可从武汉大学课程中心网推荐课程中获取,网址为: http:kczx.whu.edu.cnG2SShowSystemCourseCommend.aspx。如果课时宽裕,教师可选取一些专家讲座或公开课视频,在课堂上播放,以扩大学生的眼界。