当前位置: 代码迷 >> 综合 >> ucos-iii学习之内存对象
  详细解决方案

ucos-iii学习之内存对象

热度:71   发布时间:2023-09-19 06:32:12.0

uC/OS-III 可以获得连续的内存块,内存块大小可以相同,所有的内存分区包含了整数个内存块。在特定的时间执行内存块的分配和释放。内存分区以内存块数组的形式被静态分配的。如果分配后不被释放,也可以调用 malloc()动态分配。
1.创建一个内存分区
调用 OSMemCreate()创建一个内存分区。
2.获得内存分区中的内存块
应用代码通过调用 OSMemGet()可以从内存分区中申请内存块。
3.归还内存块给内存分区
调用 OSMemPut()实现这个功能。
4.使用内存分区
OSMemCreate()只能在任务级被调用,但是 OSMemGet()和OSMemPut()可以在 ISR 中被调用。
5.总结
不要在嵌入式系统中使用 malloc()和 free(),因为这样会导致内存碎片。
可以用 malloc()动态的分配内存空间,但不要释放这些内存空间。
{就是说定义不需要释放的空间时可以使用 malloc(),这样能使所定义的空间的利用率接近为 100%}
用户可以创建任意个内存分区(限制于处理器的 RAM)。