둘 다하므로 여기에 내 견해가 있습니다.
임베디드에서 가장 중요한 기술은 디버깅 능력이라고 생각합니다. 요구되는 사고 방식은 훨씬 더 잘못 될 수 있다는 점에서 매우 다르며, 수행하려는 작업이 잘못 될 수있는 다양한 방법을 모두 고려할 수 있어야합니다.
이것은 새로운 임베디드 개발자에게 가장 큰 문제입니다. PC 사람들은 자신을 위해 일하는 데 익숙하기 때문에 더 거칠어하는 경향이 있습니다. 대신 도구를 찾는 도구를 찾는 데 많은 시간을 허비하는 경향이 있습니다 (힌트 : 많지 않음). 무엇을 해야할지 모른 채 벽에 머리를 두드리는 소리가 많이 있습니다. 막히고 있다고 생각되면 뒤로 물러나서 무엇이 잘못 될 수 있는지 알아 내십시오. 잠재적 인 문제 목록을 파악할 때까지 범위를 좁히십시오. 이 프로세스에서 직접 따라 오므로 한 번에 너무 많이 변경하지 않으면 서 문제의 범위를 제한해야합니다.
숙련 된 임베디드 사람들은 당연한 디버깅을하는 경향이 있습니다 ... 잘 수행 할 수없는 사람들 대부분은 오래 가지 못합니다. 늦었 어)
플랫폼에 따라 대상에 대한 다양한 가시성으로 외부 시스템에서 개발 시스템의 코드로 작업하고 있습니다. 통제하에있는 경우 개발 시스템을 강요하여 대상 시스템에 대한 가시성을 높이십시오. 디버그 직렬 포트, 비트 뱅킹 디버그 출력, 유명한 깜박임 등을 사용하십시오. 확실히 오실로스코프를 사용하는 방법을 배우고 'scope와 핀 I / O를 사용하여 특정 기능이 언제 들어가고 나가는 지, ISR이 발생하는지 등을 확인하십시오. 나는 사람들이 적절한 JTAG 디버거 링크를 사용하는 방법을 설정 / 학습하지 않았기 때문에 문자 그대로 몇 년 이상 문자 그대로 필요 이상으로 어려움을 겪는 것을 보았다.
PC와 관련하여 어떤 리소스가 있는지 정확히 알고 있어야합니다. 데이터 시트를주의해서 읽으십시오. 당신이하려는 일의 자원 '비용'을 고려하십시오. 스택 공간을 마법의 가치로 채워서 스택 사용량을 추적하는 것과 같은 리소스 지향 디버깅 기법을 배웁니다.
PC와 임베디드 소프트웨어 모두 어느 정도의 디버깅 기술이 필요하지만 임베디드에서는 훨씬 더 중요합니다.