ENGLISH 简体中文 日本語 한국어  



   
 
请输入关键词或器件型号    




应用笔记4312

采用MAXQ1850评估套件(EV kit)和面向MAXQ30的CrossWorks编译器进行设计

摘要:本应用笔记介绍怎样针对MAXQ1850高性能、RISC、安全微控制器开发、构建并调试应用程序。实例采用了MAXQ1850评估套件(EV kit)和Rowley Associates公司提供的CrossWorks C编译器。

引言

Maxim Integrated Products的MAXQ1850是高性能、安全、小封装、32位RISC微控制器,设计用于电子商务、银行和数据安全应用。微控制器执行16位指令,有一个32位数据通道。MAXQ1850在一个时钟周期中执行完成大部分指令,是性能非常高的RISC机。MAXQ1850还具有很多重要的安全特性,包括:
  • 支持DES、3DES、AES、SHA-1、SHA-224、SHA-256、RSA、DSA和ECDSA的密码加速器
  • 真正的硬件随机数发生器
  • 8KB低泄漏电池备电NVSRAM
  • 4个自毁输入
  • 防篡改探测,可快速擦除密钥/数据。
  • 能够探测超范围条件的环境传感器(例如,温度、电压)
MAXQ1850评估套件是安全应用原型开发的理想平台。套件提供一个RS-232串口,两个智能卡插槽(一个全尺寸,一个SIM卡),一个USB连接器,一个LCD屏,一个16按键键盘以及原型区。

设置MAXQ1850评估套件

MAXQ1850评估套件电路板如图1所示。下面列出的硬件都包含在评估套件中,用于实现本应用笔记:
  1. MAXQ1850评估套件电路板
  2. JTAG电路板
  3. JTAG电缆(连接MAXQ1850评估套件电路板和JTAG电路板)
  4. 9针串行电缆
  5. 稳压电源(5V、±5%、300mA、中心正极)
图1. MAXQ1850评估电路板
详细电路图
(PDF, 776KB)
图1. MAXQ1850评估电路板

MAXQ1850评估电路板和JTAG电路板都有很多跳线需要进行配置。如果需要了解跳线及其功能的详细信息,请参考各自的数据手册。对于本应用笔记,请按照以下要求来配置跳线:
  • 在MAXQ1850评估套件电路板上,短接以下跳线:JU3 (靠近Reset开关);JU4 (靠近Program开关);JU30 (靠近处理器左下部);JU104 (靠近LCD模块的左下部)。连接跳线JU5 (靠近电池)以及JU20 (靠近电源输入)的引脚1 (PCB上的方形焊盘)和引脚2。连接跳线JU21 (靠近处理器的右上部)的引脚2和引脚3。所有其他跳线应打开。
  • 在JTAG电路板上,短接JH3。这从JTAG电路板为评估套件电路板提供5V电源。对于这一配置,跳线JH1和JH2为“无关项”。
在JTAG电路板和MAXQ1850套件电路板之间连接JTAG电缆。在JTAG电路板上,电缆上的红条应连接至标有引脚1和引脚2的连接器一侧。在MAXQ1850评估套件电路板上,电缆上的红条应连接至标有引脚1和引脚2的连接器一侧(可以通过PCB背面的方形焊盘来识别引脚1)。

注意,在老的MAXQ1850评估电路板设计中,MAXQ1850微控制器可能采用了插槽。如果是这样,把MAXQ1850插入到插槽中,其无铅指示符“+”朝向插槽中一个角(右下)上标出的点。

在您的PC和JTAG电路板之间连接9针串行电缆(不要将其连接至MAXQ1850套件电路板)。最后,将5V电源连接至JTAG电路板的电源连接器(J2)。它也为评估套件电路板提供电源供电。

采用CrossWorks编译器进行设计:WalkLED

在开始使用MAXQ1850评估套件时,我们开发一个简单的应用程序,使电路板上的三个LED闪烁。LED以固定、重复的顺序闪烁,看起来象是在电路板上“走”。因此,该工程被命名为WalkLED。该程序的代码列在附录A中。代码非常短,您甚至能够在相对很短的时间内手动输入这些代码。您还可以从评估套件的CD中获得源代码文件,也可以从Maxim网站下载获得。

我们使用的工具包是Rowley Associates公司提供的CrossStudio。编写本文档时,工具包是面向MAXQ30的CrossWorks,版本2.0.0.2008063000.2293。这是本文档中用于产生截屏的版本。为确定是否是最新版本,请访问Rowley & Associates网站,或者发送电子邮件至 (English only)。

在建立新方案时,点击File New New Project。在New Project弹出框中,填写底部的Name和Location框,从Project Templates窗口中选择Executable类,和A C可执行文件(图2)。我们将调用工程WalkLED_demo,将其放到目录C:\work\maxq\MAXQ1850\WalkLED_demo中。

图2. 新工程
图2. 新工程

