Forum Discussion
So let me be more specific: I have assembled a project in Qsys consisting of a Clock source, a JTAG-to-Avalon Master Bridge, and a custom Avalon Slave which is no more than a register file. I used Qsys to connect the reset network*, and generate all the files, and instantiated the top-level file from Qsys as my top-level project file. There are only 2 inputs (clk, reset_n), for which I correctly connected pins (based on the example project for my FPGA board). I also constrained the clock, and used the my_constraints from the example project to constrain the JTAG interface. I then built it. The warning count was very low and the warnings seemed reasonable. I then programmed the board. (with the rotary switch on "0"). I then brought up system console.
These commands work set mm [lindex [get service paths master] 0] open_service master $mm is_service_open master $mm // returns 1 However - any other commands, like jtag_debug_sample_clock $mm jtag_debug_sample_reset $mm jtag_debug_loop $mm <number> jtag_debug_sense_clock $mm or, the one I want master_write_32 $mm 0x0 0x1 All produce a message "channel closed". The jtag sense/sample commands all return "0", and the jtag_debug_loop returns "error: java.lang.NullPointerException while executing <cmd>". The master_write_32 returns "error: java.lang.RuntimeException: Channel closed while executing <cmd>'" I feel like I'm awfully close here, and just haven't tagged second. What does "Channel closed" mean???? Thanks! /j *I really think Qsys didn't do the reset network right - it tied everything to everything. So I tried it again with a daisy chain - clk source -> JTAG/Avalon Master -> my Slave. didn't make a different but this seems more correct.