嵌入式系统设计与实践(OReilly精品图书系列) 图书分享
嵌入式系统开发与传统软件开发存在显著差异,它要求开发者不仅要精通软件编程,还要对硬件有深入的理解,并能在资源受限的环境下进行高效、稳定的开发。 《嵌入式系统设计与实践》正是抓住了这一核心,为读者搭建了一座从软件到硬件、从理论到实践的桥梁,对于步入或渴望深入嵌入式系统领域的开发者来说,这本参考书无疑是宝贵的财富。
该书内容全面,涵盖了从系统架构设计、框图绘制到设计模式应用的整个流程。 作者以一种清晰且易于理解的方式,引导读者思考如何为处理器而非操作系统构建系统架构,并提供了应对硬件难题、设计变更和制造需求的实用技术。
本书不仅仅是一本理论书籍,更是一本实践指南,旨在帮助开发者,特别是那些从传统软件开发转型而来的工程师,系统地掌握嵌入式系统设计的核心理念与实践方法。
作为O’Reilly精品图书系列中的一本经典之作——《嵌入式系统设计与实践》(原书名:Making Embedded Systems),由经验丰富的嵌入式专家Elecia White撰写,并于2013年06月由机械工业出版社引进并翻译出版,中文版由 余清水 译,ISBN:9787111415848。
本书的核心亮点
- 注重实践,面向开发者: 本书采用了开发者熟悉的模式和技术,并阐述了如何将它们应用于嵌入式系统中。 它强调在资源有限的环境下,如何精简操作以最大化利用资源。
- 内容全面,结构合理: 从系统架构、硬件启动、硬件测试,到定时器、I/O等基础外设的使用,再到实时调度、状态机和代码组织等软件技术,本书都有涉猎。 此外,书中还探讨了堆栈行为、中断服务程序和内存管理等高级但至关重要的话题。
- 独特的章节设计: 每个章节末尾都附有一个潜在的面试问题,这不仅能帮助读者巩固所学知识,还能为求职面试做好准备,这是一个非常新颖且实用的设计。
- 专家作者,经验丰富: 作者Elecia White是一位资深的嵌入式系统顾问,拥有从DNA扫描仪到儿童玩具等多样化的产品开发经验。 她同时也是知名播客Embedded.FM的主持人,在嵌入式领域拥有广泛的影响力。
适合哪些读者?
这本书非常适合已有一定C语言或类似编程经验,并希望进入嵌入式领域的软件开发者。 同时,对于希望巩固和更新知识的嵌入式工程师来说,这本书同样是一本极佳的参考资料。 它能够帮助软硬件工程师更好地理解彼此的工作,协同完成复杂的嵌入式系统设计。
图书目录
前言
第1章 导论
1.1 编译器、编程语言以及面向对象编程
1.2 嵌入式系统开发
1.2.1 调试
1.2.2 更多挑战
1.2.3 解决问题的原则
1.3 延伸阅读
第2章 创建系统架构
2.1 构建系统框图
2.1.1 架构框图
2.1.2 控制层级图
2.1.3 层次图
2.2 从框图到架构
2.2.1 封装模块
2.2.2 分派任务
2.2.3 驱动程序接口:打开(Open)、关闭(Close)、读(Read)、写(Write)和输入输出控制(IOCTL)
2.2.4 适配器模式
2.2.5 开始设计其他接口
2.2.6 例子:一个日志接口
2.3 一个可以实践的沙盒
2.4 延伸阅读
第3章 检视硬件
3.1 硬件/软件集成
3.1.1 理想的项目流程
3.1.2 电路板调试
3.2 阅读数据表
3.2.1 遇到问题时需要查找的数据表部分
3.2.2 对软件开发者比较重要的内容
3.2.3 用数据表评估元器件
3.3 处理器是一门语言
3.4 阅读原理图
3.5 调试工具箱(和灭火器)
3.5.1 保管好电路板
3.5.2 工具箱
3.5.3 数字万用表
3.5.4 示波器和逻辑分析仪
3.6 测试硬件(和软件)
3.6.1 构建测试
3.6.2 闪存测试范例
3.6.3 命令和响应
3.6.4 命令模式
3.7 处理错误
3.7.1 一致的方法
3.7.2 错误处理库
3.7.3 调试时序错误
3.8 延伸阅读
第4章 输入、输出和定时器
4.1 触发输出
4.1.1 从寄存器开始
4.1.2 将引脚设置为输出
4.1.3 点亮LED
4.1.4 LED闪烁
4.1.5 故障诊断
4.2 将硬件和动作分离
4.2.1 特定于电路板的头文件
4.2.2 I/O处理代码
4.2.3 主循环
4.2.4 门面模式
4.3 I/O中的输入
4.3.1 按钮的简单接口
4.4 瞬间按钮动作
4.4.1 按钮按下时的中断
4.4.2 配置中断
4.4.3 去抖动开关
4.5 运行时不确定性
4.5.1 依赖注入
4.6 使用定时器
4.6.1 时间片
4.6.2 数学计算
4.6.3 定时器节拍之间的漫长等待
4.6.4 使用定时器
4.7 使用脉冲宽度调制
4.8 产品发货
4.9 延伸阅读
第5章 任务管理
5.1 调度和操作系统基础
5.1.1 任务
5.1.2 任务间通信
5.1.3 避免竞争条件
5.1.4 优先级倒置
5.2 状态机
5.2.1 状态机范例:信号灯控制器
5.2.2 以状态为中心的状态机
5.2.3 具有隐式迁移的以状态为中心的状态机
5.2.4 以事件为中心的状态机
5.2.5 状态模式
5.2.6 表格驱动的状态机
5.2.7 选择状态机的实现
5.3 中断
5.3.1 中断请求
5.3.2 保存上下文
5.3.3 从向量表中获得ISR
5.3.4 调用ISR
5.3.5 恢复上下文
5.3.6 何时使用中断
5.4 怎样不使用中断
5.4.1 轮询
5.4.2 系统节拍
5.4.3 基于时间的事件
5.4.4 一个极小型调度器
5.5 监控程序(看门狗)
5.6 延伸阅读
第6章 外设通信
6.1 应用广泛的外设
6.1.1 外部存储器
6.1.2 按钮和按键矩阵
6.1.3 传感器
6.1.4 执行器
6.1.5 显示器
6.2 种类繁多的通信方式
6.2.1 串行通信
6.2.2 并行
6.2.3 以太网和WiFi
6.3 将外设和通信结合
6.3.1 数据处理
6.3.2 增强通信的健壮性
6.3.3 修改数据
6.3.4 修改算法
6.4 延伸阅读
第7章 更新代码
7.1 板载启动装载器
7.2 构建自己的更新程序
7.2.1 修改驻留的更新程序
7.3 砖块装载器
7.3.1 将装载器复制到内存
7.3.2 运行装载器
7.3.3 复制新代码到暂存空间
7.3.4 危险时刻:擦除和编程
7.3.5 重置到新代码
7.4 安全
7.5 链接器脚本
7.6 总结
第8章 事半功倍
8.1 代码空间
8.1.1 读映射文件(第1部分)
8.1.2 简化的过程
8.1.3 库
8.1.4 函数和宏
8.1.5 常量和字符串
8.2 RAM
8.2.1 释放和分配
8.2.2 读映射文件(第2部分)
8.2.3 寄存器和局部变量
8.2.4 函数链
8.2.5 全局变量的优点和缺点
8.2.6 内存覆盖
8.3 速度
8.3.1 程序性能分析
8.3.2 优化
8.4 总结
8.5 延伸阅读
第9章 数学运算
9.1 区别快、慢运算
9.1.1 求平均值
9.2 使用已知的算法
9.3 设计与修改算法
9.3.1 多项式因式分解
9.3.2 泰勒级数
9.3.3 除以常数
9.3.4 放大输入
9.3.5 查找表
9.4 伪浮点数
9.4.1 有理数
9.4.2 精度
9.4.3 加法(和减法)
9.4.4 乘法(和除法)
9.4.5 决定误差
9.5 延伸阅读
第10章 降低功耗
10.1 理解功耗
10.2 离开房间的时候请关灯
10.2.1 关掉外围设备
10.2.2 关掉不用的I/O设备
10.2.3 关掉处理器子系统
10.2.4 降速节能
10.3 让处理器休眠
10.3.1 基于中断的代码流模型
10.3.2 深度研究主循环
10.3.3 处理器看门狗
10.3.4 避免频繁唤醒
10.3.5 处理器链
10.4 延伸阅读
如何下载嵌入式系统设计与实践(OReilly精品图书系列) 图书分享
关注老wu博客的公众号,并在公众号里发送对应的下载关键字获取下载链接
关注吴川斌的博客公众号
在公众号里给老吴发消息:
下载|嵌入式系统设计与实践电子书
或者代码
6408
建议复制粘贴过去不会码错字哟,O(∩_∩)O~
❤️ 如果这篇文章对您有帮助,欢迎打赏支持
扫描上方二维码,用微信打赏