rt-thread icon indicating copy to clipboard operation
rt-thread copied to clipboard

希望内核中的内存管理在分配的时候有多种memory的选择项

Open sakumisu opened this issue 3 years ago • 8 comments

在具备 cache功能的mcu or mpu中,一旦对接到 dma,就需要考虑刷 cache的操作,此举会影响对应外设的传输速度,并且用户层考虑的内容太多,一不小心就数据不一致性,在 linux 的代码中,是有多块 memory的选择项,大部分外设都会使用 no cache 的 memory。Thank you!

sakumisu avatar Sep 12 '22 08:09 sakumisu

A核了?可以使用mem heap的方式,自行来管理这些内存。

BernardXiong avatar Sep 12 '22 09:09 BernardXiong

是driver层,用了 rt_malloc分配dma的buf,不受用户控制

sakumisu avatar Sep 12 '22 12:09 sakumisu

这个机制个人感觉还是留给BSP处理;用宏定义为驱动预留这部分内存;不管是no cache 还是按指定地址刷cache都根据宏定义去做。rt_malloc没办法控制分配的指针地址---内存区域没法控制(比如H7,a分块),对齐方式也不好操作;

winfenggao avatar Sep 14 '22 09:09 winfenggao

本来就是应该bsp处理,所以drivers里面的跟dma相关的使用了rt_malloc这种,建议都删除

sakumisu avatar Sep 14 '22 12:09 sakumisu

那倒没必要,很多CPU没有cache。各自处理就是了 就是像ST这种从高端到低端CPU用一套驱动文件的要注意对cache针对处理一下

winfenggao avatar Sep 15 '22 01:09 winfenggao

那倒没必要,很多CPU没有cache。各自处理就是了 就是像ST这种从高端到低端CPU用一套驱动文件的要注意对cache针对处理一下

winfenggao avatar Sep 15 '22 02:09 winfenggao

虽然... 但是memcpy直接向no cache的空间复制数据,比有cache再刷要慢啊。

aozima avatar Sep 15 '22 13:09 aozima

虽然... 但是memcpy直接向no cache的空间复制数据,比有cache再刷要慢啊。

这种不算吧,说的还是与dma交互的这种

sakumisu avatar Sep 15 '22 13:09 sakumisu