2014-10-10 13 views
4

iHex 프로그램에서 수행 한 인텔 16 진수 레코드 유형 03 또는 05는 무엇입니까?ARM 용 iHex 프로그램에서 수행하는 Intel 16 진수 레코드 유형 03 또는 05는 무엇입니까?

기록 유형 03 : IP 레지스터 : 80X86 프로세서의 세그먼트 주소 시작은 CS의 초기 내용을 지정합니다. 주소 필드는 0000, 바이트 수는 04, 처음 두 바이트는 CS 값, 후자 두 개는 IP 값입니다.

기록 형 05 : 시작 선형 주소 어드레스 필드 인 네 개의 데이터 바이트가 80386의 EIP 레지스터에로드 32 비트 값을 나타내는 0000 (사용되지 않은) 상기 바이트 수는 04이며 높은 CPU.

이들은 ARM 프로그램에도 의미가 있습니까?

: 10851400B4040020BC040020BC040020C4040020D7
: 10852400C4040020CC040020CC040020D404002087
: 10853400D4040020DC040020DC040020E404002037
: 10854400E4040020EC040020EC040020F4040020E7
: 10855400F4040020FC040020FC040020FFFFFFFFC3
: 048564000000020011
나는 임베디드 ARM을 프로그램 .HEX 생성 할 때마다

는 결말이 같이 보입니다 : 0400 00 05 08002910B6
: 나는 프로그래밍 응용 프로그램을 편집 한 00000001FF

이 레코드를 무시하고, 단지 오늘 동료는 자신의 컴파일러에 03 유형의 기록을 만들어보고 마지막에서 두 번째 MPU를 프로그래밍 할 수 없었습니다.

왜 objcopy가 이러한 레코드를 생성합니까? 그렇게하지 못하게 할 수 있습니까?

관련 메이크 라인 :

FORMAT = ihex 
OBJCOPY = arm-elf-objcopy 

    %.hex: %.elf 
    @echo 
    @echo $(MSG_FLASH) [email protected] 
    $(OBJCOPY) -O $(FORMAT) $< [email protected] 
+0

[여기 ARM 페이지] (http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka9903.html)에는 ARM 관련 해석이 일부 포함되어 있습니다. – unwind

답변

5

이는 심지어 ARM 프로그램에 대한 의미가 있습니까?

베어 메탈 케이스에 벡터 테이블을 제공 한 경우에도 ARM 프로그램에는 항상 진입 점이 설정됩니다.

arm-*-objcopy 프로그램은 매우 지능적이지 않으며 호환성을 위해 항목 주소가 첫 번째 메가 바이트 이내 인 경우에만 03 레코드를 생성하고 그렇지 않은 경우 05 레코드를 생성합니다.

플래시 테이블은 벡터 테이블에 필수 주소가 이미 포함되어 있기 때문에 베어 메탈 ARM에서 이러한 레코드 유형을 안전하게 무시할 수 있습니다. 이 레코드를 제거하기 위해 16 진수 파일을 필터링 해 볼 수 있습니다 (예 : sed을 사용하십시오.