|
INtime Top
INtime
technical FAQ
INtime 제품의 기술적인 FAQ
관련 정보
1.인스톨시의 트러블
1-1 인스톨 할 수 없습니다
인스톨시의 에러의 상당수는, INtime을 사용할 수 있는 HAL이 아닌 것을 검출했을 경우에
발생합니다. 현재 INtime 버젼 2.23이후에서는 유니프로세서(1CPU) 구성인 모든 HAL로 동작이 가능해졌습니다. 그 이전의
버젼을 사용하시는 경우, 서포트되는 HAL로 바꾸어 넣을 필요가 있습니다.
2.커널 개시시에 있어서의 트러블
2-1 커널 서비스가 개시되지 않습니다
이하를 확인해 주세요.
RT메모리 설정 사용하는 Windows 환경에 따라서는, INtimeConfiguration으로 지정한 INtime용 메모리를
디폴트로부터 증설 설정했 을 경우에, 연속 메모리로서 확보할 수 없게 될 가능성이 있습니다. 이것은 Windows 셋업 후에 인스톨 된
어플리케이션이나 디바이스 드라이버가 영향을 주고 있는 일이 있습니다. 또 시스템의 실장 메모리를 늘리는 것으로 연속 메모리로서 확보할 수 있을
가능성을 높일 수 있습니다.
수복 셋업 INtime2.23 버젼의 MSI 인스톨러는 인스톨 한 INtime의 파일이나 레지스트리의 파손을 체크하고 있습니다만,
이 기능의 오동작에 의해서 적절히 수복되지 않는 경우가 있습니다. 기존의
문제/40를 참조하십시오.
특이한 APIC 플랫폼 INtime2.23 버젼 이후에 서포트된 APIC 플랫폼은, 아직 약간의 기종 의존의 차이가 있습니다. 이
때문에 kernel 서비스의 개시를 할 수 없는 경우도 생각할 수 있습니다. INpatch프로그램을
실시해 기종 의존의 문제가 아닌 것을 확인해 주세요.
INtime3.0으로 라이센스 INtime3.0에서는 유효한 라이센스(SDK의 경우 USB 하드웨어키, 런타임의 경우 액티베이션이
끝나고 있는 것)가 필요합니다. 이것을 확인할 수 없는 경우 Windows 이벤트 로그에는 라이센스에 관련되는 문제가 있는 것을 기록해 개시할
수 없습니다.
INtime의 버젼 다운 후 INtime3.0을 언인스톨한 후 낡은 INtime 버젼을 재차 인스톨 했을 때에, 이러한 증상이
발생하는 것이 분명합니다. 기존의
문제/54를 참조하십시오.
2-2 커널 서비스를 개시하면 재기동, 프리즈, 블루스 클린을 일으키는 경우
INtime2.23 버젼과 그 이전에 있고, WindowsXP SP2의 환경에서 INtime Kernel
서비스를 개시하면 재기동해 버리는 경우가 확인되고 있습니다만 이것은 SP2에 의해서 새롭게 서포트된 기능이 INtime의 동작에 영향을 주고
있기 때문입니다. 대처 방법에 대해서는 이하의 기사를 참조하십시오.
3.INtime의 컨피그레이션에 관한 질문
3-1 INtime 환경의 메모 리사이즈는 가변입니까?
INtime으로 사용할 수 있는 메모리(르트프로세스메모리풀사이즈)는 가변입니다. 유틸리티
INtime Configu ration에 의해서 Windows 메모리와 INtime 메모리의 배분을 변경할 수 있습니다.
다만 RT용의
메모리는 연속 메모리로서 확보하지 않으면 안됩니다, INtimeConfiguration는 Windows가 동작 가능한 한의 용량 확보와 확실히
연속 메모리로서 확보할 수 있을 상한을, 시스템 실장 메모리를 바탕으로 해 판별하고 있습니다.
|
실장메모리
|
설정가능상한
|
|
30MB미만
|
8MB
|
|
30MB~38MB
|
12MB
|
|
38MB~46MB
|
20MB
|
|
46MB~62MB
|
24MB
|
|
62MB~126MB
|
32MB
|
|
126MB~254MB
|
64MB
|
|
254MB이상
|
112MB
|
이 설정 이상의 메모리를 RT용으로 확보하려면 INtime에
대용량 메모리를 할당하는 설정을 참조해 주세요
3-2 어플리케이션으로 큰 메모리 영역을 사용하려면?
INtime의 메모리 공간은 실장되고 있는 물리 메모리를 Windows와 배분해 사용되게 됩니다.통상은
부속되는INtimeConfiguration 유틸리티에 의해서 이 메모리 배분을 조정할 수 있습니다. 이
유틸리티로 설정할 수 있는 이상이 큰 메모리 공간을 필요로 하고 있는 경우, INtime2.23 버젼에서는, Windows 시스템 파일을
편집하는 것에 의해서, 확실히 거대한 메모리스페이스를 확보할 수 있어 그 양은 이론상''4 GB - Windows의 동작에 필요한 최저량 -
ROM/BIOS 에리어량)입니다.
3-4 RSI 드라이버의 인스톨 방법과 언인스톨 방법을 잘 모릅니다
마이크로 넷제 RSI INtime용 드라이버는 통상의 Windows용 드라이버의 인스톨·언인스톨 방법과 약간
다릅니다. 이하의 순서에 따라서 실시하는: 【인스톨 방법】
순서 1. 셋업 기동 RSI
드라이버 시리즈의 셋업으로부터 드라이버 파일의 카피, 서비스 등록등을 실시합니다.
순서 2. IRQ 분리
작업 리얼타임
디바이스 자원 관리 드라이버(RTDRM)에 의해 IRQ 자원을 사용하는 디바이스를 위해서 확보합니다.
순서
3. 서비스의 설정 RSI 드라이버 시리즈는 인스톨 후, Windows의 서비스로서 등록되기 위해, 서비스의 설정을
실시합니다.
【언인스톨 방법】
순서 1. 서비스의 정지 RSI 드라이버
서비스를 정지상태로 합니다.
순서 2. 언 인스톨러의 기동
3-5 최소의 INtime 환경을 구축하고 싶은
Windows NT Embedded, Windows XP Embedded 제품이
유효합니다. 이러한 제품은 일반적인 Windows 제품으로부터 불필요한 컴퍼넌트를 자유롭게 삭감한 생각 했던 대로의
Windows에 슬림화 할 수 있습니다. INtime에서는 이러한 Windows Embedded에 도입하기 위한 수단도 준비되어
있습니다.
3-6 INtime 시스템을 고속 기동하고 싶은 경우
WindowsXP Embedded 에 대해서는, SP2 이후의 전원 관리 기구(ACPI)를 사용한 하이버네이션
기능이 실현되고 있습니다. 이 기능에 의해서 전원 차단 대책, 전원 투입 후의 첫 시작 시간의 단축이 가능합니다. 통상의 Windows
기동에서는 시스템 구성 초기화, 주변기기의 설정등을 실행하기 때문에 립 오름에 시간이 걸립니다만, 하이버네이션 기동에서는 보존 이미지의
복원뿐이기 때문에, 기동 시간이 단축됩니다.
통상의 Windows(XP Pro,Home,2000)의 하이버네이션은, (컨트롤 패널
조작에 의해) 휴지 상태와 설정하는 것으로 어플리케이션의 실행 상태나 문서를 도중 경과를 보존하는 것입니다만, XPe의 하이버네이션은 기능·사용
방법이 다릅니다. XPe의 하이버네이션은 편성용 특유의 기능이라고 할 수 있습니다.
WindowsXPe의 하이버네이션은
Windows의 기동이 끝나 가동 상태의 메모리 이미지를 Disk에 보존합니다. 혹은 수시 보존합니다(XPe 유틸리티“XPEPM.EXE”를
실행). 다음 번의 전원 투입시에는 이 보존된 이미지가 읽어내져 통상의 가동 상태로 돌아옵니다. 이 이미지를 의도적으로 삭제하지 않는 한, 몇
번이라도 이용할 수 있습니다. WindowsXPe+INtime 환경에 있는 INtime 리얼타임 커널 서비스가 동작하고 있지 않는 상태로
이미지를 보존합니다.
실제예로서 이하의 기사를 봐 주세요.
3-7 INtime 3.0 의 멀티 CPU 구성의 동작 모드 설정 방법을 모릅니다!?
INtime 3.0 에서는 멀티 CPU 구성의 플랫폼에 대응하고 있습니다. 본환경에서 INtime을 동작시키기
위해서 필요한 설정은 없습니다만, 고객의 용도에 따라 두 개의 모드를 설정하는 것이 가능합니다. 하나는 종래의 INtime의 아키텍쳐를 사용한
CPU 공유 모드(공유 모드), 한편은 복수 CPU중 INtime 커널에 하나를 할당하는 CPU 전유 모드입니다(전유 모드). 전유 모드를 구축할
때는 필요한 환경이나 준비가 있기 때문에 아래의 관련 정보를 일독해 주세요.
4.하드웨어 설정에 관한 트러블
4-1 Windows 디바이스와의 IRQ 경합을 회피하려면?
-경합 디바이스가 ISA 디바이스의 경우 Windows측에서 경합 하는
IRQ를 가지는 ISA 디바이스의 IRQ를 사용하지 않게 설정합니다.
-경합 하는 디바이스가 PCI 디바이스의 경우 INtime은
Windows의 ACPI 기능과 공존할 수 있는 구조를 가지고 있습니다만, INtime이 취급하는 디바이스의 IRQ는 리얼타임 성능을 보증하는
목적으로 Windows가 취급하고 있는 IRQ와 분리, 독립시키고 있습니다. 이 때문에, Windows측 디바이스와의”IRQ 경합 회피”가 필요한
케이스가 있습니다. 이러한 경우, INtime 개발 킷에 동고 되어 있는 리얼타임 디바이스 자원 관리 드라이버(RealTime Device
Resource Management Driver), 통칭 RTDRM를 적용해 주시는 것으로 적용한 디바이스에 대해서 다른 디바이스와는 독립한
IRQ의 취득을 실시합니다.
4-2 RTDRM 드라이버가 에러 코드 10으로 실패합니다
RTDRM.SYS 드라이버는, IRQ를 Windows로부터 분리해 확보하려고 시도합니다만, 하드웨어 메이커의
정의 하기에 따라 자주 IRQ를 독립화하지 못하고 에러 10이 되는 경우가 있습니다. 이하의 관련 정보를 참고로 해 문제의 회피가
가능합니다.
4-3 RTDRM의 인스톨 후 Windows 네트워크 설정이 불능이 됩니다
《Windows 네트워크에 있어서의 장해》 Windows의 "TCP/IP프로토콜"의 프롭퍼티로부터 설정한 고정 IP주소 정보가 보관
유지되지 않고, "TCP/IP프로토콜"의 프롭퍼티 설정에서는 항상 "IP의 자동 취득"설정과 같이 표시됩니다. 고정 IP의 설정 자체는 행해지고 있는
상황입니다만 IP정보를 프롭퍼티로부터 참조할 수 없게 됩니다. 커멘드 prompt의"ipconfig"커멘드에 의해 현재 설정되어 있는 IP정보를
참조할 수 있습니다.
이 증상은 Windows 네트워크로 사용되는 네트워크 카드가 시스템에 복수 존재하는 상황하에 대하고, 그
어느것인가에 INtime 네트워크 디바이스 드라이버로서[RTDRM.SYS]를 적용할 때, 적용 끝난 Windows 드라이버를 갱신했을 경우 많이
보여집니다.
현재, INtime 네트워크를 사용하는 경우의 RTDRM 적용 방법은, 범용 디바이스(I/O, 메모리디바이스)와는 다른
방법을 추천하고 있습니다.NIC에의
RTDRM.SYS 적용 가이드에 따라서 RTDRM를 적용해 주세요.
이 문제는, Windows의 문제로서
Microsoft사에 확인을 행하고 있습니다만 명확한 대답은 현재로서는 없습니다.또, 일부의 Intel NIC 제품에서는 Intel사의 제공하고
있는 상주 유틸리티가 존재합니다. 이 유틸리티가 상주하고 있으면 Windows 드라이버를 자동적으로 인스톨 하는 행동을 보이기 위해
RTDRM.SYS의 적용에 지장이 나오는 경우가 몇 번이나 확인되고 있습니다.
【제한부 수복 방법】 모든 네트워크 카드의 디바이스 드라이버를 한 번 언인스톨해, 재기동 후, 재차
드라이버를 인스톨 합니다. 이것에 의해, Windows용 네트워크 카드의 프롭퍼티 설정으로부터"TCP/IP프로토콜"의 설정이 가능하게 됩니다
5.하드웨어 조작에 관한 질문
5-1 PCI 디바이스에 대해서 I/O입출력(inbyte/outbyte등 )을 할 수 없습니다
INtime 소프트웨어는 유저 모드 프로그램으로부터 하드웨어 I/O가 허가되고 있습니다만, Windows의
플러그 앤 플레이에 의해 올바르게 디바이스 드라이버의 인스톨 되어 있지 않은 디바이스에 대해, Windows는 I/O허가 플래그를 「불가」로
설정해 버리기 위해 실제로 I/O 할 수 없게 되는 상태가 됩니다. 그 때문에 항상 명시적으로 PCI 디바이스의 I/O허가 플래그를 설정하는 것을
추천합니다. 자세한 것은 PCI
디바이스의 구조와 제어를 참조해 주세요.
5-2 특정의 PC로 내장 COM 포토를 사용할 수 없는 경우
일부의 PC(특히 리코 사제 메인보드를 채용하고 있는 케이스)로, 내장 COM 포토를 사용하는 INtime
어플리케이션을 통신할 수 없는 경우가 있습니다. 이것은 내장 COM 포토로서는 종래와 호환성이 없는 콘트롤러가 채용되고 있는 것에
유래합니다. 어플리케이션 코드의 대응에 의해서 이 특수한 하드웨어를 이용 가능하게 하는 수단이 있습니다.
6.어플리케이션 설계시의 질문
6-1 알람에 의해서 기동되는 콜백 함수는 정의 가능합니까?
콜백 함수는 존재하지 않습니다. INtime로 알람을 사용하는 경우에는 알람 이벤트를 기다린
후(knWaitFor RtAlarm Event)로 해야 할 처리를 가지는, 스레드로서 준비합니다.
6-2 복수의 heap는 취급할 수 있습니까?
malloc나 시스템 콜 AllocateRtMemory에 의한 동적인 확보를 추천 합니다. 개수에 제한은
거의 없고, INtime 커널의 메모리 범위내에서 임의의 크기를 취급할 수 있습니다. 이 메모리 영역은, RT프로세스 내부 뿐만이 아니라, 다른
RT프로세스, Windows 프로세스에 읽고 쓰기 공유를 허락할 수도
있습니다. (CreateRtMemoryHandle,ntxMapRtSharedMemory)
6-3 RTA측으로부터 Windows를 셧다운 하고 싶은 경우
RT어플리케이션측으로부터 Windows를 셧다운 하는 기능은 표준적으로는 없습니다만, WindowsAPI,
ExitWindows( )를 발행하는 NTX 프로세스를 상주 하게 하는 것에 의해서, 목적을 달성하는 것은 가능합니다. 샘플 프로그램을 참고로 해
주세요.
6-4 APIC 대응한 어플리케이션에 만들어 바꾸려면?
INtime2.23 버젼 이전에 만들어진 어플리케이션은, IRQ0~IRQ15만을 고려해 만들어져 있기 위해서,
그 이상의 번호를 가진 IRQ에 대응할 수 없습니다.이 때문에, APIC에 의해서 IRQ15 이상의 번호를 PCI 디바이스가 이용할 가능성이
있는 경우는 부분적인 코드의 재검토가 필요합니다.
6-5 10 ms보다 짧은 주기의 스레드는 어떻게 하면?
INtime API RtSleep()의 최저 주기는 10 ms주기입니다. 또 10 ms단위에서만
동작합니다. RtSleep( 15 )는 사실상 RtSleep(10)라는 것이 됩니다. 10 ms보다 짧은 주기의 작성 방법의 하나로서
knRtSleep()를 사용할 수 있습니다.
6-6 Windows계의 이벤트에 대신하는 기능은 있습니까?
semaphore 오브젝트가 최적이다고 생각합니다. semaphore 오브젝트는 목적(이벤트)으로 따라 복수
준비하는 것이 가능합니다.
ReleaseRtSemaphore.....이벤트 송신
WaitForRtSemaphore.....이벤트
수신
또 iWin32
API를 채용하는 것으로 WindowsAPI를 그대로 이용하는 것도 가능합니다.
7. 프로그래밍에 관한 질문
7-1 인터럽트 처리기내에서 실시해야 할 필요 최소한의 처리는 무엇입니까?
인터럽트 처리기내에서는, 인터럽트 처리용으로 준비되어 있는 일부의 INtime API와 긴급한 I/O입출력
이외의 조작은 일절 할 수 없습니다. 자세한 것은 인터럽트
처리기와 인터럽트 스레드를 참조해 주세요.
7-2 인터럽트 처리기내에서 이용 가능한 시스템 콜을 가르쳐 주세요.
7-3 인터럽트 처리의 구체적인 예는 있습니까?
기본적인 인터럽트 처리의 흐름은인 인터럽트
처리기와 인터럽트 스레드를 참조해 주세요. 구체적인 예로서는,
인터럽트프로그래밍 샘플을 참고로 해 주세요.
7-4 인터럽트 스레드의 priority는 가변입니까?
이것은 사용하는 플랫폼에 실장되는 인터럽트 콘트롤러에 의해 다릅니다. 종래의 PIC(Programable
Interrupt Controller) 인 경우(PIC 모드:0-15), 고정의 priority치가 됩니다. APIC(Advanced
Programable Interrupt Controller)인 경우(APIC 모드), priority는 가변이 됩니다.
7-5 오브젝트 디렉토리에 상한은 있습니까?
오브젝트 디렉토리는 RT프로세스 마다 존재해, 각 프로세스 마다 3840개하지만 상한입니다. 이 상한을 웃도는 경우에는 메모리블록의
핸들을 카탈로그 하고, 그 메모리상에서 다수의 오브젝트를 어플리케이션이 관리하면 좋을 것입니다.
7-6 리얼타임성을 해치는 함수는 있습니까
몇개의 ANSI 함수나, 시스템 콜에는, INtime의 성질상 Windows와 동기를 동반하는 것이 있어
이것들은 처리 시간이 확정적이 아닙니다. 리얼타임성을 중시하는 스레드에 대해 이것들이 영향을 줄 가능성을 가지는 것에 주의가 필요합니다.
7-7 RT어플리케이션으로 동적 메모리를 확보할 수 없습니다
INtime 어플리케이션은 디폴트로 최대 풀 사이즈 1 MB, 가상 메모리 사이즈 8 MB로 로드
됩니다. 어플리케이션 작성시 설정으로 heap 사이즈(/HEAP 옵션:Visual Studio)를 변경하지 않는 한, 1 MB이상의 메모리를
동적으로 확보할 수 없습니다. 이 설정은 어플리케이션 로드시의 최대 풀 사이즈 옵션(-pmax)에 의해 재설정해, 동작시키는 것도
가능합니다.
7-8 RT어플리케이션으로 물리 디바이스, 공유 메모리의 맵으로 실패합니다
INtime 어플리케이션은 디폴트로 최대 풀 사이즈 1 MB, 가상 메모리 사이즈 8 MB로 로드 됩니다. 물리
디바이스가 가지는 메모리 영역이 가상 메모리 사이즈를 넘으면 MapRtPhysicalMemory() 콜로 에러가 됩니다. 이쪽을 회피하기 위해서는
어플리케이션 로드시에 가상 메모리 사이즈를 증가할 필요가 있습니다.
RSI 드라이버의 언인스톨을 실시해, 셋업시에 시스템에 인스톨 된 파일의 삭제, 서비스의 삭제등을
실시합니다.
순서 3. RTDRM의 삭제 인스톨시에 인스톨 한 리얼타임
디바이스 자원 관리 드라이버(RTDRM)를 Windows 디바이스 매니저상에서 삭제합니다.
8.어플리케이션 빌드시의 질문
8-1 릴리스 빌드시에 한정해 부동 소수점 연산 함수의 링키지 에러가 발생
Microsoft 컴파일러의 사양에 의해, 완전 최적화 옵션으로의 컴파일 작업이 부동 소수점 연산 함수의
심볼명을 변경하는 것이 이유로, 링크 에러를 일으킵니다.컴 파일 옵션의 변경에 의해서 이 문제를 해결할 수 있습니다.
9.어플리케이션 실행시의 질문
9-1 어플리케이션을 종료하면 Windows가 다운 당하는
어플리케이션 종료시에 다운 당하는 케이스로 가장 많은 것은 하드웨어 인터럽트를 사용하고 있어, 올바르게 인터럽트
종료 처리를 하고 있지 않는 상태때입니다. INtime 위저드로 인터럽트 처리를 생성하면, Int1Kill()라고 하는 함수를 출력합니다. 이
안에서는 인터럽트 처리기의 리셋트를 실시하기 위해서 ResetRtInterruptHandler()를 콜 합니다. 본처리를 실시하기 전에 올바르고
인터럽트 요인을 클리어 해, 인터럽트 마스크의 해제 처리를 실시해 주세요.
9-2 INtime 동작중이라면 Windows의 시각이 진행되는
표준 PC-HAL 혹은, ACPI-HAL로 동작하는 Windows와 INtime가 공존하는 경우, PC가
내장하는 인터벌 타이머 콘트롤러의 최소 입도의 형편으로부터, Windows 시계는 일에 몇분 진행되는 경향이 있습니다.
9-3 처리 시간을 계측하는 방법은?
1개는 INtime2.2 x 이후에 부속되는 INscope 유틸리티의 이용입니다.마이크로 세컨드 단위로 처리 시간을 시각적으로 계측할 수
있습니다.
2개째에 시스템 콜 knGetTime은 INtime 기동 개시 후부터 인크리먼트(increment)가 계속되는 64비트의
커널틱카운타이며, 즉 최소 100 us의 정도로 계측할 수 있습니다.
가장 고정밀의 방법으로서 CPU가 내부에 가지는 64비트의 클락 카운터를 사용하면 좋을 것입니다. Sample20INtime®샘플 프로그램집
그럼
리얼타임 TCP/IP데이터 송수신을 실시할 때, CPU 클락 카운터를 사용한 방법으로 그 통신 시간의 계측을 실시하고 있습니다. 이 방식으로는
나노초단위로의 계측도 가능합니다.
이상과 같은 3개의 소프트웨어에 의한 계측 수단 이외에, 예를 들어 PC가 표준적으로 장비하고 있는 패러럴
포트에 신호 출력을 실시해 logic analyzer로 하드적으로 계측하는 수단도 있습니다. INtime 어플리케이션으로부터 outbyte(
0x378 ,value ); (와)과 콜 하면 언제라도 최대 8비트의 신호를 다이렉트에 출력할 수
있습니다.
관련 정보처리
시간의 계측
↑
9-4 동적 메모리 확보에
실패합니다
INtime 어플리케이션은
디폴트로 최대 풀 사이즈 1 MB, 가상 메모리 사이즈 8 MB로 로드 됩니다. 어플리케이션 작성시 설정으로 heap 사이즈(/HEAP 옵션:
Visual Studio)를 변경하지 않는 한, 1 MB이상의 메모리를 동적으로 확보할 수 없습니다. 이 설정은 어플리케이션 로드시의 최대 풀
사이즈 옵션(-pmax)에 의해 재설정해, 동작시키는 것도 가능합니다.
9-5 물리 메모리/공유
메모리의 맵에 실패합니다
INtime 어플리케이션은
디폴트로 최대 풀 사이즈 1 MB, 가상 메모리 사이즈 8 MB로 로드 됩니다. 물리 디바이스가 가지는 메모리 영역이 가상 메모리 사이즈를
넘으면 MapRtPhysicalMemory() 콜로 에러가 됩니다. 이쪽을 회피하기 위해서는 어플리케이션 로드시에 가상 메모리 사이즈를 증가할
필요가 있습니다.
9-6 기대한 동작 주기에
처리가 움직이지 않는 것 같습니다
플랫폼에 의존해 INtime
동작의 표준 클락이 되는 카네르틱이 적절히 얻지 않는 경우가 있습니다. INtime에 부속되는 GraficalJitter 프로그램에서는,
적정하게 틱이 얻어지고 있는지를 확인할 수 있기 때문에, 실행 후, 틱의 혼란을 관측해 주세요. 이것은 ROM-BIOS가 가지는 좋지 않는
코드가 기인하기도 해, 전력 절약 설정의 변경등에 의해 개선하기도 합니다.
9-7 자동 기동한 RTA로
fopen나 printf를 실패한다
파일 액세스나 콘솔 입출력을
포함하고 있는 RTA를 자동 기동할 때, INtimeI/O서비스가 초기화되고 있는 한중간이어도, 어플리케이션 처리가 진행하는 일이 있어,
이 때 파일 액세스나, 콘솔 입출력을 아직 이용하지 못하고, 잘 기능할 수 없는 것이 있습니다.
|