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

RK平台HDMI-IN/camera调试:预留CMA内存

CMA内存是物理连续的,不需要再进行映射等操作,iommu物理上不连续,需要映射成连续的地址,因此CMA内存的效率比较高,可以用于sensor的mipi信号不佳或者系统负载较大的时候,接收的图像出现异常:例如出现绿条纹、帧率下降、概率性分屏等等的场景。

1.config预留

可以在config配置中设置预留CMA内存的大小,并且关闭对应模块的iommu,对应模块的驱动有实现优先使用iommu,若是iommu关闭的话,则会使用CMA内存,参考如下,设置预留CMA内存为128M,并关闭rkcif的iommu。

diff --git a/arch/arm64/configs/rockchip_defconfig b/arch/arm64/configs/rockchip_defconfig
old mode 100644
new mode 100755
index 544e4d3f751a..dddfc053d86c
--- a/arch/arm64/configs/rockchip_defconfig
+++ b/arch/arm64/configs/rockchip_defconfig
@@ -951,6 +951,7 @@ CONFIG_CRYPTO_ANSI_CPRNG=yCONFIG_CRYPTO_DEV_ROCKCHIP=yCONFIG_CRYPTO_DEV_ROCKCHIP_DEV=yCONFIG_DMA_CMA=y
+CONFIG_CMA_SIZE_MBYTES=128CONFIG_PRINTK_TIME=yCONFIG_PRINTK_TIME_FROM_ARM_ARCH_TIMER=yCONFIG_PRINTK_CALLER=ydiff --git a/arch/arm64/boot/dts/rockchip/rk3588-evb1-imx415.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-evb1-imx415.dtsi
old mode 100644
new mode 100755
index cf58a3af48bb..770a5907e51e
--- a/arch/arm64/boot/dts/rockchip/rk3588-evb1-imx415.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3588-evb1-imx415.dtsi
@@ -132,7 +132,7 @@};&rkcif_mmu {
-       status = "okay";
+       status = "disabled";};

2.dts配置预留CMA给对应模块独占

dts可以设置预留CMA,并且给对应的模块使用,参考如下修改:

设置预留CMA内存大小:

diff --git a/arch/arm64/boot/dts/rockchip/rk3588-android.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-android.dtsi
old mode 100644
new mode 100755
index 7b37e019bca1..c6dd806bbbe1
--- a/arch/arm64/boot/dts/rockchip/rk3588-android.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3588-android.dtsi
@@ -83,6 +83,14 @@compatible = "rockchip,drm-cubic-lut";reg = <0x0 0x0 0x0 0x0>;};
+
+                cif_reserved: vicap@40000000 {
+                        compatible = "shared-dma-pool";
+                        inactive;
+                        reusable;
+                        reg = <0x0 (1024 * 0x100000) 0x0 (256 * 0x100000)>; //1G ~ 1G+256MB
+                        linux,cma-default;
+                };};};

在对应的模块关闭iommu,并且引用CMA内存:

diff --git a/arch/arm64/boot/dts/rockchip/rk3588-evb1-imx415.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-evb1-imx415.dtsi
old mode 100644
new mode 100755
index cf58a3af48bb..07acbb5329a3
--- a/arch/arm64/boot/dts/rockchip/rk3588-evb1-imx415.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3588-evb1-imx415.dtsi
@@ -109,6 +109,7 @@&rkcif {status = "okay";
+       memory-region = <&cif_reserved>;};&rkcif_mipi_lvds {
@@ -132,7 +133,7 @@};&rkcif_mmu {
-       status = "okay";
+       status = "disabled";};

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

相关文章:

  • Mac安装Apache CXF的时候报错:/Library/Internet: No such file or directory
  • 打造属于你的AI智能体,从数据开始 —— 使用 Bright Data MCP+Trae快速构建垂直智能体
  • 操作系统之内存管理(王道)
  • Azure 自动化:所需状态配置 (DSC)
  • UniApp 开发第一个项目
  • Python虚拟环境管理:conda、venv、pipenv三国杀
  • JSON框架转化isSuccess()为sucess字段
  • Fisco Bcos学习 - 开发第一个区块链应用
  • PAC 学习框架:机器学习的可靠性工程
  • 通俗易懂解读BPE分词算法实现
  • 回归预测 | Matlab实现KAN神经网络多输入单输出回归预测模型
  • 轻巧灵动,智启未来 ——Kinova Gen3 Lite 机器人轻松解锁各行业自动化新姿势
  • 领域驱动设计(DDD)【13】之重构中的坏味道:深入理解依恋特性(Feature Envy)与表意接口模式
  • 香港电讯携手Palo Alto Networks,护航企业跨区域数字化之旅
  • 第8章项目进度管理归纳总结补充
  • 英飞凌高性能BMS解决方案助力汽车电动化
  • python学智能算法(十六)|机器学习支持向量机简单示例
  • 基于MATLAB图像特征识别及提取实现图像分类
  • spring event(spring事件)
  • 从 HLS 到 Verilog 的转变解析1:以 AXI 接口为例
  • 云原生灰度方案对比:服务网格灰度(Istio ) 与 K8s Ingress 灰度(Nginx Ingress )
  • jenkins 越用越卡,打开网页缓慢
  • CLion 调试时 Command Timed Out 问题解决方案
  • 深入剖析 Spring AOP
  • 红外图像增强(dde):基于“基础层-细节层”分解的增强算法
  • 5. Pytest失败重跑机制pytest-rerunfailures
  • LE AUDIO---Chapter 2. The Bluetooth® LE Audio architecture
  • AR/VR 显示画质失真?OAS 体全息光栅案例来解决
  • Linux系统之Nginx反向代理与缓存
  • 鸿蒙Next仓颉开发语言中的数据类型总结分享