static avr32_get_mem(target_t *target, u32 addr, u32 *data)
{
        jtag_tap_t *tap = target->tap;
        int retval;

        jtag_add_end_state(TAP_IDLE);
        jtag_set_instr(tap, INST_MEM_WORD_ACCESS);

        scan_field_t field1;
        field1.tap = tap;
        field1.num_bits = 35;
        u8 *data1 = calloc(CEIL(field1.num_bits, 8), 1);
        buf_set_u32(data1, 0, 4, SYSTEM_BUS_CACHED);
        buf_set_u32(data1, 4, 30, addr >> 2);
        buf_set_u32(data1, 34, 1, READ_ACCESS);
        field1.out_value = data1;
        field1.out_mask = NULL;
        field1.in_value = NULL;
        field1.in_check_value = NULL;
        field1.in_check_mask = NULL;
        field1.in_handler = NULL;
        field1.in_handler_priv = NULL;
        jtag_add_dr_scan(1, &field1, -1);

        scan_field_t field2;
        field2.tap = tap;
        field2.num_bits = 35;
        u8 *data2 = calloc(CEIL(field2.num_bits, 8), 1);
        field2.out_value = NULL;
        field2.out_mask = NULL;
        field2.in_value = data2;
        field2.in_check_value = NULL;
        field2.in_check_mask = NULL;
        field2.in_handler = NULL;
        field2.in_handler_priv = NULL;
        jtag_add_dr_scan(1, &field2, -1);

        retval = jtag_execute_queue();
        if (retval == ERROR_OK) {
                *data = buf_get_u32(data2, 0, 32);
                LOG_DEBUG("avr32: %08x: %08x", addr, *data);
        } else {
                LOG_ERROR("avr32: could not read %08x", addr);
        }
        free(data1);
        free(data2);

        return retval;
}



Your trouble is coming from the passage on IDLE state.

Here is the solution for 2x dr_scan with DRCAPTURE but without passing 
on IDLE :

Set end_state to TAP_DRPAUSE before jtag_add_dr_scan(1, &field1, -1);
After jtag_add_dr_scan(1, &field1, -1) STATE will be DRPAUSE.

Add a jtag_add_state to DRPAUSE -> this will do a path as:
'DRPAUSE->DREXIT2->DRUPDATE->DRSELECT->DRCAPTURE->DREXIT1->DRPAUSE'

Then add your jtag_add_dr_scan(1, &field2, -1);

and jtag_execute_queue()

This should do what you need.

Best regards,
Laurent

 http://www.amontec.com
Amontec JTAGkey and Amontec JTAGkey2
Making JTAG a real snap !

 
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to