首页>参考读物>计算机科学与技术>综合

零基础学ARM9嵌入式Linux系统开发
作者 : 段群杰 霍艳忠 杜旭 等编著
出版日期 : 2010-09-17
ISBN : 978-7-111-31671-8
定价 : 65.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 473
开本 : 16
原书名 : ARM9&Linux从入门到精通(视频实录)
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书系统地论述了嵌入式系统开发的设计思想和各个主要环节。深刻诠释了嵌入式系统开发的基本理论、基本方法与实用技巧,内容涵盖了硬软件两个层面。向读者较全面展现了嵌入式系统开发的全部过程。涵盖内容:嵌入式系统概述、ARM微处理器结构、ARM微处理器指令系统、构建嵌入式开发环境、S3C2410X硬件结构及功能、 S3C2410X的外部接口、嵌入式操作系统、S3C2410X平台Bootloader、移植嵌入式操作系统、嵌入式系统的设备管理及驱动、嵌入式Linux C语言开发工具、嵌入式C语言开发流程、ADS集成开发环境、图形用户界面编辑环境Qt、S3C2410X完整开发系统的设计等。

图书特色

本书系统地论述了嵌入式系统开发的设计思想和各个主要环节。深刻诠释了嵌入式系统开发的基本理论、基本方法与实用技巧,内容涵盖了硬软件两个层面。向读者较全面展现了嵌入式系统开发的全部过程。

涵盖内容
n 嵌入式系统概述
n ARM微处理器结构
n ARM微处理器指令系统
n 构建嵌入式开发环境
n S3C2410X硬件结构及功能
n S3C2410X的外部接口
n 嵌入式操作系统
n S3C2410X平台Bootloader详解
n 移植嵌入式操作系统
n 嵌入式系统的设备管理及驱动
n 嵌入式Linux C语言开发工具
n 嵌入式C语言开发流程
n ADS集成开发环境
n 图形用户界面编辑环境Qt
n S3C2410X完整开发系统的设计

综合实例
n ARM程序设计示例
n 中断示例
n 外中断示例
n 定时器应用示例
n UART应用举例
n IIC应用编程
n SPI接口应用举例
n 字符设备驱动示例
n 设备驱动举例- RAMDISK驱动
n 编译器GCC实例分析
n 使用ADS创建工程
n MiniGUI移植
n Qt/Embedded实战演练

图书前言

嵌入式系统是指以应用为核心,以计算机技术为基础,对功能、可靠性、成本、体积和功耗有严格要求的专用计算机系统。在当前数字信息技术和网络技术高速发展的后PC时代,嵌入式系统已经广泛地渗透到消费电子、航空航天、汽车电子、医疗保健、网络通信、工业控制等各个领域。ARM已成为嵌入式技术的代名词。正在以不同的形式悄悄地改变着人们的生产、生活方式。随着ARM微处理器和嵌入式技术的不断发展,ARM9处理器已成为嵌入式开发的主流。
  从技术层面来说,嵌入式系统实际上是硬软件的有机结合体。因此,一个优秀的嵌入式系统设计人员常常需要具备硬件和软件两个方面的知识。故本书在写作思路上兼顾硬件和软件两个方面的知识,以使不同需求的读者都能在本书中找到适合于自身开发设计的灵感和处理问题的方式方法。
  本书以频率高达220MHz的ARM9微处理器为平台,详细介绍了嵌入式系统开发的各个主要环节。在讲述原理的同时,从功能需求入手,辅以代码分析,详尽地讲解了嵌入式系统开发的各种技术,内容涵盖了硬软件两个层面。每一章内容都独立成为一个主题,向读者较全面地展现了嵌入式系统开发的全部过程。
本书特点
  本书以“立足基本理论、系统全面、由浅入深、实例引导、贴近实用”为宗旨,基于嵌入式系统开发的基本流程,详细讲解各种指令的使用方法及相关技巧,内容翔实、实践性强。内容特点如下。
1.零点起航
  本书是一本从入门到精通的开发教程,特别适合于想以ARM9进行嵌入式系统学习和设计的初学者学习和阅读。通过阅读本书使读者能够很快掌握ARM9嵌入式系统开发的一般步骤和方法。
