keil uvision5颜色4保存asm文件后关键字不变颜色而且编译时全部'错误

 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
单片机实验指导书(PDF)
下载积分:3000
内容提示:单片机实验指导书(PDF)
文档格式:PDF|
浏览次数:9|
上传日期: 14:15:26|
文档星级:
全文阅读已结束,如果下载本文需要使用
 3000 积分
下载此文档
该用户还上传了这些文档
单片机实验指导书(PDF)
关注微信公众号汇编语言开发工具|汇编语言集成开发工具(VisualASM)6.0 绿色版-东坡下载
东坡下载:内容最丰富最安全的下载站!
→ 汇编语言集成开发工具(VisualASM) 6.0 绿色版
VisualASM是一款非常不错的汇编语言集成开发软件。具有良好的向导和扩展能力。有需要的可以来使用。VisualASM说明Visual ASM是一款简易型的汇编语言集成开发软件,在软件开发中有着广泛的应用,它自带masm、tasm汇编编译器,具有良好的向导和扩展能力。VisualASM特点1、交叉平台编程:VisualASM使程序员可以在如今界面最友好的Windows操作系统上编写通用平台的汇编程序,无论是Windows、LINUX、Unix、Mac OS平台上运行的目标文件,VisualASM都可以输出。也可以使用VisualASM来编写操作系统的boot模块。&2、友好的界面:VC6.0无疑是Windows平台上最为流行的IDE,拥有广大的用户群,为了使用户降低入门难度,方便上手,我们特将VisualASM的外面与版本号设置与VC6.0相同,目的是让Windows程序员有一种亲切的感觉。&3、易用的文本编辑: VisualASM拥有目前对支持指令集变色最好的编辑器,多种的关键字颜色设置,无论是寄存器、CPU指令集、FPU指令集、伪指令,还是MMX, SSE, SSE2指令集以及3Dnow!等扩展指令集,VisualASM内部都做了详细的定义。&4、详细的工程向导:无论是16位、32位、64位程序,无论是Masm、Nasm、Tasm编译器,还是ARM、8086处理器,VisualASM 6.0都提供了统一的工程向导生成步骤。&5、超强的扩展能力:VisualASM不仅提供了常用的工程向导和工具,还支持用户插件的编写。&VisualASM更新说明1、增加了大家都想要的Tab翻页功能&2、优化了语法着色,速度有所提升,支持更多的指令集&3、更新了MyIDE类,调用速度有所提升&4、修正了插入代码片段时弹出对话框的Bug.&5、小小的改动了一下图标。&6、弄了了丑陋的Mini社区.&单片机开发用C和汇编语言各有什么优缺点单片机开发用C和汇编优缺点对比如下:1、C可以读性较强,容易让后继者接手进行扩展,汇编相对而言难度就大多了,一般人很难短时间内弄懂原开发者的原意和理清思路。2、C可移植性较强,一个单片机的程序稍加修改,可以移植到其他环境下使用,汇编程序几乎无法移植。3、汇编的时序性很强,可以精确严格按既定时序控制流程,C无法做到。4、汇编可以精确定时,C只能初略定时。
安卓官方手机版
IOS官方手机版
汇编语言集成开发工具(VisualASM)截图
java开发工具是现在一些java工程师们都是需要使用到的开发工具,但是很多的java开发工具的功能都是不一样的,学习java的程度不一样,就会使用到不一样的java开发工具!想找到一些适合自己的水平的java开发工具,就可...
中文 / 174MEclipse是一个基于Java的可扩展开
中文 / 155.7MJDK(Java Development Kit)是整
中文 / 58.2M这是一款跨平台集成开发java程序
中文 / 257KBEclips是IBM公司开发的集成开发工
中文 / 453.3MVC++.6.0.with.SP6小编亲自安装,
中文 / 17.0M大家都知道mysql最出名的管理工具
易语言是一个中国人自主开发,适合国情,不同层次不同专业的人员易学易用的汉语编程语言。易语言降低了广大电脑用户编程的门槛,尤其适合根本不懂英文或者英文了解很少的用户,可以通过使用中文语言...
中文 / 630KB易语言API助手它的唯一功能就是方
中文 / 102M易语言5.11相对于易语言5.1更新说
中文 / 80KB如果打开易语言编译源码时提示正
中文 / 3.5M易语言宝盒是首个易语言资源集合
中文 / 3.6M易语言API编程助手 2.0版本发布
中文 / 1.0M易语言宝库是精易论坛开发的一款
C语言是计算机语言的基础语言,学会了C语言,再去学习其它的语言就要简单的多了!那么随着想学习C语言的人越来越多了,如何学习C语言,学习C语言要用到那些软件都是新手比较关心的问题了!今天本站给大家准备了一些C...
中文 / 453.3MVC++.6.0.with.SP6小编亲自安装,
中文 / 173KB如果你是一个vc程序员,一定知道
中文 / 557KBvc++全名Microsoft Visual C++,
中文 / 28.4M不知道有没有朋友是喜欢在手机上
中文 / 3.3MC语言编程软件非常多,最常见的也
中文 / 109M在写《嗨翻C语言》之前,David写
汇编语言集成开发工具(VisualASM) 6.0 绿色版
本类最新软件
本类软件推荐
22.5M / 05-09 / v1.51 绿色版
852KB / 05-08 / 5.04 中文特别版
26M / 05-08 / 5.6官方版
7.4M / 05-05 / 2.1 最新版
30.7M / 05-04 / 7.1.0官方正式版
本类软件排行
本类软件必备
编程编译数据设计
请简要描述您遇到的错误,我们将尽快予以修正。
轮坛转帖HTML方式
轮坛转帖UBB方式Keil+uVision4+中文教程(文档)_甜梦文库
Keil+uVision4+中文教程(文档)
ARM Development ToolsPage 1 of 2ARM 开发工具集Keil公司开发的ARM开发工具MDK(Microcontroller Development Kit),是 用来开发基于ARM核的系列微控制器的嵌入式应用程序。它适合不同层次的开 发者使用,包括专业的应用程序开发工程师和嵌入式软件开发的入门者。MDK 包含了工业标准的Keil C编译器、宏汇编器、调试器、实时内核等组件,支持所 有基于ARM的设备,能帮助工程师按照计划完成项目。Keil ARM开发工具集集成了很多有用的工具,如下图所示,正确的使用它 们,可以有助于快速完成项目开发。 Part Number Components ?Vision IDE RealView C/C++ Compiler RealView Macro Assembler RealView Utilities RTL-ARM Real-Time Library ?Vision Debugger GNU GCC1 注意 u ?Vision IDE集成开发环境和?Vision Debugger调试器可以创建和测试 应用程序,可以用GNU ARM ADS或者RealView的编译器来编译这些 应用程序; MDK-ARM是PK-ARM的一个超集; AARM汇编器、CARM C编译器、LARM连接器和OHARM目标文件 到十六进制的转换器仅包含在MDK-ARM开发工具集中。 MDKARM2,3 DB-ARMu u除了上表所列工具外,Keil 还提供以下工具:mk:@MSITStore:M:\Keil\ARM\Hlp\armtools.chm::/armtools.htm ARM Development ToolsPage 2 of 2? ?ULINK USB-JTAG Adapter 用于通过JTAG调试和烧写程序。 MCB2100 Evaluation Boards 用于测试基于Philips LPC2100系列设备的应用 程序。 MCB2103 Evaluation Boards用于测试基于Philips LPC2103系列设备的应用 程序。 MCB2130 Evaluation Boards 用于测试基于Philips LPC2130系列设备的应用 程序。 MCB2140 Evaluation Boards 用于测试基于Philips LPC2140系列设备的应用 程序。 MCB2300 Evaluation Boards 用于测试基于Philips LPCLPC2300系列设备的 应用程序。 MCBSTM32 Evaluation Boards用于测试基于STMicroelectronics STM32 系列 设备的应用程序。 MCBSTR7 Evaluation Boards 用于测试基于STMicroelectronics STR7系列设 备的应用程序。 MCBSTR730 Evaluation Boards 用于测试基于STMicroelectronics STR730系 列设备的应用程序。 MCBSTR9 Evaluation Boards 用于测试基于STMicroelectronics STR9系列设 备的应用程序。 RTL-ARM Real-Time Library 用于建立实时库。RTL-ARM 包含用于嵌入式 应用开发的Flash文件系统、TCP/IP协议栈。 Copyright (c) Keil - An ARM Company. All rights reserved.?????????mk:@MSITStore:M:\Keil\ARM\Hlp\armtools.chm::/armtools.htm GSARM: Getting Started User's GuidePage 1 of 9基于?Vision的RealView编译工具概 述本用户指南提供了有关RealView编译工具的说明,它是RealView 微控制器开发工具集的一部分。 本指南包括如下小节:? ? ?介绍 部分对RealView编译工具进行了概述。 嵌入式程序 给出了创建面向微控制器的应用程序所需的内容。 从 CARM移植 部分说明了如何将Keil CARM下的程序移植到RealView下。修订历史? ?2006.6: 第一版. 2007.7: 添加了non-volatile memory, at attribute,和 multiple memory regions。 Copyright (c) Keil - An ARM Company. All rights reserved.介绍此用户指南是RealView微控制器开发工具集的一部分,它介绍了如何使用RealView编译工具创建 高效的嵌入式程序。对以前使用过Keil CARM编译器的用户来说,它介绍如何将CARM应用程序移 植到RealView编译工具下。 RealView编译工具是ARM公司15年来深入研发的结果。RealView微控制器开发集(RealView Microcontroller Development Kit) 涵盖了如下RealView编译工具组件。在?Vision中的Project Workspace - Books页中可以看到有关这些产品的详细的PDF手册。 RealView 编译工具产品 C/C++ 编译器 C/C++运行时库 RogueWave C++ 标准模板库 Macro Assembler(宏汇编器) Linker/Locater(链接器/定位器) Library Manager (库管理) HEX File Creator (十六进制文件生成器) 用户手册 RV 编译器和库(RV_CC.PDF) RV 编译器和库 (RV_CC.PDF) RV 编译器和库 (RV_CC.PDF) RV 汇编器 (RV_ASM.PDF) RV 链接器/工具 (RV_Link.PDF) RV 链接器/工具 (RV_Link.PDF) RV 链接器/工具 (RV_Link.PDF)RealView编译工具被工业界认为是最能够充分发挥基于ARM体系结构处理器性能的编译器。编译 器能生成更小的代码映像,可帮助设计人员开发最紧凑的代码,这将大大降低产品成本。该编译 器能够生成面向32-bit ARM 和16-bit Thumb指令集的代码,并支持完全ISO标准的C和C++。 RealView 编译工具在减少程序代码和提高执行速度两个方面同时进行了优化。下图显示了在过去7 年内这两方面的改进。file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh... GSARM: Getting Started User's GuidePage 2 of 9RealView微控制器开发工具集有评估版(Evaluation Version)和完整版(Full Version)两个版本可 用。其中评估版的限制如下:? ? ?产生的应用程序ROM映像的大小被限制在16KB内。 链接器不能使用分散加载文件(scatter-loading description files)以进行复杂的存储设计。 代码/常量的基地址被限制为0xXXxXXx,其中XX为00, 01, ..., FF。因此,存储的开始地址必须类似为0x、 0x等。 不可能产生位置独立的代码或数据。 汇编器不产生列表文件。 不能将此评估版用作商业目的。? ? ?嵌入式程序使用 RealView微控制器开发工具集编写嵌入式程序是相对容易的,本节将介绍嵌入式应用开发所 需完成的工作:?启动代码 (Startup Code)是在应用程序的main函数被调用前进行一些初始化工作。此外,它还 为内存分配函数定义的栈空间及内存堆。 Retarget库文件 为硬件的I/O口配置C运行时库。 链接器配置( Linker Configuration) 定义的目标硬件的存储映像。?Vision可以自动生成工程 所需的链接配置文件。? ?此外,还要做如下几个指定的工作:? ?定位程序代码、常量或变量到指定的存储区。 中断服务程序可在直接使用__irq 关键字用C语言来写。启动代码中包含了所需的中断微量的 重定位。对一些设备和FIQ中断,需对启动代码进行调整。 向应用程序中添加软件中断处理(Software Interrupt Handler) ,它是应用程序中SWI函数的 入口地址。 定位变量到绝对地址。 使用non-vlatile存储区。?? ?file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh... GSARM: Getting Started User's GuidePage 3 of 9RealView 微控制器开发工具集针对不同的硬件平台提供了几个启动代码文件及例程,可以在如下 几个文件夹下后到这些文件: 文件夹 C:\KEIL\ARM\Startup C:\KEIL\ARM\Examples C:\KEIL\ARM\Boards 内容 基于RealView编译工具的启动代码文件. 基于RealView编译工具的通用例程. 基于RealView编译工具的板级例程.启动代码(startup code)启动代码用于初始化CPU以与硬件设计的配置相匹配,参阅开始使用ARM开发工具集用户指南, CPU启动代码 可以获取有关启动代码完成任务的详细信息。 不同系列的设备有不同的启动代码。文件夹\ARM\Startup 包含了基于 RealView编译工具的一些 启动代码,它被配置成适用于不同的硬件平台。当创建一个新的工程时,启动代码被自动地拷贝 到用于配置文件的工程文件夹下。 大多数启动文件为设备配置提供了符号定义,可以在 ?Vision的Project - Options - Asm - Define下 键入这些符号。 下面是常用的选项:? ? ? ?REMAP: 在某些设备上执行存储映射。 EXTMEM_MODE: 配置为从片外Flash ROM执行代码。 RAM_MODE: 配置为从RAM执行代码。 RAM_INTVEC: 执行重映射并拷贝中断向量。有关变量SET符号的详细说明及相关配置选项在启动代码文件中提供。 对由?Vision自动生成的链接器配置来说,要求启动代码本身位于Reset段内,且中断向量表位于标 号Reset_Handler (代表CPU重启地址)处。 例子 :: : AREA : : EXPORT Reset_H CPU Reset Handler (executed after CPU Interrupt) Reset_Handler Reset, CODE, READONLY注意?文件夹\ARM\Startup 下的所有启动代码都是按此方法配置。Retarget库文件RealView微控制器开发工具集带有一个预定义的retarget库文件,它是许多例程的一部分。 retarget 文件修改了底层的I/O 程序,并禁止了semi-hosting SWI 中断的使用。file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh... GSARM: Getting Started User's GuidePage 4 of 9在 ..\ARM\Startup 文件夹下提供了RETARGET.C模板文件,此模板文件实现了所需的字符I/O函 数的功能如printf和scanf。/******************************************************************************/ /* RETARGET.C: 'Retarget' layer for target-dependent low level functions */ /******************************************************************************/ #include &stdio.h& #include &time.h& #include &rt_misc.h& #pragma import(__use_no_semihosting_swi) #include &lpc21xx.h& // disable semihosting // device specific header file/* Send a character via a UART channel */ int sendchar (int ch) { // implementation depends on the microcontroller hardware if (ch == '\n') { while (!(U1LSR & 0x20)); U1THR = CR; /* output CR */ } while (!(U1LSR & 0x20)); return (U1THR = ch); }/* Get a character via a UART channel */ int getkey (void) { // implementation depends on the microcontroller hardware while (!(U1LSR & 0x01)); return (U1RBR); }struct __FILE { /* Add whatever you need here */ }; FILE __ FILE __// simplified fputc version that only redirects STDOUT int fputc(int ch, FILE *f) { // redirect STDOUT return (sendchar(ch)); }// simplified fgetc version that only redirects STDIN int fgetc(FILE *f) { // redirect STDIN return (sendchar(getkey())); }int ferror(FILE *f) { /* Your implementation of ferror */ return EOF; }void _ttywrch(int ch) { sendchar (ch); }file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh... GSARM: Getting Started User's GuidePage 5 of 9void _sys_exit(int return_code) { while (1); /* endless loop */ }注意:?更多有关retarge库文件的知识在RV Compiler and Library User's Guide, The C and C++ Libraries, Tailoring the C library to a new execution environment下提供。链接器配置使用Project - Options for Target - Target 对话框可以指定嵌入式系统的所有可用的存储域。 当使能Project - Options for Target - Linker下的Use Memory Layout from Target Dialog时, ?Vision会自动生成分散加载描述文件(scatter-loading description files )。使能存储器为Read/Only 和Read/Write,它作为应用中的默认存储域。只要不用Options Properties对话框把源文件或组分配到指定的存储域,默认存储域将用于存储应用程序。 用于选择存储启动代码的存储域。这将意味着此存储空间存储了重启(reset)和中断向量表,链 接器会在启动阶段(在进入主程序以前)把所有启动代码分配到此存储域内。 NoInit 复选框用于对某存储域禁止0初始化。需要注意的是在C源程序中仍然需要0(zero_init) 初始化。相关解释见禁止零初始化 。 注意:? ? ?默认的read/only存储域用于存储程序的初始化数据及分配到RAM中的程序代码和常量。 RealView微控制器开发集的评估板不支持分散加载描述文件。 有关分散加载描述文件请参阅RV Linker and Utilities User's Guide, Using Scatter-loadingfile://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh... GSARM: Getting Started User's GuidePage 6 of 9Description Files。?分散加载描述文件以target_name.SCT文件名存储在目标文件夹下(Object File folder)。可以对 其进行编辑,在Project - Options for Target - Linker对话框下,禁止Use Memory Layout from Target Dialog 并在Scatter File下键入所需文件。散列载入描述文件例子; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; ************************************************************* LR_ROM1 0xx { ; load region ER_ROM1 0x { ; load address = execution address *.o (RESET, +First) * (+RO) } RW_IRAM1 0xx00001FE0 { ; RW data * (+RW +ZI) } }指定存储域在Project Workspace下使用快捷键可在打开Options - Properties对话框,在此对话框中可以为源文 件或组指定存储域。在Options - Properties 对话框下可以将Code / Const, Zero Initialized Data,和 Other Data 分配到在 Project - Options for Target - Target对话框中定义的各种存储域中。注意:?当RAM 被用作Code / Const 时, __main 初始化会将程序代码和常量拷贝到此RAM区并执 行。映像文件存储在Project - Options for Target - Target对话框中指定的默认存储域内。 这样的设置用于为链接器产生分散加载文件。如果禁止Project - Options for Target Linker,此设置会被忽略。 此特性在RealView微控制器开发工具集的评估版下不可用。??中断服务程序file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh...
GSARM: Getting Started User's GuidePage 7 of 9不同的ARM微控制器有不同的中断优先级和中断系统。参考开始使用ARM开发工具集用户指南, 中断,可了解各种中断相关概念。 RealView编译器提供关键字__irq 以定义标准的(irq)和(fiq)中断函数。 例子 :__irq void IRQ_Handler (void) { /* the interrupt code */ }对没有向量中断处理或FIQ中断函数的微控制器,需要按要求改变CPU的启动代码。 例子 : 下面的C代码实现了一个空的 FIQ_Handler:__irq void FIQ_Handler (void) { ; }在启动代码中,要进行如下修改以调用FIQ_Handler:Vectors LDR : LDR : PC, Reset_Addr PC, FIQ_A Instruction at FIQ Vector locationFIQ_AddrPRESERVE8 IMPORT FIQ_Handler DCD FIQ_Handler; tell linker: stack alignment is 8- use external FIQ_H FIQ Entry point软件中断管理软件中断(SWI) 函数用于产生原子代码序列,此代码序列被保护,不会响应IQR中断而执行。参阅 支持知识库文件,可以获得更多有关原子执行序列信息。 使用RealView编译工具可以很容易地创建SWI函数。在文件夹..\ARM\Examples\SWI下提供了一个 SWI的例子。 C中的SWI函数的定义如下:int __swi(0) add (int i1, int i2); int __SWI_0 (int i1, int i2) { return (i1 + i2); } // function prototype for calling from C // function implementationSWI.S 定义了一个软件中断管理。在此文件下面的表中包含了应用程序SWI函数的入口。: IMPORT IMPORT IMPORT IMPORT SWI_Table DCD DCD DCD __SWI_0 __SWI_1 __SWI_2 ; SWI 0 Function E SWI 1 Function E SWI 2 Function Entry __SWI_0 __SWI_1 __SWI_2 __SWI_3file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh... GSARM: Getting Started User's GuidePage 8 of 9DCD :__SWI_3; SWI 3 Function Entry定位变量到指定的位置使用定义在头文件 absacc.h中的__at 宏,可以将变量以如下方式定位到绝对地址处: C 例子:#include &absacc.h& const char MyText[] __at (0x1F00) = &TEXT AT ADDRESS 0x1F00&; int x __at (0x); // variable at address 0x汇编例子 : 在汇编文件中可以使用段名,由|.ARM.__AT_&addr&|组成来定义位置。下面的例子是将一个段定 义到地址0xFFE0处:AREA |.ARM.__AT_0xFFE0|, CODE, READONLY禁止0初始化带有非易失(non-volatile)存储器的嵌入式系统在启动时会要求变量被初始化为0。 使用NoInit 可以定义一个存储域为非易失(non-volatile)的。此外,还需要在C代码中用zero_init属性定义变量,如下所示:__attribute__((zero_init))当存在几个混合的初始化Read/Write存储域,需要将使用非易失的模块分配到NoInit存储域。需要 在对话框Options - Properties 下Zero Initialized Data中选择正确的存储域。详情请参阅指定存储 区域。注意:?此特性在RealView微控制器开发工具集的评估版下不可用。file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh... GSARM: Getting Started User's GuidePage 9 of 9从CARM移植本节介绍如何将应用程序从Keil CARM编译器移植到RealView编译工具下。 将程序从Keil CARM编译器移植到RealView编译工具下所需的步骤如下: 1. 在 Project - Components, Environment, and Books - Folder/Extensions下选择RealView编译器 。 2. 替换并配置启动代码。支持不同微控制器的预配置启动代码在文件夹..\ARM\Startup下。 3. 使用printf或scanf检查应用是否使用了控制I/O函数。若使用的话需要添加一个库文件retarget。 4. 配置目标硬件的存储布局。 现在可以简单地重新编译应用代码,在编译应用代码时可能遇到下面的情况:? ? ?RealView编译工具通常趋向于使用更多的栈,这就需要增加应用中的栈空间。 调整应用中的软件中断函数(SWI)。 组合同一个源模块中在RAM中执行的函数,并利用Options - Properties对话框把代码/常量分 配到RAM中。 内嵌汇编函数的语法不同。 使用关键字__at 需要包含头文件absacc.h。 pragma NOINIT 需要被替换,如禁止零始化所述。? ? ?file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh... GSARM: Getting Started User's GuidePage 1 of 46开始使用ARM开发工具集用户指南感谢您选择了Keil公司的微控制器软件开发工具。使用这个工具可以创建ARM、XC16x、C16x、ST10、251及8051等微控制器的 嵌入式应用程序,详细的设备信息请参考设备数据库。 Keil公司将不断地添加新的设备和片上外设的的仿真支持,因此,如果本地设备数据库不包含用户打算使用的设备,请检查一下网 络设备数据库。 这个用户手册提供了Keil ARM开发工具的概述。包括如下的章节:? ?简介 给出来了开发工具的概述、讨论了文件结构。 开发工具 描述了包括?Vision IDE/调试器的Keil ARM开发工具的主要特性。解释了如何选择Keil CARM 编译器、GNU或 ADS/RealView工具链。 创建应用程序 描述了如何创建工程、编辑源文件、编译和修改语法错误以及产生可执行代码。 测试程序 描述了如何使用?Vision调试器仿真和测试完整的应用程序。 例程 提供了几个例子程序显示如何使用Keil ?Vision/ARM及相关开发工具。 使用片上外设 显示了如何使用开发工具访问片上外设。 CPU设置 提供了CPU启动代码和工具配置的详细信息。 JTAG调试讨论了如何如何使用Keil ULINK USB-JTAG仿真器调试目标系统。 Flash编程 描述了如何通过JTAG接口设置Keil ULINK仿真器进行Flash编程。 RDI接口驱动 解释了RDI调试解决方案的使用。? ? ? ? ? ? ? ?版本历史:? ? ? ?2005年7月:增加了 RDI接口驱动。 2004年11月:CPU和Flash编程章节的修订。 2004年5月:增加了Keil ARM 工具链及?Vision用户手册的相关部分。 2004年2月:ARM工具相关资料的收集。 Copyright (c) Keil - An ARM Company。 All rights reserved。介绍使用Keil软件开发工具可以创建基于ARM, XC16x, C16x, ST10, 251以及8051等微控制器(详细的微控制器列表请参考设备数据库) 的嵌入式应用程序。 Keil公司将不断地向设备数据库中添加新设备以及片上外设的仿真支持,因此,如果在本地安装的?Vision设备数据库中没有合适 的设备请参考一下基于网站的设备数据库。 这一章将介绍Keil 软件的可用ARM开发工具,简单的介绍一下软件开发周期以及ARM开发工具链的 文件结构 。软件开发周期使用?Vision 3作为嵌入式开发工具,其开发的流程与其他软件开发工具基本一样,一般分为以下几步: 1) 2) 3) 4) 5) 新建一个工程,从设备库中选择目标芯片,配置工程编译器环境; 用C或汇编编写源文件; 编译目标应用程序; 修改源程序中的错误; 测试链接应用程序。下图描述了完整的?Vision /ARM软件开发流程。本节后面将对其中的每一部分做简要描述。file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 2 of 46?Vision IDE?Vision IDE集成了工程管理、带交互式错误修正的编辑器、选项设置、编译工具以及在线帮助。使用?Vision可以创建源文件以 及将这些源文件组织成定义目标应用程序的工程。用户可将注意力全部集中在?Vision集成开发环境,因为它提供了嵌入式应用程序 的自动编译、汇编以及链接。C编译器和宏汇编器在?Vision IDE中创建源文件,这些源文件将使用C编译器编译或宏汇编器汇编。编译器和汇编器处理源文件,产生可重载的目标 文件。 在Keil ?Vision/ARM中可以使用GNU 或ARM ADS/RealView 的开发工具。?Vision/ARM包含了许多使用这些工具链的例程及详细 信息。库管理器库管理器可以从编译器或汇编器产生的目标文件中创建目标库文件。库是具有特定格式和顺序的目标模块的集合,它在链接器中 使用。当链接器处理库文件时,只有那些在程序中使用到的库文件目标模块才会被处理。链接器/装载器链接器/装载器使用目标模块创建绝对的ELF/DWARF格式文件,这些目标模块来源于库文件或编译器和汇编器产生的目标文件。 绝对的目标文件或模块不包含可重载的代码或数据。所有的代码和数据都存储在固定的内存位置。绝对的ELF/DWARF文件可以在下 述情况下使用:? ? ?编程Flash ROM或其他存储设备。 仿真和目标调试的?Vision调试器。 程序测试的片内仿真器。?Vision调试器?Vision的源码级调试器非常适合快速可靠的调试。这个调试器包括一个高速的软件仿真器,它可以仿真一个包括片上外设和外部 硬件的完整ARM系统。当用户从设备数据库中选择所需芯片时,它的属性将自动被配置。 ?Vision的调试器为目标硬件上程序的测试提供了几种方法:?使用带USB-JTAG接口的Keil ULINK2仿真器进行应用程序的Flash下载和软件测试,它们是通过集成在ARM设备中的嵌入式ICE 宏单元实现的。 使用高级的GDI 接口连接?Vision调试器和目标系统。?目录结构file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 3 of 46安装程序将开发工具安将在根目录下的子目录,默认的根目录是C:\KEIL。下表列出了MDK的目录结构。根据软件版本及安装目 录的不同这种结构会有所不同,以下说明以默认目录为例。ARM 开发工具目录 C:\KEIL\ARM\BIN C:\KEIL\ARM\INC C:\KEIL\ARM\ADS C:\KEIL\ARM\GNU C:\KEIL\ARM\Flash C:\KEIL\ARM\HLP C:\KEIL\ARM\ ... \Startup C:\KEIL\ARM\ ... \Examples C:\KEIL\ARM\ ... \Boards 说明 ?Vision/ARM工具链的可执行文件 Keil C的包含文件及特定的C编译器包含文件 ARM ADS/RealViewTM工具链的例程及启动文件 GNU工具链的例程及启动文件 Keil ULINK2 USB-JTAG Adapter Flash编程算法文件 Keil ARM 工具链及?Vision的在线帮助文档 特定设备的启动文件 基于Keil C, GNU or ADS的一般例程 基于Keil C, GNU or ADS的评估板例程通用?Vision文件目录 C:\KEIL\UV3 说明 通用?Vision文件请求协助Keil公司致力于提供嵌入式软件开发工具及可用文档。如果用户有关于这些产品在线手册的建议或注解,请与Keil公司联系。如 果用户认为发现了这款软件的问题,在请求Keil公司的技术支持之前做如下处理: 1. 阅读要完成工作或任务所涉及到的数据手册中的相关部分。 2. 确保所用的是当前最新的软件或使用工具。可以在.cn/wen-class.asp?lx=big&anid=51 中查询最新的软 件版本。 3. 分离出问题,以便确定这个问题是关于哪个方面的,如汇编器、编译器、链接器、调试器或其他开发工具的问题。 4. 通过将问题减少到几行,以便进一步的分离问题。 如果用户做了这些工作以后问题仍然不能解决,请和Keil公司的技术支持部门联系(必须附上产品序列号和版本号)。推荐使用 Email的形式将问题发给技术支持部门。如果使用的是传真,必须附上用户的名字和电话号码以便技术支持部门和用户联系。 在描述问题的时候必须尽可能的详细。问题表述地越详细,技术支持部门找出解决方案就越迅速。如果用户的问题只有单页的代 码量,请以Email的形式发给技术支持部门。如果可能的话,必须保证用户的问题能被?Vision的软件仿真器所重现。请尽量避免发送 完整的应用程序或过长的清单,以免影响技术支持部门的回复速度。 注意:?用户可以从.cn/news-class-class.asp获得技术支持、产品更新、应用笔记以及例程。开发工具Keil ARM开发工具提供了大量的特性和优越性,有助于开发者快速成功的开发嵌入式应用程序。这些工具易学易用,为用户完成 设计目标提供了保证。概述?Vision IDE和调试器是Keil ARM开发工具的核心部分。?Vision提供了两种工作模式,即编译模式 和调试模式。 在?Vision的编译模式下, 可以维护工程文件、产生应用程序。?Vision可以使用GNU或ARM ADS/RealView开发工具。 在?Vision的调试模式下,可以根据功能强大的CPU和外设软件仿真器或根据连接调试器和目标系统的Keil ULINK2仿真器测试程 序。同时ULINK仿真器还可以下载应用程序到目标系统的Flash ROM中。特性和优点特性 优点 ?Vision软件仿真器是唯一能完全仿真Atmel,Philips和Samsung 在目标硬件产品设计完成之前就可以编写和测试应用程序。研究不 ARM芯片片上外设的调试器。 同的硬件配置以优化硬件的设计。file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 4 of 46使用高级仿真接口(AGSI)可以提高仿真的性能。 ?Vision软件仿真器的代码覆盖特性提供了程序执行的统计分 析。 ?Vision的设备数据库自动的配置了目标微处理器的开发工 具。 ?Vision IDE集成了第三方的工具,如VCS, CASE和 FLASH/ 设备编程器。 带USB-JTAG 接口的ULINK仿真器既支持调试又支持带可配 置算法文件的Flash编程。 一样的目标调试器和仿真器用户接口。 ?Vision在一个单一的环境中集成了工程管理器、编辑器和调 试器。通过增加定制的外设驱动可以精确的仿真复杂的系统。 可以彻底地测试和验证安全系统。执行分析报告可以作为测试证明 以供浏览和打印。 消除了工具配置中的错误,最小化工具配置的时间。 快速地访问开发工具和第三方工具。所有地配置细节都保存在 ?Vision工程中。 同一个工具既可以用作调试又可以用作编程。没有额外的时间配置 要求。 缩短学习路径。 加速了应用程序的开发。当在编辑源程序时,可以配置调试器;当 在调试程序时,可以修改源代码。uVision 集成开发环境?Vision IDE是一个窗口化的软件开发平台,它集成了功能强大的编辑器、工程管理器以及各种编译工具(包括C编译器、宏汇编 器、链接/装载器和十六进制文件转换器)。?Vision IDE包含以下功能组件,能加速嵌入式应用程序开发过程。 u u u u u u u u u 功能强大的源代码编辑器; 可根据开发工具配置的设备数据库; 用于创建和维护工程的工程管理器; 集汇编、编译和链接过程于一体的编译工具; 用于设置开发工具配置的对话框; 真正集成高速CPU及片上外设模拟器的源码级调试器; 高级GDI接口,可用于目标硬件的软件调试和Keil ULINK仿真器的连接; 用于下载应用程序到Flash ROM中的Flash编程器; 完善的开发工具手册、设备数据手册和用户向导。?Vision IDE使用简单、功能强大,是保证设计者完成设计任务的重要保证。?Vision IDE还提供了大量的例程及相关信息,有助 于开发人员快速开发嵌入式应用程序。 ?Vision IDE提供了编译和调试两种工作模式。编译模式用于维护工程文件和生成应用程序;调试模式下,则可以用功能强大的 CPU和外设仿真器测试程序,也可以使用调试器经Keil ULINK USB-JTAG适配器(或其他AGDI驱动器)连接目标系统来测试程序。 ULINK仿真器能用于下载应用程序到目标系统的Flash ROM中。操作?Vision集成开发环境包括菜单栏、工具栏、源文件显示框、对话框以及信息显示框等。?Vision允许同时打开和浏览多个源文 件。 ?Vision有如下两种操作模式:? ?编译模式: 编译所有应用程序文件,产生可执行程序。编译模式的这个特性将在创建应用程序一节详细阐述。 调试模式:为测试应用程序提供了一个功能强大的调试器。调试模式将在测试程序一节详细阐述。在这两种操作模式下都可以使用源文件编辑器修改源文件代码。调试模式下增加了一个窗口,存储了一个定制的界面层。下图显 示了调试模式下uVision的典型配置。file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 5 of 46?Project Workspace窗口的各个页面可以访问如下内容:工程的文件和组;调试模式下CPU的寄存器;工具及工程相关的在线手 册。 Output Window 窗口的各个页面提供了如下内容: 编译信息及快速错误定位;调试 命令输入/输出控制台;带快速文件访问的 文本搜索 结果。 Memory Window 窗口以变量格式的形式显示了可以访问的内存区域。 Watch & Call Stack Window 窗口可以浏览及修改程序变量,显示当前函数调用树。 Workspace窗口用于文件编辑,反汇编输出窗口及调试相关信息。 Peripheral Dialogs窗口用于观察微控制器中片上外设的状态。?? ? ? ?实用工具?Vision包含了许多功能强大的实用工具。这些实用工具在下标中详细说明。 实用工具 文本查找 使用Flash 菜单 使用工具菜单 使用SVCS菜单 工具参数的键码序列 说明 在所有指定的文件中实现文本搜索。 使用Flash编程工具。 在?Vision IDE中使用定制实用工具。 为软件版本控制系统提供了一个可配置的SVCS接口。 键码序列用于从?Vision环境向外部的定制程序传递参数。选择工具集?Vision可以使用ARM RealView编译工具、 ARM ADS编译器、GNU GCC编译器和Keil C ARM编译器。当使用GNU GCC编译 器或ARM ADS编译器时必须另外安装它们编译集。实际使用的工具集可以在?Vision IDE的Project - Components, Environment, and Books对话框的Folders/Extensions页(见下图)中选择。?Use RealView Compiler复选框表示本工程使用ARM开发工具。RealView Folder文本框指定开发工具的路径。下面的例子显示file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 6 of 46了各种版本的ARM ADS/RealView 开发工具的路径:? ? ? ? ??Vision的RealView编译器: BIN31\ ADS V1.2: C:\Program Files\ARM\ADSv1_2\Bin RealView评估版2.1: C:\Program Files\ARM\RVCT\Programs\2.1\350\eval2-sc\win_32-pentiumUse Keil CARM Compiler复选框表示本工程使用Keil CARM编译器、Keil AARM汇编器和Keil LARM链接器/装载器。 Use GNU Compiler复选框表示本工程使用GNU开发工具。Cygnus Folder文本框指定GNU的安装路径。GNU-Tool-Prefix文本框 指定不同的GNU工具链。下面是各种GNU版本的例子:? ?带uclib的GNU V3.22: GNU-Tool-Prefix: arm-uclibc- Cygnus Folder: C:\Cygnus 带标准库的GNUARM V4: GNU-Tool-Prefix: arm-elf- Cygnus Folder: C:\Program Files\GNUARM\?Keil根目录的设置是基于?Vision/ARM开发工具的安装目录的。对于Keil ARM 工具来说,工具组件的路径是在开发工具目录中 配置的(参考文件结构)。注意:?对使用ARM ADS/RealView工具来说,编译器可能在指定的头文件中找不到设备。在这种情况下,必须在?Vision的Project Options for Target - C对话框的Include Paths文本框中输入正确的路径。例如Keil\ARM\INC\Atmel。现在开发者必须能够转换 和调试像Keil\ARM\ADS\Examples\Measure这样的例程。带USB-JTAG 接口的ULINK仿真器带USB-JTAG 接口的Keil ULINK2 仿真器是一个连接微机USB端口和目标硬件 JTAG或OCDS调试端口的硬件(见下图)。使用带有ULINK仿真器的Keil ?Vision IDE/调试器,可以在实际的目标板上轻松的实现嵌入式应用程序的创建、下载以及测试。 使用ULINK仿真器可以实现如下功能:? ? ? ? ? ?下载目标程序。 检查内存和寄存器。 整个程序的单步执行。 插入多个段点。 运行实时程序。 对FLASH存储器进行编程。更详细的信息请参考JTAG调试 和 Flash编程。创建应用程序这一章描述了?Vision的编译模式,说明如何使用用户接口创建简单的工程。同时讨论了产生和维护工程的选项,包括输出文件选 项、优化代码质量的ARM工具的配置以及?Vision工程管理特性。 为了便于对?Vision/ARM产品的评估和熟悉,keil公司提供了具有简单例程和功能受限的评估版。这些简单的例程也同样包含在标 准版的产品中。 注意:?Keil ?Vision/ARM评估版在功能和创建应用程序代码容量上受到限制。更多评估版的受限信息请参考发布笔记(Release Notes)。 对如大的应用程序须使用标准版的开发工具。创建一个工程?Vision包含一个工程管理器,它使得设计ARM微控制器的嵌入式应用程序更加方便。为了创建一个新的工程,必须按如下步骤实 现:file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 7 of 46? ? ? ? ? ?运行?Vision,选择工具集。 创建一个工程文件,从设备数据库中选择一个CPU芯片。 创建一个新的源文件,将这个源文件加载到工程中。 增加和配置ARM设备的启动代码。 设置目标硬件的工具选项。 编译工程,创建能烧写到PROM中的十六进制文件。本章后面将一步步说明如何创建一个简单的?Vision工程。运行uVision?Vision是一个标准的窗口应用程序,可以点击程序按钮开始运行。为了创建一个新的?Vision工程必须作如下处理:? ? ?选择工具集 创建工程文件 选择设备选择工具集在开发ARM工程时,用户可以使用Keil C, GNU, 或ARM ADS/RealView开发工具。对于?Vision工程来说,必须在Project Components, Environment, and Books对话框中选择工具集。创建工程文件单击Project -&New...-&?Vision Project菜单项,?Vision 3将打开一个标准对话框,输入希望新建工程的名字即可创建一个新的工程, 建议对每个新建工程使用独立的文件夹。例如,这里先建立一个新的文件夹,然后选择这个文件夹作为新建工程的目录,输入新建 工程的名字Project1,?Vision将会创建一个以Project1.UV2为名字的新工程文件,它包含了一个缺省的目标(target)和文件组名。这 些内容在Project Workspace-&Files中可以看到。选择设备在创建一个新的工程时,?Vision要求为这个工程选择一款CPU。选择设备对话框显示了?Vision的设备数据库,只需要选择用户 所需的微控制器即可。例如,选择 Philips LPC2106微控制器,这个选择设置了LPC2106设备的必要工具选项、简化了工具的配置。注意:? ?当创建一个新的工程时,?Vision会自动为所选择的CPU添加合适的启动代码。 对于一些设备而言,?Vision需要用户手动地输入额外的参数。请仔细阅读这个对话框右边的信息,因为它可能包含所选设备的 额外配置要求。当从设备数据库中选择了一个CPU后,就可以在Project Workspace -&Books页中打开这个设备的用户手册。这些用户数据手册是 Keil 开发工具CD-ROM的一部分。file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 8 of 46创建新的源文件通过File -&New...菜单项可创建一个新的源文件。这时将打开一个空文件编辑窗口,在这里可以输入源文件代码。当通过File&Save As 对话框以扩展名.C的形式保存了这个源文件以后,?Vision可以用彩色高亮度显示C 语言的语法。例如,保存下面的代 码到MAIN.C文件中。#include &LPC210x.H& void wait (void) ; } { /* LPC210x definitions */ /* wait function */ /* only to delay for LED flashes */int main (void) { IODIR = 0xFF; while (1) { for (j = 0x01; j & 0x80; IOSET = for (i = 0; i & 10000; wait (); } IOCLR = } for (j = 0x80; j & 0x01; IOSET = for (i = 0; i & 10000; wait (); } IOCLR = } } }/* Delay var */ /* LED var */ /* /* /* /* /* /* P0.0..7 defined as Outputs */ Loop forever */ Blink LED 0, 1, 2, 3, 4, 5, 6 */ Turn on LED */ Delay for 10000 Counts */ call wait function */j &&= 1) { i++) {/* Turn off LED */ j &&=1) { i++) { /* /* /* /* Blink LED 7, 6, 5, 4, 3, 2, 1 */ Turn on LED */ Delay for 10000 Counts */ call wait function *//* Turn off LED */创建源文件以后,就可以将这个文件添加到工程中。?Vision提供了几种方法将源文件添加到工程中。例如, 在Project Workspace -&Files页的文件组上点击鼠标右键,然后在弹出的菜单中选择Add Files菜单项,这时将打开标准的文件对话框,选择 刚才创建的MAIN.C文件即完成源文件的添加。添加及配置启动代码一般来说,ARM程序需要与目标硬件的设计配置相匹配的CPU初始化代码。当创建工程的时候,?Vision要求添加与选定的 CPU相匹配的启动代码。根据所使用的工具链的不同,启动代码文件所在的文件夹分别为 ..\ARM\Startup (针对Keil开发工具 链),..\ARM\GNU\Startup(针对GNU开发工具链) 和 ..\ARM\ADS\Startup(针对ADS开发工具链)。对于不同的微控制器来说,这 些文件夹包含不同的 启动代码 。Philips LPC2106的启动代码文件为...\Startup\Philips\Startup.s 。为了和目标硬件相匹配,用户 可能会修改这个启动代码文件,所以工程中的启动代码文件是Startup.s的一个副本。file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 9 of 46组工程文件文件组(file group)可以组织更大的工程。对于CPU的启动代码和其他的系统配置文件,可以通过Project -&Components, Environment, Books对话框创建一个单独的文件组。使用New (Insert)按钮创建名为System Files的文件组。在工程窗口中,可以将 Starup.s文件拖放到这个新建的文件组中。Project Workspace -&Files页列出了所有的工程文件。在工程工作区中双击这些文件名可以打开它们,此时可以对这些文件进 行编辑。?Vision有一个特点,就是可以在编辑器中以图形界面的形式编辑启动代码。设置目标硬件的工具选项?Vision可以设置目标硬件的选项。通过工具栏按钮或Project - Options for Target菜单项打开Options for Target对话框,在 Target页中设置目标硬件及所选 CPU片上组件的参数。下图是LPC2106的一些参数设置。下表描述了Target对话框的选项: 对话框项 描述file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 10 of 46Xtal Use On-Chip ROM/RAM设备的晶振(XTAL)频率。大多数基于ARM的微控制器都使用片上PLL产生CPU时钟。所以,一般情况下CPU 的时钟与XTAL的频率是不同的。仔细查阅硬件手册以确定合适的XTAL的值。 仅针对Keil ARM工具。选择这两个多选框以后,将设置Keil LA链接器/装载器。对于GNU和ADS,是通过链接 器控制文件实现的。External Memory 仅针对Keil ARM工具。指定目标硬件的外部存储区域。RAM用于存取变量,而ROM用于存储常量和程序代码 (一般为EPROM或Flash存储器)。这些信息用于配置Keil LA链接器/装载器。对于GNU和ADS,是通过链接器控 制文件实现的。增加连接控制文件(针对GNU和ADS)对于GNU和ARM ADS/RealView工具链来说,链接器的配置是通过链接器控制文件实现的。这个文件指定了ARM目标硬件的 存储配置。预配置的链接器控制文件 在文件夹..\ARM\GNU或..\ARM\ADS中。 为了与目标硬件相匹配,用户可能会修改链接器 控制文件,所以工程中的那个文件是预配置的连接控制文件的一个副本。这个文件可以通过Project - Options for Target对话框的 Linker页添加到工程中。下表描述了链接器对话框的各个选项的功能: 对话框项 描述Enable Garbage Collection 允许未使用输入段的垃圾回收。在不支持这个选项的目标中,它会被忽略。这个选项和'-r'不一样,也 不能在动态链接时使用。 Do not use Standard System Startup Files Do not use Standard System Libraries Text Start Data Start BSS Start Linker Script File Include Libraries Include Paths Misc controls Linker control string 链接时不使用标准的系统启动文件。如果不选 中这个选项时标准的系统库会被正常使用。 链接时不使用标准的系统库文件。仅使用C和GCC库。 指定输出文件代码段的起始地址。必须是一个单精度的十六进制整数。为了保持和其他链接器的兼容 性,必须忽略这个十六进制值前面的0X。 指定输出文件数据段的起始地址。必须是一个单精度的十六进制整数。为了保持和其他链接器的兼容 性,必须忽略这个十六进制值前面的0X。 指定输出文件BSS段的起始地址。必须是一个单精度的十六进制整数。为了保持和其他链接器的兼容 性,必须忽略这个十六进制值前面的0X。 指定在编译时导入的库。 向路径列表中添加路径,在这些路径中LD将搜索库文件和ld控制脚本。在任何时候都可以使用这个选 项。这些文件夹是按照它们在列表中的顺序搜索,且是在默认文件之前搜索的。 使用Misc 控制框指定链接器需要的命令,这些命令没有单独的对话框控制。 这个文本框显示了当前链接器的命令行。编译工程以及创建十六进制文件一般来说,在新建一个应用程序的时候Options -&Target页中的所有的工具和属性都要配置。单击Build Target工具栏按钮将 编译所有的源文件,链接应用程序。当编译有语法错误的应用程序时,?Vision将在Output Window -&Build窗口中显示错误和警 告信息。单击这些信息行,?Vision将会定位到相应的源代码处。file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 11 of 46源文件编译成功产生应用程序以后就可开始调试了,然后创建可下载到EPROM或软件仿真器中运行的Intel十六进制文件。 当Options for Target -&Output页中的Create HEX file多选框被选中后,?Vision每次编译后都会生成十六进制文件。FLASH Fill Byte、Start和End文本框中的值被OH166使用工具用来产生十六进制文件。在Run User Program #1文本框中指定程序时,当编译 过程完成后就可以启动PROM编程器了。现在,可以修改工程中已存在的代码或向工程中添加代码了。Build Target工具按钮仅编译已修改过或新建的源文件,产生可 执行的文件。?Vision有一个文件的依赖列表,它记录了每一个源文件所包含的头文件。甚至工具选项都保存在文件依赖列表 中,所以只有在需要的时候?Vision才会重新编译这些源文件。工程目标和文件组通过使用不同的工程目标(project target),?Vision 可以使单个工程生成几个不同的程序。开发者可能需要一个目标(target)作 为测试,另一个目标作为应用程序的发布版。在同一个工程文件中,每一个目标都具有各自的工具设置。 文件组(file group)可以将工程中相关的的文件组织在一起。这样有利于将一组文件组织到一个功能块中或区分一个开发团队 中的工程师。在以前的一些例程中,已经以文件组的形式将 CPU相关文件同其他源文件隔离开。在?Vision中,使用这种技术很 容易管理具有几百个文件的工程。 在Project -&Targets, Groups, Files 对话框中可以创建工程目标和文件组。在以前的一些例程中,已经使用了这个对话框添加 系统配置文件。下图显示了一个例程的工程结构。Project Workspace窗口显示了所有的组和相关文件。这个窗口中的文件以在窗口中的排列顺序进行编译和链接。可以通过拖 放的方式移动文件的位置,同时也可以单击目标和组改变它们的名字。在本窗口内单击鼠标 右键,在弹出的菜单中可以进行如 下的操作:? ? ?设置工具选项 删除文件或组 将文件添加到组中file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 12 of 46?打开文件在编译工具栏可以快速的改变当前编译的工程目标。在工程工作区浏览文件和组的属性在Project Workspace - Files页中,不同的图标显示了文件和组的不同属性。这些图标解释如下: 带箭头的文件图标表示编译和链接工程文件。 链接运行时不包含的文件不带箭头。对于一般的文档文件这是很常见的。然而,在属性对话框中取消Include in Target Build的选 择,同样也可以不包含源文件。 只读文件被标志为一个钥匙。在软件版本控制系统中这样的文件是很常见的,因为SVCS使这样文件的拷贝只读。 带有特殊选项的文件和文件夹被圆点标记。 注意:?在工程的不同目标(target)中,不同的图标给出了工具设置的快速提示。这些图标反映了当前所选目标的属性。例如,如果 在目标的文件或文件夹设置了特殊的属性,当目标被选中时图标上就会显示圆点。工程选项页概述在Project - Options对话框页可以设置所有的工具选项。所有的选项都保存在?Vision工程文件中。 在Project Workspace -&Files窗口点击鼠标右键,在弹出的菜单中可以设置文件夹或单个文件的不同选项,这些选项在文件和 文件夹选项中解释过。在这种情况下,可能有附加的属性页及仅与所选项相关的对话框页。 下表概述了各种选项对话框的功能。 对话框页 描述 Device Target Output Listing C Asm Linker Debug Utilities 注意:?从?Vision的设备数据库中选择选择设备。 为应用程序指定硬件环境。 定义工具链的输出文件,在编译完成后运行用户程序。 指定工具链产生的所有列表文件。 设置C编译器的工具选项,例如代码优化和变量分配。 设置汇编器的工具选项,如宏处理。 设置链接器的相关选项。一般来说,链接器的设置需要配置目标系统的存储分配。设置链接器定义存储器类型和段的 位置。 ?Vision调试器的设置。 配置Flash编程实用工具。C编译器、Asm和链接器对话框页的标签随实际选择的工具链的不同可能有所差异。获得帮助在对话框中可以使用内容帮助。只需单击对话框右下角的帮助按钮即可获得相关的帮助信息。使用?Vision调试器测试程序这一章描述了?Vision的调试模式,说明了如何使用用户接口测试一个简单的例程。同时讨论了程序调试的仿真模式及不同的 可用选项设置。 ?Vision调试器可以测试用GNU或ARM ADS/RealView工具链开发的应用程序。?Vision调试器提供了两种操作模式,这两种模 式可以在Options for Target -&Debug 对话框中选择。file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 13 of 46?单选框Use Simulator用于选择?Vision的软件仿真器作为调试器,它可以在没有目标硬件的情况下仿真ARM7微控制器的大 部分功能。在目标硬件设计好之前,可以用这个软件仿真器调试嵌入式应用程序。?Vision可以仿真许多片上外设,例如串 口,外部I/O和定时器。当为目标(target)从设备数据库中选择一个CPU时,可仿真的片上外围就已经确定了。 使用高级GDI驱动器,例如Keil ULINK2 ARM调试器 提供了一个与目标硬件相连接的接口。使用高级GDI接口可以直接将 ?Vision调试器与硬件仿真器、嵌入式ICE(片上调试系统)相连,例如带USB-JTAG接口的Keil ULINK2仿真器。?CPU仿真?Vision调试器可以仿真高达4GB的存储空间,这些存储空间可以被映射为读、写或可执行等访问权限。?Vision软件仿真器可 以捕获和报告非法的存储访问。除了存储映射以外,软件仿真器同时可以仿真各种基于ARM微控制器的片上外围设备。在创建 工程时,从设备数据库中选择的CPU就决定了可以用软件仿真器仿真的片上外围设备。关于从设备数据库中选择设备的信息请 参考运行?Vision及创建工程文件 。可以调试菜单选择和显示片上外围设备,同时通过相应的对话框改变这些外围设备的特征。启动调试模式可以通过Debug -&Start/Stop Debug Session菜单项启动?Vision的调试模式。根据Options for Target -& Debug页配置的不同, ?Vision将加载应用程序、运行启动代码。关于?Vision调试器配置的详细信息请参考设置调试选项。?Vision可以保存编辑窗口的 布局以及回复最后调试时的窗口布局。 如果程序停止执行,?Vision将打开一个显示源代码文本的编辑窗口或在反汇编窗口中显 示相应的CPU指令。下一个可执行的语句被标记为黄色箭头。 在调试的时,大多数编辑器的功能都是可用的。例如,可以使用查找命令或纠正程序错误。应用程序的源代码文本在同一窗 口中显示。?Vision的调试模式和编辑模式有如下的不同:? ?调试菜单和调试命令是可用的。调试窗口将在以后讨论。 工程结构和工具参数是不能被修改的。所有的编译命令不可用。执行应用程序?Vision有以下几种方法开始执行应用程序。? ? ?使用调试菜单和调试命令。 在编辑器或反汇编窗口上单击鼠标右键,在弹出的菜单中选择Run till Cursor line菜单项。 在Output Window C Command页中使用 Go, Ostep, Pstep和Tstep命令。设置调试选项Options for Target - Debug对话框用于配置?Vision调试器。下表描述了调试对话框的选项: 对话框项 Use Simulator Use ULINK2 ARM7 Debugger Settings Other dialog options 描述 选择?Vision的软件仿真器作为调试工具。 选择高级的GDI驱动器和调试硬件相连。Keil ULINK2 ARM7调试器可以用带USB-JTAG接口的Keil ULINK2仿真器和目标板相连。同时也有现存的第三方?Vision驱动器。 打开已选的高级GDI驱动器的配置对话框。 对软件仿真器和高级GDI 会话可用。file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 14 of 46Load Application at Startup Go till main () Initialization File Breakpoints Toolbox Watchpoints & PA Memory Display CPU DLL Driver DLL Parameter选中该选项以后,在启动?Vision调试器时自动加载目标应用程序。 当启动调试器时开始执行程序,直到main()函数处停止。 调试程序时作为命令行输入的指定文件。 从前一个调试会话中恢复断点设置。 从前一个调试会话中恢复工具框按钮。 从前一个调试会话中恢复观察点和性能分析仪的设置。 从前一个调试会话中恢复内存显示设置。 配置内部?Vision调试DLL。这些设置来源于设备数据库。用户能修改DLL或DLL的参数。调试窗口和对话框在调试阶段,?Vision提供了几个用于帮助调试的窗口和对话框。它们可以通过工具按钮和?Vision菜单打开。 工具栏 菜单项和描述 Debug Breakpoint... (Ctrl+B):设置、浏览和修改断点。 View Code Coverage Window:已执行代码的统计。 View Project Workspace Regs Tab:显示或修改CPU寄存器的内容。 View Disassembly Window: 混合源代码的汇编指令和运行轨迹记录。 View Logic Analyzer Window: 变量或I/O值改变的图形化显示。 View Memory Window: 查看和修改内存的值。 Debug Memory Map...: 指定数据和程序代码的存储区域。 View Output Window Debug Tab: 输入调试命令,表达式 或调用 调试函数。 View Performance Analyzer Window:程序执行的时间统计。 View Serial Window 1 - 3:串行输入/输出的终端窗口。 View Symbol Window: 列出程序的符号信息。 View Toolbox: 用户可配置的按钮,用于快速执行命令。 View Watch & Call Stack Window:显示和修改变量值、列出函数间调用的情况。外设变量根据工程所选的CPU不同,?Vision自动定义一系列的标识符。这里主要分为两类:特殊功能寄存器(SFR)和CPU引脚寄存器 (VTREG)。? ? ? ?外设寄存器 CPU引脚寄存器(VTREG) I/O端口 串口外设寄存器?Vision为外设寄存器定义了标识符。外设寄存器标识符依赖于所选的微控制器。外设寄存器标识符有相关的地址、可在表达 式中使用。CPU引脚寄存器(VTREG)CPU引脚寄存器(VTREG)用于仿真CPU引脚的输入和输出。VTREG不是公共标识符,也不在CPU的存储空间中。这些寄存器 可以在表达式中使用,但它们的值和用法依赖于具体的CPU。VTREG提供了一种方法指定输入CPU中仿真硬件的信号。可以用 DIR VTREG命令列出所有的VTREG。 下表描述了VTREG标识符。实际可用的VTREG标识符依赖于具体的CPU. VTREG 描述file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 15 of 46ADx DAx PORTx SxIN SxOUT片上模拟输入引脚,一般用于A/D转换器的输入。目标程序可以读写ADx VTREG寄存器的值。 片上模拟输出引脚,一般用于D/A转换器的输出。 片上端口的一组 I/O引脚。例如,PORTA只端口A的所有引脚。这些寄存器用于I/O的仿真。 串口x的输入缓冲。可以向寄存器SxIN中输入8位或9位的值。这些值可以通过目标程序读出。通过读取SxIN的值决定是 否可以接受下一个字符。0xFFFF表示前一个字符完全处理,可以输入下一个字符。 串口x的输出缓冲。?Vision拷贝8位或9位的值(可编程的)到SxOUT VTREG寄存器中。xxVREF 参考引脚的输入电压。SxTIME 定义串口x的波特率。当SxTIME为1时,?Vision使用已编程的波特率仿真串口的时序;当SxTIME为0(默认值)时, ?Vision忽视已编程的波特率,串行发送的时间是实时的。 CLOCK XTAL 注意:?仿真CPU的时钟频率。 在Options C Target对话框中定义的仿真CPU的晶振频率。用户可以使用VTREG仿真包括与片上外设相连的外部输入和输出。例如,如果绑定端口3(8051CPU的3号端口)的2号引脚, CPU仿真0号外部中断。I/O端口?Vision为每一个I/O端口定义了一个VTREG寄存器。不要将这些寄存器和每一个端口的外设寄存器(例如PIOA_OSR)混淆。 外设寄存器能被片内CPU存储空间访问。VTREGs代表引脚上的信号。 使用?Vision可以很容易仿真外部硬件的输入。如果有一个脉冲到达端口的引脚,可以使用信号函数仿真这个信号。例如,下 面的信号函数在端口A的0号引脚上输入1000Hz的方波。signal void one_thou_hz (void) { while (1) { PORTA |= 1; swatch (0.0005); PORTA &= ~1; swatch (0.0005); } } /* /* /* /* /* /* repeat forever */ set PORTA bit 0 */ delay for .0005 secs */ clear PORTA bit 0 */ delay for .0005 secs */ repeat */下面的命令用于运行这个信号函数:one_thou_hz ()关于用户和信号函数的更多信息请参考?Vision调试函数 。 相对于端口引脚的外部输出来说,仿真外部硬件稍微复杂一点,需要两步来完成。第一,写一个?Vision用户或信号函数实现 描述的操作。第二,创建一个调用用户函数的断点。 假设用户使用输出引脚(端口A的0号引脚)点亮或熄灭LED。下面的信号函数使用PORT2 VTREG寄存器检测CPU的输出,同时 在命令窗口中显示信息。signal void check_pA0 (void) { if (PORTA & 1)) { printf (&LED is ON\n&); } else { /* 0? LED is OFF */ printf (&LED is OFF\n&): } } /* Test PORTA bit 0 */ /* 1? LED is ON */现在,用户必须在向port1寄存器中写入数据的代码处添加一个断点。下面的命令行用于在PORT2寄存器中所有写入数据的代 码处增加断点。BS WRITE PORT2, 1, &check_p20 ()&现在,无论什么时候目标程序向PORT2寄存器中写入数据时,check_P20函数将打印当前的LED状态。 关于设置断点的详细 信息请参考断点 。串口片上串口由S0TIME、S0IN、S0OUT、S0IN控制。S0IN、S0OUT代表CPU的输入输出流。S0TIME用于指定串口时序是系统 默认的(当STIME = 0)还是指定的波特率(当SxTIME = 1)。当S0TIME为1时,在串行窗口中显示的数据是以指定的波特率输出 的。当S0TIME为0时,在串行窗口中显示的数据是以更快的速率输出的。 仿真串行输入像仿真数字输入一样容易。假设有一个以指定数据周期(1秒)输入的外部串行设备,可以创建如下信号函数向 CPU的串口提供数据。signal void serial_input (void) {file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 16 of 46while (1) { twatch (CLOCK); S0IN = 'A'; twatch (CLOCK / 900); S0IN = 'B'; twatch (CLOCK / 900); S0IN = 'C'; } }/* repeat forever */ /* Delay for 1 second */ /* /* /* /* Send first character */ Delay for 1 character time */ 900 is good for 9600 baud */ Send next character *//* Send final character */ /* repeat */当这个信号函数运行时,每延迟1秒向串行输入口输入‘A’, ‘B’, 和‘C’。 同理,串行输出的仿真方式也一样,即像以前描述的那样使用用户或信号函数和写入访问断点。技巧和窍门下面的部分讨论了?Vision调试器的高级技术。尽管这些特性不是经常被使用,但是这些技巧可以使用户更好的理解?Vision调 试器的性能。? ? ? ? ? ? ? ? ? ?修改外设和CPU的配置 仿真I/O端口 仿真中断和时钟中断 仿真外部I/O设备 给PC COM端口分配串行I/O 检测非法内存访问 从文件中输入命令 预设I/O端口和内存的值 向文件中写入调试信息 快捷键的使用预设外设和 CPU的配置?Vision调试器为大多数的外设提供了修改初始化值的对话框。例如,Peripheral C Advanced Power Management Controller用 于修改Atmel AT91M55800A设备的CPU配置。必须首先检查软件仿真器的CPU和外设的初始化值,因为错误的设置可能会导致 目标硬件调试器不能正常运行。仿真I/O端口?Vision提供了显示所有 I/O端口状态的对话框。这里,I/O引脚是用虚拟寄存器(VTREGs)表示的。下面的例程显示了VTREG 以及信号功能或断点。file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 17 of 46?Vision提供了显示所有 I/O端口状态的对话框。这里,I/O引脚是用虚拟寄存器(VTREGs)表示的。下面的例程显示了VTREG 以及信号功能或断点。// in your C user program PortAvalue = PIOA_PDSR; // read Port A input在?Vision软件仿真器中定义断点。bs write PORT3, 1, &printf (\&Port3 value=%X\\n\&, PORT3)& bs read PORT5, 1, &PORT5 = getint (\&Input Port5 value\&)&当执行C程序时,?Vision将会要求输入Port5的值。如果将一个新的输出值写入Port5,Output Window - Command页将会显 示这个信息。详细信息请参考CPU引脚寄存器 (VTREGs)。仿真中断和时钟中断?Vision可以仿真I/O引脚的输入行为。如果I/O引脚被配置为计数器的输入,则当这个引脚被触发时计数值会增加。下面的例 子说明了如何仿真计数器3的输入行为:// in your C user program T3CON = 0x004B; // set T3 Counter Mode可以使用VTREG端口3同计数器的输入引脚P3.6绑定,例如,下面的信号函数实现了这种绑定。signal void ToggleT3Input (void) { while (1) { PORT3 = PORT3 ^ 0x0040; twatch (CLOCK / 100000); } } // toggle P3.6 // with 100kHz通过外设对话框观察定时器3的状态。 同样也可以仿真中断输入:当端口引脚作为中断输入时,如果绑定相关I/O引脚的话,中断请求将会被设置。仿真外部I/O设备外部I/O设备是典型的映射存储器。用户可以用?Vision调试器提供的存储器窗口仿真这样的I/O设备。因为C用户程序不包含 这样存储区域的任何变量声明,所以要求用MAP命令映射这段存储区。file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 18 of 46MAP 0xx100FFF READ WRITE/* MAP memory for I/O area */可以用断点和调试函数仿真I/O设备的逻辑。 详细信息请参考用户函数 。 断点定义的例子:BS WRITE 0x, &IO_access ()&给 PC COM 端口分配串行I/OASSIGN命令用于将PC的COM端口作为?Vision软件仿真器的输入UART。如果输入如下的命令,串行I/O口是通过COM2(PC 的接口)实现的。STIME变量用于忽视仿真串行接口的定时。&MODE COM2 , 1 &ASSIGN COM2 &S0IN &S0OUT &S0TIME = 0 /*9600 bps, no parity, 8 data & 1 stop bit*/ /*ASC0 output & input is done with COM2:*/ /*ignore timing of simulated ASC0 interface*/检测非法内存访问有时需要捕获非法内存访问。?Vision的访问断点可能和系统变量_break_一起使用。在下面的例子中,当在函数lear_records 的外面访问数组save_record时程序停止执行。从文件中输入命令?Vision调试器的命令可以通过文件输入,这个文件是通过INCLUDE命令导入到调试器中的。在Options for Target - Debug页 可以指定带调试命令的初始化文件。详细信息请参考设置调试选项。预置I/O端口和内存的值有些应用程序在仿真之前需要预设I/O端口和内存单元的值。在调试初始化文件中可以包含需要预置软件仿真器的命令。例 如:PORT3 = 0 LOAD MEMORY.HEX /* set Port3 to zero */ /* load hex file contents to memory */ /* use the SAVE command to save memory contents */向文件中写入调试输出信息LOG和SLOG命令用于向文件写入调试输出信息。用户可以用一批命令或包含这些命令的调试初始化文件运行?Vision调试 器。&LOG &&C:\TMP\DEBUGOUT.TXT &SLOG &&C:\TMP\DEBUGOUT.TXT & &LOG OFF &SLOG OFF /* /* /* /* /* protocol Output Window - Command page*/ protocol Serial Window output */ Output of the Command page and the Serial Window is written to fil stop Output Window protocol */ stop Serial Window protocol */快捷键的使用在View C Options对话框中可以为所有菜单项配置快捷键。通过这个对话框,用户可以个性化自己的 ?Vision开发环境。例 如,可以在这个对话框中添加插入/删除断点的快捷键。file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 19 of 46注意:?所有快捷键的分配情况都保存在C:\KEIL\UV3\UV3.MAC文件中。例程这一部分介绍了Keil ARM工具集里的例程。通过使用这些例程能够使开发者更好地了解?Vision的使用。另外,开发者也可 以直接拷贝这些例程代码作为开发使用。 这些例程可以在..\ARM\Examples (针对Keil工具集), ..\ARM\GNU\Examples (针对GNU), 和 ..\ARM\ADS\Examples (针对ADS) 里找到。每一个例程和工程文件会一起存放在一个独立的文件夹里以便更快地编译和评估这些例程。下表列出了这些例程和它 们相应文件夹的名字。 例程 Blinky DHRY Hello 描述 用来示范I/O控制的一个简单的LED点灯程序。 Dhrystone基准测试程序,计算目标CPU的dhrystone。 Hello World程序。建议在使用uVision时先运行此例程,该例程会在串口上打印出Hello World的字样,这有助于验证开发 工具是否工作正常。 ARM_Thumb 在ARM程序里调用Thumb函数。 Thumb_ARM 在Thumb程序里调用ARM函数。Interwork ARM模式和Thumb模式的相互结合。此文件包含两个工程:? ?Measure Memory数据采集系统,用以收集模拟和数字信号。 用来示范怎样来分离变量到不同的内存区域。除了上面所列的这些通用的例程之外,在文件夹..\ARM\..\Boards里?Vision还提供了一些与硬件相关的工程。在JTAG调试中 将介绍这些例程的使用。 可通过菜单Project C Open Project来装载这些工程文件。本章以下部分介绍了怎样编译以下例程:? ?HELLO: 第一个ARM 例程 MEASURE:一个远程测量系统HELLO: 第一个ARM例程HELLO例程可在C:\KEIL\ARM\GNU\EXAMPLES\HELLO中找到,这个例程用来通过串口打印出字符串“Hello World”。在 HELLO.C中包含整个程序的源代码。 这个小程序可以用来验证应用程序的编译、链接、以及调试。可以使用工程文件在DOS命令行、或使用批处理文件、或 ?Vision环境中执行这些操作。例程HELLO/GNU是基于Atmel AT91M40800的。该例程使用了片上外设的串口。此外,?Vision还 可以为此例程仿真目标硬件而不需要实际上的CPU。HELLO 工程文件在?Vision里应用程序被组织在一个工程文件中。在工具栏Project中选择Open Project选项,选择路径 …file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 20 of 46\ARM\GNU\EXAMPLES\HELLO,打开HELLO.UV2装载此工程。编辑HELLO.C在工程工作区的文件页面双击HELLO.C,编辑此文件。?Vision会在编辑窗口装载和显示的文件内容以供修改。编译、链接HELLO例程在工具栏Project中选择Build Target选项编译、链接工程。?Vision会编译链接源文件并生成一个绝对目标文件,这个目标文 件可用来装载到?Vision调试器中进行调试。编译过程的状态会显示在Output Window窗口的Build页面。注意:?正常情况下,?Vision提供的例程在编译链接过程中是不会出现错误的。测试程序在编译链接完成后,就可使用?Vision 的调试器进行调试了。选择Debug菜单里的选项Start/Stop Debug Session或者点击工具 栏里的对应图标进入调试模式。?Vision将会初始化调试器并启动程序运行到主函数。 选择View菜单里串行通信窗口(Serial Window) #1选项,或在调试工具栏里选择串行窗口图标,打开串行窗口Serial Window #1 以显示程序的串行输出结果。 选择Debug菜单中GO命令或者点击工具栏里的运行图标以启动程序运行。对于工程Hello,程序将会在串行窗口里输出文 本“Hello World”。在输出“Hello World”后程序将进入死循环。 选择Debug菜单里选择Halt命令或者点击工具栏里停止图标来中止程序运行。另外,在命令行的Output页面输入ESC也可以中止 程序的运行。 在调试过程中?Vision将会输出以下信息:file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 21 of 46单步调试和断点选择Debug菜单中的Insert/Remove Breakpoints选项,或者单击鼠标右键选择Insert/Remove Breakpoints选项,在主函数的开始 设置断点。 选择Debug菜单或者工具栏里的Reset CPU命令对CPU进行复位。如果已经中止了程序,可使用Run命令启动程序运行。uVision 会在断点处中止程序运行。 可以使用调试工具栏里的Step按钮单步运行程序。当前的指令会用黄色箭头标记出来。 将鼠标指针停留在变量上可以观察其相应的值。 可在任何时刻使用菜单中Start/Stop Debug Session选项或者工具栏中相应图标来中止调试。MEASURE: 一个远程测量系统在文件夹 \ARM\GNU\EXAMPLES\MEASURE\中可找到MEASURE例程。像气象站的数据采集系统一样,MEASURE例程运 行一个远程测量系统用以收集模拟和数字数据并对其进行处理。例程包含三个源文件,它们是GETLINE.C, MCOMMAND.C和 MEASURE.C。 例程会记录两个32位数字端口和4个A/D的输入数据。由一个定时器来控制采样速率。可以配置采样间隔(1毫秒到60分 钟)。每次测量会保存当前的时间以及所有RAM缓冲区的输入通道。? ? ? ? ? ? ? ? ? ? ? ?硬件需求 MEASURE工程文件 编译链接MEASURE 测试MEASURE 查看程序代码 查看内存内容 调用栈 跟踪记录 断点对话框 查看变量 查看和修改片上外设 使用逻辑分析仪硬件要求MEASURE例程是基于 Atmel AT91M55800的,此微控制器用来提供模拟和数字输入。其中Port A和 Port B用来作为数字输 入,A0 到A3用来作为模拟输入。?Vision可以仿真此例程需要的所有硬件设备。file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 22 of 46MEASURE工程文件在工具栏Project中选择Open Project选项,选择路径 ...\ARM\...\Examples\Measure,打开Measure.UV2文件以装载此工程文 件。 在工程工作区的文件页面显示了组成MEASURE例程的源文件。在源文件组里包含了与应用程序相关的三个源文件。双击文 件名可以打开相应的源文件,源文件的功能描述如下。?Measure.C: 包含测量系统的C主函数和定时器0的中断程序。主函数用来初始化ARM的所有外围设备并执行系统的命令处 理工作。定时器0的中断程序程序用来管理实时钟和系统的测量采样。 MCommand.C: 用来处理显示、时间以及间隔的命令。从主函数中调用这些功能。显示命令以浮点格式列出了0.00V到5.00V 之间的电压模拟值。 GetLine.C: 命令行编辑器,用来处理由串口接收到的字符。 IRQ.S:中断服务程序的接口模块。?? ?编译链接 MEASURE使用菜单Project里的 Build Target命令或者工具栏里的相应按钮来编译链接MEASURE例程。编译链接完成后,?Vision会显示 出相应的信息。 工程编译链接完成后就可以浏览符号信息或者测试MEASURE例程了。测试 MEASURE例程MEASURE例程用来从片上串口接收命令。如果拥有目标硬件,则可使用一个中断仿真器与CPU进行通信。如果没有目标硬 件,可使用?Vision来仿真目标硬件。同时,也可使用?Vision提供的串行窗口来进行输入。 在编译链接完成后就可以测试MEASURE例程了。使用菜单栏Debug里的Start/Stop Debug Session命令来启动?Vision调试器。远程测量系统命令例程支持的串口命令如下表所列。这些命令是由 ASCII字符组成的,所有的命令必须以回车换行结束。在调试过程中,可以 在串行窗口(Serial Window #1 )中输入这些命令。 命令 串口输入 清除 C 显示 D 时间 T hh:mm:ss 间隔 I mm:ss.ttt 启动 S 读 R [count] 描述 清除测量记录缓冲。 显示当前时间和输入值。 设置当前时间(24小时制)。 设置测量例程的间隔时间,间隔时间必须在0:00.001(1毫秒)到60:00.000(60分钟)之间。 启动测量记录。当系统接收到启动命令后,MEASURE例程会在指定的时间间隔内采样所有的输入数据。 显示测量记录。可以使用读命令指定所显示的最近采样数量。如果没有指定数量,读命令将会显示所有的测量 记录。如果时间间隔大于1秒,还可以动态地读出这些测量结果,在其它情况下,记录是不变的。 退出测量记录。退出 Q查看程序代码在?Vision里可以通过打开View菜单或工具栏里相应的按钮来查看程序代码,这些源代码连同反汇编代码会一块在反汇编窗口 里显示。单击鼠标右键,可通过局部菜单中的选项来改变查看模式或使用其它的一些命令。file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 23 of 46查看内存内容?Vision可以以多种格式显示内存的内容。可通过View菜单或工具栏里相应的按钮来打开内存窗口。可以在四个页面中输入四 个不同的内存地址。另外,通过局部菜单也可以修改内存中的内容或选择不同的输出格式。程序执行在仿真MEASURE之前,选择View菜单或调试工具栏里的Serial Window #1选项,打开串行窗口以显示串行输出结果。如果屏 幕不够大则可关闭掉其它的窗口。 用户可以在汇编指令或源代码行上进行单步调试。如果反汇编窗口处于活动状态,则是以汇编指令为基础的单步执行;如果 源代码编辑窗口处于活动状态,则是以源代码行为基础的单步调试。 在?Vision - Debug Menu and Debug Commands中会对调试命令进行说明。调用栈随着程序的执行,?Vision内部会跟踪函数的嵌套情况。Watch Window的调用栈(Call Stack)页面会显示当前函数的嵌套情 况。 双击此页中的某行,将会在工作区中显示调用所选择函数的源代码。跟踪记录在调试过程中,如果程序到达了一个断点可能会需要一些诸如寄存器的值和其它一些到达断点前的环境信息。如果设置了 Enable/Disable Trace Recording,那么就可以看到在到达断点前CPU所执行的指令。在工程工作空间的Regs页面会显示执行所选file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 24 of 46择的指令在执行过程中相应的CPU寄存器内容。断点对话框?Vision同样支持高级的断点设置。例如,可以设置这样的断点,使得当一个变量包含了一个确定的值时以中止程序的执行。 下面断点设置示例会在current.time.sec被设置为3时中止程序的运行。在Debug菜单里打开断点对话框(Breakpoints)。输入表达式current.time.sec==3。选择Write选项(此选项指定了只有在表达 式被写入时才测试断点条件)。点击Define按钮设置断点。 测试断点条件要执行以下步骤: 图 标描述 复位CPU。 启动MEASURE例程运行。file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 25 of 46经过几秒钟,?Vision会中止程序执行。在调试窗口程序计数行会标记出断点发生时程序所在行的位置。查看变量打开菜单View中的Watch Window窗口或工具栏中的相应按钮,可以随时查看变量、结构体以及数组的内容。Locals页面会显 示当前函数的所有的局部变量。在Watch #1和Watch #2 页面允许以下三种方式输入程序变量:?鼠标单击选中&enter here&,等待一秒钟,然后再单击一次以进入编辑模式,这样就可以加入变量了。通过同样的方式也可 以修改变量的值。 在编辑窗口选择需要添加的变量名,单击鼠标右键,在弹出的局部菜单中选择Add to Watch Window选项将其加入。 在Output Window C Command页面输入WatchSet命令将变量加入。? ?要删除一个变量,点击选中所在行并按Delete键即可。 如果需要,可点击[+]符号以打开结构体和数组。 观测窗口中的内容将自动更新。也可通过菜单View-&Periodic Window Update设置来实现程序运行时实时更新变量的值。查看修改片上外设?Vision提供了一系列查看修改目标程序中所使用到的外设的方法。执行以下步骤将会在串行窗口看到以下运行结果: 图标 描述 复位CPU并且清除所有的断点。 运行MEASURE例程。 打开Serial Window #1,输入 ‘d’命令。例程将会显示I/O端口(PA~PB)和A/D(A0~A4)输入的值。串行窗口输出如下:可以使用以下方法给I/O引脚提供输入:? ? ?使用外设对话框 使用虚拟寄存器符号 使用用户和信号函数使用外设对话框 ?Vision里提供了以下对话框:I/O端口,中断,定时器,A/D转换器,串口和一些芯片特有的外设。这些对话框可以在外设菜 单里打开。对于MEASURE例程来说,可打开I/O端口和A/D转换器,对话框会显示当前外设的状态,同时也可以直接在对话框中 改变相应的输入值。file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 26 of 46每个对话框会列出与外设相关的特殊功能寄存器的符号,并且会显示出当前外设的状态。 使用虚拟寄存器符号 在输出窗口(Output Window)的命令行(Command)页面,可以像变量和寄存器一样给这些虚拟寄存器(VTREG)赋 值。例如:PORT2=0xDA00 set digital input PORT2 to 0xDA00. AIN1=3.3 set analog input AIN1 to 3.3 volts.使用用户和信号函数 可以结合所定义的虚拟寄存器以及?Vision的用户和信号函数来给目标程序提供外部输入。在Analog Example中介绍了一个信 号函数是怎样给AIN0提供输入的。MEASURE例程中包含的信号函数可以直接通过Toolbox的按钮Analog0..5V迅速调用,并且可 以时刻改变AIN0的输入压降。使用性能分析器?Vision里集成的性能分析器可以对所创建的应用程序进行时间分析。在Debug菜单中打开设置性能分析器对话框,中止程序 的执行以进行时间分析。file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh4...
GSARM: Getting Started User's GuidePage 27 of 46如上图所示,在设置性能分析器对话框中输入指定函数的名字。 执行以下步骤来观察性能分析器的动作: 图标 描述 选择菜单View或工具栏里相应的按钮打开性能分析器。 复位CPU并清除所有断点。 运行MEASURE例程。 选择串口1(Serial Window #1),输入命令S、D, 分别以回车键结束。性能分析器会以条形图显示每个范围内执行代码的时间消耗百分比。点击某个范围即可查看详细的时序统计信息。使用片上外设这一部分主要介绍各种片上外设的使用以及基于ARM微控制的一些特征。ARM微控制器的片上外设是相当成熟复杂的,它 提供了大量的配置选项。这一部分的代码示例仅就每一种外设的使用介绍一到两种方法。需要注意的是实际应用中会有更多的 配置选项,而不仅仅如本部分所述内容。 在uVision中可通过菜单 Peripherals查看片上外设的状态。这些菜单选项是因设备不同而异的,并且它们的配置是基于设备数 据库的。关于设备的详细信息和仿真请参考 Help ― Simulated Peripherals for 'device'。 这一章主要包括以下内容:? ? ? ? ? ? ? ? ? ? ?启动代码: 初始化CPU并给main函数传递控制信息。 CPU头文件: 定义要用到的ARM外设寄存器。 并行I/O端口: 标准I/O端口的使用。 中断: 介绍ARM设备不同的中断模式。 中断向量控制器: 介绍中断向量的使用。 通用定时器: 介绍标准定时器的使用。 串行接口: 介绍怎样实现串口通信。 看门狗定时器: 介绍在发生硬件或软件故障时怎样使用看门狗定时器来复位。 脉冲宽度调制: 可以

我要回帖

更多关于 keil uvision4 关键字 的文章

 

随机推荐