`
mmdev
  • 浏览: 13245288 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

STM32(Cortex-M3)开发,RVDS和MDK谁优谁劣?

 
阅读更多

目前针对Cortex-M3的开发示例大都以MDK的工程来提供,所以MDK更适合Cortex-M3的开发才对,难到几万元的RVDS其开发表现不如万元左右的MDK开发工具吗,实际情况又如何呢?

开发板:EM-STM3210E EM-STM3210E-EVAL

CPUSTM32F103ZE

目标源码:Microsoft .Net Micro Framework v4.0 for Cortex-M3

一、编译

编译模式

Debug

Release

RTM

MDK

RAM

正常

异常

异常

FLASH

正常

异常

异常

RVDS

RAM

异常

正常

异常

FLASH

异常

异常

异常

所谓异常,其实问题很简单,就是CRC计算的代码出了问题,相关代码如下:

UINT32 SUPPORT_ComputeCRC( const void* rgBlock ,int nLength , UINT32 crc)

{

const UINT8* ptr = (const UINT8*)rgBlock;

while(nLength-- > 0)

{

crc = c_CRCTable[ ((crc >> 24) ^ (*ptr++)) & 0xFF ] ^ (crc << 8);

}

return crc;

}

在出现异常的版本中,代码运行到crc = c_CRCTable[ ((crc >> 24) ^ (*ptr++)) & 0xFF ] ^ (crc << 8);时,程序即出现异常,并且是rgBlock地址在外扩SRAM或片内FLASH时才出现这个问题,有时执行多个循环才会出现这种情况(为了锁定和捕捉该错误,花了我许久的时间才定位到此处)。STM32F103ZE包含CRC计算功能,但是以4个字节为计算单位,所以不太适用。

从以上表现来看,MDKRVDS的编译结果还是有比较大的区别的,所以建议嵌入式开发者要多测试几款工具,才能真正定位自己的问题。

二、调试

由于目前EM-STM3210E EM-STM3210E-EVAL开发板并没有提供一款直接初始化片外SRAM的软件,所以要调试RAM版本的程序,MDKRVDS都需要编写调试脚本(如何编写调试脚本?请参见:)

MDK调试Cortex-M3和调试ARM9ARM7平台一样,直接调试即可。但是用RVDS调试却有不同,为了能正常调试,还是费了不少周折的。

在用RVDS调试Cortex-M3时,要确保上图所示的 [State]中的“t”为“T”。

有意思的是,这个选项和BOOT的启动选项有很大关系,如果设为“系统启动”模式,则上图的“t”自动为“T”,可以直接进行调试,其它两种模式“用户启动”和“RAM启动”都默认为“t”,需要手动切换为“T”。

此外RVDS显示的指令地址有些问题(最低位并不为1),而MDK却一切正常。

三、其它

ARM开发板,其中基于STM32F103ZE CPU的开发板有三款

从我目前的调试经验来看,如果调试基于ARM7ARM9的开发板,RVDS还是非常强大的,不过如果要调试基于Cortex-M3的开发板(特别是STM32系列),我倒是建议采用MDK来进行调试,不仅价格便宜,综合表现也不错。

最近一段时间,.Net Micro Framework for Cortex-M3除了USB驱动移植成功外,还开发了一个轻量级TinyGUI,在低内存的Cortex-M3开发板上有不俗的表现,我在后续的博文中会进行相关的介绍。

分享到:
评论

相关推荐

    ARM DS-5 RVDS MDK-ARM 三款ARM官方工具软件比较区别选择

    本文将详细对比分析DS-5、RVDS和MDK-ARM这三款ARM官方工具软件的主要特点及适用场景。 #### ARM MDK-ARM **定位与特点** 1. **定位**:MDK-ARM主要面向微控制器开发,特别适用于基于单核ARM TDMI、Cortex-M或...

    STM3210E-LK+User+Manual.pdf(图纸及分析解释说明)

    综上所述,STM3210E-LK开发套件是一个功能强大的学习和开发工具,它为STM32F103系列微控制器的开发提供了全面的资源。通过阅读和理解用户手册的内容,开发者可以有效地使用开发板进行各种硬件和软件的测试和调试工作...

    cortexm3_macro

    标题 "cortexm3_macro" 指向的是与Cortex-M3处理器相关的宏定义,这通常涉及到微控制器编程,特别是使用ARM公司的Cortex-M3内核的微控制器。Cortex-M3是一款高效的32位RISC(精简指令集计算机)处理器核心,广泛应用...

    高能效比新内核问世,Cortex-M系列处理器全面开花.pdf

    同时,ARM致力于开发工具的改进和更新,提供了包括ADS、RVDS、DS-5开发环境、Keil MDK开发包以及CMSIS软件接口标准在内的多种开发工具,为开发者提供了便利。 2012年,ARM推出了新的Cortex-M0+内核,采用90纳米LP...

    rvds4.0编译器用户指南.rar_SOC_arm-rvds_rvds_rvds 编译器

    RVDS(RealView Development Suite)是ARM公司最新推出的面向SOC和大型复杂应用程序的高端开发工具,被业界称为最好的ARM开发工具。

    DS-5 MDK uVision4 RVDS Realview C51等22个ARM开发工具软件概念全解析

    本篇内容将详细介绍DS-5、MDK、uVision4、RVDS、Realview、C51等22个流行的ARM开发工具软件,及其相关的概念和关系。 1. ARM Development Suite(ADS) ADS是ARM早期开发的一个软件工具包,主要用于嵌入式软件开发...

    RVDS和MDK嵌入式开发工具调试脚本编写.doc

    本文将重点探讨两种常用的ARM开发工具——RealView Development Suite (RVDS) 和Keil Microcontroller Development Kit (MDK)的调试脚本编写,以及它们之间的异同。 首先,MDK是早期广泛使用的ARM开发工具,尤其在...

    ARM最新开发工具DS-5入门解析说明

    DS-5 可以支持基于 ARM 内核的芯片的开发,包括老 ARM 内核:ARM7、ARM9、ARM11,以及 Cortex-M 系列内核:Cortex-M0、Cortex-M1、Cortex-M3、Cortex-M4,Cortex-R 系列内核:Cortex-R4、Cortex-R5、Cortex-R7,...

    HJTAGV1.0.rar

    H-JTAG 支持所有基于CORTEX-M0, CORTEX-M3,CORTEX-M4,ARM7,ARM9,ARM11 和XSCALE 芯片的调试,并且支持大多数主流的ARM 调试软件,如ADS、RVDS、IAR 和KEIL/MDK。通过灵活的 接口配置,H-JTAG 可以支持H-JTAG USB...

    在MDK中为STM32移植FreeRTOS.pdf

    ### 在MDK中为STM32移植FreeRTOS详解 #### 一、背景介绍 随着嵌入式系统的发展,实时操作系统(RTOS)的应用越来越广泛。FreeRTOS作为一种轻量级的RTOS,因其开源免费、代码小巧、功能强大等特点,在嵌入式领域得到...

    FreeRTOS内核应用开发.pdf

    * RVDS 文件夹包含 ARM_CM3 文件夹,用于 Cortex-M3 内核的处理器。 * MemMang 文件夹包含五个 heap 文件和一个 readme 说明文件,用于内存管理。 * Demo 文件夹包含了多种开发平台的完整 Demo,开发者可以方便的...

    FreeRTOS移植到STM32F103步骤及注意事项.doc

    - 对于STM32F103而言,仅保留`ARM_CM3`文件夹,该文件夹内包含与Cortex-M3内核相关的底层文件。 - 需要注意的是,不要随意删除`portable`文件夹内的文件,尤其是`MemMang`文件夹中的内存管理文件。 2. **移植步骤...

    rvds4.0在xp上安装步骤

    arm开发环境 RVDS4.0是ARM公司当前最新的开发环境,支持ARM结构V4-V7的(基本)全部cpu开发,比如:ARM9, ARM11, Cortex-A, Cortex-M, Cortex-R。

    H-JTAG V3.0 RELEASE.rar

    H-JTAG是H-JTAG团队开发的一... 其支持各种ARM处理器: ARM7, ARM9, ARM11, XSCALE (包括最新的PXA300系列), CORTEX-M3。无缝连接各种主流IDE:ADS, SDT, IAR, KEIL, RVDS。支持各种WINDOWS平台 NT/2000/XP/VISTA。

    ADS与RVDS和RVMDK

    这三者之间的继承关系和演进逻辑是,ARM从最开始的SDT到ADS,再到RVDS,一直致力于提供更好的用户体验和开发效率。而RVMDK则是在RVDS的基础上,进一步针对微控制器领域做了优化和功能拓展。ARM收购Keil公司之后,其...

    STM32CubeMX的main.h文件生成脚本

    “..\Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM3\port.c(412): error: A1586E: Bad operand types (UnDefOT, Constant) for operator (”,最后发现是main.h 中的#include "stm32f1xx_hal.h"的...

Global site tag (gtag.js) - Google Analytics