搜档网
当前位置:搜档网 › Kinetis实战开发——IAR使用详解

Kinetis实战开发——IAR使用详解

Kinetis实战开发——IAR使用详解
Kinetis实战开发——IAR使用详解

Kinetis实战开发

——IAR使用详解目前适合开发飞思卡尔Kinetis系列单片机的软件开发环境有IAR、Keil和CodeWarrior,三种软件的功能各有千秋。本文档将介绍如何使用IAR开发Kinetis系列单片机,希望读者阅读本文档后能对IAR这款软件有所了解。本文所使用的IAR开发环境的版本为IAR for ARM 6.30。

1.IAR功能介绍

●IAR支持ARM汇编、C和C++三种语言的开发;

●IAR软件本身集成了编译器,能将用户开发的工程编译成二进制文件,进而烧写到

单片机的FLASH中;

●IAR软件集成了当前主流仿真器的驱动,比如开发K60单片机时所使用的J-LINK

和OSJTAG仿真器的驱动;

2.IAR开发环境界面介绍

打开IAR软件后,首先会进入IAR开发环境的主界面。IAR主界面由菜单栏、工具栏、WorkSpace、编程界面和结果显示窗口(Message)组成,如图1.1所示。下面我们将介绍每个部分的作用。

图1.1 IAR主界面

2.1IAR菜单栏

在IAR主界面中可以看到菜单栏中有7个选项,如图2.1所示。

图2.1 IAR菜单栏

2.1.1F ile选项

如图2.2所示,在File选项中包括如下子选项。

“New”可以新建空白文件和工作空间(WorkSpace);

“Open”可以打开文件和工作空间(WorkSpace);

“Save Workspace”和“Close Workspace”分别对应保存工作空间和关闭工作空间;

“Recent Files”用于快速打开最近使用过的源文件;

“Recent Files”用于快速打开最近使用过的工作空间。

图2.2 Files选项

2.1.2E dit选项

如图2.3所示,在Edit选项中,包括了最常用的复制、粘贴、重置和查找等通用的编辑类选项,同时也包括了一些IAR开发环境特殊的编辑功能。

图2.3 Edit选项

接下来我们介绍一些比较常用的功能。

a)Find and Replace查找和替换功能

查找和替换是我们在编程中使用最频繁的功能。如果定义的变量在多个文件中使用,但

是在此时并不清楚这些变量的具体位置时,我们可以使用全局搜索功能,将变量的位置在Message中罗列出来,这样可以快速找到变量,加强了程序的可读性。这种情况适用于程序代码超多并且整个工程包含大量源文件时使用。

具体步骤为:“Find and Replace”→“Find in Files”在其中输入要查找的变量名或者字符串,然后点击“Find”即可。快捷键“Ctrl+Shift+F”。

例如,我们在LPLD_Ledlight工程中搜索“periph_clk_khz”外设总线时钟这个变量,搜索的结果会在结果显现窗口(Message)中罗列出来,如图2.4所示。

图2.4 全局搜索结果

搜索完毕后,单击结果显示窗口(Message)中的一条结果,就可以跳转到含有“periph_clk_khz”的位置。

b)Navigate导航功能

如图2.5所示。在导航功能中,可以通过“Go to…”功能直接跳转到当前源文件中的某一行的某一个字符的位置;还可以在程序的某一行设置标签“Toggle BookMark”,然后通过“Go to BookMark”跳转到标签的位置。

图2.5导航功能

在这其中最常用的功能要属“Go to Definition”。“Go to Definition”的具体含义是跳转到实际定义的位置,该功能可以在程序中快速跳转到变量或者函数定义的位置,便于查看变量或者函数的组成。快捷键“F12”。

例如,我们想知道LPLD_Ledlight工程中的main函数中delay( )这个函数是在哪里定义的,可以左键点击delay( ),然后用“Go to Definition”功能,可以用快捷键“F12”,程序会自动跳转到delay( )函数定义位置。如图2.6所示。

