A system and method for transferring data over a communications medium. A
host is coupled to a device through a serial bus lacking error handling
capabilities, such as an IEEE 1394 bus. The host may control the device by
sending requests accessing its memory registers. The host generates a
first request to the device to access a memory address location of the
device, and which includes an address and status information indicating
whether a prior request to the memory address location returned
successfully. The device examines the status information to determine if
it is a retry of a prior request, and if so, determines if the prior
request completed successfully to the memory address location by comparing
the address and data transfer size of the first request to those of the
prior request. If identical, then the prior request completed successfully
to the memory address location, and the request is ignored. Otherwise, the
device retries the prior request. If the first request is not a retry the
device performs it and returns an acknowledgement to the host indicating
successful completion. If the host does not receive valid acknowledgement,
it retries the first request, otherwise, it completes a transaction
associated with the first request. Then, a new transaction request may be
received which results in a new request being generated by the host to
access the memory address location. The host may manipulate the status
information in the new request to indicate that the first request to the
memory address location returned successfully.
Um sistema e um método para transferir dados sobre um meio de comunicações. Um anfitrião é acoplado a um dispositivo através de uma barra-ônibus de série que falta potencialidades da manipulação de erro, tais como uma barra-ônibus de IEEE 1394. O anfitrião pode controlar o dispositivo emitindo os pedidos que alcançam seus registos da memória. O anfitrião gera um primeiro pedido ao dispositivo alcançar uma posição do endereço de memória do dispositivo, e que inclui um endereço e uma informação de status que indicam se um pedido prévio à posição do endereço de memória retornou com sucesso. O dispositivo examina a informação de status para determinar se for uma nova tentativa de um pedido prévio, e se assim, determinar se o pedido prévio terminado com sucesso à posição do endereço de memória comparando o tamanho de transferência do endereço e de dados do primeiro pedido àqueles do pedido prévio. Se idêntico, então o pedido prévio terminou com sucesso à posição do endereço de memória, e o pedido é ignorado. Se não, o dispositivo retries o pedido prévio. Se o primeiro pedido não for uma nova tentativa o dispositivo executa-o e retorna-o um reconhecimento ao anfitrião que indica a conclusão bem sucedida. Se o anfitrião não receber o reconhecimento válido, retries o primeiro pedido, se não, termina uma transação associada com o primeiro pedido. Então, um pedido novo da transação pode ser recebido que resulte em um pedido novo que está sendo gerado pelo anfitrião para alcançar a posição do endereço de memória. O anfitrião pode manipular a informação de status no pedido novo indicar que o primeiro pedido à posição do endereço de memória retornou com sucesso.