一板网电子技术论坛

发表于: 2019-4-15 14:38:00 | 显示全部楼层

有时我用ARM微控制器开始一个项目,在项目中发现它在开始时是一个错误的选择,需要更换微控制器型号甚至是使用的ARM内核。由于对项目结构和所需文件知之甚少,这样的开关并不是最简单的事情,但绝对可能实现。


很容易更换同一系列的微控制器(例如不同的引脚或不同的存储器大小,例如从KL27Z64更换为到KL27Z),比较困难的是,从K64F更换到KL27Z,或从一个MCU / CPU供应商切更换为另一个MCU / CPU供应商的产品。但是因为Eclipse、GNU工具链和ARM Cortex-M是行业标准,如果你知道你需要改变什么,那么改变就非常简单了。最困难的部分是应用程序代码以及它访问硬件(比如UART或SPI)的位置,这些硬件可能非常不同,取决于所使用的MCU / CPU。我所介绍的是ARM Cortex部分。我正在使用Kinetis Design Studio 3.2.0,因为这恰好在这样的项目中使用,但这些步骤适用于任何其他基于Eclipse + GNU的IDE(例如MCUXpresso IDE)。


总的来说,我建议使用为新器件创建一个新项目然后移动文件来进行这样的移植,因为原始项目保持原样。但也可以“就地”进行更改,这就是本文所展示的内容。


在本文中,我将展示如何将FRDM-K64F(从NXP的ARM Cortex-M4F)更改为FRDM-KL27Z(来自NXP的ARM Cortex-M0 +)的项目。它们具有不同的ARM内核,不同的内存映射和不同的系统启动文件。

switching-cores.jpg

更换内核


项目

首先,为新的开发板创建一个新项目,因为我们需要从该项目中复制文件。可以在移植结束时删除此项目。

dummy-project-for-new-device.png

新器件的项目


系统文件

删除旧系统文件并复制新文件:

system-files.png

系统文件


系统文件用于在启动期间设置时钟或访问外围设备。


启动代码

对启动代码文件执行相同操作:

startup-code.png

启动代码


启动代码用于初始化存储器并设置最重要的硬件,例如禁用/启用看门狗,或设置初始时钟速度。


链接文件

链接器文件包括内存映射。用新的链接文件替换现有的:

linker-file.png

链接文件


在项目设置中,更改使用的链接器文件名:

linker-file-setting.png

链接器文件设置


目标处理器和内核

确保ARM系列和FPU设置与编译器设置中的新处理器匹配:

core-settings.png

内核设置


根据所使用的IDE和SDK,更改项目设置中指定的器件:

device-setting.png

器件设置


构建项目

执行Project > Clean,然后尝试构建项目。您的应用程序中可能有几个包含需要更新的内容:

changed-include-file.png

更改包含文件


在那之后,该项目应该可以构建了。


调试器

最后一步:检查启动配置/调试器设置:它应该与新器件匹配:


以下是使用PEMICRO Multilink的设置:

debugger-setting-pemicro.png

PEMicro的调试器设置


使用SEGGER J-Link的设置:

debugger-device-setting.png

SEGGER调试器的器件设置


通过以上步骤,该项目完成了更改内核的所有设置。


总结

我建议使用“创建新项目并移动应用程序文件”来切换微处理器。但有时候让这种变化“就地”是有意义的。切换ARM Cortex'内核'的东西相当容易。移植微控制器外围设备会更加困难,因此这将是一个完全不同的故事。

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 44 | 回复: 64



手机版|

GMT+8, 2020-6-6 09:49 , Processed in 0.078126 second(s), 32 queries . Powered by Discuz! X3.4

YiBoard一板网 © 2015-2018 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表