展开全部

主编推荐语

本书以当前流行的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 本章小结
展开全部

评分及书评

3.7
3个评分
  • 用户头像
    给这本书评了
    1.0
    一本烂熟

    买这本书的初衷是深入了解磁盘头部引导扇区的组成与原理,结果这倒好 10 个章节 8 章是其他内容,还有 1 章理论和一章水字数

      转发
      评论
      用户头像
      给这本书评了
      5.0

      BootLoader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射,从而将系统的软硬件环境设置成一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常没有像 PC 中的 BIOS 那样的固件程序,因此整个系统的加载启动任务就完全由 BootLoader 来完成。

        转发
        评论

      出版方

      机械工业出版社有限公司

      机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。