RK3576 Android14,内存大于4G时UVC应用无法申请内存

最近有个项目需要将Linux虚拟成UVC摄像头,开发过程中遇到一个奇怪的事情,通过V4l2框架接口申请内存时,相同的板子,只是内存一个4G一个8G。4G的内存可以申请成功,8G就不行。提示"内存不足"

内存更大反而内存不足?嗯?玄学?

转念一想,是不是UVC所使用的DMA无法使用4G以外的内存地址导致的?

咨询RK官方答复果然:

可能是超过4G使用了swiotlb buf,这个buf大小只有64M,最在连续块只有256K。

swiotlb据我的理解,应该就是在低于4G的内存空间当中预留一部分空间。当设备分配到高于4G的寻址空间的内存时,将内容拷贝到预留的空间内,供DMA访问。

如下修改后正常。

diff 复制代码
diff --git a/kernel-6.1/include/linux/swiotlb.h b/kernel-6.1/include/linux/swiotlb.h
index 35bc4e281..9f5799d15 100644
--- a/kernel-6.1/include/linux/swiotlb.h
+++ b/kernel-6.1/include/linux/swiotlb.h
@@ -22,7 +22,7 @@ struct scatterlist;
  * must be a power of 2.  What is the appropriate value ?
  * The complexity of {map,unmap}_single is linearly dependent on this value.
  */
-#define IO_TLB_SEGSIZE    128
+#define IO_TLB_SEGSIZE    1024
相关推荐
Industio_触觉智能4 天前
瑞芯微RK3576平台FFmpeg硬件编解码移植及性能测试实战攻略
ffmpeg·开发板·嵌入式开发·瑞芯微·视频解码·rk3576·rk3576j
强盛小灵通专卖员4 天前
边缘计算设备 RK3576芯片
人工智能·深度学习·物联网·边缘计算·sci·rk3576·小论文
Industio_触觉智能6 天前
瑞芯微RK3576开发板Android14三屏异显开发教程
android·开发板·瑞芯微·rk3576·多屏异显·rk3576j·三屏异显
Evan_ZGYF丶1 个月前
【RK3576】【Android14】SDK源码编译
驱动开发·android14·rk3576
Evan_ZGYF丶2 个月前
【RK3576】【Android14】ADB工具说明与使用
android·驱动开发·android14·rk3576
Evan_ZGYF丶2 个月前
【RK3576】Android 14 驱动开发实战指南
驱动开发·android14·rk3576
Evan_ZGYF丶2 个月前
【RK3576】【Android14】开发板概述
嵌入式·android14·rk3576
Industio_触觉智能3 个月前
触觉智能RK3576核心板工业应用之软硬件全国产化,成功适配开源鸿蒙OpenHarmony5.0
开发板·openharmony·开源鸿蒙·核心板·瑞芯微·rk3576·rk3576j
_Hello_Panda_3 个月前
回头看,FPGA+RK3576方案的功耗性能优势
fpga开发·低功耗·rk3576
选与握4 个月前
rk3576 gstreamer opencv
rk3576