希望内核中的内存管理在分配的时候有多种memory的选择项
在具备 cache功能的mcu or mpu中,一旦对接到 dma,就需要考虑刷 cache的操作,此举会影响对应外设的传输速度,并且用户层考虑的内容太多,一不小心就数据不一致性,在 linux 的代码中,是有多块 memory的选择项,大部分外设都会使用 no cache 的 memory。Thank you!
A核了?可以使用mem heap的方式,自行来管理这些内存。
是driver层,用了 rt_malloc分配dma的buf,不受用户控制
这个机制个人感觉还是留给BSP处理;用宏定义为驱动预留这部分内存;不管是no cache 还是按指定地址刷cache都根据宏定义去做。rt_malloc没办法控制分配的指针地址---内存区域没法控制(比如H7,a分块),对齐方式也不好操作;
本来就是应该bsp处理,所以drivers里面的跟dma相关的使用了rt_malloc这种,建议都删除
那倒没必要,很多CPU没有cache。各自处理就是了 就是像ST这种从高端到低端CPU用一套驱动文件的要注意对cache针对处理一下
那倒没必要,很多CPU没有cache。各自处理就是了 就是像ST这种从高端到低端CPU用一套驱动文件的要注意对cache针对处理一下
虽然...
但是memcpy直接向no cache的空间复制数据,比有cache再刷要慢啊。
虽然... 但是
memcpy直接向no cache的空间复制数据,比有cache再刷要慢啊。
这种不算吧,说的还是与dma交互的这种