2.结构合理,深入浅出
  内容编排上遵循了读者学习的一般规律,便于短时间内掌握ARM嵌入式系统开发的基本方法和一般步骤。通过深入浅出的讲解,使原本枯燥的内容变得生动有趣、易于消化吸收、便于举一反三。
3.内容系统化
  本书较系统地阐述了ARM嵌入式系统开发中所涉及的各个环节,使读者阅读后对嵌入式系统开发的过程、步骤等有较完整的了解。同时,对将来开发有可能涉及的其他知识也进行了相应的介绍。
4.便于教学
  本书的撰写思路充分考虑了学习者的思维习惯,在内容编排上由浅入深,在语言组织上尽量做到通俗易懂、生动有趣。是一本较好地利用ARM9进行嵌入式系统开发的从入门到精通的教程。
主要内容
  本书分为4篇,共15章。各章的主要内容如下。
  第一篇 入门篇
  第1章:对嵌入式系统进行简要介绍,包括嵌入式系统的特点、应用领域和发展趋势;介绍嵌入式系统的基本组成和嵌入式系统中的微处理器;并给出了嵌入式系统设计的一般过程和嵌入式系统设计的主要步骤。通过本章的学习,读者应该对书中所使用的ARM9处理器有一定的了解,从而为后面章节的学习打下基础。
  第2章:介绍了ARM公司的概况、基于ARM技术的嵌入式系统的应用情况以及ARM处理器的种类及其主要特点,并对当前ARM体系结构的主要版本进行详细介绍,最后讲解了ARM体系中的异常中断和存储系统。
  第3章:介绍ARM指令的分类、一般编码格式和条件码域等,并对ARM指令集、Thumb指令集,以及各类指令对应的寻址方式进行详细介绍。通过对本章的学习,读者能了解ARM微处理器所支持的指令集及具体的使用方法。
  第二篇 基础篇
  第4章:介绍了嵌入式开发环境的搭建方法,首先介绍了交叉开发的概念,说明了在嵌入式系统的开发中采用交叉开发的根据;之后介绍了主机环境和目标板系统环境的构建过程,并对这两个环境的连接方式作了简要的介绍;然后介绍了目标板系统的三个主要方面:Bootloader、Kernel和根文件系统,说明了它们的作用和构建方法,同时举例说明了一些常用配置的配置方法;最后给出了简单的程序设计示例。通过本章的学习,读者可以开始嵌入式系统的开发。
  第5章:介绍S3C2410X的硬件资源和整体架构,对其存储控制器、Nand Flash控制原理、时钟和电源管理、通用I/O接口和中断控制器、DMA和定时器等作了详细介绍,并通过一定的实例加深读者对关键技术的理解。
  第6章:本章主要对S3C2410X的UART接口(通用异步串行口)、IIC总线接口、SPI接口(串行外设接口)和A/D转换与触摸屏接口的基本原理、结构和相关寄存器的功用等作了详细介绍,并通过一定的实例来加深读者对关键技术的理解。由于系统外围电路的通用性,本章所描述的设计方法也同样适用于其他嵌入式系统。
  第7章:介绍嵌入式操作系统和进程的概念,较系统介绍计算机的存储系统、存储器分类及各类存储器的优缺点。介绍文件管理和设备管理,概述各种嵌入式操作系统的特点并简要介绍了目前比较流行的几种嵌入式操作系统。通过本章的学习,读者可以了解Linux系统的基本知识,为内核移植、驱动程序和应用程序开发做准备。
  第三篇 提高篇
  第8章:介绍了Bootloader的启动加载模式、下载模式及每种模式的功能要求,Bootloader的启动过程和启动各个阶段的衔接技术;详述vivi和U-Boot的工作过程及工作原理,并对自行设计Bootloader时应该注意的事项及必须实现的功能进行了讲述。通过本章的学习,读者应该掌握如何编写Bootloader。建议读者阅读本章内容之前,先熟悉ARM汇编语言。
  第9章:讲解了Linux内核的基础知识、Linux内核移植的详细步骤及部分选项的配置方法;介绍了利用Busybox制作根文件系统和使用U-Boot制作、下载及启动Linux内核的方法;并详细给出了使用U-Boot命令加载Linux根文件系统映像的过程。通过本章的学习,读者应能掌握系统移植的关键步骤和思路。
  第10章:介绍Linux驱动开发的基础知识,包括字符设备和块设备驱动。其中,字符设备知识主要包括:内核与模块、并发控制、阻塞、中断、内存操作。作为初学者,大多数读者并不需要在实际工作中接触块设备的驱动编写,因此建议读者将主要精力放在学习字符设备驱动上,而这也足以满足大多数情况的实际需要。
  第11章:介绍在开发嵌入式C语言时需要用到的主要开发工具。Linux提供了相当丰富的开发工具供工程师们使用,常用的包括命令行模式下的开发工具:编辑器VIM、编译器GCC、调试器GDB、工程管理Make和图形化模式下的集成开发环境Eclipse等。读者可根据自身的编程习惯选择一种适合自己的开发环境。
  第12章:介绍了命令行模式下和集成开发环境下开发嵌入式程序的基本流程。详细讲解了在命令行下如何通过VI编辑一个代码文件,如何在PC上和在开发板上运行编译好的程序和如何通过编写Makefile文件提高编译和文件管理的效率;并介绍了在Eclipse下创建工程、编写代码、编译工程和运行最终程序的过程。
  第四篇 精通篇
  第13章:介绍了ARM集成开发软件ADS。包括命令行开发工具armcc和armlink的详细用法,CodeWarrior集成开发环境的使用;详述了使用ADS创建、编译和链接工程的过程,以及使用AXD调试代码,打开调试文件,查看存储器内容、设置断点和查看变量值的具体调试过程。通过本章的学习,读者可初步学会使用ADS,以帮助自己学习和开发ARM系统。
  第14章:系统论述了嵌入式系统中的图形用户接口(GUI)、MiniGUI编程和Qt/Embedded;详述了Qt/Embedded嵌入式图形开发过程,并给出了Qt/Embedded实战演练实例。通过本章的学习,读者应该能掌握编写MiniGUI和Qt程序的能力。
  第15章:本章设计一块以S3C2410X为中央处理器的实验板。通过该实验板的设计,较系统地介绍ARM实验板的设计过程,希望通过本章的讲解能够引导读者开发完整的ARM系统。
