物联网可编程逻辑控制器(二)

本文介绍了如何将eCLR内核移植到MiCO3.0系统,特别是在MiCOKit-Nucleo开发板上运行,并在MULTIPROG中编写逻辑代码。内容涉及eCLR所需的存储器空间分析,包括静态库、堆、数据内存、代码内存和堆栈空间。此外,还讨论了移植工作中涉及的Thread、Event、Mutex接口、ImageFile、Filesystem、Clock接口以及Socket通讯接口的实现。
摘要由CSDN通过智能技术生成

OK在今天章节里我们全面进入MiCO3.0时代,我们首先将eCLR运行内核移植到MiCO3.0系统里并让eCLR内核能够在MiCOKit-Nucleo开发板上运行起来并且能够在MULTIPROG中编写一段简单的逻辑代码使其下载到MiCOKit-Nucleo开发板上运行。在开始正式移植工作前,我们还是需要来了解下eCLR内核对于MCU的存储器要求。

 

前面章节我们已经介绍到了,eCLR内核是由一些源代码还有核心库文件组成,如果需要运行起eCLR内核,那么我们至少需要下图所示存储器空间:

 

2.1

上面图示中说明的eCLR占用存储器并不包含MiCO系统以及其他组件所占用的存储器空间,所以大家应该明白了在前面章节我提到的为啥128KB RAM512KB FLASH空间并不太足够(大家可以看看默认的MiCO系统编译出来的map文件),下面我们分别介绍下eCLR所需要的这些存储空间的简单分析:

1. 关于eCLR内核静态库的空间占用大概需要10KBRAM以及80KBFlash,这也是把eclrlib_M4_VFP_MT_InPlace.a加入到IAR工程中编译看到实际map文件中的结果,这部分空间占用是固定不动的,IAR在链接过程中就会需要这么大的空间。

 

2. eCLR HeapeCLR内核内部的内存管理单元所需要的一个固定的存储器空间,一般情况下,在嵌入式系统上我们会使用eCLR的内存管理机制来进行申请释放RAM空间,对别是针对C++的类的对象申请与释放,我们都会重载下运算符new, delete,这样我们就可以直接通过newdelete来从eCLR内存管理单元里分配和释放内存了,所以这里的大小我们可以根据自己的需求动态来进行调整,16KB是建议的最小值,在MiCOKit-Nucleo开发板上,我们就使用最小值16KB,例如从下面图中我们可以看到这里我们重载了newdelete运算符。

 

2.2

 

3. Data memory是我们在MULTIPROG中定义变量所存放的存储器区域。例如下面截图,我们在MULTIPROG定义了变量,当编译好的工程被下载到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值