图2.6 Go to Define功能

c)Code Templates代码模板

利用代码模板功能,我们可以在程序中插入if、for和Class等常用的代码模板。快捷键“Ctrl+Shift+Space”。

比如我们单击“Insert Template”→“if”,会在程序中会出现if代码的结构,如图2.7所示。

图2.7 Code Templates功能

2.1.3V iew选项

在View选项中包括“Messages”、“Workspace”、“Source Brower”、“Breakpoints”、“Toorbars”和“Status Bar”。View中的这些选项主要用于在IAR主界面上开启与上述功能对应的窗口。如果我们不小心把这些窗口给关闭了,我们可以在View选项中重新选中已关闭的窗口,它们会在IAR主界面中重新显示。

d)Messages选项

在“Messages”中分为“Build”、“Find in Files”、“Debug Log”、“Toorbars”四个部分。如图2.8所示。

图2.8 Messages中包含的窗口

其中在“Build”窗口中显示编译的信息;在“Find in Files”窗口中显示执行“Find and Replace”查找后的信息;在“Debug”窗口中显示下载的信息;在“Tool OutPut”中显示工具输出信息。

例如,在LPLD_Ledlight工程中我们执行完编译之后会在“Build”窗口中查看编译结果,如果程序有错也会在该窗口中显示。如图2.9所示。

图2.9 Build窗口

e)Workspace工作空间

“Workspace”选型用于切换到当前的工程目录。Workspace的具体组成我们在后面章节再仔细介绍。如图2.10所示。

图2.10workspace

f)Source Browers选项

“Source Browers”用于显示工程中所有声明的结构体、共用体,如果使用C++的话还可以显示所有声明的类(class)。添加该功能后Source Browers会与Workspace并列出现。如图2.11所示。

然后就可以在Source Browers所罗列的源文件中查看声明的结构体、共用体和类的具体信息了。

图2.11 Source Browers

g)Breakpoints断点窗口

“Breakpoints”用于显示当前所设置断点的信息。添加该功能后会在Message中增加一个“Breakpoints”窗口,我们可以在其中查看断点的信息。

例如,在LPLD_Ledlight工程中的main函数中设置一个断点,我们会在Message的Breakpoints窗口中看到如图1.13所示的信息。该信息包含断点所在文件的名称,具体行号,具体位置等。

图2.12 Breakpoints窗口

h)ToolBars”工具栏开启选项

在“ToolBars”中包括“main”和“debug”两个选项,用于选择开启还是关闭IAR主界面中的工具栏。

例如,我们把“main”选项前面的“对钩”去掉,工具栏就隐藏了。相反打上“对钩”工具栏就重新出现。

i)StatusBars状态栏开启选项

把“StatusBars”选项前面的“对钩”去掉,状态栏就隐藏了。相反打上“对钩”状态栏就重新出现。状态栏在IAR主界面的最下方。如图2.13所示。

图2.13 IAR 状态栏

2.1.4P roject选项

“Project”选项是IAR开发环境中的核心。我们将“Project”按功能分为5个部分。

j)针对Workspace的操作

我们可以通过使用“add file”向Workspace 的工程目录中添加新文件;使用“add group”向Workspace 的工程目录中添加新分组;使用“Edit configuration”编辑配置,这里强调一下编辑配置功能,在LPLD_Ledlight工程中我们打开编辑配置功能,可以看到有“RAM”、“Boot”、“Flash”这三个选项。如图2.14所示。

图2.14 IAR编辑配置功能

这三个选项将本工程分为了三种类型,这三种类型相互独立,也就是说本工程实际上按照配置功能被分为了三类。这里是按每一个配置功能下的Flash分配文件(.icf文件)不同而进行分类的,这是我们设置好的。在RAM模式下只能将程序下载到单片机的RAM中;在FLASH模式下程序会下载到单片机的FLASH中;BOOT模式要配合LPLD bootloader使用的,具体信息请参考LPLD bootloader使用文档。如果读者想自己设置该功能的话,可以选择自己的分类方式。