读者对象
  想学习嵌入式系统开发或刚踏入嵌入式系统开发领域的人员
  对嵌入式操作系统的移植感兴趣的人员
  使用S3C2410X快速开发产品的开发人员
  想快速上手学习ARM9系统软硬件的人员
  高等院校控制工程、计算机等相关专业学生
本书光盘
  书中全部实例文件
  开发过程录像文件
  常用芯片及元器件
  常用学习交流网址
  本书主要由段群杰、霍艳忠和杜旭编著,其他参与编著和资料整理的人员有侯延明、张义伟、李殿奎、王冬、郭士清、陈永波、杨康、颜兵兵、李小海、姜庆昌、张霞、冯凭、王跃辉、牛国玲、宋一兵、管殿柱等。
  感谢您选择了本书,希望我们的努力对您的工作和学习有所帮助,也希望您把对本书的意见和建议告诉我们。
  作者联系方式:gdz_zero@126.com
  编辑联系方式:sdl@hzbook.com

作 者
2010年7月

作者简介

段群杰 霍艳忠 杜旭 等编著:暂无简介

图书目录

前言
第一篇 入门篇1
第1章 嵌入式系统1
  1.1 嵌入式系统简介1
   1.1.1 嵌入式系统的特点1
   1.1.2 嵌入式系统的应用领域2
   1.1.3 嵌入式系统的发展趋势3
  1.2 嵌入式系统的组成5
   1.2.1 嵌入式平台的硬件结构5
   1.2.2 板级支持包和嵌入式系统6
   1.2.3 嵌入式系统上的应用程序6
  1.3 嵌入式系统中的处理器6
   1.3.1 微处理器7
   1.3.2 微控制器7
   1.3.3 数字信号处理器7
   1.3.4 嵌入式片上系统8
  1.4 嵌入式系统的一般设计流程和方法8
   1.4.1 嵌入式系统的一般设计流程8
   1.4.2 嵌入式系统的一般设计方法9
  1.5 实践拓展10
  1.6 习题11
