コード例 #1
0
ファイル: usbtobdm.c プロジェクト: 593141477/vsprog
vsf_err_t usbtobdm_transact(uint8_t index, uint8_t *out,
	uint8_t outlen, uint8_t *in, uint8_t inlen, uint8_t delay, uint8_t ack)
{
	uint16_t token;
	
#if PARAM_CHECK
	if (index > 7)
	{
		LOG_BUG(ERRMSG_INVALID_INTERFACE_NUM, index);
		return VSFERR_FAIL;
	}
	if ((outlen > 0x0F) || (inlen > 0x0F) || (NULL == out) || (delay > 3))
	{
		return VSFERR_FAIL;
	}
#endif
	
	token = outlen | (inlen << 8) | (delay << 6) | (ack ? 0x8000 : 0x0000);
	SET_LE_U16(&usbtoxxx_info->cmd_buff[0], token);
	memcpy(&usbtoxxx_info->cmd_buff[2], out, outlen);
	
	if (NULL == in)
	{
		return usbtoxxx_inout_command(USB_TO_BDM, index,
				usbtoxxx_info->cmd_buff, 2 + outlen, inlen, NULL, 0, 0, 1);
	}
	else
	{
		return usbtoxxx_inout_command(USB_TO_BDM, index,
				usbtoxxx_info->cmd_buff, 2 + outlen, inlen, in, 0, inlen, 1);
	}
}
コード例 #2
0
ファイル: usbtojtagraw.c プロジェクト: Xplorer001/openocd
RESULT usbtojtagraw_execute(uint8_t interface_index, uint8_t *tdi,
							uint8_t *tms, uint8_t *tdo, uint32_t bitlen)
{
	uint16_t bytelen;
	
#if PARAM_CHECK
	if (interface_index > 7)
	{
		LOG_BUG(ERRMSG_INVALID_INTERFACE_NUM, interface_index);
		return ERROR_FAIL;
	}
#endif
	
	if (bitlen > 8 * 0xFFFF)
	{
		return ERROR_FAIL;
	}
	bytelen = (uint16_t)((bitlen + 7) >> 3);
	
	SET_LE_U32(&versaloon_cmd_buf[0], bitlen);
	memcpy(versaloon_cmd_buf + 4, tdi, bytelen);
	memcpy(versaloon_cmd_buf + 4 + bytelen, tms, bytelen);
	
	return usbtoxxx_inout_command(USB_TO_JTAG_RAW, interface_index,
			versaloon_cmd_buf, 4 + bytelen * 2, bytelen, tdo, 0, bytelen, 0);
}
コード例 #3
0
ファイル: usbtolpcicp.c プロジェクト: 593141477/vsprog
vsf_err_t usbtolpcicp_enter_program_mode(uint8_t index)
{
#if PARAM_CHECK
	if (index > 7)
	{
		LOG_BUG(ERRMSG_INVALID_INTERFACE_NUM, index);
		return VSFERR_FAIL;
	}
#endif
	
	return usbtoxxx_inout_command(USB_TO_LPCICP, index, NULL,
									0, 0, NULL, 0, 0, 0);
}
コード例 #4
0
ファイル: usbtomicrowire.c プロジェクト: 593141477/vsprog
vsf_err_t usbtomicrowire_transport(uint8_t index,
								uint32_t opcode, uint8_t opcode_bitlen,
								uint32_t addr, uint8_t addr_bitlen,
								uint32_t data, uint8_t data_bitlen,
								uint8_t *reply, uint8_t reply_bitlen)
{
	uint8_t reply_bytelen = (reply_bitlen + 7) / 8;
	uint16_t offset;
	
#if PARAM_CHECK
	if (index > 7)
	{
		LOG_BUG(ERRMSG_INVALID_INTERFACE_NUM, index);
		return VSFERR_FAIL;
	}
	if ((opcode_bitlen > 32) || (addr_bitlen > 32) ||
		(data_bitlen > 32) || (reply_bitlen > 32))
	{
		return VSFERR_FAIL;
	}
#endif
	
	usbtoxxx_info->cmd_buff[0] = opcode_bitlen;
	usbtoxxx_info->cmd_buff[1] = addr_bitlen;
	usbtoxxx_info->cmd_buff[2] = data_bitlen;
	usbtoxxx_info->cmd_buff[3] = reply_bitlen;
	
	offset = 4;
	if (opcode_bitlen)
	{
		SET_LE_U32(&usbtoxxx_info->cmd_buff[offset], opcode);
		offset += 4;
	}
	if (addr_bitlen)
	{
		SET_LE_U32(&usbtoxxx_info->cmd_buff[offset], addr);
		offset += 4;
	}
	if (data_bitlen)
	{
		SET_LE_U32(&usbtoxxx_info->cmd_buff[offset], data);
		offset += 4;
	}
	
	return usbtoxxx_inout_command(USB_TO_MICROWIRE, index,
		usbtoxxx_info->cmd_buff, offset, reply_bytelen, reply,
		0, reply_bytelen, 1);
}