应用笔记 4312

采用DeepCover安全微控制器(MAXQ1850)评估套件和面向MAXQ30的CrossWorks编译器进行设计


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

引言

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

设置MAXQ1850评估套件

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

    注:C版本的套件提供了一个1000mA的电源。
图1. MAXQ1850-KIT电路板(B版本)
详细图片
(PDF, 5.6MB)
图1. MAXQ1850-KIT电路板(B版本)

MAXQ1850-KIT电路板有很多跳线需要进行配置。如果需要了解跳线及其功能的详细信息,请参考数据资料。对于本应用笔记,请按照以下要求来配置跳线:
  • JU30 (靠近MAXQ1850左下部)。
  • 连接跳线JU5 (靠近电池)以及JU20 (靠近电源输入)的引脚1 (PCB上的方形焊盘)和引脚2。
  • 连接跳线JU21 (靠近MAXQ1850的右上部)的引脚2和引脚3。
  • 所有其它跳线应打开。
注:随MAXQ1850-KIT CD提供的一些示例程序需要不同的跳线设置,详细的跳线位置请参考示例程序的README.txt文件。

在JTAG电路板(P2)和MAXQ1850-KIT (J6)电路板之间连接JTAG电缆。在JTAG电路板上,电缆上的红条应连接至标有引脚1和引脚2的连接器一侧。在MAXQ1850-KIT电路板上,电缆上的红条应连接至引脚1 TCK (可以通过PCB背面的方形焊盘来识别引脚1)。

在您的PC和JTAG电路板之间连接9针串行电缆。最后,连接5V电源。对于A版本和B版本的电路板,将电源连接至JTAG电路板的电源连接器(J2)以及评估板(J1)。对于C版本的电路板,首先闭合评估板上的跳线JU31以及JTAG电路板上的JH3,然后将电源连接至评估板(J1)。C版本的电路板将为JTAG电路板供电。

采用CrossWorks编译器进行设计

在开始使用MAXQ1850-KIT时,我们开发一个简单的应用程序,使电路板上的3个LED闪烁。LED以固定、重复的顺序闪烁,看起来象是在电路板上“行走”。源代码可以从评估套件的CD中获得,也可以从Maxim网站下载获得。将其解压缩至C:\MAXQ1850\LED。

Maxim使用的工具包是Rowley Associates公司提供的CrossStudio。本文档采用面向MAXQ30的CrossWorks IDE创建,其版本为2.0.0.2009012302.4045。为确定是否是最新版本,请访问Rowley Associates网站,或者联系Maxim。有关Rowley CrossWorks的更多信息,请参见附录A

在建立新方案时,点击File New New Project。在New Project弹出框中,填写底部的NameLocation框,从Project Templates窗口中选择Executable类和A C executable (图2)。我们将工程命名为LED,并将其放到目录C:\MAXQ1850\LED中。

图2. 新工程界面
图2. 新工程界面

单击Next继续,您将看到Project Properties窗口(图3)。Target Processor可能是MAXQ1103。双击处理器的器件型号,可以选择MAXQ1850处理器。再次点击Next,并删除Project files main.c (图4)前面的对勾标识,然后可以添加自己的文件。点击Finish,建立工程。

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

图4. 新工程选项
图4. 新工程选项

工程建立后,在Project Explorer窗口(图5)中会出现一个新工程,通常位于应用程序窗口的右上处。展开该LED工程,将看到两个文件夹Source FilesSystem Files。右键点击Source Files并选择Add Existing File,从C:\MAXQ1850\LED目录处选择main.cspi.c文件,然后点击Open

图5. 项目管理器窗口
图5. 项目管理器窗口

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

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

在尝试加载应用程序之前,需在Targets窗口中设置JTAG调试端口。双击Maxim Serial JTAG Adapter将其变为粗体,并在下面的Properties Window中显示信息。您将能看到一系列属性,其设置如图7所示。将Connection Port Name设置为JTAG电路板连接的串口。

图7. 目标属性窗口
图7. 目标属性窗口

加载应用程序时,使用Debug Go或按下F5。程序将通过JTAG加载至评估板,并暂停在main函数的起始处。如果Go不可用或者程序没有加载,请参见附录B的问题解答。

