基于ARM 32位高速嵌入式微控制器
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第2章 嵌入式微控制器项目流程化概述

本章内容提要

授人以鱼不如授人以渔。

本章将就项目的定义及进行项目流程化的原因进行阐述,同时给出了嵌入式微控制器项目流程化的五个步骤:

❖ 任务分析

❖ 控制器选型

❖ 软/硬件设计

❖ 程序调试

❖ 代码固化

在最后还对常用集成开发环境进行了简要介绍。

在本章,我们不仅会介绍嵌入式微控制器项目开发的基本流程、相关知识点和技术方法,同时,嵌入式技术离不开具体的产品,而产品又离不开具体的市场和经济行为。因此,在本章中还会就一些与嵌入式产品开发相关的市场和经济问题进行综合阐述。

2.1 什么是项目

根据项目的定义,不论个人兴趣、学习课题、工作任务等涉及要达成预期目的的都可以算做项目。

2.2 为什么要进行项目流程化

报纸上经常会出现这样的新闻,讲述两个程序员在经过改造简陋的车库中,如何编出了超过大型团队工作量的重要程序《人月神话》成书于1975年,根据时间判断,当时的新闻应该讲述的是史蒂夫·乔布斯和史蒂夫·沃兹尼亚克进行苹果公司初期创业的情形。。接着,每个编程人员准备相信这样的神话,因为他知道自己能够以超过产业化团队的1000代码行/年的生产率来开发任何程序。

为什么不是所有的产业化队伍都会被这种专注的二人组合所替代?……

这段文字摘自《人月神话》《人月神话》(32周年中文纪念版)[美]弗雷德里克·布鲁克斯/著,UMLChina翻译组 汪颖译。,讲述了两个天才程序员的故事,并用反问的语气否定了以纯粹激情进行项目开发的推广价值。

事实上,这段文字写于20世纪70年代中期,当时的通用计算机使用的是Intel 8080处理器Intel 8080为英特尔早期发布的处理器。它于1974年4月发布,是8位处理器,集成6000只晶体管。,工作频率为2MHz,1KB存储器第一台微型计算机Altair 8800(“牛郎星”)最初只有256字节存储器,后来增加到4KB。;而如今通用计算机的处理器的工作频率已经高达3GHz,多核心(双核、四核,甚至八核以上),存储器更是以GB计。过去的软件代码限制在很小的空间,而今天,一个大型软件动辄上百万行,代码以GB计,即使嵌入式微控制器代码的尺寸也在MB量级。

我们不否认天才的存在,更何况有成功的事实进行佐证。但如今面对的电子系统复杂程度的确异于往常,因此,需要理顺嵌入式开发的思路,这样,无论是个人开发陶醉其中,还是工作中团队合作与人协同都是有益的。

本章中,项目流程化仅仅是帮助初学者理顺嵌入式开发的思路,并非要阐述或者开创什么理论,更无关项目管理等内容。

所谓流程化,即形成一定的做事方法。每个人的特点不同,但是对于事物的认知过程是相同的,通过本章提供的解决问题的思路,希望读者可以探寻到适合自己的方法。

2.3 嵌入式微控制器项目流程化的五个步骤

在嵌入式项目开发过程中,主要有五个步骤:任务分析、控制器选型、软/硬件设计、程序调试、代码固化,如图2-1所示。

图2-1 项目流程化的五个步骤

由于嵌入式项目开发是一个实践性很强的技术活动,为了避免单纯的说教导致所描述的内容空洞,本章将针对一个具体案例进行说明,基础篇后续章节也将在此基础上展开。同时,本章进行项目流程化的目的在于提供解决问题的思路,本章和基础篇后续章节的一些内容在篇幅上进行了凝炼,只点出关键部分,为读者进一步学习提供指南而不意欲取代相关参考书籍。毕竟嵌入式技术涉及的具体内容博大而精深。

2.3.1 任务分析

《礼记·中庸》《礼记》是一部儒家经典,结集了《中庸》、《大学》、《礼运》等。到南宋时,《中庸》从《礼记》中抽出来,与《论语》、《孟子》、《大学》并列成了四书五经中的“四书”。有云:“凡事预则立,不预则废”。