配置功能可以在Workspace中切换,如图2.15所示。

图2.15 配置功能切换

k)创建新工程和增加现有工程

一个IAR Workspace可以包含多个工程,利用“Project”中的“Create New Project”

“Add 我们可以新建一个基于K60单片机的IAR工程,新建工程的步骤我们下面再做详细介绍。Existing Project”可以将现有的IAR工程添加到Workspace中,IAR工程文件的扩展名为(.ewp)。

l)Options选项

该选项是“Project”中的重要选项,下面将详细介绍Options选项的作用。首先先选中工作空间下的工程名,然后右键工程名,就会出现“Options”,如图2.16所示。

图2.16 选中工程名

在Options选项中重点介绍以下部分,其他选项设置为默认即可。

选择设备类型“General Options”→“Target”;

添加头文件路径“C/C++ Complier”→“Preprocessor”;

生成二进制文件“Output Convert”;

配置链接文件“Linker”→“Config”;

选择下载器类型“Debugger”。

选择设备类型

在“General Options”→“Target”中用于设置设备类型,在Device中设置具体的设备型号。在这里选择Freescale的MK60DX256xxx10单片机。如图2.17所示。

图2.17 选择设备类型

添加头文件路径

在“C/C++ Complier”→“Preprocessor”中用于设置源文件的编译路径,以便编译器能够识别。在工程配置里,已经添加好了所有底层驱动的头文件路径。如果开发者想要添加自定义的头文件,只需要将其路径添加到“Additonal include directories”下的编辑框即可。框里的每一行代表一个路径。该路径可以使绝对路径,也可以是相对路径,为了方便工程的移植,推荐开发者以相对路径的方式书写。相对路径的书写方法格式十分简单,其中:“$PROJ_DIR$”代表本工程的根目录所在的绝对路径;

“..\”代表上一级目录。

如果“$PROJ_DIR$”代表的绝对路径为:

E:\LPLD_OSKinetis\project\My_Kinetis_Project\iar

那么相对路径“$PROJ_DIR$\..\app”则代表:

E:\LPLD_OSKinetis\project\My_Kinetis_Project\app

添加宏定义变量

在该选项卡中的“Defined symbols”下方的编辑框可以添加工程的全局宏定义变量,如图2.18所示。在这里添加宏定义变量的作用和在文件中添加的作用是一样的。

它的作用则和在该编辑框中添加的宏定义一样。虽然作用一样,但是意义却不同,在工程配置中添加宏定义使得程序的可移植性更高。例如在这里添加了“IAR”这个宏定义,那么在工程代码中则可以添加对“IAR”的预编译判断,如果开发者使用的是IAR开发工具,则会特殊编译某些代码。这样即使开发者使用其他开发环境,不用修改代码文件便可以使用原有的代码。

图2.18宏定义变量

生成二进制文件

在“Output Convert”中,可以在工程编译完成后生成二进制文件,如图2.19所示。在Output format中选择binary即可。

图2.19 生成二进制文件

如果配置功能选择为FLASH,则生成二进制文件的路径为:

LPLD_OSKinetis_V2\project\LPLD_LedLight\iar\FLASH\Exe

如果配置功能选择为RAM,则生成二进制文件的路径为:

LPLD_OSKinetis_V2\project\LPLD_LedLight\iar\RAM\Exe

如果配置功能选择为BOOT,则生成二进制文件的路径为:

LPLD_OSKinetis_V2\project\LPLD_LedLight\iar\BOOT\Exe

配置链接文件

在IAR开发环境中,链接器调用.icf文件获取相应的链接配置。选中“Linker”选项,并在右侧选择“Config”选项卡即可,如图2.20所示。

