임베디드 리눅스 개발자가 알아야 할 것을 좁게 보면
넓게 보면
가 있다.
임베디드 리눅스 개발을 시작하면 바로 디바이스 드라이버 업무를 맡는 경우가 많다. 업무 프로세스나 회사 규모에 따라 디라이버 개발 범위가 다르다
디바이스 드라이버의 시나리오와 제어하는 하드웨어의 종류는 다양하지만 다음 내용 정도는 알아야 한다
개발에 투입되면 자신이 작성한 디바이스 드라이버 코드보다 다른 사람이 작성하는 코드를 읽을 가능성이 높다. 따라서 디바이스 드라이버 코드를 빨리 읽고 이해하는 능력을 키우는 것도 중요하다.
디바이스 드라이버는 리눅스 커널에서 제공하는 함수로 구성돼 있다. 호출한 함수의 동작 방식을 알려면 자연히 리눅스 커널 코드를 분석할 수 밖에 없다.
디바이스 드라이버를 개발하는 과정은 코드를 입력해 드라이버 구현하는 데 끝나지 않고 인증 테스트를 부서를 통해 안정화 테스트를 거친다. 이 과정에서 다양한 버그나 문제 증상이 리포트된다. 이 문제를 해결하기 위해서는 리눅스 커널을 잘 알아야한다.
리눅스 커널을 조금 깊게 가다보면 어셈블리 코드를 만날 수 밖에 없다.
리눅스 커널의 핵심 동작은 CPU 아키텍처와 연관된 부분이 많아 리눅스 커널의 핵심 개념들은 대부분 어셈블리 언어로 구현돼 있다.
핵심기능
처음 리눅스를 배울 떄 무리해서 CPU 아키텍처의 세부 동작 원리와 어셈블리 코드를 공부할 필요는 없다. 리눅스 시스템과 커널 로그, ftrace에 친숙해지는 것이 먼저이다.
하지만 리눅스 커널을 좀 더 깊게 공부하고자 하면 CPU 아키텍처에 대해 다음과 같은 것을 알아야 한다.
임베디드 리눅스 개발을 할 때는 빌드 스크립트와 Git과 형상 관리를 기본적으로 알아둘 필요가 있다.
빌드 스트립트를 잘 이해하고 Git을 잘 다루면 효율적으로 개발할 수 있다. 다른 업체가 개발한 드라이버나 응용 프로그램을 현제 사용 중인 소스 트리에 추가 해야 할 때가 있다. 이때 빌드 스크립트와 빌드 구조를 잘 파악하면 업무를 더 빨리 끝내 수 있다. Git은 소프트웨어 개발에서 소프트웨어 번저 관리 툴로 아주 많이 사용된다. 대부분의 개발자들이 수정한 코드는 Git 명령어를 사용한 패치와 포멧으로 관리한다.
하지만 이 주제에 너무 많은 시간을 사용할 필요는 없도 중간 이상 정도의 실력만 갖추면 된다