开发者社区> KB小秘书> 正文

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

简介: 目前针对Cortex-M3的开发示例大都以MDK的工程来提供,所以MDK更适合Cortex-M3的开发才对
+关注继续查看

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

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

CPU:STM32F103ZE

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

一、编译
1.png
所谓异常,其实问题很简单,就是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调试却有不同,为了能正常调试,还是费了不少周折的。

image.png

 

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

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

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

三、其它

image.png
 

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

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

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
你知道直播带货源码的开发方式与开发细节吗?
开发方式 目前,市面上有两种常见的网红直播带货源码开发方式: 一、平台开店,全平台是一家 平台有一整个商城,所有主播都为平台服务,这种平台更适合出售贵重商品(如珠宝、奢饰品)的平台,这样做的好处是: 1、 平台更容易把控产品质量,营造良好品牌形象2、 平台会有更多的盈利空间。
754 0
敏捷模型驱动开发(AMDD):攀登敏捷软件开发的关键
Agile Model Driven Development (AMDD): The Key to Scaling Agile Software Development 敏捷模型驱动开发(AMDD):攀登敏捷软件开发的关键   Table ...
1259 0
《STM32库开发实战指南:基于STM32F4》----2.3 仿真器配置
本节书摘来自华章出版社《STM32库开发实战指南:基于STM32F4》一书中的第2章,第2.3节,作者刘火良,杨森编著,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 2.3 仿真器配置 在将仿真器与电脑和开发板连接好且开发板供电正常的情况下,打开编译软件KEIL,在魔术棒选项卡里面选择仿真器的型号,然后进行以下配置。
1882 0
SNMP从入门到开发:进阶篇
管理信息库:MIB 我们要扩展mib首先必须清楚mib是如何定义的,用的什么语言,有哪些约定,遵循哪些规则等等。这些基本东西掌握过后,我们就可以很轻松的来写自己的mib文件了。 所谓管理信息库,或者MIB,就是所有代理进程包含的、并且能够被管理进程进行查询和设置的信息的集合,或者叫管理对象的集合,在RFC 1213 [McColghrie 和Rose 1991]中定义了MIB-II,即第二版的MIB库。
1005 0
04.Eclipse下Ndk开发(以文件拆分合并为例模拟一下开发过程,参考文件加密的过程)
(创建于2017/12/6) 1.工具类PatchUtils package com.ren.ndk_file_patch; public class PatchUtils { static{ System.
844 0
我为什么要写:新书《离线和实时大数据开发实战》
新书《离线和实时大数据开发实战》 购买链接(机械工业出版社官方淘宝店铺) 感谢@薛奎 和@空无 大大写推荐书评。 空无和薛奎的书评 大数据技术一直是个领先互联网公司的必备核心技术,阿里巴巴最近10年一直在持续加大投入,并将大数据处理技术用于大量的大规模业务场景。每年双十一对实时、离线技术也都是极限的考验,而作者就是在这样的环境下成长起来,基于真实业务场景钻研相关的技术,既有实战也有
3238 0
AB RsLogix5000 PLC第三方模块MVI56的编程开发
  在做济钢项目的时候遇到一个很大的挑战,第一济钢要求采用AB的RsLogix5000系列,第二该系统需要联入本公司自己生产的红外测位系统。
658 0
+关注
1091
文章
1260
问答
来源圈子
更多
阿里云最有价值专家,简称 MVP(Most Valuable Professional),是专注于帮助他人充分了解和使用阿里云技术的意见领袖阿里云 MVP 奖项为我们提供了这样一个机会,向杰出的意见领袖表示感谢,更希望通过 MVP 将开发者的声音反映到我们的技术路线图上。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载