图2.20 选择配置链接文件

选择下载器类型

如果使用J-link作为下载器,在这里选择“J-link/J-Trace”。如图2.21所示。

图2.21 选择J-link

如果使用OSJTAG作为下载器,在这里选择“PE micro”。如图2.22所示。

图2.21 选择OSJTAG

m)编译工程

在编译部分包括“Make”、“compile”、“Rebuilt All”、“Clean”、“Batch build”四个选项。

Make 对当前的工程进行编译,并且在Message中显示工程的编译结果,Make对应IAR工具栏中的图标。

Compile对单独的源文件进行编译,在Message中显示单独源文件的编译结果,

Compile对应IAR工具栏中的图标。

Rebuilt All重新对工程进行编译;

Clean清除当前工程的编译状态;

Batch build批量编译;

在这里介绍一下批量编译的作用,打开Batch build批量编译后,需要给批量编译起个名字,然后将本工程中的三个分类都添加到“Configurations to build”中,然后单击“Make”就可以对这工程中的三个分类全部进行编译。如图2.22所示。

图2.21 批量编译

n)下载仿真

在下载仿真部分中包括“Download and Debug”、“Download and Without Debug”、“Download”三个选项。

Download and Debug 下载并仿真,对应IAR工具栏中的图标。

Debug Without Downloading进行仿真但不下载程序,对应IAR工具栏中的图标。

Download 下载。在这里介绍一下Download 下载功能,打开Download后出现“Download active application”、“ Download file”、“Erase memory”。

?Download active application下载当前应用,该功能和Download and Debug

相似。

?Download file下载文件,该功能通过IAR软件下载编译生成的(.out)文件

?Erase memory 擦出FLASH。

在使用Download 下载功能时,必须保证仿真器与单片机相连接。

2.1.5T ools选项

在“Tools”选项中,重点介绍“Option…”选项,该选项是对IAR开发环境的字体、快捷键、语言等环境变量进行设置。

打开“Option…”选项,会出现IDE Options窗口,如图2.22所示。

图2.22 IDE Options

Common Fonts中的Fixed Width Font用于配置编程界面中的字体参数;

Proportional Width Font用于配置Workspace中的字体参数。

Key Bindings 快捷键绑定。该功能用于设置常用功能的快捷键。

Language 设置IAR的语言,有英语和日语。

Editor中如图2.23所示:

?可以设置Tab键的空格距离“Tab size”和缩进距离“Indent size”;

?可以设置句法的高亮显示“Syntax highlighting”

?可以设置自动缩进“Auto indent”;

?可以设置显示程序行号“Show line numbers”;

?可以设置扫描文件改变“Scan for changed files”;

?可以设置显示书签“Show bookmarks”;

?可以使能虚拟空间“Enble virtual space”;

?可以移除尾随空白“Remove trailing blanks”。

图2.23 Editor

展开Editor你会看到更多子类,中常用的是Colors and Fonts,如图2.24所示。在

其中可以设置编辑字体和特殊字符的颜色,比如在程序中所使用的C语言的关键字就是在这里设置成加粗,黑色。我们也可以根据自己的喜好设置成属于自己风格的颜色。

图2.24 Colors and Fonts

在Project中,可以进行如下设置,如图2.25所示。

?可以设置编译停止的条件“Stop build operation on”,在这里可以选择为

Warring、Error和Never,分别表示在遇到警告时停止、在遇到错误时停止和

绝不停止;

?在编译工程之前保存编辑,在这里可以选择为Never、Ask和Always,分别表

示不保存、询问和一直保存;

?在编译工程之前保存Workspace和工程,在这里可以选择为Never、Ask和

Always,分别表示不保存、询问和一直保存;

?在下载之前进行编译,在这里可以选择为Never、Ask和Always,分别表示不

保存、询问和一直保存。

?此外还包括三个选项,分别是启动IAR后加载最后一次的workspace

