본문 바로가기
프로그래밍/C++

C++] Intel hex to bin 변환 프로그램 (TI C2000 시리즈)

by eteo 2025. 5. 24.

 

 

Windows 콘솔용 Intel HEX 포맷 파일을 바이너리 파일로 변환하는 프로그램

 

기존에 잘 쓰던 프로그램이 있었는데 TI C28x 계열 MCU 대상으로 -a, -w 옵션을 사용하면 맨 뒤에 extra bytes가 더 붙는 문제가 있어서 직접 만들었다.

 

 

  • -a : C28x 코어는 주소 체계가 워드(16비트) 단위로 되어 있어서 HEX 파일의 주소도 워드 단위라 모든 address field를 왼쪽으로 1비트 shift해야 한다.
  • -w : C28x 코어는 리틀 엔디안 구조지만 메모리가 워드 단위이다. HEX 파일의 데이터도 워드 단위로 저장되어 있어서 .bin 파일에 저장할 는 워드 내에서 바이트 순서를 스왑해야 한다.
  • -p padding : 패딩 바이트 값 지정 (기본값: FF)
  • -o output.bin : 출력 파일 경로 지정

 

 

-a(addressAlignment) 옵션에 따른 address field 처리

-a, -w 옵션을 안쓰면 다른 MCU 대상으로 써도 잘 작동할 것이다.

if (record.recordType == 0) {
	// ...
    if (!addressAlignment) {
        physicalAddr = (upperAddress << 16) | (segmentAddress << 4) | record.address;
    }
    else {
        physicalAddr = (upperAddress << 16) | (segmentAddress << 4) | (record.address << 1);
    }
	// ...
}
// ...
else if (record.recordType == 4) {
	// ...
    else {
        upperAddress += (field - lastUpperField) * (addressAlignment ? 2 : 1);
    }
	// ...
}

 

 

 

사용 예시.

 

 

 

IntelHexConverter.zip
0.51MB

 

압축 암호 : 1234