《孙子兵法》中讲究“谋定而后动”。

可见不论儒家还是兵家,古人对于做事情前的准备工作都是非常重视的。由于嵌入式系统以应用为中心,对系统的可靠性、系统的开发周期、体系成本等都有严格的要求。因此,嵌入式系统开发首先要对任务进行详细的分析,使得系统能较好地满足要求。任务分析主要包括对系统功能的分析、对系统软/硬件的特殊要求、实时性的水平、系统模块的分解、要达到的水平等。

下面我们看一个具体案例的任务分析(见图2-2)。

图2-2 任务分析示意图

需要说明的是,由于嵌入式系统的应用场景非常多,任务分析的情况和种类也很多,并没有一个标准化的模板。一般来说,任务分析的目的在于将项目的需求(包括限制条件)尽可能地梳理出来,为后续工作提供参考依据。

2.3.2 控制器选型

在完成任务分析后就要开始控制器选型工作了,因为控制器是整个系统的核心,整个系统功能决定控制器应当具备的性能指标,而外围电路都是围绕控制器这个核心的。

俗话说“好的开始是成功的一半”。对于嵌入式微控制器,“正确的选型是成功的一大半”。如果控制器选型合适,就可以节省很多硬件设计和软件编程工作,因为,各个厂家的嵌入式微控制器一般都有不同的外设和接口组合,这些外设和接口在使用时可以直接通过读写寄存器的方式进行,而不用像嵌入式微处理器(包括DSP处理器)那样需要在硬件设计时增加这些外设和相应电路,也不用像FPGA那样要用大量的组合和时序逻辑来实现。

如果说FPGA和嵌入式微处理器依靠和外设尽可能少的耦合从而实现其灵活性,那么嵌入式微控制器通过选用不同厂商的各具特色的产品实现针对应用场景的产品定制,以获得面积(体积)和功耗方面的优势。

因此,嵌入式系统开发过程中控制器的选型是一项承前启后“承前”主要是指承接任务分析环节,“启后”是针对后续软/硬件设计、程序调试等来说的。的重要工作。

控制器选型可大致分为4个步骤:性能需求、市场调研、系列匹配和定型,如图2-3所示。

图2-3 嵌入式微控制器选型流程示意图

1.性能需求

首先,要根据任务分析结果确定嵌入式微控制器的性能需求。嵌入式微控制器的主要性能指标包括:

● 工作频率;

● 功耗;

● 所采用处理器的内核(ARM处理器);

● 片内程序存储空间大小;

● 片内存储器容量;

● 可用I/O数量;

● 其他外设。

此外,嵌入式微控制器外围电路情况、外设扩展能力、软件支持工具、是否内置调试工具、供应商能否提供评估板、开发资源等都是在性能需求阶段需要考虑和整理的。

一般来说,在满足性能需求的条件下尽可能选择自己熟悉的嵌入式微控制器,这样,开发起来轻车熟路,之前积累的开发资料和经验也可以很好地为本次开发服务。

但是,市场和需求是变化的。有时候因为原有的嵌入式微控制器不能符合新的需求(性能、功能、价格等方面),或者原有的嵌入式微控制器供货不足、断货甚至停产等原因同样会导致重新进行嵌入式微控制器选型的情况发生。因此,对于嵌入式微控制器的选型工作要予以重视,毕竟,半导体产业的不断发展变化总能产生许多更令我们惊奇的产品。

首次接触或者准备接触一个新的嵌入式微控制器,建议使用厂商或者第三方提供的评估板本书从第5章起的实践篇主要讲述如何通过厂商提供的评估板在“零基础”条件下,对于新的嵌入式微控制器的熟悉与掌握过程。,这样既可以规避一部分开发风险(厂商或者第三方的评估板电路经过验证,开发者只需关注软件即可,而且一般评估板都会有相应的demo以帮助开发人员更快地熟悉和掌握软/硬件环境),也可以协调多人进行软、硬件并行开发(评估板具有状态一致性,软件开发人员可以在硬件开发的同时通过评估板进行先期的熟悉和开发工作),从而加快开发周期、提高效率。同时,即使有经验的工程师,在面对一个全新的嵌入式微控制器时,其设计的电路都会有一定的技术风险,一个没有验证过的电路加上一个未使用过的微控制和开发环境,两者都有许多未知因素,是否有“X+X=?”的意味(见图2-4)?

