前言
ARM处理器(此处指CPU)是应用极广泛的处理器之一,主流的嵌入式产品,如手机、网络摄像机、无人机控制器、智能手表等几乎都使用ARM处理器。因此,对于有志于从事嵌入式软硬件开发的新手工程师或理工科专业的大学生而言,深度掌握ARM处理器的编程原理和技术非常重要。
我于2010年左右开始接触ARM处理器开发,先后使用过ARM7系列、ARM9系列、ARM11系列、Cortex-A8、Cortex-M3、Cortex-A53等多种ARM处理器,在仪器仪表、工控采集设备、网络摄像机等产品的研发过程中对ARM处理器理解得越来越深;后转入嵌入式教育领域,在向学生教授ARM处理器编程的过程中了解了初学者容易走入的误区和遇到的问题。这些经历促使我萌生了录制一套全面、系统、优质的ARM处理器视频课程的想法,并于2015—2016年录制完成,即“朱有鹏老师嵌入式Linux核心课程”。全套视频课程总计约400h,分为7个部分。其中第1部分主要讲解ARM处理器编程,该部分视频课程时长总计约100h。后应人民邮电出版社邀请将本套视频课程的优质部分进行整理出版,于是便有了本书。
本书最大的特点也是配套视频“朱有鹏老师嵌入式Linux核心课程”最大的特点,就是全面、系统,具有可学习性。
所谓全面,指的是本书几乎涵盖了ARM处理器的所有内核知识及周边知识。尤其是一些在很多图书中未提及的周边知识,正是这些看似并不直接属于ARM处理器的知识成为大多数初学者的学习障碍,增加了学习难度。如ARM处理器的串口通信,我在本书中不只讲了ARM处理器本身的串口通信寄存器和编程实战内容,还讲了串口通信的波特率、起始位、停止位、校验等概念,以及通信的同步和异步、通信的二进制物理层理解、时序图的解读等,这些拓展的周边知识使本书能够真正教会学习者使用ARM处理器。
所谓系统,指的是本书中知识点的前后顺序、轻重规划具有系统性。学习ARM处理器很大的一个难点就是其知识点多、复杂性高,因此很多人学习时感觉无从下手,很难把握,或总是有一种似懂非懂的感觉。因为很多人的学习是碎片化的,没有将知识点串联起来形成自己的知识体系,所以“只见树木不见森林”。要解决这个问题,就需要有人站在更高的高度,用系统化的学习材料将纷繁的知识点和技能点连接起来,帮助学习者构建自己的知识体系。本书,正是为此而生。
所谓可学习性,是我在录制“朱有鹏老师嵌入式Linux核心课程”时提出的一个概念。可学习性是指课程“容易下口”,能够被学习者更好地接受,能够让他们更舒适地学下去,从而学完、学会这些知识。为什么一套视频教程或者一本书需要具备可学习性?因为传统的视频教程或图书有“劝退率”过高的问题。这类视频教程或图书的作者在讲解时追求知识点本身的铺排、语言表达的凝练、章节组织的完美、篇幅的合理等,然而没有考虑到学习者本身并不一定是“完美的学习者”。尤其是在图书本身内容丰富又厚实,技术性很强而没有趣味性和娱乐性,又不是课堂教材,没有强制性的学习和考试要求等情况下,坚持读完书、学下去成了“学会”的最大障碍,这就是典型的没有可学习性。
以ARM处理器技术为代表的嵌入式技术,是一种内容丰富、技术知识点多、学习周期长、学习难度大的综合性的且具有深度的IT技术。本书便是为立志攀爬这样一座高山的“萌新学员”准备的“工具包”和“指导图”,预祝大家攀上高峰、成就自我!
朱有鹏
2023年4月