内容简介
第1章 嵌入式系统组成简介
1.1 嵌入式系统简介
1.1.1 嵌入式系统定义
1.1.2 嵌入式系统发展历程
1.1.3 嵌入式系统应用举例
1.1.4 嵌入式系统特点
1.2 嵌入式系统硬件及软件组成
1.2.1 嵌入式系统硬件组成
1.2.2 嵌入式系统软件组成
1.3 主流嵌入式微处理器
1.3.1 嵌入式微处理器分类
1.3.2 主流嵌入式微处理器简介
1.4 主流嵌入式操作系统简介
1.4.1 嵌入式操作系统的主要特点
1.4.2 主流嵌入式操作系统简介
1.5 Linux支持的处理器结构简介
1.5.1 Linux对处理器的支持
1.5.2 Linux支持的处理器结构
1.5.3 μCLinux支持的处理器结构
习题
第2章 微处理器组成及程序员模型
2.1 S3C2410A微处理器概述
2.2 S3C2410A微处理器的组成与引脚信号
2.2.1 S3C2410A微处理器的组成
2.2.2 S3C2410A芯片封装、引脚编号与引脚信号名
2.2.3 S3C2410A特殊功能寄存器简介
2.3 ARM920T核
2.4 ARM程序员模型
2.4.1 处理器操作状态
2.4.2 存储器格式和数据类型
2.4.3 处理器操作方式
2.4.4 寄存器
2.4.5 程序状态寄存器
2.4.6 异常
2.4.7 中断延迟
2.4.8 Reset
2.5 OMAP3530微处理器
2.5.1 OMAP3530微处理器概述
2.5.2 OMAP3530应用举例
2.5.3 OMAP3530微处理器组成
习题
第3章 存储器控制器及Nand Flash控制器
3.1 存储器控制器
3.1.1 S3C2410A与存储器相关的特性简介
3.1.2 与存储器芯片连接的S3C2410A引脚信号及使用
3.1.3 存储器总线周期举例
3.1.4 存储器控制器特殊功能寄存器
3.2 存储器组成举例
3.2.1 使用Nor Flash芯片作为引导ROM
3.2.2 使用SDRAM芯片举例
3.3 Nand Flash芯片工作原理
3.3.1 两种引导模式
3.3.2 Nand Flash概述
3.3.3 K9F2808U0C Nand Flash芯片工作原理
3.4 Nand Flash控制器
3.4.1 Nand Flash控制器
3.4.2 Nand Flash控制器特殊功能寄存器
3.4.3 Nand Flash控制器与Nand Flash芯片连接举例
3.5 应用举例
3.5.1 U-Boot对存储器控制器特殊功能寄存器初始化
3.5.2 存储器控制器与以太网控制器的连接
3.5.3 S3C44B0X与Nand Flash芯片的连接
习题
第4章 时钟与电源管理、DMA与总线优先权
4.1 功耗管理、时钟与电源管理概述
4.1.1 微处理器功耗管理基础
4.1.2 时钟与电源管理概述
4.1.3 时钟与电源管理用到的S3C2410A引脚信号
4.2 时钟管理
4.2.1 时钟与电源管理结构框图
4.2.2 片外时钟源的选择
4.2.3 锁相环
4.2.4 时钟控制逻辑
4.3 电源管理
4.3.1 电源管理模式的转换
4.3.2 4种电源管理模式
4.3.3 S3C2410A电源引脚
4.4 时钟与电源管理特殊功能寄存器及设置
4.4.1 时钟与电源管理特殊功能寄存器
4.4.2 U-Boot对特殊功能寄存器的初始设置
4.5 DMA基础
4.5.1 DMA含义
4.5.2 DMAC控制输入传输举例
4.5.3 总线主设备、从设备
4.6 DMA传输
4.6.1 DMA概述
4.6.2 存储器到外设DMA传输举例
4.6.3 DMA用到的S3C2410A引脚信号
4.7 DMA请求、有限状态机和协议
4.7.1 硬件DMA请求与软件DMA请求
4.7.2 用于DMA操作的有限状态机
4.7.3 外部DMA请求/响应协议
4.7.4 Unit/Burst传输、数据尺寸与自动重装
4.7.5 外部DMA请求/响应协议传输举例
4.8 DMA特殊功能寄存器
4.9 DMA存储器到存储器传输测试举例
4.10 总线优先权
习题
第5章 GPIO端口及中断控制器
5.1 GPIO端口概述及引脚信号
5.1.1 GPIO端口概述
5.1.2 与GPIO端口及其他寄存器相关的S3C2410A引脚信号
5.2 GPIO端口控制
5.3 GPIO端口特殊功能寄存器
5.3.1 端口A~端口H寄存器组
5.3.2 其他寄存器
5.4 GPIO端口程序举例
5.4.1 GPIO端口特殊功能寄存器在程序中定义
5.4.2 GPIO端口初始化配置
5.4.3 GPIO端口使用举例
5.5 中断控制器概述
5.5.1 与中断有关的寄存器
5.5.2 中断处理过程
5.6 中断控制器操作、中断源及中断优先权
5.6.1 中断控制器操作
5.6.2 中断源
5.6.3 中断优先权产生模块
5.7 中断控制器特殊功能寄存器
5.8 中断程序举例
习题
第6章 片内功能模块
6.1 脉宽调制定时器
6.1.1 PWM定时器概述
6.1.2 PWM定时器操作
6.1.3 PWM定时器特殊功能寄存器
6.1.4 PWM定时器应用举例
6.2 实时时钟
6.2.1 RTC概述
6.2.2 RTC组成与操作
6.2.3 RTC特殊功能寄存器
6.2.4 RTC程序举例
6.3 看门狗定时器
6.3.1 WDT概述
6.3.2 WDT操作
6.3.3 WDT特殊功能寄存器
6.3.4 WDT程序举例
6.4 通用异步收发器
6.4.1 串行异步通信基础
6.4.2 UART组成及操作
6.4.3 UART特殊功能寄存器
6.4.4 UART与RS-232C接口连接举例
6.4.5 UART程序举例
6.4.6 UART与红外收发器连接及程序举例
6.5 模数转换器与触摸屏接口
6.5.1 ADC与TS接口基础知识
6.5.2 ADC与TS接口概述
6.5.3 ADC与TS接口操作
6.5.4 ADC与TS接口特殊功能寄存器
6.5.5 ADC程序举例
6.5.6 ADC与TS接口程序举例
6.6 IIC、IIS、SPI总线接口及SD主控制器概述
6.6.1 IIC总线接口概述
6.6.2 IIS总线接口概述
6.6.3 SPI总线接口概述
6.6.4 MMC/SD/SDIO概述
习题
第7章 Linux及嵌入式开发系统组成简介
7.1 Linux起源及发展
7.1.1 UNIX和GNU软件
7.1.2 Linux的发展
7.2 内核、shell、文件系统及实用程序
7.2.1 Linux内核
7.2.2 shell简介
7.2.3 文件系统
7.2.4 实用程序
7.3 使用Linux的理由及Linux的不足之处
7.3.1 使用Linux的理由
7.3.2 使用Linux的不足之处
7.4 Linux环境嵌入式开发系统组成简介
7.4.1 Linux环境嵌入式开发系统组成
7.4.2 主机
7.4.3 目标板
7.4.4 主机与目标板的连接
7.4.5 主机中运行的程序
7.4.6 目标板中运行的程序
7.4.7 开发系统附带的光盘文档
7.5 主机安装的Linux发行版
7.5.1 常用的Linux发行版
7.5.2 Linux发行版在主机的安装方式
习题、操作与实验
第8章 主机及目标板的运行
8.1 终端基础知识
8.1.1 tty
8.1.2 早期的终端及终端与主机的连接
8.1.3 X-Window、GNOME及KDE简介
8.2 主机系统引导、登录及退出Linux
8.2.1 主机系统引导
8.2.2 登录Linux
8.2.3 Linux的终端
8.2.4 查看及修改用户使用的shell
8.2.5 通过退出与shell的会话退出Linux
8.2.6 关闭运行的Linux系统
8.2.7 使用帮助命令help和man
8.3 目标板初次运行
8.3.1 目标板连接的电源、端口及安装的操作系统
8.3.2 目标板引导过程简述
8.3.3 装入装载引导程序(vivi)
8.3.4 装入装载引导程序(u-boot)
8.3.5 主机在Windows环境下的超级终端
8.3.6 主机在Linux环境下的minicom仿真终端(Linux企业版4.0)
8.3.7 主机在Linux环境下的minicom仿真终端(Linux企业版5.0)
8.3.8 在虚拟机中增添串口设备
8.3.9 装载引导程序支持的命令简介(vivi)
8.3.10 装载引导程序支持的命令简介(u-boot)
8.3.11 目标板运行的Linux登录、退出讨论
8.3.12 目标板安装的Linux
8.3.13 目标板运行的Linux命令举例(S3C2410A)
8.3.14 目标板运行的Linux命令举例(OMAP3530)
习题、操作与实验
第9章 主机开发环境配置
9.1 交叉开发平台基础
9.1.1 本地开发及交叉开发
9.1.2 GNU跨平台工具链组成
9.1.3 如何获取工具链
9.1.4 工具链的组件及GDB简介
9.2 交叉工具链安装举例
9.2.1 交叉工具链安装举例(S3C2410A)
9.2.2 交叉工具链安装举例(OMAP3530)
9.3 主机Linux环境网络配置举例(S3C2410A)
9.3.1 主机Linux环境IP地址设置
9.3.2 主机Linux环境网络防火墙设置
9.3.3 主机与目标板网络通信测试
9.3.4 主机Linux环境NFS设置
9.3.5 输入、编译、运行一个程序全过程举例
9.4 主机Linux环境网络配置举例(OMAP3530)
9.4.1 主机Linux环境IP地址设置
9.4.2 主机Linux环境网络防火墙设置
9.4.3 主机与目标板网络通信测试
9.4.4 主机Linux环境NFS设置
9.4.5 输入、编译、运行一个程序全过程举例
习题、操作与实验
第10章 应用程序编程举例及驱动程序分析(一)
10.1 读取、转换时间函数编程举例
10.1.1 Linux查看、设置时间的命令
10.1.2 常用的读取、转换时间的函数
10.1.3 读取、转换时间的函数编程举例(S3C2410A)
10.1.4 例10.1 对应的Makefile文件(S3C2410A)
10.1.5 读取、转换时间的函数编程举例(OMAP3530)
10.1.6 例10.2 对应的Makefile文件(OMAP3530)
10.1.7 执行例10.2 程序前的操作步骤举例(OMAP3530)
10.2 多线程编程举例
10.2.1 Linux线程概述
10.2.2 线程、互斥量、条件变量函数
10.2.3 生产者、消费者编程举例(S3C2410A)
10.3 串行端口及标准输入/输出/错误编程举例
10.3.1 Linux标准输入/输出/错误系统调用
10.3.2 Linux标准输入/输出/错误系统调用编程举例(S3C2410A)
10.3.3 Linux标准输入/输出/错误系统调用编程举例(OMAP3530)
10.3.4 串行端口设备与文件关联及系统调用
10.3.5 串行端口设备与文件关联及系统调用编程举例(S3C2410A)
10.3.6 串行端口设备与文件关联及系统调用编程举例(OMAP3530)
10.3.7 C语言标准输入/输出/错误函数
10.3.8 C语言标准输入/输出/错误函数编程举例(S3C2410A)
10.3.9 C语言标准输入/输出/错误函数编程举例(OMAP3530)
10.4 ADC应用程序编程举例(S3C2410A)
10.4.1 ADC编程基础
10.4.2 ADC应用程序编程举例
10.5 ADC驱动程序源代码分析(S3C2410A)
10.5.1 概述
10.5.2 Linux设备驱动程序概述
10.5.3 s3c2410-adc.h头文件源代码分析
10.5.4 s3c2410.h_chip.h头文件源代码分析
10.5.5 s3c2410-adc.c设备驱动程序源代码分析
习题、操作、实验及编程
第11章 目标板出厂软件烧写实验(S3C2410A)
11.1 目标板出厂软件烧写概述
11.1.1 目标板出厂软件
11.1.2 Linux环境要烧写的文件
11.1.3 什么情况下烧写目标板出厂软件
11.1.4 烧写环境
11.2 目标板出厂软件烧写实验(一)
11.2.1 主机Windows环境下安装JTAG驱动程序
11.2.2 通过JTAG端口传送并烧写装载引导程序vivi
11.2.3 通过串口传送并烧写内核zImage
11.2.4 通过串口传送并烧写根文件系统root.cramfs
11.2.5 通过网口传送并烧写应用程序yaffs.tar.bz2
11.2.6 格式化闪存以及通过串口传送并烧写vivi
11.3 目标板出厂软件烧写实验(二)
11.3.1 通过网口传送并烧写内核zImage
11.3.2 通过网口传送并烧写根文件系统root.cramfs
11.4 目标板出厂软件烧写实验(三)
11.4.1 通过JTAG端口传送并烧写装载引导程序u-boot
11.4.2 通过网口传送并烧写内核uImage
11.4.3 通过网口传送并烧写根文件系统root.cramfs
11.4.4 通过网口传送并烧写应用程序yaffs.tar.bz2
11.5 目标板出厂软件烧写小结
习题、操作与实验
第12章 应用程序编程举例及驱动程序分析(二)
12.1 DAC应用程序编程举例及驱动程序分析
12.1.1 DAC硬件基础
12.1.2 DAC应用程序编程举例(S3C2410A)
12.1.3 DAC驱动程序源代码分析(S3C2410A)
12.2 PWM直流电机应用程序编程举例及驱动程序分析
12.2.1 PWM直流电机(S3C2410A)
12.2.2 编译、加载驱动程序模块(S3C2410A)
12.2.3 PWM直流电机应用程序编程举例(S3C2410A)
12.2.4 PWM直流电机驱动程序源代码分析(S3C2410A)
12.3 LED应用程序编程举例及驱动程序分析
12.3.1 七段LED概述
12.3.2 8×8点阵LED显示概述
12.3.3 CPLD与七段LED、8×8点阵LED连接举例(S3C2410A)
12.3.4 七段LED、8×8点阵LED应用程序编程举例(S3C2410A)
12.3.5 LED驱动程序源代码分析(S3C2410A)
习题、操作、实验及编程
第13章 装载引导程序
13.1 常见的装载引导程序
13.2 U-Boot概述
13.3 编译、烧写、运行U-Boot及装入内核
13.3.1 对标准开发板源代码进行编译、链接并烧写U-Boot
13.3.2 U-Boot等映像文件在开发板存储位置举例
13.3.3 加电运行U-Boot及U-Boot装入内核
13.4 U-Boot监视命令及环境变量
13.4.1 使用命令及在源代码中配置监视命令
13.4.2 环境变量
13.5 顶层目录、编译过程及配置头文件举例
13.5.1 U-Boot源代码顶层目录及编译指定的开发板
13.5.2 标准开发板配置头文件及举例
13.6 U-Boot启动过程及举例
习题、操作与实验
第14章 内核
14.1 内核简介
14.1.1 内核
14.1.2 内核在嵌入式Linux系统中的位置及内核组成
14.2 内核映像、Linux启动过程及输出信息
14.2.1 常见内核映像文件zImage和uImage
14.2.2 Linux启动过程简介
14.2.3 Linux启动期间控制台输出的信息
14.3 Linux内核源代码
14.3.1 获得内核源代码
14.3.2 Linux内核源代码树及内核目录
14.4 内核配置文件及配置编辑器
14.4.1 内核配置文件
14.4.2 内核配置编辑器
14.4.3 顶层.config文件内容及Kconfig文件内容举例
14.5 联编内核及联编内核模块
14.5.1 联编内核举例
14.5.2 联编内核模块举例
14.5.3 清理
习题、操作与实验
附录A Linux基础
A.1 用户和组
A.1.1 账户
A.1.2 与用户和组关联的文件
A.1.3 与用户和组相关的命令
A.2 文件系统及Linux常用命令
A.2.1 目录结构及根的基本目录
A.2.2 创建和删除目录
A.2.3 常用目录操作命令
A.2.4 文件类型及链接
A.2.5 文件和目录的权限
A.2.6 创建、修改和删除文件
A.2.7 常用文件操作命令
A.2.8 元字符
A.3 用vi输入源程序
A.3.1 vi功能简介
A.3.2 常用vi操作
A.3.3 输入、保存源程序举例
A.4 make及Makefile举例
A.4.1 make、Makefile文件内容简介
A.4.2 编译文件
A.5 主机运行用户程序举例
A.5.1 运行一个程序举例
A.5.2 输入、编译、运行程序过程总结
习题
附录B 英汉名词术语对照表
参考文献