2014-02-10 4 views
0

나는 라우터의 플래시 메모리를 덤프하는 응용 프로그램을 만듭니다 (brn-tool과 비슷 함). 라우터의 플래시 메모리는 이미 직렬 케이블을 통해 액세스 할 수있는 부트 로더에서 덤프 될 수 있습니다.C가있는 라우터에서 플래시 메모리 덤프

지금까지 생성 된 응용 프로그램은 10000 바이트 (부트 로더가 한 번의 스윕에서 반환하는 최대 바이트)를 가져올 수 있습니다.

나머지 플래시 메모리 바이트를 가져 오는 데 문제가 있습니다.

앞서 언급했듯이 각각의 옵션을 선택하고 읽을 바이트 수를 입력하면 부트 로더 메뉴에서 바이트를 읽을 수 있습니다. 코드는 다음과 같습니다.

int ReturnByte(int FileDescriptor, char * StartAddress) 
{ 

// Create the Variable to hold the Start Address in Hexadecimal Notation 

char ModdedStartAddress[10]; 

// Convert the Decimal Input to Hexadecimal 

sprintf(ModdedStartAddress,"%X", (unsigned int)strtol(StartAddress, NULL, 10)); 

// Append a \r to simulate an Enter Press 

ModdedStartAddress[strlen(ModdedStartAddress)] = '\r'; 

// Go inside the Read Menu 

char Character = 'R'; 

write(FileDescriptor, &Character, 1); 

// Input the Starting Read Address 

write(FileDescriptor,ModdedStartAddress, sizeof(ModdedStartAddress) - 1); 

// Set the Data Length to 1 Byte 

Character = '3'; 

write(FileDescriptor, &Character, 1); 

// Set the Read Count to 10000 

write(FileDescriptor, "10000\r", sizeof("10000")); 

return 10000; 


} 

한 번 실행하면이 메서드는 제대로 작동하고 10000 바이트를 올바르게 출력합니다.

그러나 전체 플래시 덤프를 만들려면 위 방법을 여러 시작 주소로 여러 번 실행해야합니다. 메서드가 여러 번 실행될 때 메뉴 등의 시퀀스는 프롬프트 내에있을 때 실행되지 않고 대신 메모리 데이터가 장치에 의해 반환되는 동안 실행됩니다.

다음과 같이 메뉴가 작동하는 방법의 개요는 다음과 같습니다

Read Menu (Option R) 
    Start Address to Read 
    Data Length (Set to 3 for 1 Byte) 
    Read Count (Set to a maximum of 10000) 
     *The Router starts outputting a hex dump* 
Back to Menu 

나는 모든 데이터가 시리얼 포트에서 전송 된 것을 확인하는 방법이 날씨를 알아 내기 위해 노력하고 있어요을 다시하기 위해 방법을 실행합니다.

직렬 포트로 연결하는 데 termios 라이브러리를 사용하고 있습니다.

은 귀하의 질문에 정확한 점점 앤드류 보그

답변

0

임 확실하지 메신저를 주셔서 감사합니다,하지만 난 그것을 갈 줄하려고합니다.

특정 길이/크기의 데이터 (읽기 수 (메뉴 옵션))를 요청하면 프로그램에서 바이트 스트림이 중지 될 때 프로그램 한 바이트 수를 계산하여 숫자와 비교하십시오 읽은 바이트 수를 다시 요청했습니다.

희망이 있다면, 내가 잘못하면 모두 알려주세요. ;)

+0

내가 겪고있는 문제는 응용 프로그램이 모든 바이트를 라우터에서 보내기 전에 get memory bytes 시퀀스를 다시 보내야한다는 것입니다. – Andrew

+0

안녕하세요. 모든 원시 코드를 pastebin 또는 다른 사이트에 업로드 할 수 있습니까? 나/우리가 당신의 문제를 다루기가 더 쉬울 것입니다. – MrSykkox