精彩书摘:
GNU项目计划的主要目的是创建一个名叫GNU’s Not Unix(GNU)的完全免费的操作系统。该操作系统将包括绝大多数自由软件基金会所开发的其他软件,以对抗所有商业软件,而这个操作系统的核心(kernel)就叫HURD。但是GNU在开发完全免费的操作系统上并未取得成功’直到20世纪90年代由林纳斯.本纳第克特.托瓦兹(Linus Benedict TorvaIds)开发了Linux操作系统,GNU才算在免费操作系统上完成了任务。
虽然GNU计划在开发免费操作系统上不成功,但是却成功开发几个广为流传的GNU软件’其中最著名的是GNU C Complier(gcc)。这个软件成为历史上最优秀的C语言编译器,其执行效率与一般的编译器相比平均效率要高20%-30%,使得那些靠贩卖编译器的公司大吃苦头,因为它们无法研制出与gcc同样优秀,却又完全免费、并开放源代码的编译器来。而由于它又是copylefted,所以一旦有用户发现错误,就会通知Richard StaIlman,所以几乎每个月都可以推出新版本。
内容简介:
本书首先介绍了GNU gcc的基本组成,分章节讲述了GNU gcc、Debian Linux、makefile、gdb、vi、emacs等开源开发工具的使用,然后以Atmel公司的两款颇具代表性的嵌入式芯片,即低端的8位AVR单片机ATmega48和中端的32位ARM芯片AT91SAM7S64为代表,全面讲述了GNU gcc在嵌入式开发中的应用。可以看到GNU gcc在不同硬件下的开发过程与使用方法的确具有高度的一致性,给学习与使用带来了很大的方便。书中还特别列举了非常实用的开源项目USBASP以及usbdrv,使读者既能对开源软件的强大功能留下深刻的印象,又能学到实际有用的东西。
本书可作为高等院校计算机、电子、自动化、机电一体化等相关专业嵌入式系统课程的教学参考书,也可作为从事嵌入式系统应用开发工程师的参考资料。
目录:
第1章 GNUgcc概述1
1.1 自由软件与GNU、GPL1
1.2 gcc的发展历史及特点2
1.3 gcc的使用简介与命令行参数说明4
1.3.1 gcc的基本用法4
1.3.2 警告提示功能选项7
1.3.3 库操作选项8
1.3.4 代码优化选项9
1.3.5 调试选项10
1.3.6 交叉编译选项11
1.3.7 链接器参数选项12
1.3.8 链接器描述文件格式12
1.3.9 gcc的错误类型及对策15
第2章 适合于嵌入式开发的平台Debian17
2.1 Debian概述17
2.2 Debian的安装18
2.3 Debian基本操作25
2.3.1 桌面环境25
2.3.2 常用应用程序26
2.3.3 文件系统管理27
2.4 Debian系统维护与软件的安装37
2.4.1 apt包管理系统的管理37
2.4.2 软件包管理与安装命令38
2.4.3 dpkg底层的包管理工具39
2.4.4 软件的其他安装方法41
2.5 版本控制42
2.5.1 cvs概述42
2.5.2 Debian中安装cvs服务器42
2.5.3 cvs的基本操作46
2.5.4 远程cvs操作54
2.5.5 cvs使用举例54
2.5.6 Wincvs的使用56
第3章 makefile文件的编写66
3.1 概述66
3.2 makefile的基本语法和简单实例67
3.2.1 基本语法67
3.2.2 make命令行参数定义67
3.2.3 简单实例71
3.3 常用命令72
3.3.1 @命令72
3.3.2 命令间的相互关联72
3.3.3 忽略命令的错误73
3.3.4 条件判断73
3.3.5 定义命令序列73
3.4 目标与规则74
3.4.1 伪目标74
3.4.2 静态目标75
3.4.3 makefile中的常用目标75
3.4.4 后缀规则76
3.4.5 模式规则76
3.4.6 多目标与自动推导77
3.4.7 makefile规则77
3.4.8 引入其他的makefile文件80
3.5 变量81
3.5.1 变量的定义81
3.5.2 与变量相关的操作符82
3.5.3 变量的应用83
3.5.4 特殊变量84
3.6 函数87
3.6.1 函数的调用语法87
3.6.2 字符串处理函数88
3.6.3 文件操作函数90
3.6.4 循环函数91
3.6.5 条件函数92
3.6.6 其他函数92
3.6.7 makefile工作过程总结94
第4章 gdb调试技术95
4.1 概述95
4.1.1 简单的调试实例96
4.1.2 gdb启动退出与程序的加载98
4.1.3 gdb随机帮助与常用命令99
4.2 gdb常用查看命令101
4.2.1 查看寄存器101
4.2.2 查看栈信息101
4.2.3 查看源程序103
4.2.4 查看源代码的内存104
4.3 变量操作命令105
4.3.1 查看单个数据105
4.3.2 输出格式105
4.3.3 修改变量的值106
4.3.4 全局变量与局部变量106
4.3.5 表达式107
4.3.6 数组107
4.3.7 查看内存108
4.3.8 变量自动显示108
4.4 程序断点运行调试命令109
4.4.1 断点操作109
4.4.2 观察点操作110
4.4.3 捕捉点操作110
4.4.4 重载函数的断点操作111
4.4.5 各种断点的维护111
4.5 程序的单步调试技术113
4.6 程序的信号调试技术114
4.7 程序的多线程调试技术115
4.8 程序控制命令116
4.8.1 跳转控制命令116
4.8.2 函数控制命令116
4.9 gdb环境设置命令117
4.9.1 运行环境设置117
4.9.2 显示设置117
4.9.3 环境变量120
4.9.4 搜索源代码121
4.9.5 指定源文件的路径121
第5章 Linux常用编辑器122
5.1 vi编辑器122
5.1.1 概述122
5.1.2 多文件操作126
5.1.3 光标移动命令127
5.1.4 屏幕操作命令129
5.1.5 寻找与替换131
5.1.6 vi的基本编辑命令及操作133
5.1.7 多窗口操作138
5.1.8 寄存器与缓冲区操作140
5.1.9 与编程开发相关操作141
5.1.10 配置设置143
5.1.11 其他编辑命令144
5.2 emacs编辑器146
5.2.1 概述146
5.2.2 emacs基本知识147
5.2.3 对目录的操作154
5.2.4 编辑远程机器上的文件157
5.2.5 光标操作157
5.2.6 基本编辑功能160
5.2.7 查找与替换163
5.2.8 多窗口操作164
5.2.9 emacs编程语言支持功能164
5.2.10 emacs设置172
5.2.11 版本控制174
5.2.12 随机帮助的使用177
5.2.13 emacs的其他功能178
第6章 ATmega48/88/168硬件结构与功能179
6.1 ATmega48/88/168概述179
6.1.1 产品特性179
6.1.2 引脚配置180
6.1.3 结构框图183
6.1.4 工作状态与MCU控制寄存器185
6.1.5 AVRCPU通用工作寄存器186
6.2 存储结构186
6.2.1 ATmega48的程序存储器映像186
6.2.2 SRAM数据存储器187
6.2.3 EEPROM数据存储器187
6.3 系统时钟以及选择189
6.3.1 时钟分类189
6.3.2 时钟源190
6.3.3 与系统时间相关寄存器191
6.4 电源管理与休眠模式192
6.4.1 工作模式192
6.4.2 休眠模式控制寄存器193
6.4.3 功耗最小化需要考虑的几个问题194
6.5 时间器与看门狗195
6.5.1 看门狗定时器195
6.5.2 看门狗控制寄存器195
6.5.3 看门狗安全操作时间序列196
6.5.4 看门狗熔丝位197
6.5.5 定时器的工作模式197
6.5.6 8位PWM定时器0199
6.5.7 16位PWM定时器1208
6.5.8 8位异步操作PWM定时器2216
6.6 复位与中断221
6.6.1 复位221
6.6.2 中断223
6.6.3 外部中断224
6.6.4 ATmega48复位与中断向量226
6.6.5 ATmega88复位与中断向量228
6.6.6 ATmega168复位与中断向量231
6.6.7 I/O端口234
6.8 串行通信接口238
6.8.1 USART串行通信238
6.8.2 SPI串行通信245
6.8.3 两线串行通信249
6.9 模拟比较器与模/数转换254
6.9.1 模拟比较器254
6.9.2 模/数转换器256
6.10 熔丝位以及功能259
第7章 AVRgcc开发技术262
7.1 Debian中的AVR交叉工具包262
7.1.1 AVR交叉工具包的安装262
7.1.2 使用Linux平台的优势263
7.1.3 准备工作263
7.1.4 AVRgcc编译及makefile的编写264
7.1.5 软件模拟调试265
7.2 AVR的GNU下载工具266
7.2.1 PonyProg下载工具266
7.2.2 uisp下载工具269
7.2.3 stk200下载线电路图274
7.3 procyonAVRLib的C语言库函数274
7.3.1 AVRLib的下载与安装274
7.3.2 与AVR芯片内部设备相关函数275
7.3.3 常用外部设备函数285
7.3.4 常见通用设备的软件模拟297
7.3.5 通用库函数298
7.3.6 网络库函数305
第8章 AVR纯固件USB协议314
8.1 USB总线协议概述314
8.1.1 基本概念314
8.1.2 USB总线状态322
8.1.3 USB物理层定义323
8.1.4 USB数据链路层定义325
8.2 开源纯软件模拟USB总线协议331
8.2.1 纯软件USB协议功能特性331
8.2.2 硬件电路331
8.2.3 软件系统结构333
8.3 纯软件USB应用-USBASP下载线345
8.3.1 USBASP功能概述345
8.3.2 USBASP硬件电路345
8.3.3 USBASP固件程序分析346
8.3.4 USBASP制作过程347
8.3.5 USBASP使用方法348
第9章 ARMgcc开发包ProcyonARMLib351
9.1 AtmelAT91SAM7S系列芯片概述351
9.1.1 AT91SAM7S的基本特点351
9.1.2 AT91SAM7S的基本结构353
9.1.3 ARM7TDMI处理器概述355
9.1.4 存储器356
9.1.5 外设358
9.1.6 定时器358
9.1.7 外设数据传输控制器359
9.1.8 高级中断控制器360
9.1.9 并行输入/输出控制器361
9.1.10 通信总线361
9.1.11 脉宽调制控制器364
9.1.12 USB器件端口365
9.1.13 模/数转换器366
9.2 ARM交叉工具软件包366
9.2.1 gnuarm概述366
9.2.2 gnuarm应用程序binutils366
9.3 ProcyonARMLib的C语言库函数388
9.3.1 ARMLib的下载与安装388
9.3.2 与ARM芯片内部设备相关函数390
9.3.3 与AVRLib相同的部分398
9.4 OpenOCD398
9.4.1 OpenOCD概述398
9.4.2 OpenOCD的安装399
9.4.3 OpenOCD芯片的配置文件400
9.4.4 OpenOCD芯片配置命令400
9.4.5 OpenOCD命令403
9.4.6 OpenOCD应用举例405
9.4.7 wiggler并口jtag408
参考文献409
好评度