2012-07-22 7 views
3

알테라의 TSE MAC을 구성하는 Verilog로 작성된 간단한 컨트롤러가 있습니다. 지금까지는 매우 간단했습니다. 그러나 내가 다음에하고 싶었던 것은 마블 PHY의 설정을 많이 설정하고 통계 및 오류 등을 위해 PHY와 MAC을 계속 모니터링하는 것입니다. HW에서 그렇게하는 것은 잔인한 것처럼 보이므로 Nios CPU. 그러나 소프트웨어로 구성 요소를 구현하기 전에 System Console을 사용하여 아이디어를 신속하게 프로토 타입 화하려고했습니다. 어쨌든, 여기 내 QSYS베이스 시스템입니다 :JTAG를 통한 시스템 콘솔이 실행되지 않습니다. master_write_32 - 대상이 실행되는 동안이 작업을 수행 할 수 없습니까?

enter image description here

MAC 인스턴스가 tse_mac라고하며 아이디어는 CPU의 data_master를 통해 control_port에 읽기/쓰기로 구성하는 것입니다.

시스템을 가동 한 후 시스템 콘솔을 사용하여 시스템에 연결했습니다. 또한 미세 열립니다

% get_service_paths master 
{/devices/[email protected]#7-1/(link)/JTAG/(70:34 v3 #0)/nios2_0} 

: 나는 master 서비스 경로를 얻을 수 있기 때문에 그것은 일반적으로 작동합니다 가정합니다. 그러나 32 비트 값 쓰기를 시도하면 바로 실패 : 전에 시스템 콘솔을 사용한 적이와 인터넷에 관련된 아무것도 찾을 수 없습니다

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 

: 여기

% get_service_paths master 
{/devices/[email protected]#7-1/(link)/JTAG/(70:34 v3 #0)/nios2_0} 
% open_service master "/devices/[email protected]#7-1/(link)/JTAG/(70:34 v3 #0)/nios2_0" 

% master_write_32 "/devices/[email protected]#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/[email protected]#7-1/(link)/JTAG/(70:34 v3 #0)/nios2_0} {0x400} {0x00000000}" 
    while executing 
"master_write_32 "/devices/[email protected]#7-1/(link)/JTAG/(70:34 v3 #0)/nios2_0" 0x400 0x00000000" 
% 

을 예외 또는 설명서에 나와 있습니다. 그래서 질문은 - 내가 저지른 잘못은 무엇입니까? 문제를 해결하는 데 도움을 주시면 감사하겠습니다.

답변

2

예외는 master_write_32을 실행하기 위해 CPU를 일시 중지/중지해야한다는 것을 의미합니다. CPU를 계속 실행하려면 JTAG to Avalon Master Bridge을 사용해야합니다. 다른 서비스 (즉, 색인 1)로 내보내 져서 Avalon MM 구성 요소와 통신하는 데 사용될 수 있습니다. 답 신용은 guys at Altera's forum입니다.