前言
嵌入式系统自20世纪70年代以来,至今已有30多年发展历史。嵌入式系统大致经历了四个发展阶段。
(1)第一阶段是以可编程序控制器系统为核心的研究阶段;
(2)第二阶段是以嵌入式中央处理器CPU为基础,以简单操作系统为核心的阶段;
(3)第三阶段是以嵌入式操作系统为标志的阶段;
(4)第四阶段是基于网络操作的嵌入式系统发展阶段。
近几年,嵌入式系统技术得到了广泛的应用和爆发性的发展,分布控制、无线传感、数字化通信、云计算、可重构计算、多媒体网络及应用等新兴技术的出现为嵌入式产业的研究及应用注入了新的活力,而面向实时信号处理算法的DSP产品则向着高速度、高精度、低功耗的方向发展。随着硬件实时性要求的提高,嵌入式系统的软件规模也不断扩大,逐渐形成了实时多任务操作系统(RTOS),并开始成为嵌入式系统的主流。这一阶段嵌入式系统的主要特点是:操作系统的实时性得到了很大改善,已经能够运行在各种不同类型的微处理器上,具有高度的模块化和扩展性。此时的嵌入式操作系统已经具备了文件和目录管理、设备管理、多任务、网络、图形用户界面等功能,并提供了大量的应用程序接口,从而使得应用软件的开发变得更加简单。随着互联网应用的进一步发展,互联网技术与信息家电、工业控制技术等日益紧密结合,嵌入式设备与互联网的结合、物联网终端系统成为嵌入式技术未来研究与应用的重点。近几年中国嵌入式芯片和嵌入式软件技术的突飞猛进,已成为世界众多企业家的共识,而“中国制造”也推动了嵌入式的高速发展,同时也为中国嵌入式产业的发展提供了良好的机遇。因此普及嵌入式技术,加快嵌入式技术人才的培养迫在眉睫。
本书内容丰富,辅以图表和代码的讲解,使思路更为清楚直观,通俗易解。本书尤其强调实践动手能力,本书的实验都以“理论+在线仿真实践”的方法贯穿始终,从简单到复杂,循序渐进,层层深入。并且配有齐全的实例程序和完备的程序注释,具有较强的实践性和应用性。
本书以实际的开发板为线索,共12章,包括十个常见硬件接口编程,结合各种外围接口电路原理和设计、接口硬件结构及时序、datasheet的理解,给出了调试通过的接口程序,并辅以JLINK/ULINK在线实时仿真调试。
第1章:嵌入式硬件概述 本章主要以ARM为例描述了嵌入式硬件,并对硬件电路的设计做出了具体的描述。设计一个电子产品需要三大步骤。硬件电话的设计很大程度上决定了驱动代码的编写,对已成品的硬件进行驱动编程,主要是对硬件电路图的识别,即对框图、原理图、PCB图、时序图等的理解。
第2章:GPIO接口编程 本章主要介绍的是ARM通用的I/O端口GPIO。它是一组输入引脚或输出引脚,CPU对它们能够进行存取。本章节用了两个实验:蜂鸣器和LED灯GPIO端口控制实验,从硬件原理图、数据手册分析等来说明GPIO的用法,首先通过配置寄存器将其配置成输入、输出或者其他特殊功能模式,然后通过数据寄存器来控制端口输入电压的高低,从而达到控制所连接端口硬件的目的。
第3章:UART串口通信 本章主要介绍串口通信的原理及通信方式,UART的基本概念,串口通信最重要的参数等,并根据对UART通信原理,结合对UART相关寄存器的理解做出程序接口设计,实现对串口的收/发功能。
第4章:AD转换接口 本章主要学习AD转换的概念、分类及主要技术指标,AD转换的四个主要过程:采样、保持、量化和编码,结合AD的硬件设计原理配置ADCCON寄存器,使能预配置比例因数,设置预配置比例因数值,配置AD转换通道号,做出ADC程序的设计方案并实现。
第5章:中断INT接口 本章首先介绍了中断的概念,然后介绍了2440中断相关寄存器的功能及配置,在异常中断流程一节中,中断处理函数的入口地址关联在中断向量表中。中断发生时,系统硬件强制程序跳转到了表中相关地址处,该地址是一个跳转指令,跳转到中断函数地址解析程序IRQ_Handler,最终转到中断处理函数(SystemIrqHandler)。接着对中断优先级进行了叙述。最后以内部中断看门狗中断定时器,和外部中断键盘中断的程序剖析了中断的整个过程。
第6章:RTC实时时钟 本章学习了为系统提供可靠时间的RTC模块,RTC为运行的应用程序提供了一个时间基准。当前的日期和时间由一组时间寄存器提供,每秒更新一次,RTC的外围电路简单却实用,RTC模块有三种功能:产生时钟滴答、实时计时和作为系统的触发唤醒器。
第7章:触摸屏接口 本章讲述了人机交互较为重要的一种工具触摸屏,首先对常见的几种触摸屏做了简单的介绍,接着以电阻式触摸屏为例对四线电阻式触摸屏的物理结构及其等效电路、触摸屏的接口原理及相关寄存器的配置方法进行了详细讲述,最后在理解触摸屏相关数据手册及触摸屏中断原理的基础上对触摸屏驱动进行了设计并讲解了程序实现的整个过程。
第8章:LCD显示屏接口 本文先对LCD显示屏的发明及原理做了总体的介绍,接着对ARM芯片上的LCD控制器的逻辑进行了详细的叙述,8.3节也是最重要的一节,对LCD中常见的种类TFT屏时序做了详细的分析和图解,并对根据TFT屏的时序对LCD控制器的配置做了说明及方法的介绍。8.4节中针对LCD控制器的配置实现对LCD屏的驱动及代码。
第9章:IIC接口控制 本章主要介绍的是IIC接口,首先介绍IIC接口的概念及总线特点。接着对IIC控制器进行了讲解,最后根据IIC的四种操作模式设计并实现了IIC程序。
第10章:SD卡接口控制 本章主要介绍的是SD卡接口,SD卡需要高速读/写,特设有两个访问接口:SD模式接口和SPI接口。其中SD接口是为高速专有设备而设计,使设备能对卡进行高速可靠的传输。
第11章:MMU内存管理单元 本章主要介绍的MMU,它负责虚拟地址到物理地址的映射,MMU使得每个用户进程拥有自己独立的地址空间,并通过内存访问权限的检查保护每个进程所用的内存不被其他进程破坏。MMU重点就在于地址映射:页表的结构与建立、映射的过程。本章主要是理论部分,可作为MMU实现机制的参考。
第12章:ARM-Keil集成开发环境 本章主要介绍了ARM RealView MDK集成开发环境的使用,本书所有章节的实验都是基于这个开发环境的,所以必须要熟练掌握REALVIEW MDK的配置、使用及相关功能,以及Keil MDK编译器与JLINK/ULINK等仿真器的使用。
本书所配套的PPT、课程大纲、代码等内容,可到华信教育资源网(www.hxedu.com.cn)免费下载。
在编写本书的过程中,得到了中软国际的很多领导、同事及朋友的支持和帮助。特别是CTO办公室的各位专家同仁,在此表示感谢。由于作者知识所限,书中难免有不足之外,敬请广大读者海涵,并恳请赐正。
编者