内容简介
第一部分 裸机编 程
第1章 嵌入式系统编程简介
1.1什么是嵌入式系统
1.2裸机编程
1.3学习嵌入式系统编程
1.4嵌入式系统的软件层
1.5工具和硬件平台
1.6虚拟硬件和真实硬件之间的区别
1.7小结
第2章 Android模拟器内里
2.1虚拟硬件概述
2.2配置Android虚拟设备
2.3硬件接口
2.4串口
2.5定时器
2.6小结
第3章 设置开发环境
3.1主机和客户端环境
3.2开发环境的设置
3.3下载并安装Android SDK
3.4为ARM下载并安装GNU工具链
3.5集成开发环境
3.6用户的第一个ARM程序
3.7构建二进制文件
3.8在Android模拟器中运行
3.9示例项目的makefile
3.10小结
第4章 链接器脚本和内存映射
4.1内存映射
4.2链接器
4.2.1符号解析
4.2.2重定位
4.2.3段合并
4.2.4段布局
4.3链接器脚本
4.4 RAM中数据的初始化
4.4.1指定加载地址
4.4.2将.data复制到RAM中
4.5小结
第5章 使用C语言
5.1裸机环境中的C启动
5.1.1堆栈
5.1.2全局变量
5.1.3只读数据
5.1.4启动代码
5.2调用约定
5.2.1从汇编语言代码中调用C函数
5.2.2从C代码中调用汇编语言函数
5.3 Goldfish串口支持
5.3.1检查数据缓冲区
5.3.2数据输入和输出
5.3.3串口函数的单元测试
5.4小结
第6章 使用C库
6.1 C库的变体
6.1.1操作系统中的C库变体
6.1.2裸机环境中的C库变体
6.2 Newlib C库
6.3通用启动代码序列
6.4 CS3链接器脚本
6.5 Goldfish平台的自定义CS启动代码
6.6系统调用实现
6.7运行并调试库
6.8在QEMU ARM半主机中使用Newlib
6.8.1 Newlib C中的半主机支持
6.8.2半主机的示例代码
6.9小结
第7章 异常处理和定时器
7.1 Goldfish中断控制器
7.2最简单的中断处理程序
7.2.1中断支持函数
7.2.2最简单中断处理程序的实现
7.3嵌套中断处理程序
7.3.1嵌套中断处理程序的实现
7.3.2测试嵌套中断并探讨处理器模式转换
7.4测试系统调用/软件中断
7.5定时器
7.5.1 Goldfish特有的定时器函数
7.5.2 U-Boot API
7.6实时时钟
7.7小结
第8章 Goldfish平台中的NAND闪存支持
8.1 Android文件系统
8.2 NAND闪存的属性
8.3 Goldfish平台中的NAND闪存编程接口
8.4内存技术设备支持
8.5 MTD API
8.5.1支持NAND闪存的U-Boot API
8.5.2 Goldfish NAND闪存驱动程序函数
8.6 NAND闪存编程接口测试程序
8.6.1来自Linux内核的NAND闪存信息
8.6.2 NAND闪存测试程序
8.7小结
第二部分 U-Boot
第9章 U-Boot移植
9.1 U-Boot简介
9.2下载并编译U-Boot
9.3使用GDB调试U-Boot
9.4将U-Boot移植到Goldfish平台中
9.4.1创建一个新板
9.4.2针对处理器的修改
9.4.3针对板的修改
9.4.4设备驱动程序修改
9.5小结
第10章 使用U-Boot启动Goldfish内核
10.1构建Goldfish内核
10.2内置工具链和内核源代码
10.3在模拟器中运行并调试内核
10.4从NOR闪存启动Android
10.4.1创建RAMDISK映像
10.4.2创建闪存映像
10.4.3启动闪存映像
10.4.4闪存映像的源级调试
10.5从NAND闪存启动Android
10.5.1准备system.img
10.5.2从NAND闪存启动
10.6小结
第三部分 Android系统集成
第11章 创建自己的AOSP和CyanogenMod
11.1 AOSP和CyanogenMod简介
11.2创建Android虚拟设备
11.3 AOSP Android模拟器构建
11.3.1 AOSP构建环境
11.3.2下载AOSP源
11.3.3构建AOSP Android模拟器映像
11.3.4测试AOSP映像
11.4构建CyanogenMod Android模拟器
11.4.1下载CyanogenMod源
11.4.2构建CyanogenMod Android模拟器映像
11.4.3测试CyanogenMod映像
11.5小结
第12章 定制Android并创建自己的Android ROM
12.1在AOSP中支持新硬件
12.1.1使用AOSP构建内核
12.1.2使用AOSP构建U-Boot
12.1.3使用U-Boot从NAND闪存启动Android
12.2在CyanogenMod中支持新硬件
12.2.1使用CyanogenMod构建内核
12.2.2构建U-Boot并启动CyanogenMod
12.3小结
附录A 构建本书的源代码
附录B 在本书中使用Repo