图2-4 “X+X”风险示意图

2.市场调研

在进行初步选型后,就要开始市场调研工作。

市场调研工作除了要考虑性能需求外,还要考虑实际产品的一些限制条件,如体积、成本等,此外,还应调研前文提到的嵌入式微控制的生产情况(生产、停产、半生产所谓半生产,是指生产厂商因为开发了新的替代型号,部分或少量生产原型号,以分阶段地逐步替代该型号;或者生产商已经放弃了该型号,少量生产且仅提供给原客户的生产情况。在半生产状态和停产状态,厂商都会声明“不推荐使用该型号”。)等。

市场调研工作中,如果发现没有符合要求的嵌入式微控制器产品,则需要返回性能需求阶段,重新修正性能需求并添加新的限制条件以便再次开展市场调研工作。

在一些大、中型公司或者企业中,有专门的采购部门能够提供市场调研方面的支持。这些公司和企业往往能够取得更多的市场信息和嵌入式微控制器产品资源,规模越大能够取得的资源就越多,取得的价格相对也就越低——这也是规模效应规模效应又称规模经济,因为任何生产都是有成本的,一般包括固定成本和可变成本。其中的固定成本是不变的,所以生产的越多,分摊到单个产品中的固定成本就越少,盈利就越多。在市场实践中,由于大企业对于嵌入式微控制器的需求量较大,在与嵌入式微控制器的生产商或者代理进行价格博弈时,往往可以获得更多的定价话语权。我们也可以简单理解为,如果买的少,只能享受零售价,如果买得多,则可以享受批发价。的另一种体现。

对于个人,或者规模较小的公司或企业,市场调研工作往往需要开发者参与,直接面对原材料市场。一般在各地都会有电子市场,实地调研和样品采购往往是首选,此外,网络也不失为一个方便快捷的方式——网上有许多小批量的电子元器件交易平台,一些生产厂商也支持网上订货甚至是免费样片。

3.系列匹配

系列匹配事实上是市场调研的延续,在对市场上的大致情况了解掌握后,需要将性能需求与具体的嵌入式微控制器产品型号对应起来。

首先,需要通过厂商提供的产品系列图(路线图)选择某一个系列。这些产品系列图(路线图)一般会有该系列的整体情况和特点说明;此外,从这些系列图(路线图)中还可以获得我们正在开发的产品未来升级的信息——好的工程师不是走一步看一步,而是有足够的前瞻能力,能够未雨绸缪,达到一个高的层次,就像围棋,能够料敌先机方晋“国手”境界。

表2-1所示是一些嵌入式微控制器的生产厂商列表。

表2-1 嵌入式微控制器生产厂商列表按厂商名首字母排序,列表并不包含所有生产厂商。

在嵌入式微控制的系列匹配阶段,要根据需求尽可能多地对各个生产厂商的产品系列进行对比。下面以富士通(见图2-5)和意法半导体(见图2-6)为例,简要说明如何通过厂商的产品系列图(路线图)选择某一个系列。

图2-5 富士通产品系列图(路线图)上述图片来自于互联网。

图2-6 意法半导体产品系列图(路线图)上述图片来自于互联网。

通过图2-5可以看出,富士通在产品系列图(路线图)中首先列出来的是电压(图中最左侧),表明其产品在电压方面非常有特点。其产品系列的主要分类也是按电压区间展开的:

● 1.8~5.5V超低泄漏组(Ultra Low Leak Group),工作频率为20MHz,内建LCD控制器。

● 1.8~3.6V低功耗组(Low Power Group),工作频率在40MHz,内建LCD控制器、USB接口。

