아두이노, AVR 같은 Microcontroller로 부품(ex. 온습도 센서 등등..)을 제어할 때 OS는 필요없다. 대신 Microcontroller가 부품을 제어할 수 있는 코드를 작성해야하며, 이 코드는 Microcontroller에 업로드 해야 한다. 이 코드는 Microcontroller내부의 어떤 부분이 부품의 어떤 부분을 제어할지에 대한 내용을 담고 있다.
OS는 하드웨어와 응용프로그램 사이에서 매개역할을 한다.
Operation system is a layer of abstraction between running application and hardware
Microcontroller는 OS가 필요없다.
When you develop with microcontroller. you don'tuse an OS. you just write firmware that gets directly executed by the microcontroller
OS 기반으로 부품을 제어하는 것이 필요한 이유!
마이크로 컨트롤러로 제어하는것은이 간단해보이지만, 마이크로컨트롤러의 종류 또는 제어할 부품의 종류, 개수가 많아진다면 매번 코드를 변경해야한다. 이런 경우에 대응이 어렵다.
OS기반으로 부품을 제어하면 이식성이 좋다는 장점이 있다. 예를 들어서, 리눅스 OS가 설치된 프로세서로 부품을 제어한다고 하자. 프로세서를 변경하고 싶다면, 리눅스 OS를 사용하는 여러 프로세서 중 선택하면 된다(변경할 부분이 아예 없는 것이 아니다!). 마이크로 컨트롤러로 부품을 제어하는 경우에 다른 종류의 마이크로 컨트롤러를 선택하고 싶다면, 제어 코드를 변경된 마이크로컨트롤러의 내부 구조에 맞게 변경해야 한다.
프로세서와 OS기반으로 부품을 제어하는 경우, 프로세서가 바뀌더라도 변경해야할 부분이 마이크로컨트롤러에 비해 상대적으로 적다.
Linux traditionally used kernel modules for every piece of supported hardware in order to provide abostraction layer
Linux OS는 커널모듈이라는 개념을 이용하여 다양한 부품을 사용자가 쉽게 제어할 수 있도록 하였다. 하지만 리눅스 OS를 사용하는 프로세서들이 다양하게 개발되었다. 이런 상황에 대응하기 위해 커널모듈뿐만 아니라, 추가적으로 다른 개념이 필요하게 되엇다.
Device Tree란?
Device tree is bascillay a way to describe the mapping and purpose of physical hardware to the kernel.
Device Tree는 커널과 HW 사이에 중간 다리역할을 한다. DTS(Device Tree Script), DTB(Binary), DTC(Compiler)라는 용어가 있다.
DTS는 사용자가 작성한 코드이다. DTC가 DTS 파일을 컴파일하면 DTB가 나온다.
사용자는 제어할 부품에 맞추어, 프로세서의 내부 핀의 용도를 어떻게 설정할지를 DTS 파일에 작성한다.
OS기반 프로세서로 부품을 제어할 때는 커널모듈 개념 뿐만아니라 Device Tree 개념도 알아야 한다.
Device Tree의 특징
Device Tree는 커널모듈을 작성하는 것보다 쉽지만, 그것도 상대적으로 쉽다는 것이다.
Device Tree 내용은 프로세서가 부팅할 때에만 반영된다. 따라서 프로세서 내부 핀 설정을 변경하였다면 재부팅이 필요하다.
Device Tree 내용은 실질적으로 커널 영역에서 실행되는 것이기 때문에 사용자가 직접 프로세서 내부 핀에 접근하는 것이 쉽지 않다.
위와 같은 특징이 있기 때문에 프로세서 보드 개발 회사에서는 개발자가 Deivce Tree에 대한 접근을 용이하게 하도록 자체적인 개발 도구를 지원한다. 예를 들어 Beaglebone Board 경우, Caper, Universal IO 라는 개념이 있다.
마이크로 컨트롤러로 부품을 제어하는 것보다, 더 다양한 프로세서와 부품들을 제어하는 상황에 대응하기 위해 커널모듈과 Device tree라는 개념이 나왔다. 부품을 제어하기 위해 마이크로컨트롤러와 프로세서 중 어떤 것이 쉬운지 결정할 수는 없다. 개발 상황에 맞추어서 사용자가 결정해야할 것이다.
'디지털보드' 카테고리의 다른 글
프로세서의 메모리 맵 그리고 디바이스 트리 (0) | 2023.01.14 |
---|---|
프로세서에 포함된 UART 모듈 에 대한 이해 (0) | 2023.01.11 |
I2C 칩 연결 확인 (0) | 2022.12.23 |