해결된 질문
작성
·
56
1
안녕하세요, 강의 수강하면서 궁금한 점이 있어 질문드리게 되었습니다.
Bootloader SW의 필요성에 대한 강의를 들으면서 하기와 같은 궁금점이 생겼습니다.
처음에 Debugger를 통해서 SW를 MCU Flash에 다운을 할 때에는 1개의 SW가 아닌 제어 & Bootloader SW로 총 2개의 SW를 개발해야 한다고 이해했습니다.
여기서 궁금한 점이 해당 2개의 SW가 각각의 다른 영역을 가지고 있으니 각각의 SW를 따로 다운, 즉 Debugger를 통해 총 2번을 다운로드를(제어 SW 1번, Bootloader SW 1번) 수행해야 하는 건가요? 아니면, 작성된 SW Code를 빌드한 Hex 파일 1개에 2개의 영역을 알아서 구분하게 되어 있어서, 그냥 1번 다운로드를 하면 되는 것인지 추상적으로 느껴집니다,,
1번가 비슷한 질문일 수도 있는데, 처음에는 Debugger를 통해서 다운로드를 해야 하는데, 처음의 MCU Flash에는 아무 것도 적혀있지 않은 상태인데 다운로드를 어떤 방식으로 수행하는 것일까요? (Debugger로 다운로드 시에는 아무 것도 적혀 있지 않으니 단순히 Write만 진행하는 것인가요?) (진단통신을 통한 업데이트 부분만 이해하다보니 헷갈리네요,,)
(이후의 진단통신을 통한 업데이트 내용은 이해가 되었습니다!)
항상 좋은 강의 감사드립니다.
답변 1
1
안녕하세요.
1번 질문) 두 개의 sw를 각각 빌드해서
제어sw의 hex파일 , 부트로더의 hex파일
두 개를 만든 후
말씀하신 것처럼 다운로드를 각각 수행해서 2번 다운로드 할 수도 있구요.
아니면 hex파일 두 개를 하나로 합쳐주는 툴이 있어서 그런 툴을 사용해서 hex파일을 하나로 합친 후에 그 hex파일을 한번에 다운로드 하는 방법도 있습니다.
참고로 부트로더와 제어sw 의 hex파일 주소 영역이 서로 중복되지 않아야할텐데, 이거는 자동으로 되는게 아니라.
컴파일러의 링커스크립트 파일 셋팅을 통해서 빌드 결과물이 담길 메모리 위치를 지정할 수 있습니다.
그래서 부트로더sw 빌드 할때의 링커스크립트.
제어sw 빌드할 때의 링커스크립트를 개발자가 적절하게 셋팅을 잘 해줘야합니다
디버거로 다운로드 할 때는 디버거가 플래시 컨트롤러를 컨트롤해서 다운로드합니다. Mcu에 sw를 전혀 다운로드 하지 않은, 말 그대로 공장에서 갓 출시 된 상태라면 erase 없이 곧바로 write 할 수 있을거 같기도 한데요. 그런데 디버거로 sw 다운로드를 딱 1번만 하는게 아니고 수시로 하기 때문에 확
실히 하기 위해서 디버거가 다운로드
하기전에는 erase 부터 수행하고 flash write 를 합니다.
좋은 답변 감사드립니다!