内容简介
第一篇 工欲善其事,必先利其器
第1章 嵌入式系统概述
1.1 嵌入式系统基础知识
1.1.1 嵌入式系统简介
1.1.2 嵌入式系统的特点
1.1.3 嵌入式系统的发展历史
1.1.4 嵌入式系统的组成
1.1.5 嵌入式操作系统简介
1.1.6 嵌入式系统开发概述
1.2 基于ARM架构的S5PV210处理器
1.2.1 ARM微处理器概述
1.2.2 ARM流水线技术的发展
1.2.3 ARM Cortex-A8处理器介绍
1.2.4 ARM Cortex-A8寄存器组介绍
1.2.5 SAMSUNG S5PV210处理器介绍
1.3 本章小结
第2章 嵌入式Linux开发环境搭建
2.1 交叉开发模式
2.1.1 嵌入式交叉开发模式介绍
2.1.2 硬件需求
2.2 软件环境搭建与配置
2.2.1 宿主机Linux操作系统的安装
2.2.2 配置宿主Linux操作系统
2.2.3 在宿主机上安装、配置开发环境
2.2.4 制作交叉编译工具链
2.3 本章小结
第3章 常用开发工具和命令的使用
3.1 Windows环境下的工具介绍
3.1.1 代码阅读、编辑工具Source Insight
3.1.2 文件传输工具CuteFTP
3.1.3 终端仿真工具SecureCRT
3.2 Linux环境下的工具介绍
3.2.1 代码阅读、编辑工具
3.2.2 终端访问工具
3.3 嵌入式Linux系统常用命令介绍
3.3.1 编辑命令vi(vim)
3.3.2 常用13个命令介绍
3.3.3 SD卡烧写命令df、dd
3.4 本章小结
第4章 嵌入式编程基础知识
4.1 GNU ARM常用汇编指令介绍
4.1.1 相对跳转指令b和bl
4.1.2 数据传送指令mov和地址读取伪指令ldr
4.1.3 内存访问指令ldr、str、ldm、stm
4.1.4 加减指令add、sub
4.1.5 程序状态寄存器访问指令msr、 mrs
4.1.6 其他伪指令
4.2 ARM-Thumb子程序调用(ATPCS)规则介绍
4.2.1 寄存器使用规则
4.2.2 数据栈使用规则
4.2.3 参数传递规则
4.3 ARM交叉工具链介绍
4.3.1 编译工具arm-linux-gcc
4.3.2 链接工具arm-linux-ld
4.3.3 对象生成工具arm-linux-objcopy
4.3.4 反汇编工具arm-l inux-obj dump
4.4 Makefile简介
4.4.1 基本规则
4.4.2 make是如何工作的
4.4.3 变量的用法
4.4.4 常用函数介绍
4.5 本章小结
第二篇 千里之行,始于足下
第5章 基于Cortex-A8的S5PV210启动流程介绍
5.1 S5PV210启动流程概述
5.1.1 外部启动介质介绍
5.1.2 iROM启动的优势
5.2 S5PV210上电初始化及内存空间分布
5.2.1 启动流程
5.2.2 空间分布
5.2.3 SD卡引导块分配情况介绍
5.2.4 iROM中的时钟配置
5.3 S5PV210上的程序烧写介绍
5.3.1 程序烧写概述
5.3.2 制作BL1头信息
5.3.3 烧写SD卡
5.3.4 制作Shell脚本
5.4 本章小结
第6章 通用输入/输出接口GPIO
6.1 GPIO控制技术概述
6.1.1 GPIO的介绍
6.1.2 S5PV210的GPIO寄存器
6.1.3 实验用到的寄存器详解
6.2 S5PV210的GPIO应用实例
6.2.1 实验介绍
6.2.2 程序设计与代码详解
6.3 本章小结
第7章 通用异步收发器UART
7.1 UART的原理及S5PV210的UART介绍
7.1.1 UART通信的基本原理
7.1.2 S5PV210的UART介绍
7.2 S5PV210的UART应用实例
7.2.1 实验介绍
7.2.2 程序设计与代码详解
7.2.3 实例测试
7.3 本章小结
第8章 中断体系结构
8.1 S5PV210中断体系结构
8.1.1 中断体系结构概述
8.1.2 中断控制寄存器介绍
8.2 S5PV210的中断应用实例
8.2.1 实验介绍
8.2.2 程序设计与代码详解
8.2.3 实例测试
8.3 本章小结
第9章 系统时钟和定时器
9.1 S5PV210的时钟体系结构
9.1.1 S5PV210的时钟域和时钟源
9.1.2 S5PV210的时钟应用和配置流程
9.1.3 S5PV210时钟控制寄存器介绍
9.2 S5PV210 PWM定时器
9.2.1 S5PV210 PWM定时器概述
9.2.2 S5PV210定时器
9.2.3 PWM定时器的寄存器介绍
9.3 S5PV210时钟和定时器应用实例
9.3.1 实验介绍
9.3.2 程序设计与代码详解
9.3.3 实验测试
9.4 本章小结
第10章 S5PV210存储控制器
10.1 S5PV210存储控制器介绍
10.1.1 存储控制器概述
10.1.2 DRAM存储控制器
10.1.3 与外设的接线方式
10.1.4 DDR2 SDRAM概述
10.1.5 S5PV210 DDR2初始化顺序
10.1.6 存储控制器的寄存器介绍
10.2 存储控制器应用实例
10.2.1 实验介绍
10.2.2 程序设计与代码详解
10.2.3 实验测试
10.3 本章小结
第11章 S5PV210 Nand Flash控制器
11.1 Nor Flash与Nand Flash介绍
11.1.1 Flash闪存
11.1.2 Nor Flash与Nand Flash比较
11.1.3 Nand Flash的物理结构
11.1.4 Nand Flash的访问方法
11.2 S5PV210 Nand Flash控制器介绍
11.2.1 Nand Flash控制器的特性
11.2.2 Nand Flash的模块图
11.2.3 Nand Flash的引脚配置
11.2.4 Nand Flash存储控制器配置
11.2.5 Nand Flash寄存器介绍
11.2.6 Nand Flash控制器的ECC校验方法
11.3 Nand Flash控制器应用实例
11.3.1 实验介绍
11.3.2 程序设计与代码详解
11.3.3 实例测试
11.4 本章小结
第12章 LCD控制器
12.1 LCD介绍
12.1.1 LCD的分类
12.1.2 LCD的接口
12.2 S5PV210LCD控制器
12.2.1 S5PV210 LCD控制器概述
12.2.2 S5PV210 LCD控制器主要特性介绍
12.2.3 S5PV210 LCD控制器功能介绍
12.2.4 S5PV210 TFT LCD的操作
12.2.5 S5PV210 LCD控制器编程方法介绍
12.2.6 S5PV210 LCD控制器主要寄存器介绍
12.3 LCD控制器应用实例
12.3.1 实验介绍
12.3.2 程序设计与代码详解
12.3.3 实例测试
12.4 本章小结
第三篇 欲穷千里目,更上一层楼
第13章 移植U-Boot
13.1 Bootloader介绍
13.1.1 Bootloader概述
13.1.2 Bootloader的结构和启动方式
13.1.3 Bootloader操作模式和安装位置
13.1.4 如何编写Bootloader
13.1.5 U-Boot与内核之间的交互
13.2 移植U-Boot到S5PV210开发板
13.2.1 U-Boot简介
13.2.2 U-Boot源码结构
13.2.3 U-Boot配置、编译与SPL介绍
13.2.4 U-Boot启动过程源码分析
13.2.5 U-Boot下的驱动移植
13.2.6 添加启动菜单
13.3 本章小结
第14章 Linux内核移植和根文件系统制作
14.1 Linux内核概述
14.1.1 Linux内核发展及其版本特点
14.1.2 Linux内核源码获取
14.1.3 内核源码结构及Makefile分析
14.1.4 Linux内核的Kconfig介绍
14.1.5 Linux内核配置选项
14.2 Linux内核移植
14.2.1 Linux内核启动过程分析
14.2.2 修改内核支持S5PV210平台
14.3 本章小结
第15章 构建Linux根文件系统
15.1 Linux文件系统概述
15.1.1 文件系统概述
15.1.2 Linux根文件系统目录结构
15.1.3 文件系统工作原理
15.2 移植Busybox
15.2.1 Busybox介绍
15.2.2 Busybox的目录结构
15.2.3 内核init进程及用户程序启动过程
15.2.4 配置/编译/安装Busybox
15.2.5 构建根文件系统
15.3 本章小结
第16章 驱动相关移植
16.1 Linux驱动程序概述
16.1.1 驱动程序、内核和应用程序之间的关系
16.1.2 驱动程序分类
16.1.3 驱动程序开发步骤
16.1.4 驱动程序的加载和卸载
16.2 网卡驱动移植
16.2.1 DM9000网卡特性
16.2.2 DM9000驱动移植
16.3 Nand驱动移植
16.3.1 S5PV210平台Nand驱动移植
16.3.2 8位硬件ECC和Nand启动
16.4 LCD驱动移植
16.4.1 LCD驱动概述
16.4.2 LCD驱动移植
16.5 其他驱动移植
16.5.1 支持SD卡驱动
16.5.2 LED子系统驱动移植
16.5.3 支持RTC驱动
16.5.4 支持1-wire单总线驱动
16.6 本章小结
参考文献