У меня был простой контроллер, написанный на Verilog, который конфигурировал Altera TSE MAC. До этого момента все было довольно просто. Однако, что я хотел сделать дальше, так это установить множество настроек Marvel PHY, а также продолжать отслеживать как PHY, так и MAC для статистики и ошибок и т. д. Делать это в HW кажется излишним, поэтому я решил включить Nios ПРОЦЕССОР. Но прежде чем приступить к реализации компонента в программном обеспечении, я хотел быстро создать прототип идеи с помощью системной консоли. Во всяком случае, вот моя базовая система QSys:
Экземпляр MAC называется tse_mac
, и идея состоит в том, чтобы настроить его путем чтения/записи в control_port
через data_master
процессора.
После запуска системы я подключился к ней с помощью системной консоли. Я предполагаю, что это обычно работает, потому что он может получить master
путь к сервису:
% 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
Я никогда раньше не пользовался системной консолью и не мог найти ничего подобного в Интернете или в руководстве. Так вот вопрос - какой проступок я совершаю? Любая помощь в решении проблемы приветствуется.