第2章 ARM微处理器结构12
  2.1 ARM公司简介12
  2.2 ARM微处理器系列12
  2.3 ARM体系结构的版本及命名方法15
   2.3.1 ARM体系结构的版本16
   2.3.2 ARM体系结构的变种18
   2.3.3 ARM/Thumb体系结构的命名格式19
  2.4 ARM微处理器模式20
  2.5 ARM寄存器介绍21
   2.5.1 通用寄存器22
   2.5.2 程序状态寄存器23
  2.6 ARM体系的异常中断24
   2.6.1 ARM中异常中断的种类25
   2.6.2 ARM处理器对异常中断的响应过程25
   2.6.3 从异常中断处理程序中返回26
  2.7 ARM体系中的存储系统26
   2.7.1 ARM体系中的存储空间26
   2.7.2 ARM体系结构的存储器格式26
   2.7.3 非对齐的存储访问操作27
   2.7.4 ARM指令预取和自修改代码27
  2.8 实践拓展28
  2.9 习题29
第3章 ARM微处理器指令系统30
  3.1 ARM指令系统简介30
   3.1.1 ARM指令的分类30
   3.1.2 ARM指令的一般编码格式30
   3.1.3 ARM指令的条件码域31
  3.2 ARM指令寻址方式32
   3.2.1 数据处理指令的操作数的寻址方式32
   3.2.2 字及无符号字节的Load/Store指令的寻址方式36
   3.2.3 杂类Load/Store指令的寻址方式39
   3.2.4 批量Load/Store指令的寻址方式41
   3.2.5 协处理器Load/Store指令的寻址方式42
  3.3 ARM指令集详解43
   3.3.1 跳转指令44
   3.3.2 数据处理指令45
   3.3.3 乘法指令与乘加指令49
   3.3.4 程序状态寄存器访问指令51
   3.3.5 加载/存储指令52
   3.3.6 批量数据加载/存储指令53
   3.3.7 数据交换指令54
   3.3.8 移位指令55
   3.3.9 协处理器指令56
   3.3.10 异常产生指令57
  3.4 ARM程序设计示例58
  3.5 实践拓展61
  3.6 习题63
第二篇 基础篇64
第4章 构建嵌入式开发环境64
  4.1 交叉开发环境简介64
   4.1.1 交叉开发环境模型65
   4.1.2 Linux的常用版本65
  4.2 宿主机与目标板的连接方式66
   4.2.1 串行通信接口66
   4.2.2 以太网接口67
   4.2.3 USB接口68
   4.2.4 JTAG接口68
  4.3 建立主机开发环境69
   4.3.1 Fedora的安装69
   4.3.2 Minicom的安装配置82
   4.3.3 TFTP服务的安装配置85
   4.3.4 NFS的安装配置86
   4.3.5 建立交叉工具链87
  4.4 实践拓展89
  4.5 习题90
第5章 S3C2410X硬件结构及功能91
  5.1 S3C2410X简介91
   5.1.1 S3C2410X处理器91
   5.1.2 S3C2410X引脚描述92
   5.1.3 S3C2410X内核结构95
  5.2 S3C2410X的存储器映射96
   5.2.1 存储器的控制寄存器96
   5.2.2 Nand Flash及其控制器99
  5.3 DMA控制器103
   5.3.1 DMA工作原理103
   5.3.2 DMA控制器的相关寄存器…105
  5.4 时钟和电源管理109
   5.4.1 时钟110
   5.4.2 电源管理112
   5.4.3 专用寄存器114
   5.4.4 S3C2410X时钟及电源管理应用117
  5.5 中断118
   5.5.1 中断控制器专用寄存器119
   5.5.2 中断实例122
  5.6 输入/输出端口124
   5.6.1 端口寄存器及其引脚配置…124
   5.6.2 外中断实例133
  5.7 定时器135
   5.7.1 结构与工作原理135
   5.7.2 定时器专用寄存器138
   5.7.3 定时器的使用139
   5.7.4 定时器应用实例140
  5.8 实践拓展141
  5.9 习题144
第6章 S3C2410X的外部接口145
  6.1 UART接口145
   6.1.1 串行口结构和工作原理145
   6.1.2 UART专用寄存器149
   6.1.3 UART应用实例152
  6.2 IIC总线接口153
   6.2.1 IIC总线接口的工作模式…154
   6.2.2 IIC总线接口的特殊功能寄存器158
   6.2.3 IIC应用实例160
  6.3 SPI接口162
   6.3.1 SPI结构与工作原理163
   6.3.2 SPI专用寄存器164
   6.3.3 SPI应用方法166
   6.3.4 SPI应用实例167
  6.4 A/D转换与触摸屏接口169
   6.4.1 A/D转换器结构与工作原理170
   6.4.2 A/D转换和触摸屏专用寄存器172
  6.5 实践拓展174
  6.6 习题176
