深入理解BootLoader胡尔佳pdf下载pdf下载

深入理解BootLoader胡尔佳百度网盘pdf下载

作者:
简介:本篇主要提供深入理解BootLoader胡尔佳pdf下载
出版社:互动创新图书专营店
出版时间:2016-06
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

 书名:  深入理解BootLoader[按需印刷]|4972216
 图书定价: 59元
 图书作者: 胡尔佳
 出版社:  机械工业出版社
 出版日期:  2016/6/1 0:00:00
 ISBN号: 9787111485704
 开本: 16开
 页数: 0
 版次: 1-1
 内容简介
本书主要介绍BootLoader的开发理论、流程与实例,以当前流行的ARM和Linux为蓝本,详细介绍了如何一步步实现可用的BootLoader。该书既对Linux下的开发环境、编译器使用、处理器架构以及编译和链接、链接脚本的细节做了较全面的理论介绍,又结合具体的环境向读者说明了BootLoader的原理和开发流程,使读者真正懂得BootLoader是如何工作的,即便今后遇到其他处理器或者引导其他操作系统,也能熟知开发或者移植BootLoader的思路。本书是初涉BootLoader移植开发领域读者的一本不可多得的参考书。书中介绍的理论不仅仅对理解BootLoader有帮助,而且对理解计算机系统(嵌入式系统)也有启发意义,适合广大嵌入式系统爱好者和开发人员参考使用。
 目录

