示例#1
0
文件: ftdi.c 项目: rjarzmik/openocd
static int ftdi_execute_queue(void)
{
    /* blink, if the current layout has that feature */
    struct signal *led = find_signal_by_name("LED");
    if (led)
        ftdi_set_signal(led, '1');

    for (struct jtag_command *cmd = jtag_command_queue; cmd; cmd = cmd->next) {
        /* fill the write buffer with the desired command */
        ftdi_execute_command(cmd);
    }

    if (led)
        ftdi_set_signal(led, '0');

    int retval = mpsse_flush(mpsse_ctx);
    if (retval != ERROR_OK)
        LOG_ERROR("error while flushing MPSSE queue: %d", retval);

    return retval;
}
示例#2
0
文件: ftdi.c 项目: rjarzmik/openocd
static void ftdi_execute_reset(struct jtag_command *cmd)
{
    DEBUG_JTAG_IO("reset trst: %i srst %i",
                  cmd->cmd.reset->trst, cmd->cmd.reset->srst);

    if (cmd->cmd.reset->trst == 1
            || (cmd->cmd.reset->srst
                && (jtag_get_reset_config() & RESET_SRST_PULLS_TRST)))
        tap_set_state(TAP_RESET);

    struct signal *trst = find_signal_by_name("nTRST");
    if (trst && cmd->cmd.reset->trst == 1) {
        ftdi_set_signal(trst, '0');
    } else if (trst && cmd->cmd.reset->trst == 0) {
        if (jtag_get_reset_config() & RESET_TRST_OPEN_DRAIN)
            ftdi_set_signal(trst, 'z');
        else
            ftdi_set_signal(trst, '1');
    }

    struct signal *srst = find_signal_by_name("nSRST");
    if (srst && cmd->cmd.reset->srst == 1) {
        ftdi_set_signal(srst, '0');
    } else if (srst && cmd->cmd.reset->srst == 0) {
        if (jtag_get_reset_config() & RESET_SRST_PUSH_PULL)
            ftdi_set_signal(srst, '1');
        else
            ftdi_set_signal(srst, 'z');
    }

    DEBUG_JTAG_IO("trst: %i, srst: %i",
                  cmd->cmd.reset->trst, cmd->cmd.reset->srst);
}
示例#3
0
static int ftdi_execute_swd_seq(struct jtag_command *cmd)
{
	struct signal *swdoe = find_signal_by_name("SWDOE");
	int retval = 0;

	DEBUG_JTAG_IO("SWD sending raw sequence, length %d bits",
		      cmd->cmd.swd_seq->num_bits);
	retval |= ftdi_set_signal(swdoe, '1');
	retval |= mpsse_clock_data_out(mpsse_ctx,
				       cmd->cmd.swd_seq->bits, 0,
				       cmd->cmd.swd_seq->num_bits,
				       SWD_MODE);
	return (retval);
}