如何在不使用 Yocto build 的情况下启用 etnaviv 驱动程序?
How to enable etnaviv drivers without using Yocto build?
我有带有内核 4.14 和 vivante 驱动程序 6.2.4p4.0(Freescale 的官方驱动程序)的定制板。
我想使用 mesa 驱动程序而不是 Freescale 来测试我的 Qt 应用程序。
我已经下载并手动编译并安装了 mesa 驱动程序,并启用了 kmsro 和 etnaviv 驱动程序选项,但这些步骤似乎并没有够了。
安装 mesa 驱动程序后要执行哪些步骤才能启用它们?
我无法访问我的电路板的 Yocto 层,因此无法重建映像。
谢谢!
为了启用 etnaviv 内核模块,我执行了以下操作:
下载并编译内核源码v4.14,启用以下选项:
- 设备驱动程序-> 图形支持->
[M]ETNAVIV
- MXC 支持驱动程序-> MXC Vivante GPU 支持->
[*]MXC Vivante GPU support
然后安装或编译MESA。如果您选择编译 MESA,请记住在 meson_options.txt 文件中启用选项 kmsro
和 etnaviv
。
最后,要检查 etnaviv 是否已成功加载,请执行以下操作:
# dmesg | grep etnaviv
应该输出如下内容:
[ 6.249793] etnaviv gpu-subsystem: bound 134000.gpu (ops gpu_ops [etnaviv])
[ 6.249866] etnaviv gpu-subsystem: bound 130000.gpu (ops gpu_ops [etnaviv])
[ 6.249919] etnaviv gpu-subsystem: bound 2204000.gpu (ops gpu_ops [etnaviv])
[ 6.249934] etnaviv-gpu 134000.gpu: model: GC320, revision: 5007
[ 6.332274] etnaviv-gpu 130000.gpu: model: GC2000, revision: 5108
[ 6.402442] etnaviv-gpu 2204000.gpu: model: GC355, revision: 1215
[ 6.402474] etnaviv-gpu 2204000.gpu: Ignoring GPU with VG and FE2.0
[ 6.416880] [drm] Initialized etnaviv 1.1.0 20151214 for gpu-subsystem on minor 1
还要检查你的 dtb 文件是否正确初始化,我的有以下关于 gpu 的条目:
gpu@00130000 {
compatible = "vivante,gc";
reg = <0x130000 0x4000>;
interrupts = <0x0 0x9 0x4>;
clocks = <0x2 0x1b 0x2 0x7a 0x2 0x4a>;
clock-names = "bus", "core", "shader";
power-domains = <0x9>;
linux,phandle = <0x82>;
phandle = <0x82>;
};
gpu@00134000 {
compatible = "vivante,gc";
reg = <0x134000 0x4000>;
interrupts = <0x0 0xa 0x4>;
clocks = <0x2 0x1a 0x2 0x79>;
clock-names = "bus", "core";
power-domains = <0x9>;
linux,phandle = <0x81>;
phandle = <0x81>;
};
gpu@02204000 {
compatible = "vivante,gc";
reg = <0x2204000 0x4000>;
interrupts = <0x0 0xb 0x4>;
clocks = <0x2 0x8f 0x2 0x79>;
clock-names = "bus", "core";
power-domains = <0x9>;
linux,phandle = <0x83>;
phandle = <0x83>;
};
gpu-subsystem {
compatible = "fsl,imx-gpu-subsystem";
cores = <0x81 0x82 0x83>;
};
注意:如果您收到类似“命令缓冲区超出有效内存 window”的 dmesg 错误输出,则可能是您需要增加 cma被保留。你必须通过内核参数来完成,在我的例子中,我必须通过 uboot 设置以下内容:cma=256M@2G
我有带有内核 4.14 和 vivante 驱动程序 6.2.4p4.0(Freescale 的官方驱动程序)的定制板。 我想使用 mesa 驱动程序而不是 Freescale 来测试我的 Qt 应用程序。 我已经下载并手动编译并安装了 mesa 驱动程序,并启用了 kmsro 和 etnaviv 驱动程序选项,但这些步骤似乎并没有够了。
安装 mesa 驱动程序后要执行哪些步骤才能启用它们?
我无法访问我的电路板的 Yocto 层,因此无法重建映像。
谢谢!
为了启用 etnaviv 内核模块,我执行了以下操作:
下载并编译内核源码v4.14,启用以下选项:
- 设备驱动程序-> 图形支持->
[M]ETNAVIV
- MXC 支持驱动程序-> MXC Vivante GPU 支持->
[*]MXC Vivante GPU support
然后安装或编译MESA。如果您选择编译 MESA,请记住在 meson_options.txt 文件中启用选项 kmsro
和 etnaviv
。
最后,要检查 etnaviv 是否已成功加载,请执行以下操作:
# dmesg | grep etnaviv
应该输出如下内容:
[ 6.249793] etnaviv gpu-subsystem: bound 134000.gpu (ops gpu_ops [etnaviv])
[ 6.249866] etnaviv gpu-subsystem: bound 130000.gpu (ops gpu_ops [etnaviv])
[ 6.249919] etnaviv gpu-subsystem: bound 2204000.gpu (ops gpu_ops [etnaviv])
[ 6.249934] etnaviv-gpu 134000.gpu: model: GC320, revision: 5007
[ 6.332274] etnaviv-gpu 130000.gpu: model: GC2000, revision: 5108
[ 6.402442] etnaviv-gpu 2204000.gpu: model: GC355, revision: 1215
[ 6.402474] etnaviv-gpu 2204000.gpu: Ignoring GPU with VG and FE2.0
[ 6.416880] [drm] Initialized etnaviv 1.1.0 20151214 for gpu-subsystem on minor 1
还要检查你的 dtb 文件是否正确初始化,我的有以下关于 gpu 的条目:
gpu@00130000 {
compatible = "vivante,gc";
reg = <0x130000 0x4000>;
interrupts = <0x0 0x9 0x4>;
clocks = <0x2 0x1b 0x2 0x7a 0x2 0x4a>;
clock-names = "bus", "core", "shader";
power-domains = <0x9>;
linux,phandle = <0x82>;
phandle = <0x82>;
};
gpu@00134000 {
compatible = "vivante,gc";
reg = <0x134000 0x4000>;
interrupts = <0x0 0xa 0x4>;
clocks = <0x2 0x1a 0x2 0x79>;
clock-names = "bus", "core";
power-domains = <0x9>;
linux,phandle = <0x81>;
phandle = <0x81>;
};
gpu@02204000 {
compatible = "vivante,gc";
reg = <0x2204000 0x4000>;
interrupts = <0x0 0xb 0x4>;
clocks = <0x2 0x8f 0x2 0x79>;
clock-names = "bus", "core";
power-domains = <0x9>;
linux,phandle = <0x83>;
phandle = <0x83>;
};
gpu-subsystem {
compatible = "fsl,imx-gpu-subsystem";
cores = <0x81 0x82 0x83>;
};
注意:如果您收到类似“命令缓冲区超出有效内存 window”的 dmesg 错误输出,则可能是您需要增加 cma被保留。你必须通过内核参数来完成,在我的例子中,我必须通过 uboot 设置以下内容:cma=256M@2G