购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

任务1
CVAVR编译软件的使用

CodeVision AVR C Compiler(简称CVAVR编译器)是为Atmel AVR 系列微控制器而设计的一款C编译器,可以在Windows95/98/NT 4.0/2000/XP/Vista操作系统下运行。

一个CVAVR项目就是一组文件和编译器设置的集合,它可以用于建立一个具体的程序,项目文件的扩展名为.prj。要建立一个完整的项目,并将源代码生成可执行代码下到目标芯片,可通过以下步骤进行。

1.新建项目

执行菜单命令“开始”→“程序”→“CodeVisionAVR”→“CodeVisionAVR C Compiler”,或者在桌面上双击图标 ,进入CVAVR集成工作环境界面(IDE)。

在IDE中执行菜单命令“File”→“New”,或者在工具栏中单击图标 ,将弹出如图2-1所示的“Create New File”对话框。在此对话框中选择“Source”时将会创建一个.c源程序文件,选择“Project”时将会创建一个项目文件。

在图2-1中选择“Project”,并单击“OK”按钮时,将弹出如图2-2所示的“Confirm”对话框。在此对话框中,要求用户确认是否使用CVAVR新建项目,若单击“Yes”按钮,则会打开“CVAVR”对话框,通过CVAVR项目向导来创建项目;若单击“No”按钮,将弹出如图2-3所示的“Create New Project”对话框。

图2-1 创建新文件对话框

图2-2 CodeVisionAVR的“Confirm”对话框

图2-3 创建新项目对话框

在图2-3中选择合适的保存路径并输入项目名,然后单击“保存”按钮,将弹出Configure配置文件对话框。在此对话框的C Compiler选项卡中设置“Chip”栏为“ATmega16”,“Clock”栏为8MHz,如图2-4所示。

图2-4 Configure的C Compiler对话框

在Configure配置文件对话框中进行相关设置后,若单击“OK”按钮,将会回到CVAVR的IDE界面,只不过此时IDE中将会新增一个“Project Notes”窗口,用户可以在此窗口中添加相关的项目说明信息,如图2-5所示。至此已经简单地创建了一个新项目,此项目名为“新建项目.prj”。

2.创建源程序文件

创建好项目后,在IDE中执行菜单命令“File”→“New”,或者在工具栏中单击图标,在弹出的“Create New File”对话框中选择“Source”。此时,在IDE中会为新建的文件打开一个新的编辑器窗口,其标题栏显示文件名为untitled.c,该文件列在文件导航器的Other Files目录下。

在刚创建的编辑器窗口中输入如下源程序文件,并执行菜单命令“File”→“Save”,或者在工具栏中单击图标 ,然后选择合适的保存路径,且输入源程序的文件名(假设此文件名为“新建一个项目.c”)将其进行保存,此时文件导航器的Other Files目录下变为“新建一个项目.c”。

图2-5 Project Notes窗口

3.将源程序文件添加到项目

在IED中执行菜单命令“Project”→“Configure”,或者在工具栏中单击图标 ,将弹出“Configure Project”对话框,在此对话框的“File”栏中单击“Add”按钮,然后依据提示将刚才所创建的源程序文件添加到项目中,此时文件导航器Other Files目录的“新建一个项目.c”已经转移到“Project:新建项目”下,表示“新建一个项目.c”已经是所创建项目中的一部分了,如图2-6所示。

图2-6 添加“新建一个项目.c”到项目中

4.在CVAVR中编译并生成项目

源程序编写完,并将其添加到项目中后,就可对源程序进行编译。在IDE中执行菜单命令“Project”→“Compile”,或者在工具栏中单击图标 ,会弹出一个“Information”对话框显示编译结果,同时在LIST文件夹中产生一个“新建项目.asm”的汇编程序源文件。“Information”对话框的顶部列出了编译器的选项,下面是被编译的代码行数和警告、错误个数。对话框的其余部分列出了存储器的使用和用途。

如果在编译过程中有错误或警告产生,它们就会出现在编译器窗口下面的消息窗口(Message)和导航器窗口中。双击错误或警告信息可以高亮显示出问题的代码行。

生成项目会创建一个可执行文件。在IDE中执行菜单命令“Project”→“Build”(或“Build All”),或者在工具栏中单击图标 (或 ),也会弹出一个“Information”对话框显示编译结果并产生一个“新建项目.asm”的汇编程序源文件。只不过此时“Information”对话框中有两个选项卡,即“Complier”和“Assembler”。“Assembler”选项卡顶部显示了编译的版本、编译的步骤及存储器的使用情况。

注意:

Compile命令和Build(或Build All)命令是不同的:Compile命令仅进行源代码的编译,但不产生二进制目标文件,而Build(或Build All)命令能产生相应的二进制代码文件。

5.导出到AVR Studio进行项目调试

源程序通过编译,只能说明程序的语法正确,并不代表所编写的程序已达到了设计要求。那么怎样判断程序是否正确呢?可以通过实验的方法来检验。最直接的方法就是将生成的二进制代码(如.HEX或.COF文件)下载到目标芯片中运行,通过实际的运行来检验是否达到设计要求。这种方法虽然最正确,但是不能告诉用户程序错误是什么引起的,尤其对于经验不足的用户来说,更不容易找出问题所在。另外一种方法是使用仿真或模拟的方法来进行程序的调试。

CVAVR不提供在线调试、仿真功能,因此需要第三方调试工具来进行程序的调试。通常硬件仿真的价格都比较高,所以在很多时候可以通过软件模块器来进行程序的调试,如AVR Studio和Proteus等。

图2-7 Chip Programmer界面