● 2.7~5.5V高性能生产线(High Performance Line),又分为两部分:

● 基本组(Basic Group),工作在40MHz,内建CAN总线接口和USB接口;

● 高性能组(High Performance Group),工作在80MHz或者144MHz,内建CAN总线接口、USB接口和以太网口。

通过上述分析,可以对富士通产品的大致情况有了基本了解。需要再次补充说明的是,产品系列图(路线图)展现的只是相关产品的部分信息,是厂商想强调的内容,而非产品的全部详细信息。下面再看意法半导体的例子。

从图2-6中可以看出,意法半导体的产品是根据Cortex-M系列进行划分的:

● Cortex-M0系列对应STM32F0系列,工作频率最高48MHz,具有16~128KB“16~128KB”表示该系列中的不同型号为16~128KB区间的值,比如16KB、32KB等,而不是说一个具体的嵌入式微控制器型号其Flash可以动态变化。的Flash和最多12KB的SRAM,主要面对8位/16位应用。

● Cortex-M3系列主要面对16位/32位应用,包括4个分支:

● STM32F1工作频率最高24~72MHz“最高24~72MHz”表示该系列中的不同型号所能达到的最高工作频率为24~72MHz区间的值,比如说,某一具体型号其最高工作频率为48MHz。而不是说一个具体型号最高工作频率可以动态变化。,16KB~1MB的Flash和最多96KB的SRAM;

● STM32F2工作频率最高120MHz,128KB~1MB的Flash和最多128KB的SRAM;

● STM32W工作频率最高24MHz,64KB~256KB的Flash和最多16KB的SRAM,是一款无线MCU;

● STM32W工作频率最高32MHz,32KB~384KB的Flash和最多48KB的SRAM,是一款无线MCU。

● Cortex-M4系列对应STM32F4系列,工作频率最高168MHz,具有512KB~1MB的Flash和最多256KB的SRAM,主要面对32位/数字信号控制(DSC)应用。

4.定型

定型是指在确定所需嵌入式微控制器的厂家和系列后,需要进一步确定具体型号。定型是一项非常细致的工作,需要通过生产厂商提供的产品选型表或选型工具确定大致型号,然后通过下载、阅读该型号的数据手册(一般是PDF格式),仔细核对与需求的匹配度,确定无误后,选择该型号并准备后续的软、硬件设计工作。

图2-7所示是富士通官方完整的选型表,可以发现,通过系列匹配选定的高性能组中又细分了很多型号,每个型号更具体的信息(相对产品系列图(路线图)),每个产品型号都有超链接,可以通过该超链接下载该型号的数据手册。

图2-7 富士通产品选型表(部分)

图2-8所示是意法半导体官方的网页选型工具,在选型工具中可以通过封装、Flash大小、内建RAM大小、A/D转换器等信息对所有产品型号进行筛选。在符合条件的型号名称都有超链接,可以通过该超链接下载该型号的数据手册。

图2-8 意法半导体产品选型表(部分)

2.3.3 软/硬件设计

完成嵌入式微控制器的选型工作后就可以开展软/硬件设计工作了。如2.3.2节中“性能需求”部分描述的,通过采用评估板的方式可以进行软、硬件的并行设计工作。此外,在没有评估板的条件下,通过构建良好的软件结构,对整个软件进行分层(大致可以分为与硬件相关和与硬件无关),与硬件无关的部分可以与硬件设计并行开展。

下面就硬件设计和软件设计两方面进行阐述。

1.硬件设计

有了嵌入式微控制器,还需要设计相应的电路使其工作起来。此外,为了完成任务分析中确定的产品需求,相应地还要增加其他辅助电路和功能电路。

一般认为,硬件设计可以大致分为3个部分:原理图、网络表和PCB,如图2-9所示。

图2-9 硬件设计的3个部分

进行硬件设计,首先要进行原理图设计。原理图是将电路中用到的电子元器件、机械件(结构)等用平面符号表示的元素,使用具有电气意义的连接线、总线和连接符号等根据设计要求将其连接起来的图表。

