yip_1991 发表于 2020-3-10 09:53:12

关于内存分配

一般来说,uint8_t *p = mem_alloc(n bytes) 是动态内存分配的一般形式,但是之前有同事发现uCos用的时候是一块块内存来分配的(例如一块为1024bytes),而我使用最新的CMSIS的OS接口(套在FreeRTOS上的),里面的内存分配也是一块块来的。
我就奇怪,内存分配虽说是要连续,但也没说要一块块为单位来分配吧?都是需要多少byte就分配多少呀。

eric2013 发表于 2020-3-10 09:57:57

用CMSIS-RTOS V2封装层,支持三种内存分配方式,有要多少申请多少,有内存块方式的。

使用固定大小的优势是安全可靠,malloc方式的碎片化是无法避免的,很难通过安全认证。超高等级的系统,别说这种内存块,就是中断都很少用。一般就1-2个中断,甚至不用,做到系统完全可预测。

yip_1991 发表于 2020-3-12 12:39:39

eric2013 发表于 2020-3-10 09:57
用CMSIS-RTOS V2封装层,支持三种内存分配方式,有要多少申请多少,有内存块方式的。

使用固定大小的优 ...

硬汉建不建议使用CMSIS V2这套接口呢?感觉是有点没必要,我又不换os

这种超高安全等级的系统很少使用中断,那不就很低效?一般是汽车上的应用么

eric2013 发表于 2020-3-12 14:09:29

yip_1991 发表于 2020-3-12 12:39
硬汉建不建议使用CMSIS V2这套接口呢?感觉是有点没必要,我又不换os

这种超高安全等级的系统很少使用 ...

CMSIS V1已经被ARM淘汰掉了。

页: [1]
查看完整版本: 关于内存分配