第7章 嵌入式操作系统177
  7.1 常见的嵌入式操作系统177
  7.2 嵌入式Linux的基本结构和工作原理179
   7.2.1 嵌入式Linux的基本结构…179
   7.2.2 嵌入式Linux的工作原理…182
  7.3 实践拓展183
  7.4 习题185
第三篇 提高篇186
第8章 S3C2410X平台Bootloader186
  8.1 Bootloader的操作模式186
  8.2 Bootloader的启动流程187
  8.3 Bootloader之vivi188
   8.3.1 vivi的配置与编译189
   8.3.2 vivi第一阶段的代码190
   8.3.3 vivi第二阶段的代码201
  8.4 Bootloader之U-Boot217
   8.4.1 U-Boot的主要目录结构218
   8.4.2 U-Boot支持的主要功能218
   8.4.3 U-Boot的原理分析219
   8.4.4 U-Boot在S3C2410上的移植231
  8.5 自行开发Bootloader239
  8.6 实践拓展239
  8.7 习题241
第9章 移植嵌入式操作系统242
  9.1 Linux内核242
   9.1.1 Linux内核的组成结构243
   9.1.2 Linux源码结构244
  9.2 移植Linux内核245
   9.2.1 给内核打补丁245
   9.2.2 配置内核247
   9.2.3 编译内核257
  9.3 移植根文件系统257
   9.3.1 安装Busybox258
   9.3.2 配置Busybox259
   9.3.3 向Busybox添加新命令…260
   9.3.4 编译和安装Busybox262
   9.3.5 构造根文件系统262
   9.3.6 创建根文件系统映像文件264
  9.4 下载内核264
   9.4.1 使用U-Boot制作、下载内核264
   9.4.2 启动Linux内核266
  9.5 使用U-Boot加载根文件系统映像266
  9.6 实践拓展267
  9.7 习题268
第10章 嵌入式系统的设备管理及驱动269
  10.1 Linux设备管理和驱动269
   10.1.1 Linux设备的分类269
   10.1.2 设备驱动程序的作用269
   10.1.3 访问设备的实现270
   10.1.4 Linux设备控制方式270
  10.2 Linux设备驱动开发流程272
   10.2.1 构造和运行模块272
   10.2.2 字符设备驱动编写273
   10.2.3 字符设备驱动实例276
   10.2.4 并发控制278
   10.2.5 阻塞与非阻塞 284
   10.2.6 select和poll288
   10.2.7 中断处理290
   10.2.8 内存与I/O操作292
  10.3 块设备驱动编写296
   10.3.1 块设备的I/O操作特点…296
   10.3.2 block_device_operations结构体296
   10.3.3 gendisk结构体297
   10.3.4 request结构体299
   10.3.5 request操作函数302
   10.3.6 bio结构体304
   10.3.7 注册与注销305
   10.3.8 加载与卸载306
   10.3.9 打开与释放308
   10.3.10 ioctl函数308
   10.3.11 I/O请求处理309
  10.4 设备驱动实例——RAMDISK驱动312
  10.5 实践拓展317
  10.6 习题319
第11章 嵌入式Linux C语言开发工具320
  11.1 编辑器VIM320
   11.1.1 VIM的编辑模式320
   11.1.2 VIM的进入与退出322
   11.1.3 光标的移动322
   11.1.4 删除、撤销和重复323
   11.1.5 复制和粘贴324
   11.1.6 查找和替换324
   11.1.7 帮助系统和网络资源324
  11.2 编译器GCC326
   11.2.1 GCC的编译流程326
   11.2.2 GCC的常用编译选项328
   11.2.3 应用实例331
  11.3 调试器GDB333
   11.3.1 GDB的使用流程335
   11.3.2 GdbServer远程调试338
  11.4 工程管理Make339
   11.4.1 Makefile文件介绍340
   11.4.2 Makefile的规则341
   11.4.3 Makefile的变量343
   11.4.4 Make命令的使用345
   11.4.5 使用自动工具生成Makefile346
  11.5 集成开发环境Eclipse347
   11.5.1 下载和安装Eclipse348
   11.5.2 Eclipse的界面348
  11.6 实践拓展350
  11.7 习题351
