3.7 用户推荐指数
互联网
类型
4.2
豆瓣评分
可以朗读
语音朗读
215千字
字数
2016-07-01
发行日期
展开全部
主编推荐语
本书以当前流行的ARM和Linux为蓝本,详细介绍了如何一步步实现可用的BootLoader。
内容简介
不同的CPU体系结构有不同的BootLoader。有些BootLoader支持多种体系结构的CPU,比如U-Boot就同时支持ARM体系结构和MIPS体系结构。除了依赖于CPU的体系结构外,BootLoader实际上也依赖于具体的嵌入式板级设备的配置。也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种CPU而构建的,要想让运行在一块板子上的BootLoader程序也能运行在另一块板子上,通常需要修改BootLoader的源程序。因此每款嵌入式产品的BootLoader都是独一无二的,但我们可以总结出开发或者维护特定BootLoader需要哪些背景知识,掌握了这些背景知识,我们就可以做到以不变应万变。
目录
- 版权信息
- 前言
- 第1章 BootLoader的概念
- 1.1 BootLoader的角色
- 1.2 BootLoader的来历
- 1.3 BootLoader的概念
- 1.3.1 MCU下的BootLoader
- 1.3.2 嵌入式ARM和Linux下的BootLoader
- 1.3.3 PC下的引导流程
- 1.4 本章小结
- 第2章 Linux开发环境
- 2.1 编辑器Vim
- 2.1.1 Vim介绍
- 2.1.2 Vim的两个基本模式
- 2.1.3 Vim的两个常用模式
- 2.1.4 Vim的启动与退出
- 2.1.5 Vim下光标的移动
- 2.1.6 Vim下的复制、粘贴和删除
- 2.1.7 Vim下的撤销和重复
- 2.1.8 Vim下的查找和替换
- 2.1.9 Vim下的文件恢复
- 2.1.10 Vim下的插件
- 2.2 编译器GCC和交叉编译器
- 2.2.1 GCC的编译流程
- 2.2.2 GCC的常用编译选项
- 2.2.3 交叉编译器
- 2.3 常用shell命令和脚本
- 2.3.1 find命令
- 2.3.2 grep命令
- 2.3.3 管道与重定向
- 2.4 工程管理Make和Makefile
- 2.4.1 Make和Makefile
- 2.4.2 Makefile中的变量
- 2.4.3 自动推导规则
- 2.4.4 嵌套的Makefile
- 2.4.5 Make伪目标
- 2.4.6 自动化变量
- 2.4.7 Make的内嵌函数
- 2.5 本章小结
- 第3章 ARM体系结构
- 3.1 处理器模式
- 3.2 异常
- 3.3 ARM寄存器
- 3.4 通用寄存器
- 3.4.1 未分组的寄存器:R0~R7
- 3.4.2 分组的寄存器:R8~R14
- 3.4.3 寄存器R15:程序计数器
- 3.5 程序状态寄存器
- 3.5.1 PSR位的类型
- 3.5.2 条件标志位
- 3.5.3 中断禁止位
- 3.5.4 模式位
- 3.6 本章小结
- 第4章 ARM指令集
- 4.1 数据处理指令
- 4.2 分支指令
- 4.3 软中断指令
- 4.4 程序状态寄存器指令
- 4.5 协处理器指令
- 4.6 加载常量的伪指令
- 4.7 本章小结
- 第5章 ARM寻址模式
- 5.1 寻址模式1——数据处理指令的寻址模式
- 5.1.1 编码格式
- 5.1.2 移位器操作数
- 5.1.3 数据处理操作——立即数
- 5.1.4 数据处理操作——寄存器
- 5.1.5 数据处理操作——立即数的逻辑左移
- 5.1.6 数据处理操作——寄存器的逻辑左移
- 5.1.7 数据处理操作——立即数的逻辑右移
- 5.1.8 数据处理操作——寄存器的逻辑右移
- 5.1.9 数据处理操作——立即数的算术右移
- 5.1.10 数据处理操作——寄存器的算术右移
- 5.1.11 数据处理操作——立即数的循环右移
- 5.1.12 数据处理操作——寄存器的循环右移
- 5.1.13 数据处理操作——扩展的循环右移
- 5.2 寻址模式2——字或无符号字节的load/store指令
- 5.2.1 编码格式
- 5.2.2 立即数偏移
- 5.2.3 寄存器偏移
- 5.2.4 比例寄存器偏移
- 5.2.5 立即数的前变址寻址
- 5.2.6 寄存器的前变址寻址
- 5.2.7 比例寄存器的前变址寻址
- 5.2.8 立即数的后变址寻址
- 5.2.9 寄存器的后变址寻址
- 5.2.10 比例寄存器的后变址寻址
- 5.3 寻址模式3——杂类load/store指令的寻址方式
- 5.3.1 编码格式
- 5.3.2 杂类load/store——立即数偏移
- 5.3.3 杂类load/store——寄存器偏移
- 5.3.4 杂类load/store——立即数的前变址寻址
- 5.3.5 杂类load/store——寄存器的前变址寻址
- 5.3.6 杂类load/store——立即数的后变址寻址
- 5.3.7 杂类load/store——寄存器的后变址寻址
- 5.4 寻址模式4——批量load/store
- 5.4.1 编码格式
- 5.4.2 批量load/store——执行后增加
- 5.4.3 批量load/store——执行前增加
- 5.4.4 批量load/store——执行后减少
- 5.4.5 批量load/store——执行前减少
- 5.4.6 用于栈操作的批量load/store
- 5.5 寻址模式5——协处理器的load/store
- 5.5.1 编码格式
- 5.5.2 协处理器的load/store——立即数偏移
- 5.5.3 协处理器的load/store——立即数的前变址寻址
- 5.5.4 协处理器的load/store——立即数的后变址寻址
- 5.5.5 协处理器的load/store——无索引
- 5.6 本章小结
- 第6章 编译和链接
- 6.1 ELF文件结构描述
- 6.2 段表
- 6.3 符号表结构
- 6.4 存储空间分配
- 6.4.1 简单的存储布局
- 6.4.2 实际采用的空间布局
- 6.5 重定位信息
- 6.5.1 重定位表项
- 6.5.2 重定位类型
- 6.6 静态链接和重定位
- 6.6.1 符号和符号表
- 6.6.2 符号解析
- 6.6.3 重定位
- 6.7 本章小结
- 第7章 链接脚本
- 7.1 链接脚本的基本概念
- 7.2 链接脚本格式
- 7.3 简单的链接脚本示例
- 7.4 简单的链接脚本命令
- 7.4.1 入口点
- 7.4.2 文件命令
- 7.4.3 格式命令
- 7.4.4 区域别名
- 7.4.5 杂类命令
- 7.5 为符号分配值
- 7.5.1 简单的分配
- 7.5.2 HIDDEN
- 7.5.3 PROVIDE
- 7.5.4 PROVIDE_HIDDEN
- 7.5.5 源代码引用
- 7.6 段命令
- 7.6.1 输出段描述
- 7.6.2 输出段名称
- 7.6.3 输出段地址
- 7.6.4 输入段描述
- 7.6.5 输出段数据
- 7.6.6 输出段关键字
- 7.6.7 输出段丢弃
- 7.6.8 输出段属性
- 7.6.9 覆盖描述
- 7.7 内存命令
- 7.8 链接脚本的表达式
- 7.8.1 常量
- 7.8.2 符号常量
- 7.8.3 符号名称
- 7.8.4 孤立的段
- 7.8.5 位置计数器
- 7.8.6 运算符
- 7.8.7 赋值
- 7.8.8 内建函数
- 7.9 本章小结
- 第8章 Linux下开发流水灯
- 8.1 GNU ARM汇编简介
- 8.2 流水灯的硬件描述
- 8.3 流水灯的汇编实现
- 8.4 流水灯的编译和链接
- 8.5 本章小结
- 第9章 U-Boot代码的分析
- 9.1 U-Boot简介
- 9.2 U-Boot目录结构
- 9.3 U-Boot配置和编译
- 9.4 U-Boot代码分析
- 9.4.1 SPL代码追踪
- 9.4.2 U-Boot代码追踪
- 9.5 本章小结
- 第10章 实现简单的BootLoader
- 10.1 STM32下的BootLoader设计
- 10.2 硬件平台pcDuino简介
- 10.2.1 pcDuino nano配置
- 10.2.2 pcDuino nano的接口和外设
- 10.2.3 平台和主芯片介绍
- 10.3 三种方式实现代码复制和跳转
- 10.3.1 方式一
- 10.3.2 方式二
- 10.3.3 方式三
- 10.4 实现BootLoader
- 10.4.1 广义上的BootLoader
- 10.4.2 如何引导Linux
- 10.4.3 引导代码实现
- 10.4.4 BootLoader引导Linux总结
- 10.5 本章小结
展开全部
出版方
机械工业出版社有限公司
机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。