单击Next继续,您将看到Project Properties弹出框(图3)。Target处理器可能是MAXQ1103。双击处理器序列号,选择MAXQ1850处理器。这一页面的所有其他部分以及后续页面都选择默认,因此,选择MAXQ1850后,点击Finish,建立工程。如果需要,您可以单击Next,选择其他的工程选项。

图3. 选择MAXQ1850处理器
图3. 选择MAXQ1850处理器

在建立工程时,Project Explorer窗口(图4)会出现一个新工程,通常位于应用程序窗口的右上。打开它,您将看到两个文件夹,Source Files和System Files。打开Source Files,将看到main.c,这是您的应用程序源代码。双击它,打开。

图4. Project Explorer窗口
图4. Project Explorer窗口

现在,输入附录A的应用代码,或者从上面提到的来源中,将代码剪切并粘贴到main.c文件中,替换所有当前内容。

当应用程序执行时,您会看到LED DS1、DS2和DS3 (位于套件电路板原型区左侧)按顺序不断闪烁。而在应用程序运行前,必须首先“构建”它。选择Build Build WalkLED_demo,或者按下F7。如果一切都正确构建,您将在Output窗口看到消息“Build complete”,它旁边有一个对勾(图5)。如果有错,请确定您输入的代码是否正确。

图5. 工程构建后的输出
图5. 工程构建后的输出

现在可以运行应用程序。对此,单击Debug Build and Debug,程序将启动,不断运行。单击Pause按钮(Break Execution,如代码窗口上面和左侧所示),程序在当前位置暂停,等待用户的下一动作。如果没有Build和Debug选项,找到“targets”窗口;单击Maxim Serial JTAG Adapter;然后,单击Connect按钮(窗口左上角)。这样,通过JTAG电路板连接工具包和评估套件,使能调试功能。工具包调试功能被使能后,单击Step Over按钮就可以开始调试过程,如图6所示。

图6. Step Over按钮
图6. Step Over按钮

按下Step Over按钮,程序启动后,CrossStudio通过JTAG电路把应用程序下载到MAXQ1850中,Output窗口显示状态消息。应用程序开始运行,然后,在代码第一行停止(左侧空白区显示黄色箭头)。从这一点运行应用程序时,选择Debug Go (或者单击Play按钮)。现在,请确定MAXQ1850电路板上的LED正在闪烁。您可能希望能够在一定程度上修改应用程序;按照相反的顺序来闪烁LED,或者改变点亮时间,更快或者更慢的闪烁。

使用CrossStudio调试应用程序

现在,让我们了解一下MAXQ1850和CrossStudio工具的调试功能。MAXQ1850有内置JTAG引擎,支持在实际芯片上进行调试,从而不需要昂贵的仿真器或者有可能出错的模拟器。注意,MAXQ1850还提供安全锁定机制,在元件锁定时,防止JTAG工作。这样,当MAXQ1850器件用在敏感应用中时,保证了JTAG调试引擎不会带来安全威胁。

考虑WalkLED_demo应用程序。作为一次试验,在main.c函数中,把Delay函数的延时计数从200000改为2000。

for(i=0;i < 2000; i++) ;
现在,选择Build Build and Debug,构建并运行应用程序。工具包会重新构建工程,装入新程序,开始运行。注意,LED为始终点亮状态,而非闪烁状态。

选择Pause按钮(或者选择Debug Break),程序在当前代码行暂停执行,左侧空白区出现一个黄色箭头。由于程序大部分时间都花在Delay函数的“for”循环上,因此代码很有可能停在这里(参见图7)。

图7. 在Delay函数中,代码停止运行
图7. 在Delay函数中,代码停止运行

观察右侧的Locals窗口(如果看不到该窗口,单击Debug Debug Windows Locals)。该窗口将显示“i”变量的当前值。现在,按下Step Over按钮。让程序运行一秒,然后,再次按下Pause按钮。您应该看到“i”值增加了。

要退出函数,应该一直按着Step Over按钮,直到循环结束,但这会浪费很长时间。只要按下Step Out按钮(在Step Into按钮的右边,如图6所示),程序一直执行,直到退出Delay函数,返回到其调用函数main.c

通过设置断点,也可以获得相似的结果。函数main.c中,在调用Delay函数的任一行上设置断点时,单击该代码行左侧的小三角。它将变为红圈(图8)。现在,再次运行应用程序(Debug Go,或者Play按钮)。应用程序会运行到这一点,然后暂停。

图8. 加入断点
图8. 加入断点

现在,我们了解一下更多的调试功能。按下Step Over按钮几次。每按下一次,C源代码执行一行。您将看到,控制LED的一行代码每执行一次,LED闪烁一下。当暂停在Delay()一行时,按下Step Into按钮(图9)。这会进入该函数,暂停在该函数的第一行。正如前面所演示的,按下Step Out按钮,可以退出Delay()函数。

图9. Step Into按钮
图9. Step Into按钮

