当前位置: 首页 > news >正文

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 --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

http://www.lryc.cn/news/505030.html

相关文章:

  • 12.12 深度学习-卷积的注意力机制-通道注意力SENet
  • H5 scss 移动端的样式适配
  • 【JAVA】Java项目实战—移动端项目:天气查询APP
  • SpringBoot - 动态端口切换黑魔法
  • Java爬虫技术:挖掘淘宝数据的利器
  • Chromium for Android 浏览器的编译和安装
  • 实景视频与模型叠加融合?
  • Scala的隐式类
  • 常见软件设计模式介绍:三层架构、MVC、SSM、EDD、DDD
  • Springboot技术栈常见问题及搭建步骤
  • session 共享服务器
  • vue2:v-for实现的el-radio-group选中时显示角标,并自定义选中按钮的字体颜色和背景色
  • 【Linux】-学习笔记10
  • 鸿蒙NEXT开发案例:九宫格随机
  • 深度解析:RTC电路上的32.768KHz时钟的频偏及测试
  • Scala的泛型
  • OpenGL ES详解——glUniform1i方法是否能用于设置纹理单元
  • 探索 Janus-1.3B:一个统一的 Any-to-Any 多模态理解与生成模型
  • 论文信息搜集
  • 实操给自助触摸一体机接入大模型语音交互
  • 图表的放大和刷新功能
  • SQLServer利用QQ邮箱做SMTP服务器发邮件
  • flutter 多文本,其中文本下划线往下移动
  • 7.OPEN SQL
  • Python轻松获取抖音视频播放量
  • YOLOv8目标检测(三*)_最佳超参数训练
  • SpringBoot SPI
  • uniappp配置导航栏自定义按钮(解决首次加载图标失败问题)
  • 【Apache paimon】-- 集成 hive3.1.3 异常
  • 基于docker部署Nacos最新版本-国内稳定镜像