OK在今天章节里我们全面进入MiCO3.0时代,我们首先将eCLR运行内核移植到MiCO3.0系统里并让eCLR内核能够在MiCOKit-Nucleo开发板上运行起来并且能够在MULTIPROG中编写一段简单的逻辑代码使其下载到MiCOKit-Nucleo开发板上运行。在开始正式移植工作前,我们还是需要来了解下eCLR内核对于MCU的存储器要求。
前面章节我们已经介绍到了,eCLR内核是由一些源代码还有核心库文件组成,如果需要运行起eCLR内核,那么我们至少需要下图所示存储器空间:
图2.1
上面图示中说明的eCLR占用存储器并不包含MiCO系统以及其他组件所占用的存储器空间,所以大家应该明白了在前面章节我提到的为啥128KB RAM与512KB FLASH空间并不太足够(大家可以看看默认的MiCO系统编译出来的map文件),下面我们分别介绍下eCLR所需要的这些存储空间的简单分析:
1. 关于eCLR内核静态库的空间占用大概需要10KB的RAM以及80KB的Flash,这也是把eclrlib_M4_VFP_MT_InPlace.a加入到IAR工程中编译看到实际map文件中的结果,这部分空间占用是固定不动的,IAR在链接过程中就会需要这么大的空间。
2. eCLR Heap是eCLR内核内部的内存管理单元所需要的一个固定的存储器空间,一般情况下,在嵌入式系统上我们会使用eCLR的内存管理机制来进行申请释放RAM空间,对别是针对C++的类的对象申请与释放,我们都会重载下运算符new, delete,这样我们就可以直接通过new和delete来从eCLR内存管理单元里分配和释放内存了,所以这里的大小我们可以根据自己的需求动态来进行调整,16KB是建议的最小值,在MiCOKit-Nucleo开发板上,我们就使用最小值16KB,例如从下面图中我们可以看到这里我们重载了new和delete运算符。
图2.2
3. Data memory是我们在MULTIPROG中定义变量所存放的存储器区域。例如下面截图,我们在MULTIPROG定义了变量,当编译好的工程被下载到