이것은 툴 체인에 상당히 달려 있습니다. 다음은 가능한 고화질 접근 방식입니다.
라이브러리를 실행 가능 이미지로 컴파일하여 링커가 플래시 메모리 공간의 특정 부분을 사용하도록 설정하십시오. 링커가 행복해지기 위해서는 위조/스텁 입력 기능이 필요할 것이다.
일단 완료되면 일반 프로그램을 빌드 할 때 라이브러리에서 사용하는 기호의 모든 주소를 찾아 해당 기호 위치에 대해 링커에 지시하고 링크 프로세스에 중개 라이브러리 개체를 사용하도록 지시하지 마십시오. 연결. 또한 링커가 업데이트 가능한 플래시 섹션에 코드를 배치하도록 지시합니다.
다음은 라이브러리에 대한 이미지와 라이브러리에서 사용하는 새 프로그램 버전의 기본 프로그램 이미지를 빌드하는 기능입니다.
링커 출력 형식이 스트립되지 않은 엘프 (플래시에서 굽기 위해 바이너리로 변환하기 전에)이고 링커가 일반 텍스트 파일을 받아 들일 수있는 경우 스크립트로 작성 될 수 있습니다. gnu 툴 체인을 사용하고 있습니다). 라이브러리에 외부에서 볼 수있는 함수와 변수가 거의 없으면 스크립팅하는 것이 좋습니다.
일부 의견 제출자에게 동의해야합니다. 라이브러리를 전송하는 것이 매우 어렵지 않다면 라이브러리를 포함하는 단일 이미지를 작성하고 모든 것을 푸시해야합니다. 라이브러리가 지금 바뀌지는 않을 것이라고 말할 수도 있지만 필연적으로 라이브러리 코드를 변경해야하는 무언가가 생길 수 있습니다. 라이브러리를 변경하고 심볼을 정확히 같은 위치에 유지할 수없는 경우 모든 애플리케이션 이미지는 삭제되지 않습니다. 새 라이브러리로 작업 할 수 있습니다. 이것은 호환 가능한 소프트웨어 (펌웨어) 업데이트를 처리 할 때의 악몽입니다.
이것은 컴파일러가 응용 프로그램이 호출 할 라이브러리 함수의 참조 (메모리 위치)를 찾을 위치를 알려주는 것과 관련이 있다고 생각합니다. 이것이 올바른 방향이라고 생각하십니까? – Arash
왜 전체 이미지가 너무 커서 전체를 공개 할 수 없다고 생각하십니까? Flash/ROM에서 실행되는 MCU가 하나 이상의 가능한 응용 프로그램 이미지에서 업데이트하고 선택하는 작은 부트 로더를 포함하는 것은 상당히 일반적인 방법이지만, 독자적인 펌웨어 "blob"을 다루는 경우를 제외하고는 설명하는 것이 일반적이 아닙니다. 칩 공급 업체. –
게시 내역을 확인했습니다. .... TMS470 w/IAR 툴체인 용입니까? 그렇다면 귀하의 질문에 그것을 지정할 수 있습니다. 원래의 질문에 대한 해결책은 도구 체인 (및 아키텍처)에 따라 달라질 수 있습니다. –