IT/임베디드 시스템36 디버깅 테크닉 - 명령어 시뮬레이션 & assert 매크로 [명령어 시뮬레이션 활용법] 지금까지 살펴봤던 방법의 단점들은 호스트에서 실행되면서 타깃 시스템의 마이크로프로세서와 메모리의 동작을 흉내 내는 명령어 시뮬레이션 아니면 시뮬레이터를 사용해서 극복할 가능성이 있습니다. 시뮬레이터를 사용하기 위해서는, 실제 타깃을 위해서 빌드하듯이 소프트웨어를 크로스 컴파일러와 링커/로케이터로 처리해야 하비다. 그러고 나서 결과를 시뮬레이터에 올립니다. 그전에 반드시 시뮬레이터가 링커/로케이터의 출력 형식을 이해할 수 있는지 확인해야 한다는 점 잊지 마세요. 시뮬레이터는 타깃 마이크로프로세서의 구조와 명령어들을 알고 있습니다. 시뮬레이트 된 메모리로부터 프로그램을 구성하는 명령어를 읽을 때, 실제 타깃 하드웨어의 동작을 흉내내기 위해서 시뮬레이터는 시뮬레이트 된 RAM과 각.. 2020. 6. 25. 디버깅을 위한 호스트 시스템에서의 테스팅3 - 고급기술 그리고 반론/단점 [고급 기술] 호스트에서 테스트를 하기 위한 몇 가지 기술들을 더 알아봅시다. 첫 번째, 테스트용 시뮬레이터 소프트웨어가 어떤 일을 자동으로 수행하게 만들면 유용할 때가 많습니다. 가령 지하 유류 저장 탱크 모니터 시스템을 위한 하드웨어 독립적인 코드가 데이터 한 줄을 프린터에 보낸다고 할 때, 테스트용 시뮬레이터 소프트웨어는 그 줄을 가로채고, 하드웨어 독립적인 코드에 다음 줄을 인쇄할 준비가 되었다고 말을 해야 합니다. 앞의 권고들로부터 합리적으로 생각해보면, 테스트용 시뮬레이터 소프트웨어는 스크립트에 있는 명령어에 대한 응답에 의해서만 프린터 인터럽트 루틴을 호출해야 합니다. 하지만 단순히 시스템이 보고서를 제대로 만드는지 아닌지만 확인하고 싶었다면 전체 보고서를 출력하기 위해 계속 테스트용 시뮬레.. 2020. 6. 23. 디버깅을 위한 호스트 시스템에서의 테스팅2 - 인터럽트 루틴 호출 / 스크립트, 출력 파일 이어서 계속 테스팅 얘기를 해볼게요. [인터럽트 루틴의 호출] 언젠가 언급했듯이 대부분의 임베디드 시스템은 인터럽트가 발생해서 인터럽트 루틴이 실행되는 것으로 뭔가를 합니다. 따라서 테스트 환경에서 시스템이 뭔가를 하도록 하려면 테스트용 시뮬레이터 코드는 인터럽트 루틴을 실행시켜야 합니다. 이렇게 하는 건 그리 어려운 일은 아닙니다. 인터럽트 루틴은 두 부분으로 나눠져 있는 경향이 있는데 하나는 하드웨어를 담당하고 다른 하나는 시스템의 다른 부분을 처리합니다. 테스트를 위해서 프로그래머는 인터럽트 루틴을 하드웨어 의존적인 부분이 하드웨어 독립적인 부분을 호출하도록 구성해야 합니다. 그렇게 하면 하드웨어 독립적인 부분을 C로 작성할 수 있고 테스트용 시뮬레이터 코드는 단순히 호출할 수 있습니다. 시리얼 포.. 2020. 6. 23. 디버깅을 위한 호스트 시스템에서의 테스팅1 - 테스팅의 목적과 기본 드디어 새로운 파트로 넘어왔습니다. 이번에는 고객에게 선적할 때 제대로 동작하도록 하기 위한 임베디드 시스템 소프트웨어를 테스트하고 디버깅하는 방법을 위주로 이어나갈 예정입니다. 대부분의 경력이 많은 엔지니어들은 작성할 때 많은 버그를 가진 코드는 궁극적으로 선적될 때도 많은 버그를 가진 코드가 될 것이라고 어느 정도 생각합니다. 테스트와 품질 확인 절차는 어느 정도 버그를 줄여 줄 것이긴 하겠지만, 버그를 적게 가진 제품을 선적하는 유일한 방법은 처음부터 애초에 버그를 적게 갖도록 프로그램을 잘하는 것이라고 할 수 있겠습니다. 임베디드 시스템 소프트웨어에서 버그가 없도록 만드는 기술들은 응용 프로그램 소프트웨어에서 버그를 없애는 것과 거의 동일하다고 여겨집니다. 그러나 두 가지 이유에서 임베디드 시스템.. 2020. 6. 22. 이전 1 2 3 4 5 ··· 9 다음