在运行时,还可以改变变量(和寄存器)。点击GO,然后,点击Pause,程序应再次停止在Delay()函数的中间部分。注意“i”值。现在,把“i”设置为1998 (单击“i”显示的数值,高亮后输入1998)。单击Step Into按钮,由于达到了“i”最终值,因此,您会看到循环结束。

以及您感兴趣的其他调试功能:
  • Debug Disassembly将同时显示C代码和生成的汇编代码。这样,用户可以进入汇编代码,而不是C代码,执行时,同时显示C代码。
  • Debug Debug Windows Call Stack将显示应用程序到达当前位置时所调用的函数。如果在Delay()函数中暂停执行,其显示如图10所示。
  • 使用Debug Stop停止调试,观察右侧的Targets窗口。确定Maxim Serial JTAG Adapter Properties以粗体字显示,观察Properties Window下部的信息。如果没有显示Maxim Serial JTAG Adapter Properties,从下拉菜单中选择它。您将看到属性列表及其设置,如图11所示。使用滚动条看到所有信息。Connection标题下的一个属性是Port Name。如果您使用串口,而不是默认的COM1,那么,可以在这里改变这一选项。
图10. 在Delay()函数中运行时调用堆栈
图10. 在Delay()函数中运行时调用堆栈

图11. Properties窗口
图11. Properties窗口

更多信息

软件库和参考设计目前正在由Maxim工程师开发。如果您需要了解库和工具的最新信息,或者对本应用笔记还有其他问题,请联系 (English only)。

附录A. WalkLED main.c源代码

#include <maxq1850.h>
#include <inmaxq.h>
#include "WalkLED.h"
void
main(void)
{
PD1 = 0x62 ;// PD1 = In Out Out In In In Out In
PO1 = PO1 & PO1_5_0 ;// U10 Din (P1.5) = 0
PO1 = PO1 | PO1_1_1 ;// U10 CS (P1.1) = 1
PO1 = PO1 & PO1_6_0 ;// U10 SCLK (P1.6) = 0
while (1) {
wr_SPI(0x0700) ;// U10 P7 (nLED0) = 0
Delay() ;
wr_SPI(0x0800) ;// U10 P8 (nLED1) = 0
Delay() ;
wr_SPI(0x0900) ;// U10 P9 (nLED2) = 0
Delay() ;
wr_SPI(0x0701) ;// U10 P7 (nLED0) = 1
Delay() ;
wr_SPI(0x0801) ;// U10 P8 (nLED1) = 1
Delay() ;
wr_SPI(0x0901) ;// U10 P9 (nLED2) = 1
Delay() ;
}
}
void
wr_SPI(short SPI_Dat)// Write data to SPI™ device U10
{
int i;
PO1 = PO1 & PO1_1_0 ;// U10 CS (P1.1) = 0
for(i=0;i<16;i++) {// Set Din for each data bit
if (SPI_Dat < 0)
PO1 = PO1 | PO1_5_1 ;// Din = 1
else
PO1 = PO1 & PO1_5_0 ;// Din = 0
PO1 = PO1 | PO1_6_1 ;// SCLK = 1
PO1 = PO1 & PO1_6_0 ;// SCLK = 0
PO1 = PO1 & PO1_5_0 ;// Din = 0
SPI_Dat = SPI_Dat << 1 ;// Shift in next bit
}
PO1 = PO1 | 0x02 ;// CS = 1
}
void
Delay(void) {// Delay to make LEDs visible
int i = 0 ;
for(i=0;i < 200000; i++) ;
}



SPI是Motorola, Inc.的商标。


相关型号  APP 4312: Jan 07, 2009
DS5002 安全微处理器芯片 完整的数据资料
(PDF, 1.2MB)
免费样品
DS5250 高速安全微控制器 数据资料缩写本
(PDF, 500kB)
DS8007 多协议双智能卡接口 完整的数据资料
(PDF, 868kB)
免费样品
DS8023 智能卡接口 完整的数据资料
(PDF, 756kB)
DS8024 智能卡接口 完整的数据资料
(PDF, 748kB)
免费样品
DS8113 智能卡接口 完整的数据资料
(PDF, 656kB)
免费样品
MAXQ1103 高性能RISC安全微控制器 数据资料缩写本
(PDF, 516kB)
MAXQ1850 安全加密控制器,提供快速清零技术 数据资料缩写本
(PDF, 524kB)

自动更新
需要自动接收最新发布的应用笔记吗?请订阅EE-Mail™ (English only)。




我们期待您的反馈!
喜欢?不喜欢?有待改善?或为我们提供建议?请与我们联系 — 我们将根据您的意见或建议改善我们的工作。 网页评价或提供建议

 

下载,PDF格式下载,PDF格式 (439kB)
 AN4312, AN 4312, APP4312, Appnote4312, Appnote 4312

        •         •         •     隐私权政策     •     法律声明

    © 2009 Maxim Integrated Products版权所有