2010-01-29 3 views
3

일련의 작은 이미지에서 이진 이미지를 만들 수있는 도구에 대한 권장 사항을 찾고 있습니다.이진 이미지 레이아웃 도구 찾기

단일 이미지를 사용하여 프로그램하는 플래시 ROM이 내장 된 시스템이 있습니다. 이 이미지는 특정 오프셋에 배치 된 일련의 작은 객체 (데이터, 컴파일 된 코드 등)로 구성됩니다. 내가 계승 한 빌드 시스템은 이미지를 함께 해킹하기 위해 오래된 16 비트 DOS 유틸리티의 아말감을 사용합니다. 나는 덜 모호한 (그리고 덜 버그 경향이있는) 방식으로 작업을 수행 할 수있는 현대적인 도구를 찾고 싶었다.

이 도구는 구성 파일에서 실행할 수 있어야합니다. 즉, 필자는 A.bin 파일을 오프셋 4KB에 배치해야하고, B.bin 파일을 오프셋 16KB에 배치해야하며, 구성 파일에서 등을 반복적으로 수동 명령 줄 호출이 필요하지 않도록 지정해야합니다. 이는 주로 이러한 설정 파일을 자동으로 생성 할 다른 시스템이 있기 때문입니다.

또한 도구는 오픈 소스 (또는 최소한 크로스 플랫폼) 여야합니다. 우리는 Windows를 사용하는 개발자와 Linux를 사용하는 자동화 된 빌드 시스템을 가지고 있으며 도구는이 두 가지를 모두 사용해야합니다.

나는 C에서 자체 유틸리티를 해킹하는 것에 대해 토론 해 왔지만 개발과 디버깅을 모두하기 전에 이미 놓친 도구를 알고 있는지 묻고 싶었습니다.

편집 : Cygwin 관련 도구는 불행히도 옵션이 아닙니다. Cygwin이 설치되어있는 시스템에서 실행되는 경우 중요한 빌드 도구 중 하나가 충돌합니다 (특정 Cygwin DLL을 사용한다고 생각하지만 완전히 다른 큰 실패입니다).

+0

Cygwin 의존 도구를 여러 개 배포 한 경우 도구 또는 DLL의 서로 호환되지 않는 복사본을 동일한 컴퓨터에 설치하는 경우가 종종 있습니다. 그래서 건강 경고없이 권장 될 때 걱정됩니다. 당신이 원할지도 모르는 많은 유틸리티는 http://unxutils.sourceforge.net/이나 http://gnuwin32.sourceforge.net/에서 기본 Win32 도구로 사용할 수 있습니다.하지만 여전히 http : //srecord.sourceforge를 권하고 싶습니다. .net /이 경우. – Clifford

+0

DLL과 동일한 이름을 가진 파일을 추가하려고 시도하지만 DLL의 프로그램과 (적절한 이전) 사본이 위치한 폴더에'.local'이 추가되었습니다. 일해야한다. – 0xC0000022L

답변

2

보통 내가 직접 작성하지만, 잭 갠슬 (Jack Ganssle)의 Embedded Muse 뉴스 레터 번호 184를 통해 http://srecord.sourceforge.net/을 보았습니다. 거의 모든 종류의 바이너리 이미지 파일을 처리하게되었습니다 (이름에도 불구하고 모토로라 S보다 훨씬 더 많은 형식을 처리합니다). - 원시 바이너리를 포함한 코드). 그것은 당신에게 약간의 시간을 절약 할 수 있습니다.

+0

그 두 번째 추천서입니다. 'Srecord'는 이런 종류의 일에 매우 유용한 도구입니다. 나는 그것을 여러 프로젝트에 사용했다. C/C++에서 커스텀 툴을 작성하는 것보다 훨씬 낫다. –

+0

주셔서 감사합니다. 'Srecord'는 실제로 매우 유연한 유틸리티 인 것으로 보인다. 우리가 필요로하는 것의 100 %가 아니지만 나머지 기능을 상당히 쉽게 추가 할 수 있어야합니다 (처음부터 직접 빌드하는 것보다 훨씬 낫습니다). – bta

2

dd은 분명히 가장 친한 친구가 될 것입니다.

Windows 사용자는 cygwin을 사용하십시오.

+0

처음에는'dd'에 대해 생각했습니다. 그러나 바이너리 이미지에 추가 된 각 구성 요소에 대해'dd '를 한 번 호출해야합니다.내가 상속 한 빌드 시스템의 특성을 감안할 때 단일 호출로 전체 ROM 이미지를 작성하는 도구가 매우 바람직합니다. – bta

+1

다중 인수를 취하고 dd를 반복적으로 호출하는 쉘, 파이썬, 루비 또는 perl 스크립트를 작성 하시겠습니까? –

+1

Cygwin에서 dd를 실행하십시오!? 쇠 망치와 너트 상황이 암울해진다! ;-) Cygwin을 이미 설치 한 경우에만 권장합니다. 그렇지 않으면 http://unxutils.sourceforge.net/을 사용하십시오. – Clifford

0

OKL4와 함께 배포되는 Elfweaver 유틸리티가 적합 할 수 있습니다. The manual : "Elfweaver는 ELF 파일을 조작하는 데 사용할 수있는 도구이며, Elfweaver는 플랫폼 간 라이브러리 만 사용하는 Python 2.3 응용 프로그램으로 작성되므로 Elfweaver는 Linux, Mac-OS X 및 Windows에서 실행해야합니다. Elfweaver의 주요 기능은 당신이 적합 보이는 생각하는 경우 사용자가 하나의 ELF 파일 " http://wiki.ok-labs.com/downloads/release-3.0/okl4-ref-manual-3.0.pdf

에 여러 개의 ELF 파일을 병합 할 수 있다는 것입니다, 당신은 oKL4 웹 사이트에서 okl4 소스 코드와 함께 도구를 얻을 수 있습니다.