2015-01-08 2 views
0

프로젝트의 암 디버그 환경을 설정하려고합니다. 프로젝트에 필요한 기본 코드 기능 중 하나는 이진 파일을 메모리 (6MB)에로드하는 것입니다.Qemu-Arm 파일 액세스?

나는 우분투 리눅스 12.04에 qemu-arm을 설치했고, 목표가 컴파일 된 GDB를 컴파일했다.

#include <stdio.h> 
#include <stdlib.h> 
#include <fcntl.h> 
#include <stdint.h> 
int main() 
{ 
int fd = open("files/test.txt", O_RDONLY); 
printf("File handle: %i ", fd); 
perror(NULL); 
return 0 
} 

명령 행 :

arm-linux-gnueabihf-gcc -static -no-stack-protector -g test.c -o test;qemu-arm ./test 

출력 :이 파일을 찾을 수 없습니다처럼

File handle: -1 No such file or directory 

가 보인다, 나는이 믿을 나는 다음 테스트 코드를 컴파일을 시도하고있다 QEMU에 대한 액세스 권한이 없기 때문에 ... QEMU에 익숙하지는 않지만 가상 머신에 대한 이전 경험을 감안할 때 이것이 맞을 것 같아요.

아무도이 문제를 해결할 수 있습니까?

편집 : 와우, 해결했는데 코드에 오타가 있었고 파일 경로가 잘못되었습니다. 지금 해결 ... 방금 닫아야합니까? 내 질문은 무의미한 오타 였기 때문에 무효입니다. 오타가 게시 된 코드에 없습니다. 당신이 오타를 수정하여 문제에 대한 해결책을 발견하지만

+0

당신은'errno'를 쿼리하지 않고 프로그램이 파일을 열지 못하게하는 것을 보지 않으십니까? 'fd = open (...'line. –

+0

) 바로 다음에'perror (NULL);'를 써라. 잠시 후에 시도하고 편집 할 것이고, 나의 C 코드는 매우 약하다. – codelion

답변

1

나는 당신이 질문이 문제 해결 것이라고 생각 :이 파일을 찾을 수 없습니다처럼

보이는을, 나는이 생각하는 QEMU 때문에 에 액세스 할 수 없습니다. QEMU에 대해 경험이 많지 않지만 가상 머신에 대한 이전의 경험을 바탕으로 생각하면 입니다.

QEMU에는 두 가지 작동 모드가 있습니다. 하나는 익숙한 다른 VM과 유사한 전체 시스템 에뮬레이터입니다.

다른 모드는 사용자 모드 에뮬레이터로서 사용중인 것입니다. 이 모드에서는 QEMU가 사용자 모드 명령어를 한 ISA에서 다른 ISA로 변환합니다. 귀하의 경우에는 ARM 명령어를 x86 명령어로 변환합니다. 그러나 시스템 호출을 처리 할 때 에뮬레이터는 호스트 OS에서 직접 호출을 실행합니다. 따라서 QEMU는 실행 한 다른 프로세스와 마찬가지로 로컬 파일 시스템에 액세스 할 수 있습니다.