原理图设计直接关系到整个系统硬件电路的正确性,因此在原理图阶段必须保证仔细、精确、正确。一旦原理图错了,后续网表生成、PCB设计就会“一错再错”。

原理图设计完成后要生成网络表,网络表是沟通原理图和PCB的桥梁,有时也简称为网表。网络表中包含所有元件符号和元件之间的网络连接关系。网络表一般由原理图生成,但在需要时也可以由PCB反向生成。

PCBPCB同时还是Process Control Block(进程控制块)的缩写,请注意区别。是Printed Circuit Board的缩写,指印制电路板,又称为印刷电路板、印刷线路板,是用来容纳元器件并提供元器件之间电气关系物理连接的载体。在使用原理图生成网络表后,需要将网络表导入PCB中,使用PCB软件工具进行设计。现有PCB工具一般提供自动布线、设计规则约束和检查、层叠结构设计、信号完整性设计等功能。

通俗地将原理图、网络表、PCB之间的关系描述如下:

原理图用图形化的方式将器件之间的连接关系表现出来,网络表将这种连接关系用一定格式的字符(字符段)表示,而在PCB中决定这种联系最终以什么样的物理形式(连接方式)表达出来。

实际的硬件设计过程可以进一步细化,具体将在“第3章 嵌入式硬件电路设计基础”中进行展开,这里就不赘述了。

2.软件设计

在1.1.3节中提到,嵌入式系统可以按照有操作系统和无操作系统进行分类。有操作系统的嵌入式系统软件一般包括以下几个部分:

● 板级支持包(BSPBSP是Board Support Package的缩写。);

● 设备驱动(Device Driver);

● 操作系统(OS/RTOS);

● 协议栈(Protocol Stack);

● 应用程序(Application)。

无操作系统的嵌入式系统软件一般仅包括有操作系统的若干个部分:

● 板级支持文件(BSFBSF是Board Support File的缩写。);

● 设备驱动(Device Driver);

● 协议栈(Protocol Stack)(可选);

● 应用程序(Application)。

嵌入式微控制器一般都是无操作系统的,早期也有一些电子爱好者在嵌入式微控制器中运行DOS、VxWorks等操作系统。随着嵌入式微控制器的功能越来越强大,在应用环境中的任务越来越多、越来越复杂,也逐渐发展到需要操作系统的支持。

对于嵌入式微控制器,板级支持文件(BSF)一般都是以头文件的方式存在,通过宏定义的方式用来描述与具体电路相关的一些寄存器或者寄存器操作。这样做的目的在于将具体电路和主体程序隔离开,最大程度地复用代码,增加整个嵌入式系统软件的可移植性。

工程的意义在于经验和积累,某种程度上说,经验也是积累的结果。在嵌入式软件开发中同样要注意积累,使用板级支持文件的方式可以让我们将一个产品开发中使用的代码比较方便地在另一次开发过程中使用。

在无操作系统的嵌入式系统软件中,使用设备驱动的目的可能是通过设备驱动的方式将编程任务进行切割,或者使程序代码的可读性更好(对一些设备(寄存器)的操作与主程序分离开,同时可以按功能或者操作方式实现代码的进一步分割)。当然,采用设备驱动的形式也能增加程序的可移植性,在一定程度上实现代码复用。

无操作系统的嵌入式系统软件一般在上电之后会先设置MCU的状态(比如关闭中断、清除中断寄存器等),然后设置系统状态(设置MCU内部设备的寄存器、开启中断等),接着进行系统自检以确定整个系统的电路处在一个正常运行状态,然后开始初始化应用程序,最后进入死循环进行轮询或等待中断。一般来说,除了只运行一次的应用程序外,应用程序一般都在死循环结构或者中断服务例程中。无操作系统的嵌入式系统软件的流程如图2-10所示。

图2-10 无操作系统的嵌入式系统软件流程这是一般流程,实际嵌入式系统软件流程可能与此不同。

2.3.4 程序调试

