0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在32位MCU平台间移植

jf_pJlTbmA9 来源:jf_pJlTbmA9 作者:jf_pJlTbmA9 2023-08-25 16:25 次阅读

过去数年,关于单内核平台标准化的讨论不计其数,目的是让设计从一家MCU供货商的产品移植到另一家的产品变得容易。有趣的是,所有讨论均从未涉及外设。然而,外设恰恰就是将应用从一家MCU供货商移植至另一家的真正核心。

一切归于外设

工程师在着手新设计之前,通常会先审视一下功能需求。希望系统做什么?用户怎样与之交互? 诸如此类的一些问题。据此决定要采用什么电路以及控制这些电路所需的MCU片内外设。例如,工业级的HMI(人机界面)设备将需要支持LCD、按钮和/或触摸屏,与机器的通信LED,以及扬声器/蜂鸣器等。所有这些功能将需要MCU上的某些外设,如:CAN控制器用于通信、ADC用于触摸屏及PWM定时器用于蜂鸣器等。外设具有的功能越多,所需的外部电路就越少。在某些情况下,还会减少需要编写的代码量。例如,使用特殊的蜂鸣器模式比为达到同样目的而不得不设置PWM要简单得多。

内核需求通常是显而易见的。虽然内核很重要,但对于设计人员来说,关系不大。事实上,内核必须满足两个基本条件。速度是否足以执行创建最佳用户体检所需的所有软件任务? 是否能高效执行所有任务?只要满足这两点性能要求, 内核的类型无关紧要。

当然,内核还与固件/软件相关。既有代码是工程师必须考虑的一个问题。使用现成代码能节省多少工作量?这个问题并非与内核直接相关,而与外设有关。因为大多数32位MCU代码用C语言编写,因此可重新编译至任何内核。每家 MCU生产商的外设特性及编程模型均特定于其自家的产品,而与所采用的内核无关,这便是代码难以移植的原因所在。

固件库

为了给工程师提供便利,每家MCU生产商均提供一个固件库,其中包含设置和使用各种MCU片内外设的代码。由于不同厂家实现其外设的方式各不相同,甚至具有不同的特性,将应用程序从一种MCU移植至另一种MCU并非轻而易举。

ARM一直以来都在为简化应用程序的移植努力着,它定义了一种称为Cortex™单片机软件接口标准(CMSIS)的固件抽象层标准。采用Cortex-M系列内核的MCU生产商的固件库均已采纳了这一标准。遗憾的是,这个标准仍不能克服移植外设遇到的困难,对于变量或函数也未制定标准的命名约定。因此,将代码从一种固件库移植到另一种固件库没有捷径,必须做大量工作。事实上,对于在ARM MCU供货商之间移植应用程序,该标准几乎没有什么帮助。毕竟,对于MCU生产商来说,将应用程序轻而易举移植到其他供应商的产品一点好处也没有。

设计时考虑可移植性

由于MCU生产商不愿简化其产品到其他供应商产品的可移植性,因此只能由设计工程师来使设计具有可移植性。通过实现一个抽象层,由该层创建硬件(即MCU外设)和应用程序代码之间的标准编程接口即可实现这一点。至少可用以下两种方法:

开发一个中介层或包装器,从而实现在MCU生产商外设库和您的代码之间转换。这可能是最快速高效的解决方案,但会在命令和数据路径中添加较多代码。

定义一个标准的函数和变量命名机制,并将其应用于所有外设库。不必添加代码,但却很费时,具体取决于外设用法的复杂度。

实现移植性是个大工程,贯穿开发过程的始终。除了固件/软件兼容性,还有引脚兼容的问题。将应用从一个MCU供应商的产品移植到另一个往往要重新布置PCB,而且可能还需要不同的外部器件,比如电容和稳压器。

总结

无论使用何种内核,在32位MCU供应商的产品间移植均相当复杂。一切都取决于外设和相关的固件库。每家MCU生产商均提供固件库和应用笔记,尽力使设计过程尽可能地简单。他们也将努力减轻其器件在其系列间移植的工作。但是他们却不愿意使移植到竞争对手的解决方案变得过于容易。这是设计工程师要解决的问题,应该在每个项目开始时评估这样做的成本和好处。
审核编辑:彭菁

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电路
    +关注

    关注

    170

    文章

    5484

    浏览量

    169560
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16019

    浏览量

    343654
  • 控制器
    +关注

    关注

    112

    文章

    15235

    浏览量

    171208
  • 代码
    +关注

    关注

    30

    文章

    4556

    浏览量

    66784
