作者:丹妮尔·拉卡梅拉(Danielle Lacamera)
发布时间:2018年
目标受众:入门级工程师(0 – 3年的经验)
雅各布的评分:5星
对于希望对微控制器硬件有更深入了解的入门级工程师,Embedded Systems Architecture是一本极好的书。本书涵盖了所有基础知识,而这些基础知识通常要么很快被大学封面覆盖,要么被完全跳过。例如,在关于内存管理的第5章中,作者从通用级别开始,以Arm Cortex-M作为参考来描述微控制器的内存模型。他研究了不同的内存区域,解释了它们如何映射到链接器文件中,然后详细讨论了堆栈,堆和内存池。在本章的最后,内存保护单元甚至包含有关如何使用它们的示例代码。
这本书很好地平衡了关于微控制器如何工作的理论与有关如何完成工作的代码示例的平衡。例如,在第4章“启动过程”中,讨论了启动过程的每个元素,例如.bss节初始化,然后是示例代码,该示例代码显示了实际系统中的代码外观。我特别喜欢这本书展示了一个示例,该示例说明了如何找到引导加载程序和应用程序代码可以使用的共享库,以消除代码重复。这是我在《 MCU的Bootloader设计技术》课程中介绍的内容,但是在我记得阅读的任何嵌入式系统文献中都没有提到这一点。
第6章和第7章很好地为读者提供了有关如何在微控制器外设中工作的概述和示例代码。检查了几种外设,其中包括示例代码,例如GPIO,SPI,UART和I2C。看门狗定时器上还花费一些时间,它是每个嵌入式系统中的关键组件,需要考虑周全才能正确实现。 (您可能想签出我的 看门狗纸在这里)。
这本书中我最喜欢的部分是第10章,并行任务和计划,因为它为开发人员提供了有关如何在系统中计划任务的基础知识。本章介绍了如何编写任务计划程序,并且超出了通常给协作计划程序提供的简单,高级的处理方法。本章演示如何编写将每个任务或线程视为自己的半独立程序,并且必须进行调用以产生CPU的调度程序。有趣的是,有关如何通过保存和恢复任务的CPU寄存器以及维护各种任务的状态来正确执行上下文切换的讨论。本章很重要,因为它为开发人员提供了编写RTOS或至少意识到商业或开源RTOS幕后发生的事情所必需的基础知识。
我强烈建议您,如果您是嵌入式系统的新手,并且有兴趣学习阅读本书的有关底层微控制器硬件和软件的更多信息。这是迄今为止我所见过的最全面的书,涉及微控制器的启动,引导,内存和任务管理。如果您已经是一位经验丰富的开发人员,那么第10章将是您最感兴趣的部分,但也可能没有必要,除非您对调度算法以及Arm Cortex-M处理器在后台如何进行调度感兴趣。