第12章 嵌入式C语言开发流程352
  12.1 命令行模式下的开发流程352
   12.1.1 编写代码352
   12.1.2 编译程序354
   12.1.3 运行程序355
   12.1.4 交叉编译355
   12.1.5 编写Makefile 356
  12.2 基于Eclipse的开发流程358
   12.2.1 新建工程358
   12.2.2 编写代码359
   12.2.3 编译工程359
   12.2.4 运行程序361
  12.3 实践拓展362
  12.4 习题363
第四篇 精通篇364
第13章 ADS集成开发环境364
  13.1 命令行开发工具364
   13.1.1 armcc编译器365
   13.1.2 armlink的使用方法366
   13.1.3 ARM运行时库367
   13.1.4 CodeWarrior集成开发环境368
   13.1.5 ADS调试器369
   13.1.6 实用工具和软件370
  13.2 使用ADS创建工程371
   13.2.1 建立一个工程371
   13.2.2 编译和链接工程374
   13.2.3 命令行模式下编译工程…379
  13.3 使用AXD调试代码381
   13.3.1 打开调试文件381
   13.3.2 查看存储器内容382
   13.3.3 设置断点383
   13.3.4 查看变量值383
  13.4 实践拓展385
  13.5 习题386
第14章 图形用户界面编辑环境Qt387
  14.1 嵌入式系统中的GUI387
   14.1.1 MicroWindows387
   14.1.2 MiniGUI388
   14.1.3 Qt/Embedded388
  14.2 MiniGUI编程388
   14.2.1 MiniGUI移植390
   14.2.2 MiniGUI实例392
  14.3 初识Qt/Embedded394
   14.3.1 Qt/Embedded的系统要求395
   14.3.2 Qt的架构395
   14.3.3 窗口系统396
  14.4 Qt/Embedded嵌入式图形开发397
   14.4.1 建立Qt/Embedded开发环境397
   14.4.2 认识Qt/Embedded开发环境399
   14.4.3 窗体401
   14.4.4 对话框407
   14.4.5 外形与感觉411
   14.4.6 国际化412
  14.5 Qt/Embedded实战演练413
   14.5.1 安装Qt/Embedded工具开发包414
   14.5.2 交叉编译Qt/Embedded库414
   14.5.3 “Hello,World”程序415
   14.5.4 发布Qt/Embedded程序到目标板421
   14.5.5 添加一个Qt/Embedded应用到QPE 423
  14.6 实践拓展 424
  14.7 习题 425
第15章 S3C2410X完整开发系统的设计426
  15.1 最小系统426
  15.2 实验板硬件资源规划426
  15.3 实验板硬件电路设计427
   15.3.1 电源电路427
   15.3.2 复位电路428
   15.3.3 调试及下载接口电路429
   15.3.4 时钟电路429
   15.3.5 微处理器电路430
   15.3.6 外部存储器电路433
   15.3.7 串行接口电路437
   15.3.8 网络接口电路437
   15.3.9 USB接口电路439
   15.3.10 液晶接口电路440
   15.3.11 其他电路441
  15.4 PCB的设计方法442
  15.5 电路的调试方法444
  15.6 软件的移植与开发445
   15.6.1 准备交叉编译工具445
   15.6.2 vivi的移植447
   15.6.3 内核的移植452
   15.6.4 根文件系统的移植455
   15.6.5 驱动程序的编写457
  15.7 实践拓展460
  15.8 习题461
参考文献462

教学资源推荐
作者: Wanda P. Dann  Stephen Cooper  Randy Pausch 著
作者: [美]怀亚特·S. 纽曼(Wyatt S. Newman) 著
作者: 张国德 李红 主编
作者: (美)Ramez Elmasri,A. Gil Carrick, David Levine 著
参考读物推荐
作者: [伊朗]阿敏·艾哈迈迪·泰兹坎迪(Amin Ahmadi Tazehkandi) 著
作者: [英]理查德·琼斯(Richard Jones)安东尼·霍思金(Antony Hosking)艾略特·莫斯(Eliot Moss)著