对于含有嵌入式微处理器的嵌入式系统而言,由于可用资源有限,嵌入式开发和调试工作通常要通过高性能的宿主机完成,嵌入式应用软件通过宿主机上的交叉编译器,完成交叉编译和连接后下载到目标机。

对于嵌入式微控制器构成的嵌入式系统而言,可用资源比含有嵌入式微处理器的嵌入式系统更少,程序调试的方法也与含有嵌入式微处理器的嵌入式系统更为不同。

一般由嵌入式微控制器构成的嵌入式系统的调试方法有以下几种:

● 内嵌JTAG仿真;

● 在线仿真(ICE);

● 监控模式(Monitor Mode);

● 背景调试模式(BDM);

● 模拟器调试方式;

● 电路辅助调试。

1.JTAG仿真调试方式

JTAG是Joint Test Action Group(联合测试行为组)的单词首字母缩写。JTAG调试是目前应用最为广泛的方式之一。除了嵌入式微控制器可以使用JTAG仿真器进行程序下载与仿真调试外,嵌入式微处理器也可以使用JTAG仿真器进行程序下载与仿真调试,FPGA也使用JTAG进行程序下载。

对于越来越多的使用ARM Cortex-M处理器作为CPU的嵌入式微控制器来说,JTAG将是一个标准配备,因为ARM Cortex-M处理器内含Embeded ICE宏单元,并留有JTAG调试接口,支持在线仿真。它无需目标存储器,不占用目标系统的端口。

使用集成开发环境配合JTAG仿真器是目前最常用的一种调试方式。

2.在线仿真(ICE)

ICE是In-Circuit Emulator(实时在线仿真)的缩写,它通过在线仿真器,取代目标板的MCU,仿真嵌入式微控制器芯片的行为。它支持单步执行、断点、反汇编、源程序级调试。

由于仿真器通常价格比较昂贵,通常用在硬件开发中,软件开发则较少用。

3.监控模式(Monitor Mode)

监控模式和具体的嵌入式微控制器型号有关,需要在微控制器内部内嵌专门电路。其主要特点是单线双向异步串行通信。

为了进入监控模式,在嵌入式微控制器上电复位时,监控模式通信线要处于高电平状态。除了该通信线外,还有一些辅助信号线要处于特定的电位状态。有些嵌入式微控制器还需要外加时钟信号以进入监控状态。

飞思卡尔HC(9)08系列单片机应用此种调试方式。

4.背景调试模式(BDM)

BDM是Background Debugging Mode(背景调试模式)单词首字母的缩写,最早仅作为摩托罗拉公司支持的一种OCDOCD是On-Chip Debugging(在线调试)的缩写。的调试模式,现在BDM接口是最普遍的调试接口之一,广泛应用于各种系列的微控制器中。

通过BDM接口可以完成基本的调试功能,如设置断点、读/写内存、读/写寄存器、下载程序、单步执行程序、运行程序、停止程序运行等。

BDM接口比较灵活,可以根据实际情况调整调试所需信号数量,其结构示意图如图2-11所示。

图2-11 BDM调试模式结构示意图

5.模拟器调试方式

模拟器调试方式通过基于宿主机的软件,在主机上模拟目标机中处理器的功能和指令。模拟器软件由生产厂商或者第三方开发,支持嵌入式微控制器由软件决定。ARM公司的ARMulator模拟器在市面上比较常见。

模拟器调试方式虽然简单可行,但是缺乏在线调试和实时仿真功能,是不折不扣的“纸上谈兵”。

6.电路辅助调试

电路辅助调试是嵌入式微控制器开发中用得最多也是最廉价的调试方式。

一般在嵌入式系统设计时,都会利用富余I/O连接准备用作调试的LED和按键开关,有的也将富余的串口连接到外部电路。

在调试程序时,通过在程序中嵌入临时调试语句,如判断运行结果是否符合特定条件,如果符合(或者不符合)则点亮LED;或者通过点亮LED的方式判断程序是否运行到指定代码段。

按键的使用方法与LED相同,可以在程序中嵌入临时调试语句,等待按键按下(或抬起)以使程序继续运行,从而产生按键控制的断点;或者使用按键触发外部中断进行调试。