编译好程序后,执行菜单命令“Tools”→“Debugger”,或者单击工具栏上的图标 ,即可进入AVR Studio进行程序调试。其具体的调试方法将在本项目的任务2中进行讲述。

6.对目标设备芯片编程

CodeVisionAVR IDE集成支持串口/并口AVRISP的下载烧写软件。用户将编程器通过串行口或打印机并行端口与计算机连接后,在CodeVisionAVR IDE中可直接将编译调试好的源程序固化到目标芯片中。

在固化程序前,执行菜单命令“Setting”→“Programmer”,在弹出的对话框中选择合适的编程器类型及所使用的计算机端口。

在CodeVisionAVR IDE中执行菜单命令“Tools”→“Chip Programmer”,或者在工具栏中单击图标 ,将弹出如图2-7所示的“CodeVisionAVR Chip Programmer-STK500/AVRISP”对话框。它主要包括Chip(芯片)、Flash和E 2 PROM、Flash Lock Bits(Flash存储器锁存位)、Program Fuse Bit(可编程熔丝位)等内容的设置。

【芯片】 “Chip”栏中的选项决定了“CodeVisionAVR Chip Programmer-STK500/AVRISP”对话框中其他可用的选项,在该栏中可以选择合适的芯片类型。芯片的类型不同,使得Flash和E 2 PROM的缓存容量大小也不相同,并且也影响了“Program Fuse Bit(s)”区域中相关位的设定和Boot Lock Bit0、Boot Lock Bit1的设定。

【Flash和E 2 PROM】 编程器有两个存储器缓冲区,即Flash存储器缓冲区和E 2 PROM存储器缓冲区。缓冲区的内容可以通过执行菜单命令“File”→“Load Flash”(或“Load EEPROM”)进行加载,或者执行菜单命令“File”→“Save Flash”(或“Save EEPROM”)进行保存。

在一个文件被加载到相应的缓冲区后,其起始(Start)地址和结束(End)地址会相应更新,同时Checksum的值也会发生相应的更改。

执行菜单命令“Edit”→“FLASH”,将弹出如图2-8所示的“Edit FLASH Buffer”对话框,在此可以查看和修改Flash存储器缓冲区中的内容。执行菜单命令“Edit”→“EEPROM”,在弹出的对话框中可以查看和修改E 2 PROM存储器缓冲区中的内容。

图2-8 Flash存储器缓冲区

【Flash存储器锁存位(Flash Lock Bits)】 “Chip Programmer Options”区域中的“FLASH Lock Bits”选项组有3个选项可能选择芯片编程使用的安全级别,其中“No Protection”表示允许所有的读取的编程操作;“Programming disabled”表示对Flash和E 2 PROM存储区只能读不能写;“Programming and Verification disabled”表示不能对芯片内容进行任何读/写操作。

执行菜单命令“Program”→“All”,锁定位将自动写入目标芯片中;执行菜单命令“Program”→“Lock Bit”,可以单独写入锁定位;执行菜单命令“Read”→“Lock Bit”,可以读取锁定位当前值;执行菜单命令“Program”→“Erase Chip”,可以将所有的锁定位设为“No Protection”。

【可编程熔丝位(Program Fuse Bit)】 “Chip Programmer Options”区域中的“Program Fuse Bit(s)”选项组中有各种复选框,每个对应目标芯片上的一个熔丝位。

CKSEL和SUT熔丝位决定AVR单片机所采用的时钟及复位启动延时时间,其设置含义见表2-1。BODEN(Brown Out Detection Enable)为掉电检测电路的功能控制,BODEN=1时,禁止掉电检测;BODEN=0时,允许掉电检测。BODLEVEL为掉电检测电路的电平选择控制,BODLEVEL=1时,选择2.7V电平;BODLEVEL=0时,选择4.0V电平。BOOTRST为复位入口地址选择,BOOTRST=1时,程序从0x0000地址开始;BOOTRST=0时,复位后从BOOT区执行。BOOTSZ(BOOTSZ1、BOOTSZ0)可设置引导区程序大小及入口,BOOTSZ=00,引导区为1024字,入口为0xc00;BOOTSZ=01,引导区为512字,入口为0xe00;BOOTSZ=10,引导区为256字,入口为0xf00;BOOTSZ=11,引导区为128字,入口为0xf80。EEAVE可设置程序固化时E 2 PROM中的数据是否保留,EEAVE=1,不保留;EEAVE=0,保留。CKOPT可用于选择放大器模式,CKOPT=0,高幅度振荡输出;CKOPT=1,低幅度振荡输出。JTAGEN设置JTAG测试访问端口状态,OCDEN(On Chip Debug Enable)片上调试使能位。在进行JTAG调试时,应将JTAGEN和OCDEN这两位都选中,并保持所有的锁定位处于非锁定状态;在实际使用时为了降低功耗,不选中JTAGEN和OCDEN这两位,可以减少2~3mA的电流。Check Signature可用于设置是否对该芯片进行签名。Check Erasure用于设置是否检查芯片擦除的正确性。Preserve E 2 PROM可用于设置是否通过芯片擦除循环来保存E 2 PROM的数据。Verify可用于设置是否检查Flash和E 2 PROM编程的正确性。

表2-1 CKSEL和SUT熔丝位的设置

续表

在“Code Vision AVR Chip Programmer-STK500/AVRISP”对话框中执行菜单命令“Program”→“All”,可将源程序及设定的熔丝位的相关信息下载到目标芯片中。 PIsak51kQ8ktv9IaTYa0EwHSZYMDh/hKXQKQBBVhf1zGhP1rVfdGOX4sM7ZgsaG/

点击中间区域
呼出菜单
上一章
目录
下一章
×