从该点开始运行应用程序时,选择Debug Go (或者单击标识类似Play的按钮)。现在,请确认MAXQ1850-KIT电路板上的LED正在闪烁。您可能希望能够在一定程度上修改应用程序;尝试按照相反的顺序来闪烁LED,或者改变点亮时间,以实现更快或者更慢的闪烁。

使用CrossStudio调试应用程序

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

以LED应用程序为例。首先使用Debug Stop退出当前的调试进程,作为一次试验,将main.c函数中的Delay函数的延时计数从200000改为2000

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

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

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

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

如要退出函数,应一直按着Step Over按钮,直到循环结束,但这会浪费很长时间。只要按下Step Out按钮或者选择Debug Step Out,程序将一直执行,直到退出Delay函数,返回到其调用函数main.c

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

图9. 加入断点
图9. 加入断点

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

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

以下是您可能感兴趣的其它调试功能:
  • Debug Disassembly将同时显示C代码和生成的汇编代码。这样,用户可以进入汇编代码,而不是C代码,并且在执行时也显示C代码。
  • Debug Debug Windows Call Stack将显示应用程序到达当前位置时所调用的函数。如果在Delay()函数中暂停执行,其显示如图10所示。
图10. 在Delay()函数中运行时调用堆栈
图10. 在Delay()函数中运行时调用堆栈

更多信息

评估套件CD中提供了演示MAXQ1850所有特性的示例代码。如需获取该CD或者对本应用笔记有任何问题,请联系微控制器技术支持

面向MAXQ30的Rowley CrossWorks正式文档可从此处获得。

附录A. Rowley CrossStudio

Rowley CrossWorks IDE版本

上述LED示例以及评估套件CD中提供的所有示例均采用面向MAXQ30的最新版本Rowley CrossWorks 2.0.0.2009012309.4045开发。采用该版本的IDE十分关键,该版本IDE中的工程文件与其它版本兼容。可以通过CrossStudio Help About CrossStudio查询版本号。

获取面向MAXQ30的Rowley CrossWorks

面向MAXQ30的CrossStudio可从Rowley的网站http://www.rowleydownload.co.uk/maxq/documentation/home.htm获取。在“Latest Downloads CrossWorks for MAXQ30”中选择“Version 2.0 for Windows”,下载并安装该可执行文件。

Rowley为CrossWorks IDE提供了30天的试用期,请按照指示进行。

如需购买面向MAXQ30的Rowley CrossWorks使用许可,可发送邮件至 (English only)或致电+44(0)1453 549536。

附录B. 问题解答

示例工程代码的编译问题

如果在尝试编译加载的工程文件中的示例代码时出现了问题,很有可能是Rowley CrossWorks编译器版本不兼容造成的。这种不兼容特性会造成一系列奇怪的现象,比如:无法构建工程、输出文件不正确、无法启动调试进程、调试按钮变灰、出现提示未安装供应商软件包的错误信息等等。

为解决上述问题,请用当前安装的IDE重新创建工程文件。首先,从工程目录中删除当前的.hzp和.hzs文件,然后按照上述说明或者评估套件CD中README.txt文件中的说明继续执行。之后应该就能够正确构建和调试工程了。

串口至JTAG电路板相关的问题

如果Rowley CrossWorks报告连接Maxim串行JTAG适配器的MAXQ1850-KIT出现了问题,请按下列步骤进行检查(每次检查一项):
  • 检查JTAG编程电缆的方向是否正确。确认红条连接至串行JTAG适配器电路板(连接器P2)和MAXQ1850 (连接器J6)的引脚1,可以通过评估板PCB背面的方形焊盘辨识引脚1。
  • 检查串行JTAG适配器电路板和评估板是否连接了电源。串行JTAG适配器电路板上的LED DS1应被点亮,MAXQ1850-KIT电路板上LCD屏的最上面一行应能看到一些较弱的方形图案。
  • 检查Rowley CrossWorks中是否选择了正确的串行通信端口。在Targets窗口中双击Maxim串行JTAT适配器,确认端口名是否与连接至串行JTAG适配器电路板的串口一致。
  • 断开串行JTAG适配器电路板和评估板的电源电缆。右键点击Targets窗口中的Maxim Serial JTAG Adapter,选择Disconnect,然后重新连接电源电缆并选择Connect
  • 对串行JTAG适配器电路板重新加载固件,按照应用笔记4027:“如何升级MAXQ的串口-JTAG接口板的固件”中的说明进行。