?“Reload last workspace at startup”;在编译完成后产生提示音“Play a

sound after build operations”;生成浏览器信息“Generate browse

information”

图2.25 project设置图

在Debugger中可以选择程序仿真时的配置,如图2.26所示。

图2.26 Debugger设置图

?可以在“Source code color in disassembly window”中设置源代码的颜色

在拆开的窗口中;

?可以在“Step into function”中设置仿真时进入函数的权限;

?可以在“Update intervals(milliseconds)”中设置更新间隔时间,在这里

更新包括现场窗口(Live watch)和存储空间窗口(Memory window)。

?可以在“Default integer format”中设置整型变量的格式化配置。

2.2WorkSpace结构说明

本文所介绍的文件目录结构是LPLD的Kinetis开源开发包的结构,该结构具有分类清晰、代码易于维护等特点。以开发包的起始文件夹“LPLD_OSKinetis”为根目录,其树形目录结构如图2.27所示。在根目录下有两个子文件夹,分别是“lib”和“project”文件夹,“lib”文件夹存放K60相关的底层库文件以及平台配置文件,开发者通常不用涉及修改此文件夹中的文件;“project”文件夹下则存放每个独立的工程目录,开发者只需在此目录下建立特定的工程目录即可。

LPLD_OSKinetis

common

cpu

drivers

iar_config_files

LPLD

platforms

lib

project LPLD_Hello_World

app

iar

……

图2.27 K60工程目录结构

2.2.1l ib文件夹

在“lib”文件夹下共有6个子文件夹,其中“common”文件夹里存放通用程序代码,如我们在编写C程序时常用的printf、stdlib库等等。

“cpu”文件夹里存放Cortex-M4特定的CPU核初始化程序以及Kinetis系列芯片的头文件。

“drivers”文件夹存放飞思卡尔官方提供的少量外设驱动代码。

“iar_config_files”文件夹中存放IAR开发环境在编译代码时所需要的icf格式文件,icf文件的作用通常是指定各个段的存放地址以及划分ROM和RAM的空间,该文件的详细讲解将在后续章节中进行。

“LPLD”文件夹是本开发包的核心所在,这里存放K60各个内部外设的底层驱动代码以

及相关功能代码。

“platform”文件夹用来存放硬件开发平台的头文件,该头文件一般用来定义开发板的特定信息,例如时钟频率、调试串口号、波特率等等。

2.2.2P roject文件夹

根目录下的“project”文件夹存放独立的工程目录,例如本章所介绍的Hello World 工程则存放在“LPLD_Hello_World”文件夹中,在每个工程目录下又分为两个子文件夹,分别是“app”和“iar”文件夹。

“app”文件夹中存放工程所需的用户应用代码及中断定义头文件,我们所熟悉的main()函数便在此文件夹中的.c文件中。

“iar”文件夹则存放IAR开环境的工程文件,这些文件通常用来存放本工程的结构目录、编译信息等配置。

2.2.3I AR工作空间目录结构

当打开一个K60的工程后,在IAR开发环境的左侧显示的就是该工作空间的目录结构,如图2.28所示,该工作空间是LPLD_LedLight的目录结构,其他工程的结构均与它一样。

图2.28 IAR工作空间目录结构

可见该目录结构与上一节所介绍的文件目录结构极为相似,需要注意的是该目录下的每个“文件夹”叫做一个组(Group),在一个工作空间的目录结构下共分为3个组,分别是“app”组、“lib”组和“Ouput”组。

“app”组对应的就是文件目录结构中的“app”文件夹,该组下是开发者自己定义的代码文件。

“lib”组对应“lib”文件夹下的各个子目录,只是不包含“iar_config_files”子文件夹。当然每个子目录下不一定包含文件夹中的全部文件,开发者需要用到哪些库文件,再将对应的文件(files)添加进对应的组即可。

相关主题