KR100431009B1 - 데이터 전송 제어 장치, 정보 기억 매체 및 전자기기 - Google Patents

데이터 전송 제어 장치, 정보 기억 매체 및 전자기기 Download PDF

Info

Publication number
KR100431009B1
KR100431009B1 KR10-2001-7010461A KR20017010461A KR100431009B1 KR 100431009 B1 KR100431009 B1 KR 100431009B1 KR 20017010461 A KR20017010461 A KR 20017010461A KR 100431009 B1 KR100431009 B1 KR 100431009B1
Authority
KR
South Korea
Prior art keywords
data
data transfer
reset
bus reset
node
Prior art date
Application number
KR10-2001-7010461A
Other languages
English (en)
Other versions
KR20010102221A (ko
Inventor
마추나가코수케
카나이히로유키
후지타신이치로
Original Assignee
세이코 엡슨 가부시키가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 세이코 엡슨 가부시키가이샤 filed Critical 세이코 엡슨 가부시키가이샤
Publication of KR20010102221A publication Critical patent/KR20010102221A/ko
Application granted granted Critical
Publication of KR100431009B1 publication Critical patent/KR100431009B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/40052High-speed IEEE 1394 serial bus
    • H04L12/40123Interconnection of computers and peripherals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4291Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Systems (AREA)
  • Small-Scale Networks (AREA)

Abstract

본 발명은 노드의 토폴로지 정보를 클리어하는 리셋이 발생한 경우에 생기는 불합리함을 해소할 수 있는 데이터 전송 제어 장치, 정보 기억 매체 및 전자기기를 제공하는 것이 목적이다. IEEE1394 규격의 데이터 전송 제어 장치에 있어서, 데이터 전송 기간 중에 버스 리셋이 발생하고 동시에 버스 리셋의 전후의 ORB의 내용이 동일인 경우에, 버스 리셋 발생 시점에 이어서 데이터 전송을 재개하여, 프린터의 이중 인쇄를 방지한다. 버스 리셋이 데이터 전송 기간 중에 발생한 경우에 계속 플래그를 온으로 한다. 버스 리셋 후에 최초에 전송된, 인쇄 커맨드를 포함하는 커맨드 블록 ORB를, 버스 리셋 전의 ORB의 비교 대상으로서 채용한다. 버스 리셋이 요인이 되어 이니시에이터로부터 ACK가 반송되지 않은 경우에, 데드 상태로 상태 천이 한다. 스캐너로부터의 전송 데이터 중에서, 버스 리셋 발생 시점에서 이니시에이터에 아직 전송하지 않은 전송 데이터에 관해서는, 파기하지 않고 유지해 둔다.

Description

데이터 전송 제어 장치, 정보 기억 매체 및 전자기기{Data transfer controller, information storage medium, and electronic apparatus}
최근, IEEE1394라고 일컬어지는 인터페이스 규격이 각광을 받고 있다. 이 IEEE1394는, 차세대의 멀티미디어에도 대응 가능한 고속 시리얼 버스 인터페이스를 규격화한 것이다. 상기 IEEE1394에 의하면, 동화상 등의 리얼타임성이 요구되는 데이터도 취급할 수 있다. 또한, IEEE1394의 버스에는, 프린터, 스캐너, CD-RW 드라이브, 하드디스크 드라이브 등의 컴퓨터의 주변기기뿐만 아니라, 비디오 카메라, VTR, TV 등의 가정용 전기 제품도 접속할 수 있다. 이 때문에, 전자기기의 디지탈화를 비약적으로 촉진할 수 있을 것으로 기대되고 있다.
그런데, IEEE1394에 있어서는, 버스에 전자기기가 새롭게 접속되거나, 버스로부터 전자기기가 떼어지거나 하여, 버스에 접속되는 노드가 증감하면, 소위 버스 리셋이 발생한다. 그리고 버스 리셋이 발생하면 노드의 토폴로지 정보가 클리어되고, 그 후, 토폴로지 정보가 자동적으로 재설정된다. 즉, 버스 리셋의 발생후, 트리 식별(루트 노드의 결정), 자기식별이 행하여지고, 그 후, 아이소크로너스 리소스 매니저 등의 관리 노드가 결정된다. 그리고 통상의 패킷 전송이 재개된다.
이와 같이 IEEE1394에서는, 버스 리셋 후에 토폴로지 정보가 자동적으로 재설정되기 때문에, 소위 포트 상태에서의 케이블의 빼고 꽂음(포트 플래그)이 가능하게 된다. 이로 인해, 일반 유저는, VTR 등의 통상의 가정용 전기 제품과 동일하게 되도록, 소위 홈 네트워크 시스템의 보급에 도움이 될 수 있다.
그러나, IEEE1394의 버스에 접속된 프린터나 스캐너 등의 디바이스에 있어서, 상기 버스 리셋의 발생이 요인이 되어 이하와 같은 문제가 생기는 것이 판명되었다.
즉, IEEE1394의 버스상에서 인쇄 데이터의 전송 중에 버스 리셋이 발생하면, 퍼스널 컴퓨터 등의 이니시에이터(initiator)는, 인쇄 데이터의 전송을 처음부터 다시한다. 따라서, 타겟인 프린터에 대하여, 인쇄 데이터의 일부분만이 2중으로 보내져 버려, 2중 인쇄 등의 오인쇄의 문제가 생긴다.
또한, 스캐너에서는, 일단 헤드가 작동하기 시작하면, 헤드를 원래로 되돌리어 다시 동일 데이터를 취득할 수 없다. 따라서, 버스 리셋의 발생 후, 이니시에이터가 데이터 전송을 처음부터 다시 하려고 해도, 데이터 전송을 계속할 수 없다고 하는 문제가 있다.
또한, 버스 리셋의 발생에 의해 생기는 불합리함을 해결하는 종래 기술로서, 예를 들면 특개평11-194902호 공보에 개시되어 있는 것이 있다. 이 종래 기술에서는, 버스 리셋이 발생하면, 데이터 처리를 홀드하고, 네트워크 구성이 재구축된 후에 데이터 처리를 재개한다.
그렇지만, 이 종래 기술에서는, 버스 리셋 발생 후에 전송 데이터를 간단히 재전송할 뿐이고, 재전송되는 전송 데이터가 버스 리셋 발생전의 전송 데이터의 연속인지의 여부의 판단에 관해서는 행하지 않는다. 따라서, 이 종래 기술에 의해서는 이중 인쇄의 문제를 해결할 수 없다.
본 발명은, 데이터 전송 제어 장치, 정보 기억 매체 및 전자기기에 관한 것으로, 특히, 버스에 접속되는 복수의 노드 사이에서 IEEE1394 등의 규격에 준한 데이터 전송을 행하기 위한 데이터 전송 제어 장치, 정보 기억 매체 및 전자기기에 관한 것이다.
도 1은, IEEE1394의 층 구조에 관해서 도시하는 도면.
도 2는, SBP-2에 관해서 설명하기 위한 도면.
도 3은, SBP-2의 데이터 전송 처리의 개략에 관해서 설명하기 위한 도면.
도 4는, 데이터를 이니시에이터로부터 타겟에 전송하는 경우의 커맨드 처리에 관해서 설명하기 위한 도면.
도 5는 데이터를 타겟으로부터 이니시에이터에 전송하는 경우의 커맨드 처리에 관해서 설명하기 위한 도면.
도 6a, 도 6b, 도 6c는 페이지 테이블에 관해서 설명하기 위한 도면.
도 7은, 본 실시예의 데이터 전송 제어 장치의 구성예를 도시하는 도면.
도 8은, 타겟측(펌웨어)의 처리의 개요를 도시하는 플로우챠트.
도 9는, 이니시에이터측(디바이스 드라이버)의 처리의 개요를 도시하는 플로우챠트.
도 10a, 도 10b, 도 10c는, 2중 인쇄의 문제에 관해서 설명하기 위한 도면.
도 11은, 데이터 전송 기간 중에 버스 리셋이 발생하고, 또한, 버스 리셋의 전후로 ORB의 내용이 동일인 경우에, 데이터 전송을 계속하여 재개하는 수법에 관해서 설명하기 위한 도면.
도 12는, ORB의 내용 비교에 관해서 설명하기 위한 도면.
도 13은, 계속 플래그에 관해서 설명하기 위한 도면.
도 14는, 데이터 전송을 재개하는 어드레스를 특정하기 위한 정보에 관해서 설명하기 위한 도면.
도 15는, 인쇄 커맨드를 포함하는 최초의 커맨드 블록 ORB가 올 때까지, 커맨드 비교 처리를 다음으로 넘기는 수법에 관해서 설명하기 위한 도면.
도 16은, 스테이터스의 라이트 중에 버스 리셋이 발생하고, ACK 미싱이 된경우에, 데드 상태로 이행하는 수법에 관해서 설명하기 위한 도면.
도 17은, 버스 리셋시에 이니시에이터에 아직 전송하지 않은 데이터를 파기하지 않고 유지해 두는 수법에 관해서 설명하기 위한 도면.
도 18은, 버스 리셋 발생시(리커넥트시)의 본 실시예의 상세한 처리예에 관해서 도시하는 플로우챠트.
도 19는, 버스 리셋 발생시(리커넥트시)의 본 실시예의 상세한 처리예에 관해서 도시하는 플로우챠트.
도 20은, 버스 리셋 발생시(리커넥트시)의 본 실시예의 상세한 처리예에 관해서 도시하는 플로우챠트.
도 21은, 통상시의 본 실시예의 상세한 처리예에 관해서 도시하는 플로우챠트.
도 22는, 통상시의 본 실시예의 상세한 처리예에 관해서 도시하는 플로우챠트.
도 23a 내지 도 23c는, 여러가지의 전자기기의 내부 블록도의 예를 도시하는 도면.
도 24a 내지 도 24c는, 여러가지 전자기기의 외관도의 예를 도시하는 도면.
[실시예]
이하, 본 발명의 적합한 실시예에 관해서 도면을 사용하여 상세히 설명한다.
1. IEEE1394
우선, IEEE1394에 관해서 간단히 설명한다.
1.1 개요
IEEE1394(IEEE1394-1995, P1394.a)에서는 100 내지 400Mbps의 고속의 데이터 전송이 가능하게 되어 있다(P1394.b에서는 800 내지 3200Mbps). 또한, 전송 속도가 다른 노드를 버스에 접속하는 것도 가능하다.
각 노드는 트리형상으로 접속되어 있고, 1개의 버스에 최대로 63개의 노드가 접속 가능하게 되어 있다. 또한, 버스 브리지를 이용하면 약 64000개의 노드를 접속하는 것도 허용된다.
IEEE1394에서는, 패킷의 전송 방식으로서 비동기 전송과 아이소크로너스 전송이 준비되어 있다. 여기서 비동기 전송은, 신뢰성이 요구되는 데이터의 전송에 적합한 전송 방식이고, 아이소크로너스 전송은, 리얼 타임성이 요구되는 동화상이나 음성 등의 데이터의 전송에 적합한 전송 방식이다.
1. 2 층 구조
IEEE1394의 층 구조(프로토콜 구성)을 도 1에 도시한다.
IEEE1394의 프로토콜은, 트랜젝션층, 링크층, 물리층에 의해 구성된다. 또한, 시리얼 버스 매니지먼트는, 트랜젝션층, 링크층, 물리층을 모니터하거나 제어하거나 하는 것으로, 노드의 제어나 버스의 리소스 관리를 위한 여러가지의 기능을 제공한다.
트랜젝션층은, 상위층에 트랜젝션 단위의 인터페이스(서비스)를 제공하고, 하층의 링크층이 제공하는 인터페이스를 통하여, 리드 트랜젝션, 라이트 트랜젝션, 록 트랜젝션 등의 트랜젝션을 실시한다.
여기서, 리드 트랜젝션에서는, 응답 노드로부터 요구 노드에 데이터가 전송된다. 한편, 라이트 트랜젝션에서는, 요구 노드로부터 응답 노드에 데이터가 전송된다. 또한, 록 트랜젝션에서는, 요구 노드로부터 응답 노드에 데이터가 전송되고, 응답 노드가 그 데이터에 처리를 실시하여 요구 노드에 회신한다.
링크층은, 어드레싱, 데이터 체크, 패킷 송수신을 위한 데이터 플레이밍, 아이소크로너스 전송을 위한 사이클 제어 등을 제공한다.
물리층은, 링크층에 의해 사용되는 로지컬 심볼의 전기 신호에의 변환이나, 버스의 조정이나, 버스의 물리적 인터페이스를 제공한다.
1.3 SBP-2
그런데, 도 2에 도시하는 바와 같이, IEEE1394의 트랜젝션층의 일부의 기능을 포함하는 상위의 프로토콜로서, SBP-2(Serial Bus Protoco1-2)라고 일컬어지는 프로토콜이 제안되어 있다.
여기서 SBP-2는, SCSI의 커맨드 셋을 IEEE1394의 프로토콜 상에서 이용 가능하게 하기 위해서 제안된 것이다. 이 SBP-2를 사용하면, 기존의 SCSI 규격의 전자기기에서 사용되고 있던 SCS1의 커맨드 셋에 최소한의 변경을 가하여, IEEE1394 규격의 전자기기에 사용할 수 있게 된다. 따라서, 전자기기의 설계나 개발을 용이화할 수 있다. 또한, SCSI의 커맨드뿐만이 아니라, 디바이스 고유의 커맨드도 캡슐화하여 이용할 수 있기 때문에, 대단히 범용성이 높다.
도 3에 도시하는 바와 같이 SBP-2에서는, 우선, 이니시에이터(예를 들면, 퍼스널 컴퓨터)에 의해 작성된 로그 인 ORB(0peration Request Block)를 사용하여 로그 인 처리가 행하여진다(스텝 T1). 다음에, 더미 ORB를 사용하여 페치 에이전트의 초기화가 행하여진다(스텝 T2). 그리고, 커맨드 블록 ORB(노멀 커맨드 ORB)를 사용하여 커맨드 처리가 행하여지고(스텝 T3), 마지막으로, 로그 아웃 ORB를 사용하여 로그 아웃 처리가 행하여진다(스텝 T4).
여기서, 스텝(T3)의 커맨드 처리에 있어서는, 도 4의 A1에 도시하는 바와 같이, 이니시에이터가 라이트 요구 패킷을 전송하여(라이트 요구 트랜젝션을 발행하여), 타겟의 도어 벨 레지스터를 링한다. 그러면, A2에 도시하는 바와 같이, 타겟이 리드 요구 패킷을 전송하고, 이니시에이터가 대응하는 리드 응답 패킷을 되돌려준다. 이로써, 이니시에이터가 작성한 ORB(커맨드 블록 ORB)이, 타겟의 데이터 버퍼에 페치된다. 그리고, 타겟은, 페치된 ORB에 포함되는 커맨드를 해석한다.
그리고, ORB에 포함되는 커맨드가 SCSI의 라이트 커맨드이었던 경우에는, A3에 도시하는 바와 같이, 타겟이 리드 요구 패킷을 이니시에이터에 전송하고, 이니시에이터가 대응하는 리드 응답 패킷을 되돌려 준다. 이로써, 이니시에이터의 데이터 버퍼에 격납되어 있는 데이터가 타겟으로 전송된다. 그리고, 예를 들면 타겟이 프린터이었던 경우에는, 전송된 데이터가 프린터 엔진에 인쇄된다.
한편, 0RB에 포함되는 커맨드가 SCSI의 리드 커맨드이었던 경우에는, 도 5의 B1에 도시하는 바와 같이, 타겟은, 일련의 라이트 요구 패킷을 이니시에이터에 전송한다. 이로써, 예를 들면 타겟이 스캐너이었던 경우에는, 스캐너 엔진에 의해 취득된 스캔 데이터가, 이니시에이터의 데이터 버퍼에 전송되어지게 된다.
상기 SBP-2에 의하면, 타겟은, 자신이 사정이 좋을 때에 요구 패킷을 전송하여(트랜젝션을 발행하여), 데이터를 송수신할 수 있다. 따라서, 이니시에이터와 타겟이 동기하여 작동할 필요가 없어지기 때문에, 데이터 전송 효율을 높일 수 있다.
또한, IEEE1394의 상위 프로토콜로서는, SBP-2 이외에도, FCP(Function Control Protocol)라고 일컬어지는 프로토콜 등도 제안되어 있다.
그런데, 타겟, 이니시에이터 사이에서 데이터 전송을 행하는 경우, 도 6a와 같이 이니시에이터(상대 노드)의 데이터 버퍼(기억 수단)에 페이지 테이블이 존재하는 경우와, 존재하지 않는 경우가 있다.
그리고, 페이지 테이블이 존재하는 경우에는, 도 6b에 도시하는 바와 같이, 이니시에이터가 작성한 ORB 중에는, 그 페이지 테이블의 어드레스나 엘러먼트 수가 포함된다. 그리고, 전송 데이터의 어드레스(판독 어드레스, 기록 어드레스)는, 이 페이지 테이블을 사용하여 간접 어드레스 지정된다.
한편, 페이지 테이블이 존재하지 않는 경우에는, 도 6c에 도시하는 바와 같이, ORB 중에 어드레스와 데이터 길이가 포함되고, 전송 데이터의 어드레스가 직접 어드레스 지정된다.
1.4 버스 리셋
IEEE1394에서는, 전원이 투입되거나, 도중에 디바이스의 뽑고 꽂음이 발생하면, 버스 리셋이 발생한다. 즉, 각 노드는, 포트의 전압 변화를 감시하고 있다. 그리고, 버스에 새로운 노드가 접속 등으로 인하여 포트의 전압에 변화가 생기면, 이 변화를 검지한 노드는, 버스상의 다른 노드에 대하여, 버스 리셋이 발생한 것을알린다. 또한, 각 노드의 물리층은, 버스 리셋이 발생한 것을 링크층에 전한다.
그리고, 이와 같이 버스 리셋이 발생하면, 노드 ID 등의 토폴로지 정보가 클리어된다. 그리고, 그 후, 토폴로지 정보가 자동적으로 재설정된다. 즉, 버스 리셋 후, 트리 식별, 자기 식별이 행하여진다. 그 후, 아이소크로너스 리소스 매니저, 사이클 마스터, 버스 매니저 등의 관리 노드가 결정된다. 그리고, 통상의 패킷 전송이 재개된다.
이와 같이 IEEE1394에서는, 버스 리셋 후에 토폴로지 정보가 자동적으로 재설정되기 때문에, 전자기기의 케이블을 자유롭게 빼고 꽂을 수 있게 되어, 소위 포트 플래그를 실현할 수 있다.
또한, 트랜젝션 도중에 버스 리셋이 발생한 경우에는, 그 트랜젝션은 캔슬된다. 그리고, 캔슬된 트랜젝션을 발행한 요구 노드는, 토폴로지 정보가 재설정된 후에, 요구 패킷을 재전송한다. 또한, 응답 노드는, 버스 리셋에 의해 캔슬된 트랜젝션의 응답 패킷을 요구 노드에 반송해서는 안된다.
2. 전체 구성
다음에, 본 실시예의 데이터 전송 제어 장치의 전체 구성예에 관해서 도 7을 참조하여 설명한다. 또한, 이하에서는, 이니시에이터와의 사이에서 데이터 전송을 행하는 타겟이 프린터인 경우에 관해서 예로 들어 설명하지만, 본 발명은 이것에 한정되지 않는다.
본 실시예의 데이터 전송 제어 장치(10)는, PHY 디바이스(12)(물리층의 디바이스), 링크 디바이스(14)(링크층의 디바이스), CPU(16)(프로세서), 데이터버퍼(18)(기억 수단), 펌웨어(20)(처리 수단)를 포함한다. 또한, PHY 디바이스(12), 링크 디바이스(14), CPU(16), 데이터 버퍼(18)는, 임의의 구성 요소이고, 본 실시예의 데이터 전송 제어 장치(10)는, 이들의 구성 요소를 모두 포함할 필요는 없다.
PHY 디바이스(12)는, 도 1의 물리층의 프로토콜을 하드웨어에 의해 실현하기 위한 회로이고, 링크 디바이스(14)에 의해 사용되는 로지컬 심볼을 전기 신호로 변환하는 기능을 갖는다.
링크 디바이스(14)는 도 1의 링크층의 프로토콜이나 트랜젝션층의 프로토콜 의 일부를 하드웨어에 의해 실현하기 위한 회로이고, 노드 사이에서의 패킷 전송을 위한 각종 서비스를 제공한다.
CPU(16)는, 장치 전체의 제어나 데이터 전송의 제어를 행하는 것이다.
데이터 버퍼(18)는, 전송 데이터(패킷)를 일시적으로 격납하는 버퍼이고, SRAM, SDRAM, 혹은 DRAM 등의 하드웨어에 의해 구성된다. 또한, 본 실시예에서는, 데이터 버퍼(18)는, 랜덤 액세스 가능한 패킷 기억 수단으로서 기능한다.
펌웨어(20)는 CPU(16)상에서 동작하는 여러가지의 처리 루틴(처리 모듈)을 포함하는 프로그램이고, 트랜젝션층의 프로토콜은, 상기 펌웨어(20)와, 하드웨어인 CPU(16) 등에 의해 실현된다.
또한, 이니시에이터인 퍼스널 컴퓨터(100)가 포함하는 디바이스 드라이버(102)는, 주변기기를 관리 제어하기 위한 여러가지의 처리 루틴을 포함하는 프로그램이다. 이 프로그램은, 정보 기억 매체(110)(FD, CD-ROM, DVD, ROM)를이용하여 퍼스널 컴퓨터(100)에 인스톨된다.
여기서, 디바이스 드라이버(102)의 프로그램은, 호스트 시스템이 갖는 정보 기억 매체(하드디스크, 자기테이프 등)로부터 인터넷 등의 네트워크를 통해 다운로드하고, 퍼스널 컴퓨터(100)에 인스톨하도록 하여도 된다. 이러한 호스트 시스템이 갖는 정보 기억 매체의 사용도 본 발명의 범위 내에 포함된다.
펌웨어(20)(F/W)는, 커뮤니케이션부(30)(COM), 매니지먼트부(40)(MNG), 프린트 태스크부(50)(PRT), 페치부(60)(FCH)를 포함한다.
여기서, 커뮤니케이션부(30)는, 링크 디바이스(14) 등의 하드웨어와의 사이의 인터페이스로서 기능하는 처리 모듈이다.
매니지먼트부(40)(매니지먼트 에이전트)는, 로그 인, 리커넥트, 로그 아웃, 리셋 등의 관리를 행하는 처리 모듈이다. 예를 들면 이니시에이터가 타겟으로 로그 인을 요구한 경우에는, 먼저, 이 매니지먼트부(40)가, 이 로그 인 요구를 수취하게 된다.
프린트 태스크부(50)는, 후단의 어플리케이션층(상층)인 프린터 엔진과의 사이의 데이터 전송 처리를 행하는 처리 모듈이다.
페치부(60)(페치에이전트, 커맨드 블록 에이전트)는, 커맨드 블록 ORB가 포함하는 커맨드를 실행하기 위한 처리 모듈이다. 페치부(60)는, 단일의 요구밖에 취급할 수 없는 매니지먼트부(40)와 달리, 이니시에이터로부터의 요구에 의해 자신이 페치한 ORB의 링크 리스트도 취급할 수 있다.
페치부(60)는, 판단부(62), 커맨드 기억부(64), 커맨드 비교부(66), 어드레스 기억부(68), 어드레스 비교부(70), 데이터 전송 재개부(72)를 포함한다.
여기서 판단부(62)는, 이니시에이터(상대 노드)와의 사이에서 인쇄 데이터를 전송하는 데이터 전송 기간 중에, 버스 리셋(광의적으로는, 노드의 토폴로지 정보를 클리어하는 리셋)이 발생했는지의 여부를 판단하는 처리를 행한다.
커맨드 기억부(64)는, 버스 리셋의 발생전에 이니시에이터로부터 전송된 ORB(커맨드 블록 ORB. 광의적으로는, 데이터 전송 오퍼레이션 요구를 위한 커맨드 패킷)의 내용을, 버스 리셋이 발생한 시점이나 리커넥트가 성공한 시점 등으로 기억하기 위한 처리를 행한다.
커맨드 비교부(66)는, 버스 리셋의 발생전에 이니시에이터로부터 전송된 ORB(커맨드 블록 ORB)의 내용(커맨드 기억부(64)에 의해 기억된 내용)과, 버스 리셋의 발생 후에 이니시에이터로부터 전송된 ORB의 내용을 비교하는 처리를 행한다.
어드레스 기억부(68)는, 이니시에이터와의 사이에서 전송되는 전송 데이터(인쇄 데이터)의 선두 어드레스(제 1 어드레스)를 기억하기 위한 처리를 행한다.
어드레스 비교부(70)는, 버스 리셋이 발생한 경우에, 어드레스 기억부(68)에 의해 기억된 선두 어드레스(제 1 어드레스)와, 버스 리셋 발생 후의 전송 데이터의 선두 어드레스(제 2 어드레스)를 비교하는 처리를 행한다.
데이터 전송 재개부(72)는, 버스 리셋이 데이터 전송 기간 중에 발생했다고 판단되고, 또한, ORB(커맨드 블록 ORB)의 내용이 일치했다고 판단된 경우에, 버스 리셋 발생 시점의 데이터 전송에 이어서(버스 리셋 발생 시점에서 전송한 데이터의 다음 데이터) 데이터 전송을 재개하는 처리를 행한다.
3. 처리의 개요
다음에, 본 실시예의 처리의 개요에 관해서 설명한다.
도 8은, 타겟측(펌웨어)의 처리의 개요에 관해서 도시하는 플로우챠트이다.
이니시에이터로부터 인쇄 요구가 있으면, 타겟은, 이니시에이터의 데이터 버퍼로부터 ORB를 리드한다(스텝 S1). 그리고, 페이지 테이블이 존재하는 경우에는, ORB에 포함되는 페이지 테이블 어드레스(도 6b 참조)에 의거하여, 이니시에이터의 데이터 버퍼로부터 페이지 테이블을 리드한다(스텝 S2). 다음에, 리드한 페이지 테이블에 의거하여 이니시에이터의 데이터 버퍼로부터 인쇄 데이터를 리드한다(스텝 S3). 그리고, 페이지 테이블에 의해 지정되는 인쇄 데이터를 모두 리드하면, 스테이터스를 라이트하여, 데이터 전송이 성공했는지의 여부 등의 스테이터스를 이니시에이터에 전한다(스텝 S4). 이상의 처리를, 모든 인쇄 데이터가 전송되기까지 반복한다(스텝 S5).
그리고, 본 실시예에서는, 인쇄 데이터의 전송 중(데이터 전송 기간)에 버스 리셋이 발생하면, 리커넥터 후의 최초의 인쇄 요구시에 이하의 처리를 행한다.
즉, 먼저, 버스 리셋 전의 ORB의 내용이나 인쇄 데이터의 선두 어드레스와, 버스 리셋 후의 ORB의 내용이나 인쇄 데이터의 선두 어드레스가 동일한지의 여부를 판단한다(스텝 S6). 그리고, 동일하다고 판단한 경우에는, 버스 리셋 발생 시점에 이어서 데이터 전송을 재개한다(스텝 S7). 한편, 동일하지 않다고 판단한 경우에는, 버스 리셋 후의 0RB를 신규의 0RB로서 처음부터 처리한다(스텝 S8).
도 9는, 이니시에이터측(디바이스 드라이버)의 처리의 개요에 관해서 도시하는 플로우챠트이다.
어플리케이션 프로그램으로부터의 인쇄 작업이 발생하면, 이니시에이터는, 인쇄를 위한 ORB나 페이지 테이블을 작성하여, 데이터 버퍼에 기록한다(스텝 S10). 다음에, 작성한 ORB를 리드하도록 타겟에 대하여 지시한다(스텝 S11. 도 4의 A1 참조).
다음에, 버스 리셋이 발생했는지의 여부를 판단하고(스텝 S12), 발생하지 않은 경우에는, 스테이터스가 타겟으로부터 보내왔는지의 여부를 판단한다(스텝 S13). 그리고, 보내 온 경우에는, 모든 인쇄 데이터가 전송되었는지의 여부를 판단하고(스텝 S14), 전송되지 않은 경우에는, 스텝(S10)으로 되돌아가고, 전송된 경우에는 인쇄 작업을 종료한다.
그리고, 본 실시예에서는 스텝(S12)에서 버스 리셋이 발생했다고 판단되면, 이니시에이터가, ORB, 페이지 테이블을 재작성하고(스텝 S15), 재작성한 ORB를 리드하도록 타겟에 대하여 지시한다(스텝 S11). 이 경우에 이니시에이터(디바이스 드라이버)는, 버스 리셋 발생 전의 ORB의 내용이나 인쇄 데이터의 선두 어드레스와, 버스 리셋 발생 후의 ORB의 내용이나 인쇄 데이터의 선두 어드레스가 동일하게 되도록, ORB를 재작성한다.
4. 본 실시예의 특징
그런데, 인쇄 데이터의 전송 중에 버스 리셋이 발생하면, 이하와 같은 문제가 생기는 것이 판명되었다.
예를 들면 도 10a에 도시하는 바와 같이, C1에 나타내는 위치(어드레스)까지 데이터를 전송한 지점에서, 버스 리셋이 발생한 것으로 한다. 이 경우에는, 버스 리셋 발생 시점에서 처리 중이었던 트랜젝션은 모두 캔슬된다. 따라서, 버스 리셋 전에 인쇄 데이터의 전송을 요구하고 있던 이니시에이터는, 도 10b에 도시하는 바와 같이, 버스 리셋 후에 인쇄를 위한 ORB를 다시 작성하여, 인쇄 데이터의 전송을 처음부터 다시 하도록 타겟에 지시한다. 이 때문에, 도 10b의 C2에 도시하는 위치로부터 데이터 전송이 재개되어 버리고, 인쇄 데이터의 일부분만이 이중으로 보내져 버린다. 이 결과, 도 10c에 도시하는 바와 같은 2중 인쇄의 문제가 발생한다.
이러한 문제를 해결하기 위해서, 본 실시예에서는, 이하에 설명하는 바와 같은 수법을 채용하고 있다.
즉, 본 실시예에서는, 우선, 도 11의 D1에 도시하는 바와 같이, 데이터 전송기간 동안(이니시에이터와의 사이에서 인쇄 데이터의 전송이 개시하고 나서 완료하기까지의 기간)에 버스 리셋이 발생했는지의 여부를 판단한다. 보다 구체적으로는, 버스 리셋의 발생 시점에서, D2로 나타내는 ORB(커맨드 블록 ORB)를 처리 중이고, 동시에, 그 ORB에 의한 데이터 전송이 이미 행하여지고 있고, D3으로 나타내는 데이터 전송 완료의 스테이터스를 이니시에이터에 전송하지 않고 있는 경우에, 버스 리셋이 데이터 전송 기간 중에 발생했다고 판단한다.
또한, 본 실시예에서는, 도 11의 D4에 도시하는 바와 같이, 버스 리셋의 발생후에 이니시에이터가 리커넥트에 성공하고, 새로운 ORB를 작성하여 전송 요구된 경우에, 버스 리셋 전의 ORB(제 1 커맨드 패킷)의 내용과 버스 리셋 후의 ORB(제 2커맨드 패킷)의 내용을 비교한다.
그리고, 데이터 전송 기간 중에 버스 리셋이 발생했다고 판단되고, 동시에, 버스 리셋 전의 ORB의 내용과 버스 리셋 후의 ORB의 내용이 동일 내용이라고 판단된 경우에는, D5에 도시하는 바와 같이, 버스 리셋 발생 시점의 데이터 전송에 이어서 데이터 전송을 재개한다(도 8의 스텝 S7 참조). 즉, 버스 리셋 발생 시점에서 이미 전송을 완료하고 있는 데이터의 다음 데이터로부터 데이터 전송을 재개한다.
한편, 데이터 전송 기간 중에 버스 리셋이 발생하지 않았던 경우나, 버스 리셋의 전과 후로 ORB의 내용이 동일하지 않은 경우에는, 버스 리셋 후의 ORB를 신규의 것으로서 처음부터 처리한다(도 8의 스텝 S8 참조).
이와 같이 함으로써, 도 11의 D6에 나타내는 부분의 전송 데이터가, 도 10b의 경우와 달리, 2중 전송되지 않게 된다. 따라서, 도 10c에 도시하는 바와 같은 오인쇄가 생기지 않게 된다. 또한, 2중 전송을 피할 수 있기 때문에, 전송 시간도 단축할 수 있다.
예를 들면, 데이터 전송 기간 이외의 기간에 버스 리셋이 발생한 경우에는, D5와 같이 버스 리셋 발생 시점에 이어서 데이터 전송을 재개하지 않더라도, 전송 데이터가 2중 전송되는 일이 없기 때문에, 문제는 없다. 또한, 데이터 전송 기간 이외의 기간에 버스 리셋이 발생한 경우에는, 데이터 전송의 재개 처리를 행하는 것보다도, ORB를 처음부터 처리한 쪽이, 처리도 간소하게 되어, 처리 부담도 가볍게 된다.
또한, 본 실시예와 다른 수법으로서, ORB의 내용의 비교 처리를 행하지 않고, 항상, 버스 리셋 발생 시점에 이어서 데이터 전송을 재개한다고 하는 수법도 생각된다.
그렇지만, 이 수법에 의하면, 예를 들면, 버스 리셋 후에 이니시에이터가 인쇄 데이터의 전송 처리를 캔슬하고, 버스 리셋 전과 전혀 다른 ORB를 작성한 경우에도, 도 11의 D5로부터 데이터 전송이 재개되어 버리는 불합리함이 생긴다.
이에 대해 본 실시예에서는, ORB의 내용이 버스 리셋 전후로 동일한 경우에는, 도 11의 D5로부터 데이터 전송이 재개되지만, 동일이 아닌 경우에는, 모두 신규의 ORB로서 처리되기 때문에, 상기와 같은 불합리함이 생기지 않는다.
또한, 본 실시예에서는, ORB의 내용 비교 시에 여러가지의 정보를 비교하고 있다. 예를 들면 도 12에 도시하는 바와 같이, 본 실시예에서는, 커맨드 블록 ORB가 포함하는 페이지 테이블 존재 플래그(P)나, 데이터 사이즈나, 커맨드 블록(커맨드 셋)필드 중의 오퍼레이션 코드(인쇄 커맨드, 리드 커맨드 등을 구별하는 코드(cord))나 데이터 길이를 비교하고 있다. 또한, ORB가, ORB를 식별하기 위한 식별 정보(예를 들면 순서 번호)를 포함하는 경우에는, 이 식별 정보도 비교하고 있다. 이러한 정보를 비교함으로써, 버스 리셋 전후의 ORB가 동일한지의 여부를 간소한 처리로 확실하게 판단할 수 있게 된다.
그런데, 본 실시예에서는, 도 13의 E1에 도시하는 바와 같이, 버스 리셋이 데이터 전송 기간 중에 발생했다고 판정을 한 경우에는, 데이터 전송이 계속하여 재개될 가능성이 있음을 나타내는 계속 플래그를 온에 세트하도록 하고 있다. 예를 들면, 버스 리셋의 발생 후, 리커넥트가 성공하였을 때 등에, 버스 리셋이 데이터 전송 기간 중에 발생했는지의 여부가 판단되고, 발생했다고 판단된 경우에 계속 플래그가 온에 세트된다.
그리고, 도 13의 E2에 도시하는 바와 같이, 0RB의 내용 비교는 이 계속 비트가 온인 것을 조건으로 행하여진다. 즉, 계속 플래그가 오프인 경우에는, ORB의 내용 비교는 행하여지지 않는다. 이로써, 필요없는 ORB의 내용 비교 처리가 행하여지는 것이 방지되어지게 되어, 펌웨어의 처리 부담을 경감화할 수 있다.
또한, 본 실시예에서는, 데이터 전송을 재개하는 어드레스(도 11의 D5)를 특정하기 위한 정보나, 버스 리셋 전의 ORB의 내용 등을, 버스 리셋 발생 시점이나 리커넥트가 성공한 시점(광의적으로는, 버스 리셋의 발생 후, 데이터 전송이 재개되기 까지의 동안)에서 기억하고 있다. 이러한 정보를 기억해 둠으로써, 버스 리셋 후에 이니시에이터로부터 ORB가 다시 전송되어 왔을 때에, 버스 리셋 발생 시점에 이어서 데이터 전송을 재개할 것인지의 여부의 판단을 용이하게 행할 수 있게 된다. 또한, 데이터 전송의 재개 처리도 간소화할 수 있게 된다.
또한, 데이터 전송을 재개하는 어드레스를 특정하기 위한 정보로서는, 구체적으로는 다음과 같은 정보를 생각할 수 있다.
예를 들면, 도 14에 도시하는 바와 같이, 버스 리셋 발생 시점에서, 페이지 테이블의 N 번째의 세그먼트 SECN이 지정하는 전송 데이터를 전송하고 있던 것으로한다. 이 경우에는, 데이터 전송을 재개하는 어드레스(F1로 나타내는 어드레스)를 특정하기 위한 정보로서는, 페이지 테이블의 선두 세그먼트 SEG1에 격납되는 어드레스(전송 데이터의 선두 어드레스)나, 세그먼트 SEGl 내지 SEG(N-1)에 의해 전송된 데이터의 사이즈 DS1나, 세그먼트 N의 세그먼트 번호나, 버스 리셋 발생 시점까지에 세그먼트 N에 의해 전송된 데이터의 사이즈 DS2 등을 생각할 수 있다.
또한, 본 실시예에서는, 버스 리셋 발생 후에 이니시에이터로부터 전송된 ORB 중에서, 최초에 전송된 인쇄 커맨드를 포함하는 0RB(커맨드 블록 ORB)를, 버스 리셋 전의 ORB의 비교 대상이 되는 ORB로서 채용하도록 하고 있다.
예를 들면, 도 15에 도시하는 바와 같이, 버스 리셋 후에, 인쇄 커맨드를 포함하는 커맨드 블록 ORB가 즉시 전송되어 오는 것으로 한정하지 않는다. 즉, 이니시에이터가, 인쇄 커맨드를 포함하는 커맨드 블록 ORB를 전송 요구하기 전에, 더미 ORB나 매니지먼트 ORB를 전송 요구하는 경우가 있다. 혹은, 프린터의 스테이터스 등을 조사하기 위해서 리드 커맨드를 포함하는 커맨드 블록 ORB를 전송 요구하는 경우도 있다.
본 실시예에서는 도 15의 G1에 도시하는 바와 같이, 더미 ORB 등이 전송되어 도, ORB의 내용 비교 처리를 행하지 않고, 인쇄 커맨드를 포함하는 커맨드 블록 ORB가 전송되었을 때에 비로서 ORB의 내용 비교 처리를 행한다. 즉, 인쇄 커맨드를 포함하는 최초의 커맨드 블록 ORB가 올 때까지, ORB의 내용 비교 처리의 실행을 다음으로 넘긴다(순차 이송으로 한다). 이로써, 필요없는 ORB의 내용 비교 처리가 행하여지는 것이 방지되어, 펌웨어의 처리 부담을 경감화할 수 있다.
그런데, 버스 리셋의 발생시기는 완전한 임의이다. 따라서, 예를 들면 도 16에 도시하는 바와 같이, 타겟이 데이터 전송 완료의 스테이터스를 이니시에이터에 전송하였지만, 버스 리셋의 발생이 요인이 되어 이니시에이터로부터 ACK(ACK complete)가 되돌아오지 않고, ACK 미싱이 되는 경우가 있다.
이러한 경우에는, 버스 리셋의 발생이 요인이 되어 이니시에이터가 스테이터스를 받아들일 수 없고, ACK 미싱이 된 제 1 케이스와, 이니시에이터는 스테이터스를 수취하고, ACK를 되돌렸지만, 버스 리셋의 발생이 요인이 되어 ACK 미싱이 된 제 2케이스를 고려할 수 있다.
그리고, 상기 제 1 케이스에서는, 이니시에이터는 데이터 전송이 비성공이었다고 생각하여, 버스 리셋 후에 동일의 ORB를 다시 작성하는 제 1 처리를 행한다. 한편, 상기 제 2 케이스에서는, 이니시에이터는 데이터 전송이 성공했다고 생각하여, 버스 리셋 후에 다음 ORB를 작성하는 제 2 처리를 행한다.
그렇지만, 타겟에는 ACK 미싱이었던 정보 밖에 전해지지 않기 때문에, 타겟은, 이니시에이터가 상기 제 1, 제 2 처리 중 어느 것을 행했는지를 알 수 없다. 따라서 이러한 경우에 버스 리셋 발생 시점에 이어서 데이터 전송을 개시하여 버리면, 잘 못된 데이터 전송이 행하여져 버릴 가능성이 있다.
그래서, 본 실시예에서는 도 16에 도시하는 바와 같이, 버스 리셋의 발생이 원인이 되어 이니시에이터로부터 어크놀리지먼트가 되돌아오지 않았던 경우에는, 데드 상태(데이터 전송 불가 상태)로 천이한다. 이와 같이 함으로써, 잘 못된 데이터 전송이 행하여지는 사태를 방지할 수 있다.
그런데, 이상에서는, 타겟이 프린터인 경우에 관해서 주로 설명하였지만, 타겟이 스캐너인 경우에는 이하와 같은 문제가 있다.
즉, 스캐너에서는, 일단 헤드가 작용하기 시작하면, 헤드를 원래로 되돌리어 다시 동일 데이터를 취득(scan)할 수 없다고 하는 문제가 있다.
그래서, 본 실시예에서는, 도 17에 도시하는 바와 같이, 스캐너 엔진(광의적으로는 상층의 디바이스)으로부터의 전송 데이터 중에서, 버스 리셋의 발생 시점에서 이니시에이터에 아직 전송하지 않은 전송 데이터에 관해서는, 파기하지 않고 유지하도록 하고 있다. 즉 도 17의 H1에 도시하는 바와 같이, 스캐너 엔진으로부터 받아들여 데이터 버퍼에 격납하였지만, IEEE1394의 버스를 통해 이니시에이터에 아직 전송하지 않은 데이터에 관해서는, 데이터 버퍼를 클리어하지 않도록 하여 파기하지 않고 유지해 둔다.
이와 같이하면, 버스 리셋 발생 후에 도 11에 도시하는 수법으로 버스 리셋 발생 시점에 이어서 데이터 전송을 재개한 경우에도, 버스 리셋 발생 전에 받아들인 화상 데이터가 소실되어 버리는 등의 불합리함을 방지할 수 있다.
5. 상세한 처리 예
다음에 본 실시예의 상세한 처리예에 관해서 도 18 내지 도 22의 플로우챠트를 참조하여 설명한다.
도 18 내지 도 20은, 버스 리셋 발생시(리커넥트시)의 처리의 상세예를 도시하는 플로우챠트이다.
버스 리셋이 발생하면, 타겟은, 우선, 이니시에이터가 로그 인하고 있는지의 여부를 판단하고(스텝 S20), 로그 인하고 있는 경우에는 IEEE1394의 버스상의 모든 전송 처리(트랜젝션)를 캔슬한다(스텝 S21). 한편, 로그 인하지 않은 경우에는,버스 리셋이 발생하여도 특별한 처리는 불필요하기 때문에, 아무것도 하지 않는다(스텝 S22).
다음에, 이미 버스 리셋 처리에 들어가 있는지의 여부를 판단한다(스텝 S 23). 이로써, 버스 리셋이 복수 발생한 경우에 그것에 대응하는 버스 리셋 처리가 불필요하게 복수회 반복되는 사태를 방지할 수 있다.
다음에, 버스 리셋 발생 시점의 ACK(어크놀리지먼트)의 상태를 기억해 둔다(스텝 S24). 이로써, 그 후에 발생하는 트랜젝션(예를 들면 리커넥트의 트랜젝션)에 의해, 버스 리셋 직후의 ACK의 내용이 지워져 버리는 사태를 방지할 수 있다.
다음에, IEEE1394의 버스상에서 전송 완료의 데이터의 사이즈(바이트수)를 기억한다(스텝 S25). 즉, 버스 리셋 발생 시점에서 처리 중이던 세그먼트에서의 전송 완료의 데이터의 사이즈(도 14의 DS2)를 기억한다. 그리고, 스텝(S23)의 판단을 위해, 버스 리셋 처리 중인 것을 나타내는 플래그를 온으로 한다(스텝 S26). 즉, 이 플래그가 온이 되면, 그 후에, 버스 리셋이 발생하더라도, 스텝(S24 내지 S26)의 처리는 행하여지지 않는다.
다음에, 이니시에이터로부터의 리커넥트 대기로 되고(스텝 S27), 이니시에이터에 의해 리커넥트되었는지의 여부를 판단한다(스텝 S28). 그리고, 리커넥트되지 않았던 경우에는, 로그 인 ORB의 리커넥트 필드에서 지정된 리커넥트 타임 아웃 시간이 경과했는지의 여부를 판단한다(스텝 S29). 그리고, 경과한 경우에는, 도 13에서 설명한 계속 플래그(데이터 전송이 계속하여 재개될 가능성이 있음을 나타내는 플래그)를 오프로 하여(스텝 S30), 로그 아웃 상태로 상태 천이한다(스텝 S31).
한편, 리커넥트 타임 아웃 시간 내에 리커넥트된 경우에는, 리커넥트한 이니시에이터가, 버스 리셋 전에 로그 인하고 있던 이니시에이터인지의 여부를 판단하고(스텝 S32), 버스 리셋 전과 다른 이니시에이터인 경우에는, 그 이니시에이터의 리커넥트를 거부하고, 리커넥트 대기로 되돌아간다.
버스 리셋 전과 동일 이니시에이터가 로그 인한 경우에는, 인쇄를 위한 커맨드 블록 ORB(인쇄 커맨드를 포함하는 ORB)를, 버스 리셋 발생 시점에서 처리 중이었는지의 여부를 판단한다(도 19의 스텝 S33). 그리고, 처리 중이 아니었던 경우에는, 계속 플래그를 오프로 하여(스텝 S36), 아이들 상태로 상태 천이한다(스텝 S37).
한편, 인쇄를 위한 커맨드 블록 ORB를 처리 중이었던 경우에는, 스테이터스의 라이트 중(스테이터스를 라이트하고 나서 ACK가 되돌아 오기까지의 기간)에 버스 리셋이 발생했는지의 여부를 판단한다(스텝 S34). 그리고, 스테이터스의 라이트 중에 버스 리셋이 발생한 경우에는, 도 18의 스텝(S24)에서 기억한 ACK의 정보에 의거하여, ACK 컴플리트인지의 여부를 판단한다(스텝 S35).
그리고, ACK 컴플리트인 경우에는, 계속 플래그를 오프로 하여(스텝 S36), 아이들 상태로 상태 천이한다(스텝 S37). 한편, ACK 컴플리트가 아닌 경우에는, ACK 미싱인지의 여부를 판단한다(스텝 S38). 그리고, ACK 미싱이 아니면 아무것도 하지 않고(스텝 S39), ACK 미싱인 경우에는, 계속 플래그를 오프로 하고(스텝 S40), 도 16에서 설명한 바와 같이 데드 상태(데이터 전송 불가 상태)로 상태 천이한다(스텝 S41).
스텝(S34)에서 버스 리셋의 발생이 스테이터스의 라이트 중이 아니라고 판단된 경우에는, 처리 중의 ORB의 전송(인쇄)데이터를 1바이트라도 후단의 프린터 엔진에 전송했는지의 여부를 판단한다(스텝 S42). 그리고, 1바이트도 전송하지 않았던 경우에는 계속 플래그를 오프로 하고(스텝 S43), 아이들 상태로 상태 천이 한다(스텝 S49).
한편, 1바이트라도 프린터 엔진에 전송하고 있던 경우에는, ORB의 내용(데이터 사이즈, 페이지 테이블 존재 플래그(P), 커맨드 블록)이나, 버스 리셋 발생 시점까지 전송된 데이터의 사이즈를 기억한다(스텝 S44).
이 데이터의 사이즈는, 버스 리셋 발생 시점에서 후단의 프린터 엔진에 이미 전송한 데이터의 바이트 수와, 버스 리셋 발생 시점에서 IEEE1394의 버스상에서의 데이터 전송은 이미 완료하고, 후단의 프린터 엔진에 전송 중 또는 이제부터 전송할 예정인 데이터의 바이트 수의 합계에 상당한다. 즉, 예를 들면, 프린터로 이미 인쇄한 데이터의 바이트 수와, 프린터로 현재 인쇄 중 또는 이제부터 인쇄 예정인 데이터의 바이트 수의 합계에 상당한다.
다음에, 페이지 테이블이 존재하는 지의 여부를 판단하고(스텝 S45), 존재하지 않는 경우에는, ORB의 데이터 스크립터의 내용을 기억한다(스텝 S46). 즉, 페이지 테이블이 존재하지 않는 경우에는, 직접 어드레스 지정의 경우의 전송 데이터의 어드레스 및 데이터 길이가 기억된다(도 6c 참조).
한편, 페이지 테이블이 존재하는 경우에는, 도 14에서 설명한 바와 같이, 페이지 테이블의 선두 세그먼트의 내용(어드레스, 데이터 길이)과, 버스 리셋 발생시점에서 처리 중인 세그먼트의 내용(어드레스, 데이터 길이) 및 세그먼트 번호를 기억한다(스텝 S47). 그리고, 도 13에서 설명한 계속 플래그를 온으로 하여(스텝 S48), 아이들 상태로 상태 천이한다(스텝 S49).
이와 같이 본 실시예에서는, 데이터 전송 기간 중에 버스 리셋이 발생하였다고 판단한 경우에(도 19의 스텝 S33, S34, 도 20의 스텝 S42), 계속 플래그가 온이 된다(스텝 S48).
도 21 및 도 22는, 통상시 처리의 상세 예를 도시하는 플로우챠트이다.
우선, 이니시에이터로부터 ORB의 리드가 지시되었는지의 여부(도어 벨 레지스터가 링되었는지의 여부)를 판단하고(스텝 S51), 지시되지 않았던 경우에는 아이들 상태에 머문다(스텝 S50). 한편, 지시된 경우에는, 이니시에이터가 작성한 ORB를 이니시에이터로부터 리드한다(스텝 S52). 그리고, ORB가 포함하는 테이블 존재 플래그(P)에 의거하여, 페이지 테이블이 존재하는지의 여부를 판단한다(스텝 S53). 그리고, 페이지 테이블이 존재하는 경우에는, 페이지 테이블의 세그먼트를 예를 들면 8 세그먼트씩 리드한다(스텝 S54).
다음에, ORB의 커맨드 블록에 있는 오퍼레이션 코드에 의거하여, 도 15에서설명한 바와 같이, 리드한 ORB가 인쇄를 위한 커맨드 블록 ORB인지의 여부를 판단한다(스텝 S55). 그리고, 인쇄를 위한 커맨드 블록 ORB이었던 경우에는, 스텝(S54)에서 리드한 8 세그먼트가, 페이지 테이블의 최초의 8 세그먼트(선두 세그먼트를 포함하는 8 세그먼트)인지의 여부를 판단하고(스텝 S56), 최초의 8 세그먼트이었던 경우에는, 도 22에 도시하는 커맨드·어드레스 비교 처리로 이행한다(스텝 S57).
스텝(S55)에서 인쇄를 위한 커맨드 블록 ORB가 아니라고 판단된 경우, 스텝(S56)에서 최초의 8 세그먼트가 아니라고 판단된 경우, 및, 스텝(S57)의 커맨드·어드레스 비교 처리가 종료한 경우에는, 데이터의 판독/기록을 행한다(스텝 S58). 그리고, 1 세그먼트 분의 데이터, 8 세그먼트 분의 데이터를 판독/기록하기 까지 반복한다(스텝 S59, S60).
다음에, 페이지 테이블의 모든 세그먼트를 판독/기록했는지의 여부를 판단하고(스텝 S61), 모든 세그먼트를 판독/기록하지 않은 경우에는, 페이지 테이블의 다음 8 세그먼트를 리드한다(스텝 S54). 한편, 페이지 테이블의 모든 세그먼트를 리드한 경우에는, 이니시에이터에 대하여 스테이터스를 라이트한다(스텝 S62). 그리고, 인쇄물의 인쇄를 위한 모든 ORB를 리드했는지의 여부를 판단하고(스텝 S63), 다음 ORB가 있는 경우에는 스텝(S52)으로 되돌아가고, 다음 ORB가 없는 경우에는 아이들 상태로 상태 천이한다(스텝 S50).
스텝(S53)에서 페이지 테이블이 존재하지 않는다고 판단한 경우에는, 리드한 ORB가 인쇄를 위한 커맨드 블록 ORB인지의 여부를 판단한다(스텝 S64). 그리고, 인쇄를 위한 커맨드 블록 ORB이었던 경우에는, 도 22에 도시하는 커맨드·어드레스비교 처리로 이행한다(스텝 S65).
한편, 인쇄를 위한 커맨드 블록 ORB가 아니라고 판단된 경우, 및 커맨드·어드레스 비교 처리가 종료한 경우에는, 데이터를 판독/기록하고(스텝 S66), 모든 데이터를 판독/기록할 때까지 반복한다(스텝 S67). 그리고, 모든 데이터를 판독/기록한 경우에는, 스텝(S62)으로 이행하고, 이니시에이터에 대하여 스테이터스를 라이트한다.
도 22의 커맨드·어드레스 비교 평가에 있어서는, 우선, 계속 플래그가 온인지의 여부를 판단한다(스텝 S70). 이 계속 플래그는, 도 20의 스텝(S48)에서 온으로 되는 플래그이다. 그리고, 계속 플래그가 오프인 경우에는 스텝(S76)으로 이행하고, 전송 데이터의 선두 어드레스(페이지 테이블의 선두 세그먼트의 어드레스)를 기억하고, 커맨드·어드레스 비교 처리를 종료한다.
계속 플래그가 온인 경우에는, 도 11 및 도 12에서 설명한 바와 같이, 리드한 ORB의 내용이 버스 리셋 전의 ORB의 내용과 동일한지의 여부를 판단한다(스텝 S 71). 이 경우에, 비교 대상이 되는 버스 리셋 전의 ORB의 내용은, 도 20의 스텝(S44)에서 기억되어 있다. 또한, 본 실시예에서는, 어드레스 비교(스텝 S72)에 앞서서, ORB의 내용 비교(스텝 S71)를 행하고 있다.
ORB의 내용이 버스 리셋전과 동일하였던 경우에는, 전송 데이터의 선두 어드레스가 버스 리셋전과 동일한지의 여부를 판단한다(스텝 S72). 그리고, 동일인 경우에는, 데이터 전송의 설정을 버스 리셋 발생전의 상태로 되돌린다(스텝 S73). 즉, 도 20의 스텝(S44)에서 기억한 버스 리셋 발생 시점까지의 전송 완료 데이터 사이즈나, 스텝(S47)에서 기억한 세그먼트의 내용이나 세그먼트 번호 등에 의거하여, 도 11의 D5로 도시하는 위치(버스 리셋 발생 시점의 계속)로부터 데이터 전송을 재개할 수 있도록, 데이터 전송의 설정을 버스 리셋전의 상태로 되돌린다. 그리고, 계속 플래그를 오프로 되돌린다(스텝 S74). 이 경우에, 도 17에서 설명한바와 같이, 버스 리셋 전에 이미 전송을 완료하고 있던 데이터가 소실하지 않도록, 타겟의 데이터 버퍼 위의 데이터를 클리어하지 않도록 한다.
또한, 스텝(S74) 이후에, 스텝(S76)과 같이 전송 데이터의 선두 어드레스를 기억해 두지 않은 것은, 버스 리셋 발생 시점에 이어서 데이터 전송을 재개하는 경우에는, 버스 리셋 발생 전에 기억해 둔 선두 어드레스를 그대로 사용할 수 있기 때문이다.
스텝(S71)에서 ORB의 내용이 버스 리셋 전과 동일하지 않다고 판단한 경우, 혹은 스텝(S72)에서 선두 어드레스가 버스 리셋전과 동일하지 않다고 판단한 경우에는, 데이터 전송의 재개 처리를 행하지 않고, 계속 플래그를 오프로 되돌림과 동시에 전송 데이터의 선두 어드레스를 기억해 두고(스텝 S75, S76), 즉, 이 경우에는, 리드한 ORB를 완전한 신규의 ORB로서 처리하게 된다.
또한, 스텝(S75)의 경우에는, 리드한 ORB를 처음부터 처리하게 되기 때문에, 스텝(S74)과 달리, 타겟의 데이터 버퍼의 데이터를 클리어한다.
6. 전자기기
다음에, 본 실시예의 데이터 전송 제어 장치를 포함하는 전자기기의 예에 관해서 설명한다.
예를 들면, 도 23a에 전자기기의 1개인 프린터의 내부 블록도를 도시하고, 도 24a에 그 외관도를 도시한다. CPU(microcomputer)(510)는 시스템 전체의 제어 등을 행한다. 조작부(511)는 프린터를 유저가 조작하기 위한 것이다. ROM(516)에는, 제어 프로그램, 폰트 등이 격납되고, RAM(518)은 CPU(510)의 워크 영역으로서기능한다. 표시 패널(519)은 프린터의 조작 상태를 유저에게 알리기 위한 것이다.
PHY 디바이스(502), 데이터 전송 제어 장치(500)를 통해, 퍼스널 컴퓨터 등의 상대 노드로부터 보내온 인자 데이터는, 버스(504)를 통해 인자 처리부(프린터 엔진)(512)에 직접 송출한다. 그리고, 인자 데이터는, 인자 처리부(512)에서 주어진 처리가 실시되고, 프린트 헤더 등으로 이루어지는 인자부(데이터를 출력하기 위한 장치)(514)에 의해 종이에 인자되어 출력된다.
도 23b에는 전자기기의 하나인 스캐너의 내부 블록도를 도시하고, 도 24b에는 그 외관도를 도시한다. CPU(520)는 시스템 전체의 제어 등을 행한다. 조작부(521)는 스캐너를 유저가 조작하기 위한 것이다. ROM(526)에는 제어 프로그램 등이 격납되고, RAM(528)은 CPU(520)의 워크 영역으로서 기능한다.
광원, 광전 변환기 등으로 이루어지는 화상 판독부(데이터를 받아들이기 위한 장치)(522)에 의해 원고의 화상이 판독되고, 판독된 화상의 데이터는 화상 처리부(스캐너 엔진)(524)에 의해 처리된다. 그리고, 처리 후의 화상 데이터가 버스(505)를 통해 데이터 전송 제어 장치(500)에 직접 보내여진다. 데이터 전송 제어 장치(500)는, 상기 화상 데이터에 헤더 등을 부가함으로써 패킷을 생성하고, PHY 디바이스(502)를 통해 퍼스널 컴퓨터 등의 상대 노드에 송신한다.
도 23c에 전자기기의 하나인 CD-RW 드라이브의 내부 블록도를 도시하고, 도 24c에 그 외관도를 도시한다. CPU(530)는 시스템 전체의 제어 등을 행한다. 조작부(531)는 CD-RW를 유저가 조작하기 위한 것이다. ROM(536)에는 제어 프로그램 등이 격납되고, RAM(538)은 CPU(530)의 워크 영역으로서 기능한다.
레이저, 모터, 광학 시스템 등으로 이루어지는 판독/기록부(데이터를 받아들이기 위한 장치 또는 데이터를 기억하기 위한 장치)(533)에 의해 CD-RW(532)로부터 판독된 데이터는, 신호 처리부(534)에 입력되고, 에러 정정 처리 등의 주어진 신호처리가 실시된다. 그리고, 신호 처리가 실시된 데이터가, 버스(506)를 통해 데이터 전송 제어 장치(500)에 직접 보내여진다. 데이터 전송 제어 장치(500)는, 이 데이터에 헤더 등을 부가함으로써 패킷을 생성하고, PHY 디바이스(502)를 통해 퍼스널 컴퓨터 등의 상대 노드에 송신한다.
한편, PHY 디바이스(502), 데이터 전송 제어 장치(500)를 통해, 상대 노드로부터 송출된 데이터는, 버스(506)를 통해 신호 처리부(534)에 직접 송출된다. 그리고, 신호 처리부(534)에 의해 이 데이터에 주어진 신호 처리가 실시되고, 판독 기록부(533)에 의해 CD-RW(532)에 기억된다.
또한, 도 23a 내지 도 23c에서, CPU(510, 520, 530) 이 외에, 데이터 전송 제어 장치(500)에서의 데이터 전송 제어를 위한 CPU를 별도로 설치하도록 하여도 된다.또한, 도 23a 내지 도 23c에서는 RAM(501)(데이터 버퍼에 상당)이 데이터 전송 제어 장치(500)의 외부에 설치되어 있지만, RAM(501)을 데이터 전송 제어 장치(500)에 내장시켜도 된다.
본 실시예의 데이터 전송 제어 장치를 전자기기에 사용하면, 버스에 새로운 전자기기가 접속되어 버스 리셋이 발생한 경우에도, 버스 리셋을 원인으로 하는 불합리함의 발생이 방지된다. 이로써, 전자기기의 오동작을 방지할 수 있다.
또한, 본 실시예의 데이터 전송 제어 장치를 전자기기에 사용하면, 고속의데이터 전송이 가능하게 된다. 따라서, 유저가 퍼스널 컴퓨터 등에 의해 프린트 아웃의 지시를 행한 경우에, 적은 타임래그로 인자가 완료하게 된다. 또한, 스캐너에의 화상 입력의 지시의 후에, 적은 타임래그로 판독 화상을 유저는 볼 수 있게 된다. 또한, CD-RW에서의 데이터의 판독이나, CD-RW에의 데이터의 기록을 고속으로 행할 수 있게 된다.
또한, 본 실시예의 데이터 전송 제어 장치를 전자기기기에 사용함으로써, CPU상에서 동작하는 펌웨어의 처리 부담이 경감되고, 염가의 CPU나 저속의 버스를 사용하는 것이 가능하게 된다. 또한, 데이터 전송 제어 장치의 저비용화, 소규모화를 꾀할 수 있기 때문에, 전자기기의 저비용화, 소규모화도 꾀할 수 있게 된다.
또한, 본 실시예의 데이터 전송 제어 장치를 통용할 수 있는 전자기기로서는, 상기 이외에도 예를 들면, 여러가지의 광디스크 드라이브(CD-ROM, DVD), 광자기 디스크 드라이브(MO), 하드디스크 드라이브, TV, VTR, 비디오 카메라, 오디오기기, 전화기, 프로젝터, 퍼스널 컴퓨터, 전자수첩, 워드프로세서 등 여러가지의 것을 생각할 수 있다.
또한, 본 발명은 본 실시예에 한정되지 않고, 본 발명의 요지의 범위내에서 여러가지의 변형 실시가 가능하다.
예를 들면, 본 발명의 데이터 전송 제어 장치의 구성은, 도 7에 도시하는 구성이 특히 바람직하지만, 이것에 한정되는 것이 아니다.
또한, 데이터 전송 기간 중에 버스 리셋이 발생했는지의 여부의 판단 수법, 커맨드의 비교 수법, 데이터 전송의 재개의 수법도, 본 실시예에서 설명한 수법이특히 바람직하지만, 이것에 한정되는 것이 아니다.
또한, 본 발명은 IEEE1394에 있어서의 버스 리셋에 특히 유용하지만, 이외에도, 적어도 노드의 토폴로지 정보를 클리어하는 리셋이면 적용할 수 있다.
또한, 본 발명은, IEEE1394 규격에서의 데이터 전송에 적용되는 것이 특히 바람직하지만, 이것에 한정되는 것이 아니다. 예를 들면 IEEE1394와 같은 사상에 의거하는 규격이나 IEEE1394를 발전시킨 규격에서의 데이터 전송에도 본 발명은 적용할 수 있다.
본 발명은, 이상과 같은 기술적 과제를 감안하여 이루어진 것으로, 그 목적으로 하는 점은, 노드의 토폴로지 정보를 클리어하는 리셋이 발생한 경우에 생기는 불합리함을 해소할 수 있는 데이터 전송 제어 장치, 정보 기억 매체 및 전자기기를 제공하는 것에 있다.
상기 과제를 해결하기 위해서 본 발명은, 버스에 접속되는 복수의 노드 사이에서의 데이터 전송을 위한 데이터 전송 제어 장치로서, 상대 노드와의 사이에서 데이터 전송이 개시하고 나서 완료하는 동안 까지의 데이터 전송 기간 중에, 노드의 토폴로지 정보를 클리어하는 리셋이 발생했는지의 여부를 판단하는 판단 수단과, 상기 리셋 발생 전에 상대 노드로부터 수신한 데이터 전송 오퍼레이션 요구를 위한 제 1 커맨드 패킷의 내용과, 상기 리셋의 발생 후에 상대 노드로부터 수신한 데이터 전송 오퍼레이션 요구를 위한 제 2 커맨드 패킷의 내용을 비교하는 커맨드 비교 수단과, 노드의 토폴로지 정보를 클리어하는 리셋이 상기 데이터 전송 기간 중에 발생했다고 판단되고, 동시에, 상기 제 1, 제 2 커맨드 패킷이 동일 내용이라고 판단된 경우에는, 리셋 발생 시점의 데이터 전송에 이어서 데이터 전송을 재개하는 재개 수단을 포함하는 것을 특징으로 한다.
본 발명에 의하면, 노드의 토폴로지 정보를 클리어하는 리셋이 데이터 전송기간 중에 발생했는지의 여부가 판단된다. 또한, 리셋 발생 전에 전송된 제 1 커맨드 패킷의 내용과, 리셋 발생 후에 전송된 제 2 커맨드 패킷의 내용이 비교된다. 그리고, 데이터 전송 기간 중에 리셋이 발생했다고 판단되고, 동시에, 제 1, 제 2 커맨드 패킷이 동일 내용이라고 판단되면, 리셋 발생 시점(예를 들면 리셋 발생 시점에서 전송을 완료한 데이터의 다음 데이터)에 이어서, 데이터 전송이 재개되어지게 된다.
한편, 예를 들면, 제 1, 제 2 커맨드 패킷이 동일 내용이 아니라고 판단된 경우 등에는, 리셋 발생 후의 제 2 커맨드 패킷은 처음부터 처리되어지게 된다.
따라서 본 발명에 의하면, 상대 노드가, 리셋 발생 후에 리셋 발생 전과 동일 내용의 커맨드 패킷을 전송 요구해 온 경우에는, 리셋 발생 시점에 이어서 데이터 전송을 재개할 수 있게 된다. 따라서, 예를 들면 데이터 전송 제어 장치의 상층의 디바이스에 데이터가 중복하여 전송되어버려, 상층의 디바이스가 오동작하는 등의 문제를 해소할 수 있다.
또한, 상기 판단 수단은, 노드의 토폴로지 정보를 클리어하는 리셋의 발생시점에서 데이터 전송 오퍼레이션 요구를 위한 상기 제 1 커맨드 패킷을 처리중이고또한, 상기 제 1 커맨드 패킷에 의한 데이터 전송이 이미 행하여져 있어 데이터 전송 완료의 스테이터스를 상대 노드에 송신하지 않은 경우에, 상기 리셋이 상기 데이터 전송 기간 중에 발생했다고 판단하는 것이 바람직하다.
또한, 본 발명은, 상기 판단 수단이, 노드의 토폴로지 정보를 클리어하는 리셋이 데이터 전송 기간 중에 발생했다고 판단한 경우에, 데이터 전송이 계속하여 재개될 가능성이 있음을 나타내는 계속 플래그를 온으로 설정하는 것을 특징으로 한다. 이와 같이 하면, 계속 플래그가 오프인 경우에는, 커맨드 패킷의 비교 처리가 행하여지지 않도록 할 수 있다. 따라서, 필요없는 커맨드 패킷의 내용 비교 처리가 행하여지지 않게 되어, 처리 부담의 경감화를 도모할 수 있다.
또한, 본 발명은, 데이터 전송을 재개하는 어드레스를 특정하기 위한 정보와, 데이터 전송 오퍼레이션 요구를 위한 상기 제 1 커맨드 패킷의 내용을, 상기 리셋의 발생 후, 데이터 전송이 재개되는 동안까지 기억하는 커맨드 기억 수단을 포함하는 것을 특징으로 한다. 이러한 정보를 기억하여 두면, 데이터 전송의 재개처리를 간소한 처리로 실현할 수 있게 된다.
또한, 본 발명은, 상기 커맨드 비교 수단이, 노드의 토폴로지 정보를 클리어하는 리셋의 발생 후에 상대 노드로부터 수신한 커맨드 패킷 중에서 최초에 수신한 데이터 전송 오퍼레이션 요구를 위한 커맨드 패킷을, 상기 제 1 커맨드 패킷의 비교 대상이 되는 상기 제 2 커맨드 패킷으로서 채용하는 것을 특징으로 한다. 이와 같이 하면, 최초의 데이터 전송 오퍼레이션 요구를 위한 커맨드 패킷이 전송되어 올 때까지, 커맨드 패킷의 내용 비교 처리가 실행되는 것이, 다음으로 넘어가게 된다. 이로써, 필요없는 커맨드 패킷의 내용 비교 처리가 행하여지는 것을 방지할 수 있어, 처리 부담의 경감화를 꾀할 수 있다.
또한, 본 발명은, 데이터 전송 완료의 스테이터스를 상대 노드에 송신하였지만, 노드의 토폴로지 정보를 클리어하는 리셋의 발생이 원인이 되어 상대 노드로부터 어크놀리지먼트가 되돌아오지 않았던 경우에, 데이터 전송 불가 상태로 천이할 수 있는 것을 특징으로 한다. 이와 같이, 상대 노드로부터 어크놀리지먼트가 되돌아오지 않았던 경우에는, 상대 노드가 스테이터스를 받아들였는지의 여부가 불명하게 된다. 따라서, 이러한 경우에 리셋 발생 시점에 이어서 데이터 전송을 개시하여 버리면, 잘못된 데이터 전송이 행하여져 버릴 가능성이 있다. 본 발명에 의하면, 노드의 토폴로지 정보를 클리어하는 리셋이 요인이 되어 상대 노드로부터 어크놀리지먼트가 되돌아오지 않았던 경우에는, 데이터 전송 불가 상태로 상태 천이하기 위해서, 이러한 잘못된 데이터 전송이 행하여지는 사태를 방지할 수 있다.
또한, 본 발명은, 상층의 디바이스로부터 수신한 전송 데이터 중에서, 노드의 토폴로지 정보를 클리어하는 리셋의 발생 시점에서 상대 노드로 아직 전송하지 않은 전송 데이터에 관해서는, 파기하지 않고 유지해 두는 것을 특징으로 한다. 이와 같이 하면, 스캐너 등에 의해 읽어들인 데이터가, 리셋의 발생에 의해 소실되어 버리는 등의 불합리함을 방지할 수 있다.
또한, 본 발명에서는, 상기 리셋이, IEEEE1394의 규격에서 정의되는 버스 리셋인 것이 바람직하다.
또한, 본 발명은, 상기 중 어느 하나의 데이터 전송 제어 장치와의 사이에서의 데이터 전송을 제어하기 위한 프로그램을 포함하는 정보 기억 매체로서, 노드의 토폴로지 정보를 클리어하는 리셋이 데이터 전송 기간 중에 발생한 경우에는, 상기 리셋의 발생전에 수신한 데이터 전송 오퍼레이션 요구를 위한 제 1 커맨드 패킷과동일 내용의 제 2 커맨드 패킷을 작성하고, 데이터 전송 제어 장치에 전송 제어하기 위한 프로그램을 포함하는 것을 특징으로 한다. 이와 같이 하면, 잘못된 데이터 전송 재개 처리가 행하여져 버리는 사태를 방지할 수 있고, 리셋의 발생이 요인이 되는 불합리함의 발생을 방지할 수 있다.
또한, 본 발명에 따른 전자기기는, 상기 중 어느 하나의 데이터 전송 제어 장치와, 상기 데이터 전송 제어 장치 및 버스를 통해 상대 노드로부터 수신한 데이터에 주어진 처리를 실시하는 장치와, 처리가 실시된 데이터를 출력 또는 기억하기 위한 장치를 포함하는 것을 특징으로 한다. 또한, 본 발명에 따른 전자기기는, 상기 중 어느 하나의 데이터 전송 제어 장치와, 상기 데이터 전송 제어 장치 및 버스를 통해 상대 노드에 송신하는 데이터에 주어진 처리를 실시하는 장치와, 처리가 실시되는 데이터를 받아들이기 위한 장치를 포함하는 것을 특징으로 한다.
본 발명에 의하면, 노드의 토폴로지 정보를 클리어하는 리셋의 발생에 의해 시스템에 불합리함이 생기는 사태를 방지할 수 있고, 전자기기가 오동작하는 것을 방지할 수 있다. 또한, 데이터 전송의 고속화를 꾀할 수 있고, 전자기기의 저비용화, 전자기기의 처리의 고속화 등도 꾀할 수 있다.

Claims (11)

  1. 버스에 접속되는 복수의 노드 사이에서의 데이터 전송을 위한 데이터 전송 제어 장치로서,
    상대 노드와의 사이에서 데이터 전송이 개시하고 나서 완료하기까지의 동안의 데이터 전송 기간 중에, 노드의 토폴로지 정보를 클리어하는 리셋이 발생했는지의 여부를 판단하는 판단 수단과,
    해당 리셋의 발생 전에 상대 노드로부터 수신한 데이터 전송 오퍼레이션 요구를 위한 제 1 커맨드 패킷의 내용과, 해당 리셋의 발생 후에 상대 노드로부터 수신한 데이터 전송 오퍼레이션 요구를 위한 제 2 커맨드 패킷의 내용을 비교하는 커맨드 비교 수단과,
    노드의 토폴로지 정보를 클리어하는 리셋이 상기 데이터 전송 기간 중에 발생했다고 판단되고, 또한, 상기 제 1, 제 2 커맨드 패킷이 동일 내용이라고 판단된 경우에는, 리셋 발생 시점의 데이터 전송에 이어서 데이터 전송을 재개하는 재개 수단을 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  2. 제 1 항에 있어서,
    상기 판단 수단이,
    노드의 토폴로지 정보를 클리어하는 리셋의 발생 시점에서 데이터 전송 오퍼레이션 요구를 위한 상기 제 1 커맨드 패킷을 처리 중이고, 또한, 상기 제 1 커맨드 패킷에 의한 데이터 전송이 이미 행하여져 있고 데이터 전송 완료의 스테이터스를 상대 노드에 송신하지 않은 경우에, 해당 리셋이 상기 데이터 전송 기간 중에 발생하였다고 판단하는 것을 특징으로 하는 데이터 전송 제어 장치.
  3. 제 1 항에 있어서,
    상기 판단 수단이,
    노드의 토폴로지 정보를 클리어하는 리셋이 데이터 전송 기간 중에 발생했다고 판단한 경우에, 데이터 전송이 계속하여 재개될 가능성이 있음을 나타내는 계속 플래그를 온에 세트하는 것을 특징으로 하는 데이터 전송 제어 장치.
  4. 제 1 항에 있어서,
    데이터 전송을 재개하는 어드레스를 특정하기 위한 정보와, 데이터 전송 오퍼레이션 요구를 위한 상기 제 1 커맨드 패킷의 내용을, 해당 리셋의 발생 후, 데이터 전송이 재개되기까지의 사이에 기억하는 커맨드 기억 수단을 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  5. 제 1 항에 있어서,
    상기 커맨드 비교 수단이,
    노드의 토폴로지 정보를 클리어하는 리셋의 발생 후에 상대 노드로부터 수신한 커맨드 패킷 중에서 최초에 수신한 데이터 전송 오퍼레이션 요구를 위한 커맨드 패킷을, 상기 제 1 커맨드 패킷의 비교 대상이 되는 상기 제 2 커맨드 패킷으로서 채용하는 것을 특징으로 하는 데이터 전송 제어 장치.
  6. 제 1 항에 있어서,
    데이터 전송 완료의 스테이터스를 상대 노드에 송신하였지만, 노드의 토폴로지 정보를 클리어하는 리셋의 발생이 요인이 되어 상대 노드로부터 어크놀리지먼트가 돌아오지 않은 경우에, 데이터 전송 불가 상태로 상태 천이하는 것을 특징으로 하는 데이터 전송 제어 장치.
  7. 제 1 항에 있어서,
    상층의 디바이스로부터 수신한 전송 데이터 중에서, 노드의 토폴로지 정보를 클리어하는 리셋의 발생 시점에서 상대 노드로 아직 전송하지 않는 전송 데이터에 대해서는, 파기하지 않고 유지해 두는 것을 특징으로 하는 데이터 전송 제어 장치.
  8. 제 1 항에 있어서,
    상기 리셋이, IEEE1394의 규격에서 정의되는 버스 리셋인 것을 특징으로 하는 데이터 전송 제어 장치.
  9. 제 1 항 내지 제 8 항 중 어느 한 항의 데이터 전송 제어 장치와의 사이에서의 데이터 전송을 제어하기 위한 프로그램을 포함하는, 컴퓨터 사용 가능한 정보 기억 매체로서,
    노드의 토폴로지 정보를 클리어하는 리셋이 데이터 전송 기간 중에 발생한 경우에는, 해당 리셋의 발생 전에 수신한 데이터 전송 오퍼레이션 요구를 위한 제 1 커맨드 패킷과 동일 내용의 제 2 커맨드 패킷을 작성하고, 데이터 전송 제어 장치에 전송 요구하기 위한 프로그램을 포함하는 것을 특징으로 하는 정보 기억 매체.
  10. 제 1 항 내지 제 8 항 중 어느 한 항의 데이터 전송 제어 장치와,
    상기 데이터 전송 제어 장치 및 버스를 통해 상대 노드로부터 수신한 데이터에 주어진 처리를 실시하는 장치와,
    처리가 실시된 데이터를 출력 또는 기억하기 위한 장치를 포함하는 것을 특징으로 하는 전자기기.
  11. 제 1 항 내지 제 8 항 중 어느 한 항의 데이터 전송 제어 장치와,
    상기 데이터 전송 제어 장치 및 버스를 통해 상대 노드에 전송하는 데이터에 주어진 처리를 실시하는 장치와,
    처리가 실시되는 데이터를 받아들이기 위한 장치를 포함하는 것을 특징으로 하는 전자기기.
KR10-2001-7010461A 1999-12-20 2000-12-19 데이터 전송 제어 장치, 정보 기억 매체 및 전자기기 KR100431009B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP36110399A JP3598923B2 (ja) 1999-12-20 1999-12-20 データ転送制御装置、情報記憶媒体及び電子機器
JPJP-P-1999-00361103 1999-12-20

Publications (2)

Publication Number Publication Date
KR20010102221A KR20010102221A (ko) 2001-11-15
KR100431009B1 true KR100431009B1 (ko) 2004-05-12

Family

ID=18472218

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-7010461A KR100431009B1 (ko) 1999-12-20 2000-12-19 데이터 전송 제어 장치, 정보 기억 매체 및 전자기기

Country Status (6)

Country Link
US (1) US6904022B2 (ko)
JP (1) JP3598923B2 (ko)
KR (1) KR100431009B1 (ko)
CN (1) CN1179521C (ko)
TW (1) TW508497B (ko)
WO (1) WO2001047195A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001345827A (ja) * 2000-06-02 2001-12-14 Minolta Co Ltd インターフェース装置、これを有するノード、インターフェースシステム、バスリセットの制御方法およびバスリセットの制御プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2002318777A (ja) * 2001-04-19 2002-10-31 Matsushita Electric Ind Co Ltd 高速シリアルインターフェース用のコマンド発行装置
JP2004070570A (ja) * 2002-08-05 2004-03-04 Seiko Epson Corp データ転送制御システム、電子機器、プログラム及びデータ転送制御方法
KR100964657B1 (ko) * 2002-12-07 2010-06-21 엘지전자 주식회사 홈 네트워크 시스템의 데이터 다운로드 방법
JP3599053B2 (ja) 2003-02-25 2004-12-08 セイコーエプソン株式会社 データ転送制御システム、電子機器、及びデータ転送制御方法
JP3649226B2 (ja) * 2003-05-20 2005-05-18 セイコーエプソン株式会社 データ転送制御装置、電子機器及びデータ転送制御方法
WO2005031464A1 (ja) * 2003-09-25 2005-04-07 Tokyo Ohka Kogyo Co., Ltd. 低加速電子線用ポジ型レジスト組成物、レジスト積層体およびパターン形成方法
JP2005115545A (ja) 2003-10-06 2005-04-28 Seiko Epson Corp データ転送制御システム、電子機器、プログラム及びデータ転送制御方法
CN1304974C (zh) * 2004-02-10 2007-03-14 中国科学院计算技术研究所 基于互联网接口的智能磁盘设备新型控制方法
CN102216993A (zh) * 2008-09-09 2011-10-12 维尔基逻辑公司 存储器控制器
CN103513733B (zh) * 2013-10-12 2018-05-29 丁贤根 一种用于pcie电源可靠复位的方法
CN111464419B (zh) * 2020-04-13 2021-08-27 中国人民解放军国防科技大学 一种基于总线网络通信的数据传输控制方法
EP3958136A1 (en) * 2020-08-17 2022-02-23 Nokia Technologies Oy Dynamically reprogrammable topologically unique integrated circuit identification

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10322373A (ja) * 1997-05-16 1998-12-04 Canon Inc データ転送装置、データ転送システムおよびその方法、画像処理装置、並びに、記録媒体
JPH11194902A (ja) * 1998-01-07 1999-07-21 Canon Inc 画像処理装置およびその方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0859324B1 (en) 1997-02-14 2007-01-03 Canon Kabushiki Kaisha Data transmission apparatus, system and method, and image processing apparatus
JPH10257080A (ja) * 1997-03-10 1998-09-25 Pioneer Electron Corp データ転送方法及び装置
US6160796A (en) * 1998-01-06 2000-12-12 Sony Corporation Of Japan Method and system for updating device identification and status information after a local bus reset within a home audio/video network
JP3277874B2 (ja) * 1998-01-29 2002-04-22 日本電気株式会社 Ieee1394ブリッジ
JP3814407B2 (ja) 1998-03-02 2006-08-30 キヤノン株式会社 データ通信システム、データ通信装置及びデータ通信方法
JPH11261608A (ja) 1998-03-09 1999-09-24 Canon Inc データ通信システム、データ通信装置、データ通信方法及び記憶媒体
JP4428750B2 (ja) 1998-03-12 2010-03-10 キヤノン株式会社 データ通信システム
JP2001086132A (ja) 1999-09-14 2001-03-30 Canon Inc 通信システム、印刷システム、及び通信方法、印刷制御方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10322373A (ja) * 1997-05-16 1998-12-04 Canon Inc データ転送装置、データ転送システムおよびその方法、画像処理装置、並びに、記録媒体
JPH11194902A (ja) * 1998-01-07 1999-07-21 Canon Inc 画像処理装置およびその方法

Also Published As

Publication number Publication date
KR20010102221A (ko) 2001-11-15
JP2001177537A (ja) 2001-06-29
US20010042141A1 (en) 2001-11-15
JP3598923B2 (ja) 2004-12-08
CN1348648A (zh) 2002-05-08
TW508497B (en) 2002-11-01
CN1179521C (zh) 2004-12-08
WO2001047195A1 (en) 2001-06-28
US6904022B2 (en) 2005-06-07

Similar Documents

Publication Publication Date Title
KR100381646B1 (ko) 데이터 전송 제어 장치 및 전자 기기
KR100431009B1 (ko) 데이터 전송 제어 장치, 정보 기억 매체 및 전자기기
US7430618B2 (en) Data transfer control device and electronic equipment
JP3780776B2 (ja) データ転送制御装置及び電子機器
KR100407095B1 (ko) 데이터 통신 시스템 및 데이터 통신 방법
KR20010024815A (ko) 데이터 전송 제어 장치 및 전자기기
US6937355B1 (en) Data communications apparatus for resuming data transfer after interruption
EP1033658B1 (en) Communication apparatus with means for allocating alternate designation information to each function unit, and communication system with two such communication apparatus
US6978327B1 (en) Data transfer control device and electronic equipment for performing data
JP3598922B2 (ja) データ転送制御装置、情報記憶媒体及び電子機器
KR100381645B1 (ko) 데이터 전송 제어 장치 및 전자기기
JP2000134231A (ja) データ転送制御装置及び電子機器
JP3598924B2 (ja) データ転送制御装置、情報記憶媒体及び電子機器
JP3599053B2 (ja) データ転送制御システム、電子機器、及びデータ転送制御方法
KR100464469B1 (ko) 데이터 전송 제어 장치 및 전자기기
JP3624767B2 (ja) データ転送制御装置、情報記憶媒体及び電子機器
JP4428750B2 (ja) データ通信システム
JP3606145B2 (ja) データ転送制御装置及び電子機器
JP2000032010A (ja) デ―タ通信システム、デ―タ通信方法、デ―タ通信装置、デジタルインタフェ―ス及び記憶媒体

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20090424

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee