2010-04-20 5 views
10

임베디드 리눅스는 데스크톱 리눅스로 시작합니다. & 임베디드 시스템에는 필요하지 않은 부품이 있습니다 (실제로는 사실입니까?) 반면 eCos는 임베디드 시스템을 기반으로 설계되었습니다.임베디드 Linux 또는 eCos?

이제 ARM 프로세서, 아마도 ARM 7을 가정 해 봅시다. 성능이 차이를 낳습니까? 사실, 우리는 하루에 최대 500 회의 매우 낮은 부하 시스템을 사용합니다.

다른 장점 (또는 FreeRTOS 등)보다 장점이 있습니까? 안정성, 성숙도, 성능, 개발 도구, 다른 무엇?

제가 생각할 수있는 것은 특정입니다. 다른 O/S로 옮기지 않을 것입니다. 그렇다면 내가 임베디드 리눅스로 간다면, 허용 할 o/s 추상화 레이어가 필요 없습니다. 내가 호스트 (데스크탑 리눅스 박스)에서 단위 테스트를 수행합니다.

의견이나 의견이 있으십니까? 감사.

+3

ARM7을 사용하는 경우 MMU가 없을 수 있습니다. 그러므로 ucLinux가 필요합니다. Linux는 가상 메모리를 뺀 것입니다. –

+0

투표가 너무 광범위하게 닫힙니다. 관련 항목 : http://stackoverflow.com/questions/25871579/what-is-the-difference-between-rtos-and-embedded-linux –

답변

9

Linux를 설치 한 모든 장치는 처음부터 시작되었으며 일부 배포판에서 제외되었습니다.

eCos와 Linux는 서로 다른 목표를 가지고 있습니다. Linux는 완전한 기능을 갖춘 Unix 계열 시스템으로 의도되었으며 따라서 최소 시스템 요구 사항에 대해서는 그리 우려하지 않습니다. eCos는 리소스가 제한적인 시스템을 위해 설계된 실시간 운영 체제입니다. 두 OS 간에는 많은 부분이 겹쳐져 있고 많은 상황에서 모두 똑같이 잘 작동합니다.

내 경험에 비추어 볼 때 시스템에 리소스가 있고 요구 사항이 중요하지 않은 경우 Linux를 사용하면 개발 속도가 빨라집니다. RTOS 개발자보다 유능한 리눅스 개발자를 찾는 것이 더 쉽고, 도구가 저렴하고, 프로세스가 서로 보호되며, 실행중인 시스템에 대한 가시성이 더 좋습니다.

eCos 대신 (더 나은 IMHO) RTEMS (http://www.rtems.com). 내가 확인한 시간이 오래되었고, eCos보다 더 많은 아키텍처를 지원했습니다. 또한 PC BSP가 있으며 에뮬레이션을 위해 qemu에서 실행됩니다.

4

임베디드 Linux == 모든 경우의 99 %에서 Linux. 커널을 다르게 구성하면됩니다.

성능상의 가장 큰 차이점은 eCos를 사용하면 구현/구성에 따라 예상되는 응답 시간을 가질 수 있으며 Linux에서는 인터럽트 컨트롤러가 필요하다는 것입니다.

Linux는 eCos보다 훨씬 더 많은 팬 기반을 가지고 있으므로 개발에 더 많은 도움을 주며 다양한 CPU를 지원합니다. 또한 원하는 드라이버에 따라 Linux를 실행하는 PC에서 프로그램을 컴파일하고 실행할 수 있습니다.

리눅스는 시스템의 고 가용성을 유지하기 위해 잠금/교착 상태를 감지하고 자동 응답/재부팅을 보낼 수 있습니다.

9

Linux를 ARM7 IMO에 적용 할 때 실질적인 이점은 없습니다. ARM7에는 MMU가 없으며 메모리 보호가 Linux와 같은 OS를 사용하는 주된 이유입니다. uClinux는 MMU가없는 타겟에서 실행되지만 Linux를 사용하는 가장 중요한 이유 중 하나를 잃어 버렸고 여전히 큰 메모리 리소스가 필요합니다 (4M 플래시, 16M RAM은 합당한 최소량입니다).

많은 ARM7 장치에는 많은 메모리를 연결하기위한 외부 메모리 버스가 없으며 칩 플래시 및 RAM은 일반적으로 장치에 따라 32K에서 1M까지의 범위를 갖습니다.

Linux는 본질적으로 "실시간"이 아닙니다.실시간 기능을 위해 실시간 커널은 종종 유휴 작업으로 Linux가 실행되는 실시간 커널 또는 별도의 가상 시스템으로 기능이있는 대상과 결합됩니다. 따라서 외부 이벤트에 대한 결정적이고 빠른 응답이 필요한 경우 eCOS와 같은 RTOS가 필요합니다.

eCOS는 대부분의 상업용 제품에 필적하는 애드온 기능 및 장치 지원의 큰 생태계를 가지고 있다는 점에서 훌륭합니다. 그러나 FreeRTOS와 같은 것은 "끌어 올리기"쉽지만 스레드 스케줄러와 프로세스 간 통신 메커니즘을 제공하지는 않습니다. 파일 시스템이나 TCP/IP 같은 것들은 써드 파티에서 공급받을 필요가있다. (그렇다고하더라도 임베디드 시스템에 적합한 작고 자유로운 솔루션이긴하지만).

FreeRTOS 또는 uC/OS-III와 같은 간단한 커널을 사용하면 너무 많은 시간을 낭비하지 않으므로 다음 번에 다른 것을 사용할 때 투자가 억제되지 않습니다. 반면에 리눅스는 다음에 더 작고 좁게 목표로 삼은 것을 사용하지 못하게 할 수 있으며 후속 프로젝트를 둘러 보면서 OS를 선택하는 데 필요한 것보다 훨씬 많은 비용이 발생할 수 있습니다.