前言
ARM公司目前已成为全球最重要的科技公司之一,究其原因,一方面,它低功耗的技术路线与移动互联时代的需求高度契合,另一方面源于其主导的庞大生态圈。在这个商业生态系统里,ARM公司并不直接从事芯片的设计和制造,不出售任何处理器。ARM公司有超过1000家授权合作伙伴,涉及领域从移动端到PC端、服务器端,再到汽车端、IoT端。基于ARM架构的设备在智能手机、车联网、物联网等领域的市场份额超过 90%,同时凭借其低功耗、高性价比的优势,在计算机与服务器领域增长势头强劲。预计到2035年,将有超过1万亿台智能电子设备实现互联,从各种传感器、手机、家电、汽车,到通信基站、云服务器,可以说,基于ARM架构的芯片无处不在。
基于ARM架构开发产品的相关工作非常热门,但是与这个领域相关的学习内容跨度很大,涉及软件、硬件、算法和操作系统等。对初学者来说,入门嵌入式开发很难,往往不知道从何入手,很容易就迷失了方向,甚至半途而废,主要原因是很多初学者不清楚学习该领域知识的方法及路径。本书为初学者提供了具体方法和实践指导,希望对有志从事嵌入式开发的人员有所帮助。
本书具有以下特点。
一是循序渐进,由浅入深。本书针对零基础的初学者,以FS4412开发板(基于ARM Cortex-A9架构)为例,首先从开发环境的安装和配置及ARM基本指令等相关基础知识开始讲解,然后详细说明常见硬件的功能原理,进而结合硬件原理图、用户手册逐个分析这些硬件的驱动编程方法,最后介绍开源项目U-Boot的使用及启动程序,使读者将ARM相关知识点融会贯通。
二是实例丰富,内容翔实。本书中包含大量汇编实例,且所有汇编指令都在KEIL软件中测试过;硬件裸机驱动源程序均在开发板上调试过,并有详细的分析注解;U-Boot的启动源程序和U-Boot中的网络协议栈也有详细的程序注解,使读者能够复现实例,学以致用。
三是提供配套电子资源。本书的配套资源包含安装工具、源程序、PPT课件等,读者可到公众号“一口Linux”后台回复关键字“ARM”获取。
在学习本书之前,读者需要熟悉C语言编程并会使用一些常用的Linux命令。在学习本书的过程中,建议读者带着以下问题来阅读本书。读者在带着问题学习本书时,能更加深入理解相关内容,灵活进行项目开发。
(1) ARM有哪些工作模式?
(2)各设备驱动使用的寄存器有哪些?功能是什么?
(3)系统上电后,执行的第一条指令是什么?
(4)在C语言环境下调用函数时,参数是如何传递的?
(5)当实现同样的功能时,为什么有些C语言程序的执行效率比汇编语言的高?
(6)异常源有哪些?
(7)什么是异常向量表?
(8)如何使能关闭中断?
(9)中断发生后CPU是如何处理的?
(10) CPU如何操作LED、按键、蜂鸣器、滑动变阻器、RTC、看门狗、MPU6050等常见外设并使它们有条不紊地工作?
(11) U-Boot的启动流程是什么?如何实现程序自搬移?
(12) U-Boot是如何实现一个简单的网络协议栈的?
本书能够顺利出版首先要感谢公众号“裸机思维”的创始人—王卓然,他提供了部分章节的技术支持,还要感谢华清远见的硬件平台提供了高质量的技术资料。由于编者编写时间紧迫,加之水平所限,书中不妥之处在所难免,恳请读者批评指正。对于本书提出批评和建议,可以在公众号“一口Linux”下留言,欢迎交流。
彭丹、周海涛于南京
2022年11月