微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > mt2523堆存储空间是否在cacheable区间?

mt2523堆存储空间是否在cacheable区间?

时间:10-02 整理:3721RD 点击:
为了受益大多数用户的performance,比如任务的堆栈空间,所以把堆空间放在cacheable区间内。
但是有些用户,比如DMA,也有临时buffer的需求,但同时又希望该buffer放在non-cacheable区间。

所以提供了两个API来满足类似用户的需求:pvPortMallocNC()和vPortFreeNC()。另外这两个API具有平台无关性,比如在MT7687和MT7697平台上是没有开cache的,这两个API 会wrap到FreeRTOS的pvPortMalloc() 和vPortFree()。所以用户也不需要特别注意平台的差异性,直接使用即可。另外所有和cache相关的操作都是在API内部实现,对用户是透明的。

pvPortMallocNC()和vPortFreeNC()简单介绍如下:
void *pvPortMallocNC(size_t xWantedSize)
功能类似pvPortMalloc(),从堆上要用户指定的空间xWantedSize,并返回memory pointer, 唯一的差别是要到的memory是在non-cacheable区间。
void vPortFreeNC(void *pv)功能类似vPortFree(),会释放指针pv指向的memory空间。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top