微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > mt2523 对于DMA user来讲使用的memory类型有什么限制?如何获取non-cacheable mem...

mt2523 对于DMA user来讲使用的memory类型有什么限制?如何获取non-cacheable mem...

时间:10-02 整理:3721RD 点击:
对于DMA user来讲使用的memory类型有什么限制?如何获取non-cacheable memorybuffer?
答: 1) 对于DMA user 来讲,使用的memory 必须满足两个条件:
1.1) memory 是 non-cacheable memory
1.2) memory address 是 4 bytes alignment 对齐

2) user 可以通过以下两种方式获取non-cacheable memory
2.1) 定义一个global data array ,并且添加memory
attribute:ATTR_ZIDATA_IN_NONCACHED_RAM_4BYTE_ALIGN
orATTR_RWDATA_IN_NONCACHED_RAM_4BYTE_ALIGN,如果定义的array 没有赋初始值,就用前者attribute,如果定义有赋初始值,就用后者attribute;
ex:ATTR_ZIDATA_IN_NONCACHED_RAM_4BYTE_ALIGN static uint8_t source_data[64];

2.2)通过API void* PvPortMallocNC(size_t xWantedSize)来获取动态memory(在SDK_V4.0.0之前请使用API void* PvPortMalloc(size_t xWantedSize)来获取,因为void*
PvPortMallocNC(size_t xWantedSize)在V4.0.0才提供):
ex: char *p_source_data=PvPortMallocNC(64);

3) 如果user 使用UART/SPI/I2C的 DMA mode,获取buffer 的方法可以选择2.1)或者2.2)

谢谢分享!

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

网站地图

Top