目的:应用官方提供的dma-proxy.c 测试AXI-DMA在loop下的数据收发。
问题:参照xilinx官方提供的文档https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/1027702787/Linux+DMA+From+User+Space+2.0%EF%BC%8C%E6%90%AD%E5%BB%BABlock Design,添加相应的设备树节点,用petalinux构建工程,工程构建过程中未报错,内核版本未5.4.0,但是将生成的启动文件及内核镜像放入SD卡中启动的时候(板卡ZCU104)内核无法启动,提示:
[ 30.902817] rcu: INFO: rcu_sched detected stalls on CPUs/tasks:
[ 30.908723] rcu: 1-...0: (6 ticks this GP) idle=986/1/0x4000000000000000 softirq=49/51 fqs=2614
[ 30.917582] (detected by 2, t=5255 jiffies, g=-1023, q=5)
[ 30.923050] Task dump for CPU 1:
[ 30.926261] kworker/1:1 R running task 0 30 2 0x0000000a
[ 30.933309] Workqueue: events deferred_probe_work_func
[ 30.938430] Call trace:
[ 30.940865] __switch_to+0x1c4/0x288
[ 30.944429] 0x0
[ 93.926816] rcu: INFO: rcu_sched detected stalls on CPUs/tasks:
[ 93.932727] rcu: 1-...0: (6 ticks this GP) idle=986/1/0x4000000000000000 softirq=49/51 fqs=10491
[ 93.941673] (detected by 2, t=21011 jiffies, g=-1023, q=5)
[ 93.947227] Task dump for CPU 1:
[ 93.950438] kworker/1:1 R running task 0 30 2 0x0000000a
[ 93.957481] Workqueue: events deferred_probe_work_func
[ 93.962607] Call trace:
[ 93.965040] __switch_to+0x1c4/0x288
[ 93.968597] 0x0
[ 156.950816] rcu: INFO: rcu_sched detected stalls on CPUs/tasks:
[ 156.956722] rcu: 1-...0: (6 ticks this GP) idle=986/1/0x4000000000000000 softirq=49/51 fqs=18368
[ 156.965669] (detected by 2, t=36767 jiffies, g=-1023, q=5)
[ 156.971222] Task dump for CPU 1:
[ 156.974434] kworker/1:1 R running task 0 30 2 0x0000000a
[ 156.981468] Workqueue: events deferred_probe_work_func
[ 156.986594] Call trace:
[ 156.989027] __switch_to+0x1c4/0x288
[ 156.992584] 0x0
[ 219.974816] rcu: INFO: rcu_sched detected stalls on CPUs/tasks:
[ 219.980727] rcu: 1-...0: (6 ticks this GP) idle=986/1/0x4000000000000000 softirq=49/51 fqs=26245
[ 219.989673] (detected by 2, t=52523 jiffies, g=-1023, q=5)
[ 219.995227] Task dump for CPU 1:
[ 219.998439] kworker/1:1 R running task 0 30 2 0x0000000a
[ 220.005472] Workqueue: events deferred_probe_work_func
[ 220.010599] Call trace:
Block Design、设备树、内核配置、问题截图详见附件,请问帮忙看看什么原因吗,谢谢。
在system-user.dtsi文件中添加设备树:
/ {
dma_proxy {
compatible ="xlnx,dma_proxy";
dmas = <&axi_dma_0 0 &axi_dma_0 1>;
dma-names = "dma_proxy_tx", "dma_proxy_rx";
dma-coherent;
} ;
};