收藏 人收藏

    评论

    相关推荐

    32MCU平台移植

    过去数年,关于单内核平台标准化的讨论不计其数,目的是让设计从一家MCU供货商的产品移植到另一家的产品变得容易。有趣的是,所有讨论均从未涉及外设。然而,外设恰恰就是将应用从一家MCU供货
    发表于 07-02 08:17

    mcu和编译器移植

    1、如果可以的话少用库函数,便于不同的mcu和编译器移植 2、选择合适的算法和数据结构 应该熟悉算法语言,知道各种算法的优缺点,具体资料请参见相应的参考资料,有很多计算机书籍上都有介绍。将比
    发表于 11-23 08:33

    将基于rtthread的项目移植到其他平台的经验分享

    和大家分享下将基于rtthread的项目移植到其他平台的经验。背景最近做了一个物联网项目移植。原先的项目使用的硬件平台为stm32f401+sim800c(
    发表于 02-17 07:57

    如何移植RT-thread官方的系统源码到STM32F10x特定的MCU平台中呢

    如何移植RT-thread官方的系统源码到STM32F10x特定的MCU平台中呢?求大神解答
    发表于 08-11 09:55

    如何移植RT-thread官方的系统源码到STM32F10x特定的MCU平台中?

    如何移植RT-thread官方的系统源码到STM32F10x特定的MCU平台中?
    发表于 05-16 10:31

    何在AT32F系列MCU上使用FreeRTOS

    本指导手册描述了如何在AT32F系列MCU上使用FreeRTOS。FreeRTOS是一款开源的嵌入式实时操作系统,目前在各种嵌入式应用中应用广泛。本指导手册包括FreeRTOS系统移植
    发表于 10-24 07:46

    STM32 系列MCU 不同型号的移植步骤解析

    STM32 系列MCU 不同型号的移植
    的头像 发表于 01-10 10:45 2.9w次阅读
    STM32 系列<b class='flag-5'>MCU</b> 不同型号的<b class='flag-5'>移植</b>步骤解析

    VSF MCU的基本架构移植技巧浅析

    VSF的MCU移植包括2部分,1是基本构架,2是外设驱动移植。这里先讲一下基本构架的移植
    发表于 10-08 15:07 2698次阅读

    SimpleLink SDK的可移植示例

    1.6 SimpleLink MCU平台SDK代码可移植
    的头像 发表于 04-28 06:20 3228次阅读
    SimpleLink SDK的可<b class='flag-5'>移植</b>示例

    梁克雷老师为 OpenHarmony 移植MCU芯片

    中科院软件所智能软件研究中心高级工程师梁克雷老师为OpenHarmony移植MCU芯片的经验分享,以及移植 OpenHarmony 的技术路线介绍。
    发表于 10-29 16:48 114次下载
    梁克雷老师为 OpenHarmony <b class='flag-5'>移植</b><b class='flag-5'>MCU</b>芯片

    移植笔记——【MCU程序移植注意事项】

    前言:关于MCU之间的程序移植有很多细节需要关注,以下是做一些记录,后续想到了注意点再来更。  移植处理总体来说可以分成两类:第一类是非程序代码操作的更改,主要是针对不同的MCU设备文
    发表于 10-26 13:20 9次下载
    <b class='flag-5'>移植</b>笔记——【<b class='flag-5'>MCU</b>程序<b class='flag-5'>移植</b>注意事项】

    【国产MCU移植】MM32F3270 EVBoard

    【国产MCU移植】MM32F3270 EVBoard
    发表于 12-03 17:21 5次下载
    【国产<b class='flag-5'>MCU</b><b class='flag-5'>移植</b>】MM32F3270 EVBoard

    何在机智云平台创建智能产品

    前言:本文主要介绍如何在机智云平台创建一个智能产品、定义功能数据点、生成MCU代码包并附上修改好的代码、生成APP代码编译附上参考代码。
    的头像 发表于 04-14 08:14 1562次阅读

    AN023 如何在GD平台移植Letter shell

    AN023 如何在GD平台移植Letter shell
    发表于 02-27 18:25 1次下载
    AN023 如<b class='flag-5'>何在</b>GD<b class='flag-5'>平台</b><b class='flag-5'>移植</b>Letter shell

    何在AT32 MCU上使用FPU功能

    何在AT32 MCU上使用FPU功能
    的头像 发表于 11-01 17:18 3658次阅读
    如<b class='flag-5'>何在</b>AT32 <b class='flag-5'>MCU</b>上使用FPU功能