《keiluvision4教程.pdf》由会员分享,可在线阅读,更多相关《keiluvision4教程.pdf(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 第 4 章 keil uvision4 教程 本章主要内容:Keil C51 的简介 Keil uvision4 的安装 Keil uvision4 的创建应用程序 本章主要从简单介绍了Keil C51,以及 Keil uvision4 的安装和如何在 Keil 中创建应用程序。4.1 Keil C51 的简介 Keil C51 是美国 Keil Software 公司出品的 51 系列兼容单片机 C 语言软件开发系统,与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil 提供了包括 C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的
2、完整开发方案,通过一个集成开发环境(Vision)将这些部分组合在一起。运行 Keil 软件需要 WIN98、NT、WIN2000、WINXP 等操作系统。如果你使用 C 语言编程,那么 Keil 几乎就是你的不二之选,即使不使用 C 语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。使用汇编语言或 C 语言要使用编译器,以便把写好的程序编译为机器码,才能把 HEX可执行文件写入单片机内。KEIL uVISION 是众多单片机应用开发软件中最优秀的软件之一,它支持众多不同公司的 MCS51 架构的芯片,甚至 ARM,它集编辑,编译,仿真等于一体,它的界面和常
3、用的微软 VC+的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。因此很多开发 51 应用的工程师或普通的单片机爱好者,都对它十分喜欢。2009 年 2 月发布 Keil Vision4,Keil Vision4 引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。新版本支持更多最新的 ARM 芯片,还添加了一些其他新功能。2011 年 3 月 ARM 公司发布最新集成开发环境 RealView MDK 开发工具中集成了
4、最新版本的 Keil Vision4,其编译器、调试工具实现与 ARM 器件的最完美匹配。Vision4 在 Vision3 的成功经验的基础上增加了:System Viewer(系统查看程序)窗口,提供了设备外围寄存器信息,这些信息可以在 System Viewer 窗口内部直接更改。Debug Restore Views(调试恢复视图)允许保存多个窗口布局,为程序分析迅速选择最适合的调试视图。Multi-Project Workspace(多项目工作空间)为处理多个并存的项目提供了简化的方法,如引导加载程序和应用程序。扩展了 Device Simulation(设备仿真)功能以支持许多新设
5、备,如 Luminary、NXP 和东芝生产的基于 ARM Cortex-M3 处理器的 MCU;Atmel SAM7/9;及新的8051 衍生品,如 Infineon XC88x 和 SiLABS 8051Fxx。支持许多 debug adapter interfaces(调试适配器接口),包括 ADI miDAS Link、Atmel SAM-ICE、Infineon DAS 和 ST-Link。3.2 Keil uvision4 的安装 第 1 步:运行安装程序 第 2 步:完成安装过程 第 3 步:双击运行刚安装完毕的 Keil uVision4,进入 Keil uVision4 的集
6、成编辑环境 第 4 步:单击选择菜单“Debug”-Start/Stop Debug Session(如果跳出下图提示框:*Limit:32K,则说明此软件没有获得序列化,只能编译 code 32K 一下的程序,如果没有弹出,说明以下步骤可省略)第 5 步:(破解开始)单击选择菜单“File”-License Management 将弹出下面一张图的界面:复制其中 CID 号,以便在黏贴到第 6 步中的破解软件中 第 6 步:运行破解软件,将出现下面一张图的界面,把上步复制的 CID 号黏贴到相应位置,其他选项如图,然后点击“Generate”按钮,然后复制产生的序列号,黏贴到第 5 步的下面
7、一张图的 LIC 输入框中,然后点击右侧的 Add LIC,即可完成破解 3.1.1 创建应用程序 Vision包含一个工程管理器,它使得设计ARM微控制器的嵌入式应用程序更加方便。创建应用程序,必须先创建对应的工程。为了创建一个新的工程,必须按如下步骤实现:1.双击图标,运行 Vision。2.创建一个工程文件,从设备数据库中选择一个 CPU 芯片。下面以名为 test 的工程为例创建工程文件。单击 Project-New.-Vision Project 菜单项,Vision 4 将打开一个标准对话框,输入希望新建工程的名字即可创建一个新的工程,建议对每个新建工程使用独立的文件夹。例如,这里
8、先建立一个新的文件夹,然后选择这个文件夹作为新建工程的目录,输入新建工程的名字 test,Vision 将会创建一个以 test.uvproj 为名字的新工程文件。创建完了工程文件之后,从设备数据库中选择一个 CPU 芯片。例如,选择 AT89C52 微控制器,如图所示:图 4-1 选择 CPU 芯片 当创建一个新的工程时,Vision 会自动为所选择的 CPU 添加合适的启动代码,如图 9-3。图 4-2 添加启动代码 对于一些设备而言,Vision 需要用户手动地输入额外的参数。请仔细阅读这个对话框右边的信息,因为它可能包含所选设备的额外配置要求。3.创建一个新的源文件,将这个源文件加载到
9、工程中。通过 File-New 菜单项可创建一个新的源文件。这时将打开一个空文件编辑窗口,在这里可以输入源文件代码。当通过 File-Save As 对话框以扩展名.C 的形式保存了这个源文件以后,Vision 可以用彩色高亮度显示 C 语言的语法。例如,保存下面的代码到 MAIN.C 文件中。#include#include void main(void)SCON=0 x50;/串口方式 1,允许接收 TMOD=0 x20;/定时器 1 定时方式 2 TCON=0 x40;/设定时器 1 开始计数 TH1=0 xE8;/11.0592MHz 1200 波特率 TL1=0 xE8;/TI=1;
10、TR1=1;/启动定时器 while(1)printf(hello world!n);/显示 hello world 创建源文件以后,就可以将这个文件添加到工程中。Vision 提供了几种方法将源文件添加到工程中。例如,在 Project Workspace-Files 页的文件组上点击鼠标右键,然后在弹出的菜单中选择 Add Files 菜单项,这时将打开标准的文件对话框,选择刚才创建的 MAIN.C文件即完成源文件的添加。图 3-3 添加文件 4.增加和配置 ARM 设备的启动代码。一般来说,ARM 程序需要与目标硬件的设计配置相匹配的 CPU 初始化代码。当创建工程的时候,Vision
11、要求添加与选定的 CPU 相匹配的启动代码。根据所使用的工具链的不同,启 动 代 码 文 件 所 在 的 文 件 夹 分 别 为 .ARMStartup(针 对 Keil 开 发 工 具链),.ARMGNUStartup(针对 GNU 开发工具链)和.ARMADSStartup(针对 ADS 开发工具链)。对于不同的微控制器来说,这些文件夹包含不同的 启动代码。Philips LPC2106 的启动代码文件为.StartupPhilipsStartup.s。为了和目标硬件相匹配,用户可能会修改这个启动代码文件,所以工程中的启动代码文件是 Startup.s 的一个副本。文件组()可以组织更大的
12、工程。对于 CPU 的启动代码和其他的系统配置文件,可以通过 Project-Manage-Components,Environment,Books 对话框创建一个单独的文件组。使用New(Insert)按钮创建名为 System Files 的文件组。在工程窗口中,可以将 Starup.s 文件拖放到这个新建的文件组中。图 4-5 Components,Environment,Books 如图 4-5,在工程中添加文件后,Vision 的工程空间窗口中将会出现所有的文件。这个窗口中的文件以在窗口中的排列顺序进行编译和链接。可以通过拖放的方式移动文件的位置,同时也可以单击目标和组改变它们的名字
13、。在本窗口内单击鼠标 右键,在弹出的菜单中可以进行如下的操作:设置工具选项 删除文件或组 将文件添加到组中 打开文件 图 4-5 工程空间中的文件 在工程空间中,不同的图标显示了文件和文件夹(文件组)的不同属性。如:带箭头的文件图标表示编译和链接工程文件。链接运行时不包含的文件不带箭头。对于一般的文档文件这是很常见的。然而,在属性对话框中取消 Include in Target Build 的选择,同样也可以不包含源文件。只读文件被标志为一个钥匙。在软件版本控制系统中这样的文件是很常见的,因为 SVCS 使这样文件的拷贝只读。,带有特殊选项的文件和文件夹被圆点标记。5.设置目标硬件的工具选项。
14、Vision 可以设置目标硬件的选项。通过工具栏按钮或 Project-Options for Target 菜单项打开 Options for Target 对话框,在 Target 页中设置目标硬件及所选 CPU 片上组件的参数。下图是 LPC2106 的一些参数设置。图 4-6 Target 对话框 Xtal,设备的晶振(XTAL)频率。大多数基于 ARM 的微控制器都使用片上PLL 产生 CPU 时钟。所以,一般情况下 CPU 的时钟与 XTAL 的频率是不同的。仔细查阅硬件手册以确定合适的 XTAL 的值。Use On-Chip ROM/RAM,仅针对 Keil ARM 工具。选择这
15、两个多选框以后,将设置 Keil LA 链接器/装载器。对于 GNU 和 ADS,是通过链接器控制文件实现的。External Memory 仅针对 Keil ARM工具。指定目标硬件的外部存储区域。RAM 用于存取变量,而 ROM 用于存储常量和程序代码(一般为 EPROM 或 Flash存储器)。这些信息用于配置 Keil LA 链接器/装载器。对于 GNU 和 ADS,是通过链接器控制文件实现的。对于 GNU 和 ARM ADS/RealView 工具链来说,链接器的配置是通过链接器控制文件实现的。这个文件指定了 ARM 目标硬件的存储配置。预配置的链接器控制文件 在文件夹.ARMGNU
16、 或.ARMADS 中。为了与目标硬件相匹配,用户可能会修改链接器控制文 件,所以工程中的那个文件是预配置的连接控制文件的一个副本。这个文件可以通过 Project-Options for Target 对话框的 Linker 页添加到工程中。图 4-7Linker 对话框 Enable Garbage Collection,允许未使用输入段的垃圾回收。在不支持这个选项的目标中,它会被忽略。这个选项和-r不一样,也不能在动态链接时使用。Do not use Standard System Startup Files,链接时不使用标准的系统启动文件。如果不选 中这个选项时标准的系统库会被正常使用
17、。Do not use Standard System Libraries,链接时不使用标准的系统库文件。仅使用 C和 GCC 库。Text Start,指定输出文件代码段的起始地址。必须是一个单精度的十六进制整数。为了保持和其他链接器的兼容性,必须忽略这个十六进制值前面的 0X。Data Start,指定输出文件数据段的起始地址。必须是一个单精度的十六进制整数。为了保持和其他链接器的兼容性,必须忽略这个十六进制值前面的 0X。BSS Start,指定输出文件 BSS 段的起始地址。必须是一个单精度的十六进制整数。为了保持和其他链接器的兼容性,必须忽略这个十六进制值前面的 0X。Linker
18、Script Libraries,指定在编译时导入的库。Include Paths,向路径列表中添加路径,在这些路径中 LD 将搜索库文件和 ld 控制脚本。在任何时候都可以使用这个选项。这些文件夹是按照它们在列表中的顺序搜索,且是在默认文件之前搜索的。Misc controls,使用 Misc 控制框指定链接器需要的命令,这些命令没有单独的对话框控制。Linker control string,这个文本框显示了当前链接器的命令行。6.编译工程,创建能烧写到 PROM 中的十六进制文件。一般来说,在新建一个应用程序的时候 Options-Target 页中的所有的工具和属性都要 配置。单击 B
19、uild Target 工具栏按钮将编译所有的源文件,链接应用程序。当编译有语法错误的应用程序时,Vision 将在 Output Window-Build 窗口中显示错误和警告信息。单击这些信息行,Vision 将会定位到相应的源代码处。图 4-8 编译错误提示 如果编译成功的话,源文件编译成功产生应用程序以后就可开始调试了,然后创建可下载到 EPROM 或软件仿真器中运行的 Intel 十六进制文件。当 Options for Target-Output 页中的 Create HEX file 多选框被选中后,Vision 每次编译后都会生成十六进制文件。FLASH Fill Byte、S
20、tart 和 End 文本框中的值被 OH166 使用工具用来产生十六进制文件。在 Run User Program#1 文本框中指定程序时,当编译过程完成后就可以启动 PROM 编程器了。图 4-9 编译生成十六进制文件选项 现在,可以修改工程中已存在的代码或向工程中添加代码了。Build Target 工具按钮仅编译已修改过或新建的源文件,产生可执行的文件。Vision 有一个文件的依赖列表,它记录了每一个源文件所包含的头文件。甚至工具选项都保存在文件依赖列表中,所以只有在需要的时候 Vision 才会重新编译这些源文件。通过使用不同的工程目标(project target),Vision
21、 可以使单个工程生成几个不同的程序。开发者可能需要一个目标(target)作为测试,另一个目标作为应用程序的发布版。在同一个工程文件中,每一个目标都具有各自的工具设置,通过快捷键 Alt+F7,即可调出图 9-7 进行多 目标工具设置。文件组()可以将工程中相关的的文件组织在一起。这样有利于将一组文件组织到一个功能块中或区分一个开发团队中的工程师。在以前的一些例程中,已经以文件组的形式将 CPU相关文件同其他源文件隔离开。在 Vision 中,使用这种技术很容易管理具有几百个文件的工程。在 Project-Manage-Components,Enviroment and books-Proje
22、ct Components 对话框中可以创建工程目标和文件组。在以前的一些例程中,已经使用了这个对话框添加系统配置文件。下图显示了一个例程的工程结构。图 4-10 设定多个工程目标 在编译工具栏可以快速的改变当前编译的工程目标。图 4-11 快速改变编译目标 在编译工具栏中,按钮可以弹出工程选项,其中包含多个标签页,如图 9-10。各个标签页简要介绍如下:表一:Device 从 Vision 的设备数据库中选择选择设备。Target 为应用程序指定硬件环境。Output 定义工具链的输出文件,在编译完成后运行用户程序。Listing 指定工具链产生的所有列表文件。C 设置 C 编译器的工具选项
23、,例如代码优化和变量分配。Asm 设置汇编器的工具选项,如宏处理。Linker 设置链接器的相关选项。一般来说,链接器的设置需要配置目标系统的存储分配。设置链接器定义存储器类型和段的位置。Debug Vision 调试器的设置。Utilities 配置 Flash 编程实用工具。9.3.2 测试应用程序 Vision调试器可以测试用GNU或ARM ADS/RealView工具链开发的应用程序。Vision调试器提供了两种操作模式,这两种模式可以在 Options for Target-Debug 对话框中选择。图 4-12 Debug 设定 单选框 Use Simulator 用于选择 Vis
24、ion 的软件仿真器作为调试器,它可以在没有目标硬件的情况下仿真 ARM7 微控制器的大部分功能。在目标硬件设计好之前,可以用这个软件仿真器调试嵌入式应用程序。Vision 可以仿真许多片上外设,例如串口,外部 I/O 和定时器。当为目标(target)从设备数据库中选择一个 CPU时,可仿真的片上外围就已经确定了。使用高级 GDI 驱动器,例如 Keil ULINK2 ARM 调试器提供了一个与目标硬件相连接的接口。使用高级 GDI 接口可以直接将 Vision 调试器与硬件仿真器、嵌入式 ICE(片上调试系统)相连,例如带 USB-JTAG 接口的 Keil ULINK2 仿真器。Visi
25、on 调试器可以仿真高达 4GB 的存储空间,这些存储空间可以被映射为读、写或可执行等访问权限。Vision 软件仿真器可以捕获和报告非法的存储访问。除了存储映射以外,软件仿真器同时可以仿真各种基于 ARM 微控制器的片上外围设备。在创建工程时,从设备数据库中选择的 CPU 就决定了可以用软件仿真器仿真的片上外围设备。关于从设备数据库中选择设备的信息请参考运行 Vision 及创建工程文件。可以调试菜单选择和显示片上外围设备,同时通过相应的对话框改变这些外围设备的特征。图 4-12 中,对话框选项解释如下:Use Simulator 选择 Vision 的软件仿真器作为调试工具。Use ULI
26、NK2 ARM7 Debugger 选择高级的 GDI 驱动器和调试硬件相连。Keil ULINK2 ARM7 调试器可以用带 USB-JTAG 接口的 Keil ULINK2 仿真器和目标板相连。同时也有现存的第三方 Vision 驱动器。Settings 打开已选的高级 GDI 驱动器的配置对话框。Other dialog options 对软件仿真器和高级 GDI 会话可用。Load Application at Startup 选中该选项以后,在启动 Vision 调试器时自动加载目标应用程序。Go till main()当启动调试器时开始执行程序,直到 main()函数处停止。Ini
27、tialization File 调试程序时作为命令行输入的指定文件。Breakpoints 从前一个调试会话中恢复断点设置。Toolbox 从前一个调试会话中恢复工具框按钮。Watchpoints&PA 从前一个调试会话中恢复观察点和性能分析仪的设置。Memory Display 从前一个调试会话中恢复内存显示设置。CPU DLL,Driver DLL,Parameter 配置内部 Vision 调试 DLL。这些设置来源于设备数据库。用户能修改 DLL 或 DLL 的参数。在工具栏上,点击按钮可以启动调试模式。或者可以通过 Debug-Start/Stop Debug Session 菜单
28、项启动 Vision 的调试模式。根据 Options for Target-Debug 页配置的不同,Vision 将加载应用程序、运行启动代码。关于 Vision 调试器配置的详细信息请参考设置调试选项。Vision 可以保存编辑窗口的布局以及回复最后调试时的窗口布局。如果程序停止执行,Vision 将打开一个显示源代码文本的编辑窗口或在反汇编窗口中显示相应的 CPU指令。下一个可执行的语句被标记为黄色箭头。在调试的时,大多数编辑器的功能都是可用的。例如,可以使用查找命令或纠正程序错误。应用程序的源代码文本在同一窗口中显示。Vision 的调试模式和编辑模式有如下的不同:调试菜单和调试命令
29、是可用的。调试窗口将在以后讨论。工程结构和工具参数是不能被修改的。所有的编译命令不可用。在 Debug 模式下,按钮表示执行应用程序,按钮表示重置 CPU,按钮表示停止代码执行,按钮表示设置断点,按钮可以使断点生效或失效,按钮表示关闭所 有断点,和按钮表示调试下一行代码,调试状态的界面如图 9-13。图 4-13 Debug 模式界面 下面以 HELLO 工程为例介绍 Vision 调试器的使用简要过程。HELLO 例程可在KeilC51ExamplesHello 中找到,这个例程用来通过串口打印出字符串“Hello World”。在 HELLO.C 中包含整个程序的源代码。这个小程序可以用来验证应用程序的编译、链接、以及调试。可以使用工程文件在 DOS命令行、或使用批处理文件、或 Vision 环境中执行这些操作。Vision 还可以为此例程仿真目标硬件而不需要实际上的 CPU。在编译链接完成后,就可使用 Vision 的调试器进行调试了。选择 Debug 菜单里的选项 Start/Stop Debug Session 或者点击工具栏里的对应图标进入调试模式。Vision 将会初始化调试器并启动程序运行到主函数。如图 4-14。图 4-14 Hello.c 运行结果