标题：GNU Gcc嵌入式系统开发
基本信息
  作者： 董文军
出版社：北京航空航天大学出版社
ISBN：9787811248142
出版日期：2010 年1月
版次：1-1
内容简介
本书首先介绍了gnu gcc的基本组成，分章节讲述了gnu gcc、debian linux、makefile、gdb、vi、emacs等开源开发工具的使用，然后以atmel公司的两款颇具代表性的嵌入式芯片，即低端的8位avr单片机atmega48和中端的32位arm芯片at91sam7s64为代表，全面讲述了gnu gcc在嵌入式开发中的应用。可以看到gnu gcc在不同硬件下的开发过程与使用方法的确具有高度的一致性，给学习与使用带来了很大的方便。书中还特别列举了非常实用的开源项目usbasp以及usbdrv，使读者既能对开源软件的强大功能留下深刻的印象，又能学到实际有用的东西。
本书可作为高等院校计算机、电子、自动化、机电一体化等相关专业嵌入式系统课程的教学参考书，也可作为从事嵌入式系统应用开发工程师的参考资料。
目录
第1章 gnu gcc 概述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 avr cpu通用工作寄存器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 avr gcc编译及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 procyon avrlib的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开发包procyon armlib351
9.1 atmel at91sam7s系列芯片概述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 procyon armlib的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