此外,使用串口进行调试也是比较常用的方法。与使用按键和LED相比,串口可以输入或者打印字符,调试方式也更为灵活。

除LED、按键和串口外,也有其他一些电路辅助调试方法,这里就不一一列举了。

7.程序调试的基本原则及注意事项

在调试时,一般遵循“化整为零”的原则。如果采用模块程序设计,则先进行逐个模块的调试,模块调好后再进行系统程序总调。如果采用任务程序设计,则针对逐个任务进行调试,然后对于系统整体表现行为(功能)进行调试。

在调试时,注意观察CPU寄存器情况、 RAM的内容、I/O的状态等。此外,对于中断跳转、CPU响应时间等问题均要加以注意,因为,有些程序在调试时断断续续运行而非连续运行,观察调试结果是正确的,然而正常运行时,可能出现CPU来不及响应,而导致程序“跑飞”。

此外,有些嵌入式微控制器的外设不能采用仿真调试的方法,因为,在仿真时调试软件读取相关寄存器而导致寄存器值变化,或者外设接口速率过高,仿真速度上不来而导致接口数据错误。

2.3.5 代码固化

在程序调试完成后,需要将代码编译生成可下载文件。代码固化就是将可下载文件下载到嵌入式微控制器中。

代码固化有两大种类:

① 离线下载。使用编程器进行烧录,然后插入或者焊接到电路板上。大规模生产通常采用这种方法。

② 在线下载。通过嵌入式微控制器的JTAG、BDM、串口、CAN或者USB等接口进行下载。

现在的嵌入式微控制器一般都有内部Flash,代码一般固化到内部Flash中。有的嵌入式微控制器型号也支持从外部Flash或者E2PROM中启动,还有的嵌入式微控制器型号有所谓的Bootloader,支持更为复杂的代码加载方式,相应的代码固化方式也更为多样。

2.4 常用集成开发环境简介

集成开发环境又叫IDE(Integrated Development Environment),是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。

在嵌入式微控制器领域,比较著名的通用IDE是IAR Embedded Workbench®和Keil μVision,通用IDE的特点是支持多个厂家的多个嵌入式微控制器系列和型号。此外,还有各个厂家自己的集成开发环境,如Atmel的AVRStudio等,这些环境支持相应厂家的嵌入式微控制器型号。

下面简要介绍两个通用IDE。

1.IAR Embedded Workbench®

IAR是全球领先的嵌入式系统开发工具和服务的供应商,提供的产品和服务涉及嵌入式系统的设计、开发和测试的每一个阶段,包括带有C/C++编译器和调试器的集成开发环境(IDE)、实时操作系统和中间件、开发套件、硬件仿真器以及状态机建模工具。

IAR Embedded Workbench集成的工具包括:

● 高度优化的IAR AVR C/C++编译器;

● AVR IAR汇编器;

● 通用IAR XLINK Linker;

● IAR XAR库创建器和IAR XLIB Librarian;

● 强大的编辑器;

● 工程管理器;

● TM IAR C-SPY调试器;

● 高级语言调试器。

IAR Embedded Workbench支持大多数8位、16位以及32位的微处理器和微控制器,可以有效提高工作效率。从第5章开始的“实践篇”中使用的就是IAR Embedded Workbench,将对其进行进一步介绍和说明。

IAR Embedded Workbench窗口界面如图2-12所示。

图2-12 IAR Embedded Workbench窗口界面上述图片来自互联网。

2.Keil μVision

Keil公司是一家业界领先的嵌入式微控制器软件开发工具的独立供应商。Keil公司在2007年被ARM公司收购,并于2009年2月发布Keil μVision4。

Keil μVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,提供了视觉上的全新体验。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。新版本支持更多最新的ARM芯片,还添加了一些其他新功能。该版本支持Cortex-M系列处理器,支持自动配置启动代码,集成Flash烧写模块和Simulation设备模拟、性能分析等功能,如图2-13所示。

图2-13 Keil μVision4窗口界面上述图片来自互联网。