目前针对Cortex-M3的开发示例大都以MDK的工程来提供,所以MDK更适合Cortex-M3的开发才对,难到几万元的RVDS其开发表现不如万元左右的MDK开发工具吗,实际情况又如何呢?
开发板:EM-STM3210E 和 EM-STM3210E-EVAL
CPU:STM32F103ZE
目标源码: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个字节为计算单位,所以不太适用。
从以上表现来看,MDK和RVDS的编译结果还是有比较大的区别的,所以建议嵌入式开发者要多测试几款工具,才能真正定位自己的问题。
二、调试
由于目前EM-STM3210E 和 EM-STM3210E-EVAL开发板并没有提供一款直接初始化片外SRAM的软件,所以要调试RAM版本的程序,MDK或RVDS都需要编写调试脚本(如何编写调试脚本?请参见:)
用MDK调试Cortex-M3和调试ARM9或ARM7平台一样,直接调试即可。但是用RVDS调试却有不同,为了能正常调试,还是费了不少周折的。
在用RVDS调试Cortex-M3时,要确保上图所示的 [State]中的“t”为“T”。
有意思的是,这个选项和BOOT的启动选项有很大关系,如果设为“系统启动”模式,则上图的“t”自动为“T”,可以直接进行调试,其它两种模式“用户启动”和“RAM启动”都默认为“t”,需要手动切换为“T”。
此外RVDS显示的指令地址有些问题(最低位并不为1),而MDK却一切正常。
三、其它
ARM开发板,其中基于STM32F103ZE CPU的开发板有三款
从我目前的调试经验来看,如果调试基于ARM7或ARM9的开发板,RVDS还是非常强大的,不过如果要调试基于Cortex-M3的开发板(特别是STM32系列),我倒是建议采用MDK来进行调试,不仅价格便宜,综合表现也不错。
最近一段时间,.Net Micro Framework for Cortex-M3除了USB驱动移植成功外,还开发了一个轻量级TinyGUI,在低内存的Cortex-M3开发板上有不俗的表现,我在后续的博文中会进行相关的介绍。
分享到:
相关推荐
感觉上,DS-5,MDK-ARM 和 RVDS 有非常相似的功能,它们都有一个编译器、调试器、分析工具和模拟模块。工具链之间功能的比较是比较花时间的,而且是相当无意义的,不过通过观察他们解决的市场问题去比较会相对简单得...
RVDS和MDK嵌入式开发工具调试脚本编写
RVDS(RealView Development Suite)是ARM公司最新推出的面向SOC和大型复杂应用程序的高端开发工具,被业界称为最好的ARM开发工具。
H-JTAG 支持所有基于CORTEX-M0, CORTEX-M3,CORTEX-M4,ARM7,ARM9,ARM11 和XSCALE 芯片的调试,并且支持大多数主流的ARM 调试软件,如ADS、RVDS、IAR 和KEIL/MDK。通过灵活的 接口配置,H-JTAG 可以支持H-JTAG USB...
arm开发环境 RVDS4.0是ARM公司当前最新的开发环境,支持ARM结构V4-V7的(基本)全部cpu开发,比如:ARM9, ARM11, Cortex-A, Cortex-M, Cortex-R。
H-JTAG是H-JTAG团队开发的一... 其支持各种ARM处理器: ARM7, ARM9, ARM11, XSCALE (包括最新的PXA300系列), CORTEX-M3。无缝连接各种主流IDE:ADS, SDT, IAR, KEIL, RVDS。支持各种WINDOWS平台 NT/2000/XP/VISTA。
“..\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"的...
相信诸多做ARM嵌入式开发的时候,都会遇到开发环境的选择问题,而当今开发环境众多,并且概念繁杂,到底如何区别,如何甄选,成了头疼的问题。所以,今天我们就来详细讨论一下这个问题,已提供给同行们一个参考的...
RVDS是arm最新的集成开发工具,已经取代了ADS成为最受欢迎的arm开发工具,本文是RVDS的使用方法和配置方法图文教程。
目的:6410裸机学习程序,部份代码是移植网友的,仅供学习参考和交流 编译环境:XP SP3,RVDS2.2编译器 功能模块: 串口 、LED、beep(蜂鸣器)、key(查询和中断模式)、PWM、RTC、LCD、TOUCH(一线触摸) 、 nand、...
工程配置 rvds4.0 工程配置 裸机程序开发
基于MDK的S3C6410裸机开发工程模版,可以摆脱RVDS平台,使用MDK开发,给不喜欢RVDS的朋友
这是arm开发套件2.2,很不错,大家都是有以下试试,鼎力推荐
6410裸机学习程序,Arm为三星公司出的S3C6410(ARM11),适用于OK6410 飞凌6410 Tiny6410 的裸机程序开发。 编译环境:XP SP3,RVDS2.2编译器 功能模块: 串口 、LED、beep(蜂鸣器)、key(查询和中断模式)、PWM、...
在网上搜集的关于MDK 的资料,列表如下,希望能给大家一些帮助. MDK中Const和volatile的...将RVDS中的工程移植到RealView MDK.pdf -------------------------------------------------------- tcdzyq 10:54 2009-10-22
WIN7_32位_RVDS环境配置文档,很详细,按照步骤操作
破解文档,里面有RVDS4.0的破解教程
将所有文件解压到RVDS的安装目录下(如:f:ARM),执行crack.bat license是rvds.dat,把别忘了替换网卡MAC 会有fail提示,正常。 只能执行一次,多了会出问题 By Hacx3rn 有时需要重启
arm集成开发编译套装软件RVDS4.0的安装破解补丁及详细说明