前言
第1章 BootLoader的概念 1
1.1 BootLoader的角色 1
1.2 BootLoader的来历 2
1.3 BootLoader的概念 6
1.3.1 MCU下的BootLoader 10
1.3.2 嵌入式ARM和Linux下的BootLoader 17
1.3.3 PC下的引导流程 18
1.4 本章小结 20
第2章 Linux开发环境 21
2.1 编辑器Vim 21
2.1.1  Vim介绍 22
2.1.2 Vim的两个基本模式 22
2.1.3 Vim的两个常用模式 24
2.1.4 Vim的启动与退出 25
2.1.5 Vim下光标的移动 26
2.1.6 Vim下的复制、粘贴和删除 28
2.1.7 Vim下的撤销和重复 28
2.1.8 Vim下的查找和替换 28
2.1.9 Vim下的文件恢复 29
2.1.10 Vim下的插件 29
2.2 编译器GCC和交叉编译器 30
2.2.1 GCC的编译流程 30
2.2.2 GCC的常用编译选项 31
2.2.3 交叉编译器 35
2.3 常用shell命令和脚本 37
2.3.1 find命令 38
2.3.2 grep命令 42
2.3.3 管道与重定向 46
2.4 工程管理Make和Makefile 49
2.4.1 Make和Makefile 49
2.4.2 Makefile中的变量 52
2.4.3 自动推导规则 53
2.4.4 嵌套的Makefile 53
2.4.5 Make伪目标 54
2.4.6 自动化变量 56
2.4.7 Make的内嵌函数 56
2.5 本章小结 60
第3章 ARM体系结构 61
3.1 处理器模式 61
3.2 异常 62
3.3 ARM寄存器 63
3.4 通用寄存器 64
3.4.1 未分组的寄存器:R0~R7 65
3.4.2 分组的寄存器:R8~R14 65
3.4.3 寄存器R15:程序计数器 66
3.5 程序状态寄存器 66
3.5.1 PSR位的类型 66
3.5.2 条件标志位 67
3.5.3 中断禁止位 68
3.5.4 模式位 68
3.6 本章小结 68
第4章 ARM指令集 69
4.1 数据处理指令 69
4.2 分支指令 73
4.3 软中断指令 74
4.4 程序状态寄存器指令 75
4.5 协处理器指令 76
4.6 加载常量的伪指令 78
4.7 本章小结 78
第5章 ARM寻址模式 79
5.1 寻址模式1——数据处理指令的寻址模式 79
5.1.1 编码格式 80
5.1.2 移位器操作数 80
5.1.3 数据处理操作——立即数 81
5.1.4 数据处理操作——寄存器 82
5.1.5 数据处理操作——立即数的逻辑左移 83
5.1.6 数据处理操作——寄存器的逻辑左移 84
5.1.7 数据处理操作——立即数的逻辑右移 85
5.1.8 数据处理操作——寄存器的逻辑右移 85
5.1.9 数据处理操作——立即数的算术右移 86
5.1.10 数据处理操作——寄存器的算术右移 87
5.1.11 数据处理操作——立即数的循环右移 88
5.1.12 数据处理操作——寄存器的循环右移 89
5.1.13 数据处理操作——扩展的循环右移 90
5.2 寻址模式2——字或无符号字节的load/store指令 90
5.2.1 编码格式 91
5.2.2 立即数偏移 92
5.2.3 寄存器偏移 93
5.2.4 比例寄存器偏移 94
5.2.5 立即数的前变址寻址 95
5.2.6 寄存器的前变址寻址 96
5.2.7 比例寄存器的前变址寻址 97
5.2.8 立即数的后变址寻址 99
5.2.9 寄存器的后变址寻址 100
5.2.10 比例寄存器的后变址寻址 101
5.3 寻址模式3——杂类load/store指令的寻址方式 103
5.3.1 编码格式 103
5.3.2 杂类load/store——立即数偏移 104
5.3.3 杂类load/store——寄存器偏移 105
5.3.4 杂类load/store——立即数的前变址寻址 106
5.3.5 杂类load/store——寄存器的前变址寻址 107
5.3.6 杂类load/store——立即数的后变址寻址 108
5.3.7 杂类load/store——寄存器的后变址寻址 109
5.4 寻址模式4——批量load/store 110
5.4.1 编码格式 110
5.4.2 批量load/store——执行后增加 111
5.4.3 批量load/store——执行前增加 112
5.4.4 批量load/store——执行后减少 112
5.4.5 批量load/store——执行前减少 113
5.4.6 用于栈操作的批量load/store 114
5.5 寻址模式5——协处理器的load/store 115
5.5.1 编码格式 115
5.5.2 协处理器的load/store——立即数偏移 116
5.5.3 协处理器的load/store——立即数的前变址寻址 117
5.5.4 协处理器的load/store——立即数的后变址寻址 118
5.5.5 协处理器的load/store——无索引 119
5.6 本章小结 119
第6章 编译和链接 120
6.1 ELF文件结构描述 122
6.2 段表 128
6.3 符号表结构 133
6.4 存储空间分配 138
6.4.1 简单的存储布局 138
6.4.2 实际采用的空间布局 139
6.5 重定位信息 140
6.5.1 重定位表项 140
6.5.2 重定位类型 142
6.6 静态链接和重定位 143
6.6.1 符号和符号表 144
6.6.2 符号解析 145
6.6.3 重定位 146
6.7 本章小结 150
第7章 链接脚本 151
7.1 链接脚本的基本概念 152
7.2 链接脚本格式 152
7.3 简单的链接脚本示例 153
7.4 简单的链接脚本命令 154
7.4.1 入口点 154
7.4.2 文件命令 155
7.4.3 格式命令 156
7.4.4 区域别名 157
7.4.5 杂类命令 159
7.5 为符号分配值 160
7.5.1 简单的分配 161
7.5.2 HIDDEN 161
7.5.3 PROVIDE 162
7.5.4 PROVIDE_HIDDEN 162
7.5.5 源代码引用 162
7.6 段命令 164
7.6.1 输出段描述 164
7.6.2 输出段名称 165
7.6.3 输出段地址 165
7.6.4 输入段描述 166
7.6.5 输出段数据 171
7.6.6 输出段关键字 172
7.6.7 输出段丢弃 172
7.6.8 输出段属性 172
7.6.9 覆盖描述 175
7.7 内存命令 177
7.8 链接脚本的表达式 178
7.8.1 常量 178
7.8.2 符号常量 179
7.8.3 符号名称 179
7.8.4 孤立的段 179
7.8.5 位置计数器 180
7.8.6 运算符 182
7.8.7 赋值 183
7.8.8 内建函数 183
7.9 本章小结 187
第8章 Linux下开发流水灯 188
8.1 GNU ARM汇编简介 188
8.2 流水灯的硬件描述 191
8.3 流水灯的汇编实现 193
8.4 流水灯的编译和链接 195
8.5 本章小结 196
第9章 U-Boot代码的分析 197
9.1 U-Boot简介 197
9.2 U-Boot目录结构 198
9.3 U-Boot配置和编译 200
9.4 U-Boot代码分析 207
9.4.1 SPL代码追踪 208
9.4.2 U-Boot代码追踪 233
9.5 本章小结 245
第10章 实现简单的BootLoader 246
10.1 STM32下的BootLoader设计 246
10.2 硬件平台pcDuino简介 251
10.2.1 pcDuino nano配置 252
10.2.2 pcDuino nano的接口和外设 253
10.2.3 平台和主芯片介绍 254
10.3 三种方式实现代码复制和跳转 255
10.3.1 方式一 255
10.3.2 方式二 258
10.3.3 方式三 259
10.4 实现BootLoader 261
10.4.1 广义上的BootLoader 261
10.4.2 如何引导Linux 264
10.4.3 引导代码实现 266
10.4.4 BootLoader引导Linu**结 267
10.5 本章小结 267
 编辑推荐