开发者社区> 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开发板上有不俗的表现,我在后续的博文中会进行相关的介绍。

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

相关文章
mobl:针对移动Web开发的DSL
  简介   现在,针对移动设备像智能手机和平板电脑的应用开发很流行。Apple公司的AppStore(针对iPhone、iPod和iPad)拥有超过350,000种应用,而Android的marketplace也快速追赶上来,现在已经拥有超过200,000种应用。
905 0
《STM32库开发实战指南:基于STM32F4》----3.2 STM32能做什么
本节书摘来自华章出版社《STM32库开发实战指南:基于STM32F4》一书中的第3章,第3.2节,作者刘火良,杨森编著,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 3.2 STM32能做什么 STM32属于一个微控制器,自带了各种常用通信接口,比如USART、I2C、SPI等,可连接非常多的传感器,可以控制很多的设备。
2888 0
敏捷模型驱动开发(AMDD):攀登敏捷软件开发的关键
Agile Model Driven Development (AMDD): The Key to Scaling Agile Software Development 敏捷模型驱动开发(AMDD):攀登敏捷软件开发的关键   Table ...
1272 0
C#对接----韵达开发平台--取电子面单
引子 最近根据业务的一些需求,所以放弃从快递鸟对接去电子面单,转而直接对接韵达开发平台:http://open.yundasys.com/ ,中间踩了一些坑,借此做了一个小案例给大伙,瞅瞅,若有需改进之处,还请指出!!! 废话不多数:首先咱先对韵达的一些接口参数了解清楚: 当然附上地址:http://open.
2735 0
AB RsLogix5000 PLC第三方模块MVI56的编程开发
  在做济钢项目的时候遇到一个很大的挑战,第一济钢要求采用AB的RsLogix5000系列,第二该系统需要联入本公司自己生产的红外测位系统。
662 0
+关注
1091
文章
1262
问答
来源圈子
更多
阿里云最有价值专家,简称 MVP(Most Valuable Professional),是专注于帮助他人充分了解和使用阿里云技术的意见领袖阿里云 MVP 奖项为我们提供了这样一个机会,向杰出的意见领袖表示感谢,更希望通过 MVP 将开发者的声音反映到我们的技术路线图上。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载