本应用笔记介绍怎样针对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所示。下面列出的硬件都包含在评估套件中,用于实现本应用笔记:

  • MAXQ1850评估套件电路板
  • JTAG电路板
  • JTAG电缆(连接MAXQ1850评估套件电路板和JTAG电路板)
  • 9针串行电缆
  • 稳压电源(5V、±5%、300mA、中心正极)


详细电路图(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网站,或者发送电子邮件至 <Script language=javascript> var name = "micro.support@"; var domain = "maxim-ic.com"; document.write ("" + name + domain + ""); </Script>  micro.support@maxim-ic.com  (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. 新工程

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

图3. 选择MAXQ1850处理器

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


图4. Project Explorer窗口

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

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


图5. 工程构建后的输出

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


图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函数中,代码停止运行

观察右侧的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. 加入断点

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


图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()函数中运行时调用堆栈


图11. Properties窗口

更多信息软件库和参考设计目前正在由Maxim工程师开发。如果您需要了解库和工具的最新信息,或者对本应用笔记还有其他问题,请联系 <Script language=javascript> var name = "microcontroller.support@"; var domain = "maxim-ic.com"; document.write ("" + name + domain + ""); </Script>  microcontroller.support@maxim-ic.com  (English only)。

附录A. WalkLED main.c源代码#include <maxq1850.h>#include <inmaxq.h>#include "WalkLED.h"voidmain(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() ;  }}voidwr_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}voidDelay(void) {        // Delay to make LEDs visible  int i = 0 ;  for(i=0;i < 200000; i++) ;  }

MAXQ1850评估套件(EV kit)和面向MAXQ30的CrossWorks编译器的设计方案相关推荐

  1. [FPGA] 1、Artix-7 35T Arty FPGA 评估套件学习 + SiFive risc-v 指令集芯片验证

    目录 1.简介 2.深入 3.DEMO 4.SiFive基于risc-v指令集的芯片验证 LINKS 时间 作者 版本 备注 2018-10-09 08:38 beautifulzzzz v1.0 到 ...

  2. [FPGA] 1、Artix-7 35T Arty FPGA 评估套件学习

    Artix-7 35T Arty FPGA 评估套件学习 1.简介 xlinx官网地址: https://china.xilinx.com/products/boards-and-kits/arty. ...

  3. Google更新机器学习开发套件ML Kit,新增支持自动回复与语言识别

    https://www.toutiao.com/a6677743830109782539/ Google拓展了机器学习套件ML Kit的可应用情境,现在不仅提供图像辨识功能,开始加入自然语言处理,提供 ...

  4. TREK1000 评估套件的软件技术分析

    文章目录 TREK1000 评估套件 TREK1000评估套件的软件功能的分析 1.DecaRangeRTLS ARM Source Code Guide 的解读 1.2 软件的架构 1.3测距的精度 ...

  5. USB/UART 串口转LoRa无线传输调试工具 评估套件

    一.LoRa无线传输的特点 LoRa无线通信采用扩频调制通信方式,抗干扰强.灵敏度高,能够在较低功耗的情况下传输更远的距离. 采用ISM免授权频段(470MHZ-510MHZ),用于无线抄表.工业监控 ...

  6. BLEMotion-Kit 支持蓝牙运动传感评估套件

    文章目录 1. 说在最前面 1.1 为什么要做 1.3 民间开发套件 1.2 更新记录 2. BLEMotion-Kit-R1 的颜值 2.1 引脚分配 2.2 CH583 3. 开发环境 3.1 ` ...

  7. SAM L11 Xplained Pro评估套件简介

    Microchip Technology SAM L11 Xplained Pro评估套件非常适合用于对基于ARM Cortex-M23内核的超低功耗微控制器SAM L11系列进行评估和原型设计.该控 ...

  8. 多模态AI开发套件HiLens Kit:超强算力彰显云上实力

    在场景智能化背景下,端侧自身算力有限.开发技能困难,从云侧下发技能到端侧,端侧兼容性差,部署技能困难.华为云提供端云协同多模态AI开发套件--Huawei HiLens Kit,对接华为HiLens多 ...

  9. QT5.14.2+VS2019 构建套件(Kit)黄色感叹号问题解决

    文章目录 前提 问题描述 解决方法 问题解决 前提 在已安装好Windows SDK后,重新打开QtCreate依次点击工具–选项–Kits,首先查看编译器和调试器,对应界面如下(如果没有安装SDK, ...

最新文章

  1. 时间序列与R语言应用(part5)--移动平均MA模型及其可逆性
  2. windows下写的脚本,在linux下执行失败
  3. 六款值得推荐的Android开源框架简介
  4. linux tomcat php配置文件在哪个文件夹下,tomcat下,怎么安配备置php ?(linux系统)
  5. php事务 面向对象,PHP面向对象之事务脚本模式(详解)
  6. wps姓名隐藏为星号_EXCEL里如何给姓名手机号身份证号等隐私信息设置星号隐藏起来?...
  7. C语言pid算法模糊控制,温度PID模糊控制的算法完整
  8. 106.比特率和波特率
  9. 盘点那些效果酷炫的大数据看板
  10. python 修改ip地址
  11. 安装程序无法自动安装Virtual Machine Communication Interface Sockets(VSock)驱动程序
  12. JavaScript立即执行函数
  13. HIT计算机系统CSAPP-ICS2022大作业程序人生
  14. 软件测试架构师——众里寻她千百度
  15. 突然的:图形设备驱动程序错误代码 43 -(已解决)
  16. 使用纯css做一个播放器
  17. tf.nn,tf.layers, tf.contrib模块介绍
  18. XBEE-PRO-SX快速上手
  19. Groovy Xml解析
  20. 关于语料库中OOV未登录词的处理方式

热门文章

  1. echarts 堆叠柱状图
  2. DGIOT智慧农业案例分享
  3. 进腾讯了,38k....
  4. c语言斜线方程,切线方程公式
  5. Mac 连上无线网络,无法上网
  6. 系统开发c语言技术参数,1 C语言 gcc 介绍 C 语言编译 main接受参数
  7. php数字两位小数_PHP 数字价格格式化,保留两位小数
  8. MySQL最全整理!高级java开发工程师面试题
  9. TensorFlow - Toeplize 矩阵(托普利兹矩阵)
  10. 抛弃爬下来的灰色数据,有门槛的风控怎么做?