Hi there !
As you probably know we are trying to build a free open source FTDI ftcjtag.dll arm interface.
Currently I'm trying to halt CPU using DBGREQ :
Code:
WriteDataByteBuffer WriteDataBuffer;
FTC_STATUS ftStatus = FTC_SUCCESS;
ReadDataByteBuffer ReadDataBuffer;
DWORD dwNumBytesReturned = 0;
ReadCmdSequenceDataByteBuffer ReadCmdSequenceDataBuffer;
WriteDataBuffer[0] = '\x00';
ftStatus = JTAG_Write(ftHandle, false, 2, &WriteDataBuffer, 1, TEST_LOGIC_STATE);
//ftStatus = JTAG_Write(ftHandle, false, 2, &WriteDataBuffer, 1, PAUSE_INSTRUCTION_REGISTER_STATE);
ftStatus = JTAG_ClearDeviceCmdSequence(ftHandle);
WriteDataBuffer[0] = '\x04'; // SCAN_N command
ftStatus = JTAG_AddDeviceWriteCmd(ftHandle, true, 4, &WriteDataBuffer, 1, RUN_TEST_IDLE_STATE);
//ftStatus = JTAG_Read(ftHandle, false, 32, &ReadDataBuffer, &dwNumBytesReturned, PAUSE_TEST_DATA_REGISTER_STATE);
WriteDataBuffer[0] = '\x08'; // Select Scan Chain 2
ftStatus = JTAG_AddDeviceWriteCmd(ftHandle, false, 5, &WriteDataBuffer, 1, RUN_TEST_IDLE_STATE);
WriteDataBuffer[0] = '\x0C'; // INTEST command
ftStatus = JTAG_AddDeviceWriteCmd(ftHandle, true, 4, &WriteDataBuffer, 1, RUN_TEST_IDLE_STATE);
//ftStatus = JTAG_Read(ftHandle, false, 32, &ReadDataBuffer, &dwNumBytesReturned, PAUSE_TEST_DATA_REGISTER_STATE);
WriteDataBuffer[0] = '\x02';
WriteDataBuffer[1] = '\x00';
WriteDataBuffer[2] = '\x00';
WriteDataBuffer[3] = '\x00';
WriteDataBuffer[4] = '\x01';
ftStatus = JTAG_AddDeviceWriteCmd(ftHandle, false, 37, &WriteDataBuffer, 5,RUN_TEST_IDLE_STATE);
ftStatus = JTAG_ExecuteCmdSequence(ftHandle,&ReadCmdSequenceDataBuffer,&dwNumBytesReturned);
However, it seems that this doesn't work. Any ideas what might go wrong ?
Cya,
Viper BJK