Embedded JTAG上的系统控制台无法执行master_write_32—;can';目标正在运行时,是否不执行此操作?

Embedded JTAG上的系统控制台无法执行master_write_32—;can';目标正在运行时,是否不执行此操作?,embedded,fpga,jtag,intel-fpga,system-console,Embedded,Fpga,Jtag,Intel Fpga,System Console,我有一个用Verilog编写的简单控制器,用于配置Altera的TSE MAC。到目前为止,这是相当简单的。然而,我下一步要做的是设置许多Marvel PHY的设置,并持续监控PHY和MAC的统计数据和错误等。在硬件中这样做似乎是一种过激行为,因此我决定合并一个Nios CPU。但在继续在软件中实现该组件之前,我想使用系统控制台快速实现该想法的原型。无论如何,这是我的QSys基本系统: MAC实例被称为tse_MAC,其思想是通过CPU的data_master读/写control_port来配

我有一个用Verilog编写的简单控制器,用于配置Altera的TSE MAC。到目前为止,这是相当简单的。然而,我下一步要做的是设置许多Marvel PHY的设置,并持续监控PHY和MAC的统计数据和错误等。在硬件中这样做似乎是一种过激行为,因此我决定合并一个Nios CPU。但在继续在软件中实现该组件之前,我想使用系统控制台快速实现该想法的原型。无论如何,这是我的QSys基本系统:

MAC实例被称为
tse_MAC
,其思想是通过CPU的
data_master
读/写
control_port
来配置它

在系统启动并运行之后,我使用系统控制台连接到它。我假设它通常可以工作,因为它能够获得
主服务路径:

% get_service_paths master
{/devices/EP2AGX260@1#7-1/(link)/JTAG/(70:34 v3 #0)/nios2_0}
它也开得很好。但是,当尝试写入32位值时,它会立即失败:

% get_service_paths master
{/devices/EP2AGX260@1#7-1/(link)/JTAG/(70:34 v3 #0)/nios2_0}
% open_service master "/devices/EP2AGX260@1#7-1/(link)/JTAG/(70:34 v3 #0)/nios2_0"

% master_write_32 "/devices/EP2AGX260@1#7-1/(link)/JTAG/(70:34 v3 #0)/nios2_0" 0x400 0x00000000;
error: com.altera.systemconsole.internal.plugin.jtag.oci.Nios2DebugException: Can't do this while target is running
    while executing
"master_write_32 {/devices/EP2AGX260@1#7-1/(link)/JTAG/(70:34 v3 #0)/nios2_0} {0x400} {0x00000000}"
    while executing
"master_write_32 "/devices/EP2AGX260@1#7-1/(link)/JTAG/(70:34 v3 #0)/nios2_0" 0x400 0x00000000"
% 
例外情况如下:

Jul 22, 2012 12:17:39 PM com.altera.systemconsole.internal.core.SystemConsole logSevere
SEVERE: com.altera.systemconsole.internal.plugin.jtag.oci.Nios2DebugException: Can't do this while target is running
java.util.concurrent.ExecutionException: com.altera.systemconsole.internal.plugin.jtag.oci.Nios2DebugException: Can't do this while target is running
    at com.altera.systemconsole.internal.core.SimpleFuture$Sync.innerGet(SimpleFuture.java:169)
    at com.altera.systemconsole.internal.core.SimpleFuture.get(SimpleFuture.java:66)
    at com.altera.systemconsole.scripting.StandardCommandSet.waitForFutureResponse(StandardCommandSet.java:233)
    at com.altera.systemconsole.scripting.StandardCommandSet.peekMemoryService(StandardCommandSet.java:161)
    at com.altera.systemconsole.scripting.StandardCommandSet.readByte(StandardCommandSet.java:120)
    at com.altera.systemconsole.scripting.ScriptEngine$16.execute(ScriptEngine.java:1117)
    at com.altera.systemconsole.scripting.ScriptEngine$LegacyCommandAdapter.execute2(ScriptEngine.java:199)
    at com.altera.systemconsole.scripting.SystemConsoleThreadTCLInterpreter$2$1.run(SystemConsoleThreadTCLInterpreter.java:181)
    at com.altera.systemconsole.internal.core.SystemExecutor$4.run(SystemExecutor.java:516)
    at com.altera.systemconsole.internal.core.SystemExecutor$ComparableTask.run(SystemExecutor.java:148)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: com.altera.systemconsole.internal.plugin.jtag.oci.Nios2DebugException: Can't do this while target is running
    at com.altera.systemconsole.internal.plugin.jtag.oci.Nios2Debug.readMemoryIndirect(Native Method)
    at com.altera.systemconsole.internal.plugin.jtag.oci.Nios2Debug.readMemory(Nios2Debug.java:186)
    at com.altera.systemconsole.internal.plugin.jtag.oci.OciMemoryService.peek(OciMemoryService.java:158)
    at com.altera.systemconsole.internal.core.legacymaster.LegacyMasterChannel$1.run(LegacyMasterChannel.java:88)
    at com.altera.systemconsole.internal.core.SystemExecutor.addTaskIfNecessary(SystemExecutor.java:536)
    at com.altera.systemconsole.internal.core.legacymaster.LegacyMasterChannel.doReadMemory(LegacyMasterChannel.java:77)
    at com.altera.systemconsole.internal.core.legacymaster.LegacyMasterChannel.readMemory(LegacyMasterChannel.java:69)
    at com.altera.systemconsole.scripting.StandardCommandSet.peekMemoryService(StandardCommandSet.java:157)
    ... 9 more

我以前从未使用过System Console,在Internet或手册中找不到任何相关内容。所以问题是——我犯了什么错误?非常感谢您对解决此问题的任何帮助。

异常意味着您必须暂停/停止CPU以执行
master\u write\u 32
。要保持CPU运行,必须使用。它将作为另一个服务(即索引1)导出,并可用于与Avalon MM组件通信。答案的功劳在于