1)下载新66AK版本,DSP 程序无法加载
(1) 运行mpmcl reset dsp0 如下错误
root@keystone-evm:/# mpmcl reset dsp0
reset failed (error: -105)
(2) 查看KERNEL代码和DTS配置改动太大,DTS关于DSP 配置如下: keystone.dtsi
gpio0: gpio@260bf00 {
compatible = "ti,keystone-gpio";
reg = <0x0260bf00 0x38>;
gpio-controller;
#gpio-cells = <2>;
/* HW Interrupts mapped to GPIO pins */
interrupts = <0 120 0xf01>,
<0 121 0xf01>,
<0 122 0xf01>,
<0 123 0xf01>,
<0 124 0xf01>,
<0 125 0xf01>,
<0 126 0xf01>,
<0 127 0xf01>,
<0 128 0xf01>,
<0 129 0xf01>,
<0 130 0xf01>,
<0 131 0xf01>,
<0 132 0xf01>,
<0 133 0xf01>,
<0 134 0xf01>,
<0 135 0xf01>,
<0 136 0xf01>,
<0 137 0xf01>,
<0 138 0xf01>,
<0 139 0xf01>,
<0 140 0xf01>,
<0 141 0xf01>,
<0 142 0xf01>,
<0 143 0xf01>,
<0 144 0xf01>,
<0 145 0xf01>,
<0 146 0xf01>,
<0 147 0xf01>,
<0 148 0xf01>,
<0 149 0xf01>,
<0 150 0xf01>,
<0 151 0xf01>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&clkgpio>;
clock-names = "gpio";
};
ipcgpio0: gpio@2620240 {
compatible = "ti,keystone-ipc-gpio";
reg = <0x02620240 4>;
gpio-controller;
#gpio-cells = <2>;
};
uio_mpax: mpax {
compatible = "ti,uio-module-drv";
mem = <0x00bc00000 0x00000a00>;
label = "mpax";
};
uio_edma3: edma3 {
compatible = "ti,uio-module-drv";
mem = <0x02700000 0x000C0000>;
label = "edma3";
};
uio_secmgr: secmgr {
compatible = "ti,uio-module-drv";
mem = <0x002500100 0x00000004>;
label = "secmgr";
};
uio_qmss: qmss {
compatible = "ti,uio-module-drv";
mem = <0x02a00000 0x00100000
0x23a00000 0x00200000>;
label = "qmss";
};
uio_qpend0: qpend0 {
compatible = "ti,uio-module-drv";
label = "qpend0";
interrupts = <0 44 0xf04>;
interrupt-mode = <1>; /* Interrupt mode oneshot */
cfg-params
{
ti,qm-queue = <662>;
};
};
uio_qpend1: qpend1 {
compatible = "ti,uio-module-drv";
label = "qpend1";
interrupts = <0 45 0xf04>;
interrupt-mode = <1>; /* Interrupt mode oneshot */
cfg-params
{
ti,qm-queue = <663>;
};
};
uio_qpend2: qpend2 {
compatible = "ti,uio-module-drv";
label = "qpend2";
interrupts = <0 46 0xf04>;
interrupt-mode = <1>; /* Interrupt mode oneshot */
cfg-params
{
ti,qm-queue = <664>;
};
};
uio_qpend3: qpend3 {
compatible = "ti,uio-module-drv";
label = "qpend3";
interrupts = <0 47 0xf04>;
interrupt-mode = <1>; /* Interrupt mode oneshot */
cfg-params
{
ti,qm-queue = <665>;
};
};
k2hk.dtsi 配置如下
soc {
/include/ "k2hk-clocks.dtsi"
ipcgpio1: gpio@2620244 {
compatible = "ti,keystone-ipc-gpio";
reg = <0x02620244 4>;
gpio-controller;
#gpio-cells = <2>;
};
ipcgpio2: gpio@2620248 {
compatible = "ti,keystone-ipc-gpio";
reg = <0x02620248 4>;
gpio-controller;
#gpio-cells = <2>;
};
ipcgpio3: gpio@262024c {
compatible = "ti,keystone-ipc-gpio";
reg = <0x0262024c 4>;
gpio-controller;
#gpio-cells = <2>;
};
ipcgpio4: gpio@2620250 {
compatible = "ti,keystone-ipc-gpio";
reg = <0x02620250 4>;
gpio-controller;
#gpio-cells = <2>;
};
ipcgpio5: gpio@2620254 {
compatible = "ti,keystone-ipc-gpio";
reg = <0x02620254 4>;
gpio-controller;
#gpio-cells = <2>;
};
ipcgpio6: gpio@2620258 {
compatible = "ti,keystone-ipc-gpio";
reg = <0x02620258 4>;
gpio-controller;
#gpio-cells = <2>;
};
ipcgpio7: gpio@262025C {
compatible = "ti,keystone-ipc-gpio";
reg = <0x0262025C 4>;
gpio-controller;
#gpio-cells = <2>;
};
dsp0: dsp0 {
compatible = "linux,rproc-user";
mem = <0x10e00000 0x00008000
0x10f00000 0x00008000
0x10800000 0x00100000>;
reg = <0x02620040 4
0x0235083c 4
0x02350a3c 4
0x02620240 4>;
reg-names = "boot-address", "psc-mdstat", "psc-mdctl",
"ipcgr";
interrupt-parent = <&ipcirq0>;
interrupts = <8 0 0 0>;
kick-gpio = <&ipcgpio0 27 0>;
clocks = <&clkgem0>;
label = "dsp0";
};
dsp1: dsp1 {
compatible = "linux,rproc-user";
mem = <0x11e00000 0x00008000
0x11f00000 0x00008000
0x11800000 0x00100000>;
reg = <0x02620044 4
0x02350840 4
0x02350a40 4
0x02620244 4>;
reg-names = "boot-address", "psc-mdstat", "psc-mdctl", "ipcgr";
interrupt-parent = <&ipcirq0>;
interrupts = <9 0 1 0>;
kick-gpio = <&ipcgpio1 27 0>;
clocks = <&clkgem1>;
label = "dsp1";
};
dsp2: dsp2 {
compatible = "linux,rproc-user";
mem = <0x12e00000 0x00008000
0x12f00000 0x00008000
0x12800000 0x00100000>;
reg = <0x02620048 4
0x02350844 4
0x02350a44 4
0x02620248 4>;
reg-names = "boot-address", "psc-mdstat", "psc-mdctl", "ipcgr";
interrupt-parent = <&ipcirq0>;
interrupts = <10 0 2 0>;
kick-gpio = <&ipcgpio2 27 0>;
clocks = <&clkgem2>;
label = "dsp2";
};
dsp3: dsp3 {
compatible = "linux,rproc-user";
mem = <0x13e00000 0x00008000
0x13f00000 0x00008000
0x13800000 0x00100000>;
reg = <0x0262004c 4
0x02350848 4
0x02350a48 4
0x0262024c 4>;
reg-names = "boot-address", "psc-mdstat", "psc-mdctl", "ipcgr";
interrupt-parent = <&ipcirq0>;
interrupts = <11 0 3 0>;
kick-gpio = <&ipcgpio3 27 0>;
clocks = <&clkgem3>;
label = "dsp3";
};
dsp4: dsp4 {
compatible = "linux,rproc-user";
mem = <0x14e00000 0x00008000
0x14f00000 0x00008000
0x14800000 0x00100000>;
reg = <0x02620050 4
0x0235084C 4
0x02350a4C 4
0x02620250 4>;
reg-names = "boot-address", "psc-mdstat", "psc-mdctl", "ipcgr";
interrupt-parent = <&ipcirq0>;
interrupts = <12 0 4 0>;
kick-gpio = <&ipcgpio4 27 0>;
clocks = <&clkgem4>;
label = "dsp4";
};
dsp5: dsp5 {
compatible = "linux,rproc-user";
mem = <0x15e00000 0x00008000
0x15f00000 0x00008000
0x15800000 0x00100000>;
reg = <0x02620054 4
0x02350850 4
0x02350a50 4
0x02620254 4>;
reg-names = "boot-address", "psc-mdstat", "psc-mdctl", "ipcgr";
interrupt-parent = <&ipcirq0>;
interrupts = <13 0 5 0>;
kick-gpio = <&ipcgpio5 27 0>;
clocks = <&clkgem5>;
label = "dsp5";
};
dsp6: dsp6 {
compatible = "linux,rproc-user";
mem = <0x16e00000 0x00008000
0x16f00000 0x00008000
0x16800000 0x00100000>;
reg = <0x02620058 4
0x02350854 4
0x02350a54 4
0x02620258 4>;
reg-names = "boot-address", "psc-mdstat", "psc-mdctl", "ipcgr";
interrupt-parent = <&ipcirq0>;
interrupts = <14 0 6 0>;
kick-gpio = <&ipcgpio6 27 0>;
clocks = <&clkgem6>;
label = "dsp6";
};
dsp7: dsp7 {
compatible = "linux,rproc-user";
mem = <0x17e00000 0x00008000
0x17f00000 0x00008000
0x17800000 0x00100000>;
reg = <0x0262005C 4
0x02350858 4
0x02350a58 4
0x0262025C 4>;
reg-names = "boot-address", "psc-mdstat", "psc-mdctl", "ipcgr";
interrupt-parent = <&ipcirq0>;
interrupts = <15 0 7 0>;
kick-gpio = <&ipcgpio7 27 0>;
clocks = <&clkgem7>;
label = "dsp7";
};
dspmem: dspmem {
compatible = "linux,rproc-user";
mem = <0x0c000000 0x000600000
0xa0000000 0x20000000>;
label = "dspmem";
};
上述配置和老版本差别很大, 用开发版原始版本配置mpmcl reset,load, run 都正常,但无法输出dsp LOG,
查看/sys/kernel/debug/remoteproc/remoteproc0/trace0为空。
2)66AK开发版原始版本
DTS配置
gpio0: gpio@260bf00 {
compatible = "ti,keystone-gpio";
reg = <0x0260bf00 0x10
0x0260bf10 0x28>;
gpio-controller;
#gpio-cells = <2>;
/* HW Interrupts mapped to GPIO pins */
interrupts = <0 120 0xf01 0 121 0xf01 0 122 0xf01 0 123 0xf01 0 124 0xf01
0 125 0xf01 0 126 0xf01 0 127 0xf01 0 128 0xf01 0 129 0xf01
0 130 0xf01 0 131 0xf01 0 132 0xf01 0 133 0xf01 0 134 0xf01
0 135 0xf01 0 136 0xf01 0 137 0xf01 0 138 0xf01 0 139 0xf01
0 140 0xf01 0 141 0xf01 0 142 0xf01 0 143 0xf01 0 144 0xf01
0 145 0xf01 0 146 0xf01 0 147 0xf01 0 148 0xf01 0 149 0xf01
0 150 0xf01 0 151 0xf01>;
interrupt-controller;
#interrupt-cells = <2>;
clocks = <&clkgpio>;
clock-names = "gpio";
};
ipcgpio0: gpio@2620240 {
compatible = "ti,keystone-ipc-gpio";
reg = <0x02620240 4>;
gpio-controller;
#gpio-cells = <2>;
};
ipcgpio1: gpio@2620244 {
compatible = "ti,keystone-ipc-gpio";
reg = <0x02620244 4>;
gpio-controller;
#gpio-cells = <2>;
};
ipcgpio2: gpio@2620248 {
compatible = "ti,keystone-ipc-gpio";
reg = <0x02620248 4>;
gpio-controller;
#gpio-cells = <2>;
};
ipcgpio3: gpio@262024c {
compatible = "ti,keystone-ipc-gpio";
reg = <0x0262024c 4>;
gpio-controller;
#gpio-cells = <2>;
};
ipcgpio4: gpio@2620250 {
compatible = "ti,keystone-ipc-gpio";
reg = <0x02620250 4>;
gpio-controller;
#gpio-cells = <2>;
};
ipcgpio5: gpio@2620254 {
compatible = "ti,keystone-ipc-gpio";
reg = <0x02620254 4>;
gpio-controller;
#gpio-cells = <2>;
};
ipcgpio6: gpio@2620258 {
compatible = "ti,keystone-ipc-gpio";
reg = <0x02620258 4>;
gpio-controller;
#gpio-cells = <2>;
};
ipcgpio7: gpio@262025C {
compatible = "ti,keystone-ipc-gpio";
reg = <0x0262025C 4>;
gpio-controller;
#gpio-cells = <2>;
};
dsp0: dsp0 {
compatible = "linux,rproc-user";
reg = <0x02620040 4
0x0235083c 4
0x02350a3c 4
0x02620240 4
0x10e00000 0x00008000
0x10f00000 0x00008000
0x10800000 0x00100000>;
reg-names = "boot-address", "psc-mdstat", "psc-mdctl", "ipcgr", "l1pram", "l1dram", "l2ram";
interrupt-parent = <&ipcirq0>;
interrupts = <8 0 0 0>;
kick-gpio = <&ipcgpio0 27 0>;
clocks = <&clkgem0>;
};
dsp1: dsp1 {
compatible = "linux,rproc-user";
reg = <0x02620044 4
0x02350840 4
0x02350a40 4
0x02620244 4
0x11e00000 0x00008000
0x11f00000 0x00008000
0x11800000 0x00100000>;
reg-names = "boot-address", "psc-mdstat", "psc-mdctl", "ipcgr", "l1pram", "l1dram", "l2ram";
interrupt-parent = <&ipcirq0>;
interrupts = <9 0 1 0>;
kick-gpio = <&ipcgpio1 27 0>;
clocks = <&clkgem1>;
};
dsp2: dsp2 {
compatible = "linux,rproc-user";
reg = <0x02620048 4
0x02350844 4
0x02350a44 4
0x02620248 4
0x12e00000 0x00008000
0x12f00000 0x00008000
0x12800000 0x00100000>;
reg-names = "boot-address", "psc-mdstat", "psc-mdctl", "ipcgr", "l1pram", "l1dram", "l2ram";
interrupt-parent = <&ipcirq0>;
interrupts = <10 0 2 0>;
kick-gpio = <&ipcgpio2 27 0>;
clocks = <&clkgem2>;
};
dsp3: dsp3 {
compatible = "linux,rproc-user";
reg = <0x0262004c 4
0x02350848 4
0x02350a48 4
0x0262024c 4
0x13e00000 0x00008000
0x13f00000 0x00008000
0x13800000 0x00100000>;
reg-names = "boot-address", "psc-mdstat", "psc-mdctl", "ipcgr", "l1pram", "l1dram", "l2ram";
interrupt-parent = <&ipcirq0>;
interrupts = <11 0 3 0>;
kick-gpio = <&ipcgpio3 27 0>;
clocks = <&clkgem3>;
};
dsp4: dsp4 {
compatible = "linux,rproc-user";
reg = <0x02620050 4
0x0235084C 4
0x02350a4C 4
0x02620250 4
0x14e00000 0x00008000
0x14f00000 0x00008000
0x14800000 0x00100000>;
reg-names = "boot-address", "psc-mdstat", "psc-mdctl", "ipcgr", "l1pram", "l1dram", "l2ram";
interrupt-parent = <&ipcirq0>;
interrupts = <12 0 4 0>;
kick-gpio = <&ipcgpio4 27 0>;
clocks = <&clkgem4>;
};
dsp5: dsp5 {
compatible = "linux,rproc-user";
reg = <0x02620054 4
0x02350850 4
0x02350a50 4
0x02620254 4
0x15e00000 0x00008000
0x15f00000 0x00008000
0x15800000 0x00100000>;
reg-names = "boot-address", "psc-mdstat", "psc-mdctl", "ipcgr", "l1pram", "l1dram", "l2ram";
interrupt-parent = <&ipcirq0>;
interrupts = <13 0 5 0>;
kick-gpio = <&ipcgpio5 27 0>;
clocks = <&clkgem5>;
};
dsp6: dsp6 {
compatible = "linux,rproc-user";
reg = <0x02620058 4
0x02350854 4
0x02350a54 4
0x02620258 4
0x16e00000 0x00008000
0x16f00000 0x00008000
0x16800000 0x00100000>;
reg-names = "boot-address", "psc-mdstat", "psc-mdctl", "ipcgr", "l1pram", "l1dram", "l2ram";
interrupt-parent = <&ipcirq0>;
interrupts = <14 0 6 0>;
kick-gpio = <&ipcgpio6 27 0>;
clocks = <&clkgem6>;
};
dsp7: dsp7 {
compatible = "linux,rproc-user";
reg = <0x0262005C 4
0x02350858 4
0x02350a58 4
0x0262025C 4
0x17e00000 0x00008000
0x17f00000 0x00008000
0x17800000 0x00100000>;
reg-names = "boot-address", "psc-mdstat", "psc-mdctl", "ipcgr", "l1pram", "l1dram", "l2ram";
interrupt-parent = <&ipcirq0>;
interrupts = <15 0 7 0>;
kick-gpio = <&ipcgpio7 27 0>;
clocks = <&clkgem7>;
};
dspmem: dspmem {
compatible = "linux,uio";
reg = <0x0c000000 0x00600000 /* msmc ram */
0xa0000000 0x20000000>; /* corepac's ddr3 */
reg-names = "msmcram", "ddr3";
};
加载kernel后运行MPMCL 命令
root@keystone-evm:/# mpmcl reset dsp0
[ 181.448109] ==== rproc_disable_iommu
[ 181.451861] remoteproc0: stopped remote processor 2620040.dsp0
reset succeded
t.outkeystone-evm:/# mpmcl load dsp0 /dspTest/rmK2HArmv7LinuxDspClientTestProjec
load succeded
root@keystone-evm:/# mpmcl run dsp0
run succeded
查看TRACE0信息如下:
root@keystone-evm:/# cat /sys/kernel/debug/remoteproc/remoteproc0/trace0
3 Resource entries at 0x800000
*********************************************************
************ RM DSP+ARM DSP Client Testing **************
*********************************************************
RM Version : 0x02000004
Version String: RM Revision: 02.00.00.04:May 30 2013:22:07:35
Initialized RM_Client
Core 0 : ---------------------------------------------------------
Core 0 : ---------------- Static Init Allocation -----------------
Core 0 : - Instance Name: RM_Client -
Core 0 : - Resource Name: qos-cluster -
Core 0 : - Start: 0 -
Core 0 : - End: 0 -
Core 0 : - Alignment: 0 -
Core 0 : - -
Core 0 : - PASSED -
Core 0 : ---------------------------------------------------------
Core 0 : ---------------------------------------------------------
Core 0 : ---------------- Static Init Allocation -----------------
Core 0 : - Instance Name: RM_Client -
Core 0 : - Resource Name: qos-cluster -
Core 0 : - Start: 2 -
Core 0 : - End: 2 -
Core 0 : - Alignment: 0 -
Core 0 : - -
Core 0 : - PASSED -
Core 0 : ---------------------------------------------------------
Core 0 : ---------------------------------------------------------
Core 0 : ---------------- Static Init Allocation -----------------
Core 0 : - Instance Name: RM_Client -
Core 0 : - Resource Name: qos-cluster -
Core 0 : - Start: 1 -
Core 0 : - End: 1 -
Core 0 : - Alignment: 0 -
Core 0 : - -
Core 0 : - PASSED - Denial: 79 -
Core 0 : ---------------------------------------------------------
Core 0 : ---------------------------------------------------------
Core 0 : ---------------- Static Init Allocation -----------------
Core 0 : - Instance Name: RM_Client -
Core 0 : - Resource Name: aif-queue -
Core 0 : - Start: 525 -
Core 0 : - End: 525 -
Core 0 : - Alignment: 0 -
Core 0 : - -
Core 0 : - PASSED -
Core 0 : ---------------------------------------------------------
Core 0 : ---------------------------------------------------------
Core 0 : ---------------- Static Init Allocation -----------------
Core 0 : - Instance Name: RM_Client -
Core 0 : - Resource Name: aif-queue -
Core 0 : - Start: 525 -
Core 0 : - End: 525 -
Core 0 : - Alignment: 0 -
Core 0 : - -
Core 0 : - PASSED -
Core 0 : ---------------------------------------------------------
Core 0 : Creating RM startup task...
Core 0 : Starting BIOS...
registering rpmsg-proto service on 61 with HOST
Awaiting sync message from host...
