가장 작은 임베디드 리눅스 배포판?


19

나는 전문가들에게 물어 보는 것을 좋아한다 .. 최고의 임베디드 리눅스 배포판은 무엇인가?

  • 플래시 메모리 ~ 700Kb
  • 램 ~ 256Kb
  • 프로세서 : 하이 엔드 암 피질 M3 (예 : STM32 제품군의 제품)

필수 모듈 :-커널 코어-기본 드라이버 세트 : USB / 네트워킹 (WiFi 용-AP 없음, 클라이언트 만, 보안 없음) / SPI / Uart / I2C

이것이 가능합니까 아니면 꿈을 꾸고 있습니까?

아이디어는 5 $ 하이 엔드 CortexM3을 사용하고 외부 메모리를 사용하지 않으므로 SDIO / WiFi 등을위한 준비된 드라이버를 즐길 수 있습니다.

  • WiFi에서 명확하게 질문을 업데이트했습니다. WiFi는 그것이 단순한 밀 클라이언트 실행이라는 의미에서 WiFi입니다. 공상이 없으면 어쩌면 울 수도 있습니다.

  • 또 다른 업데이트 : uCLinux는 어떻습니까?

답변:


26

당신이 꿈꾸고 있다고 말하고 싶습니다. 주요 문제는 제한된 RAM입니다.

2004 년 Eric Beiderman 은 2.5MB의 RAM으로 커널 부팅 을했으며 많은 기능이 제거되었습니다.

그러나 그것은 x86에 있었고 ARM에 대해 이야기하고 있습니다. 그래서 나는 '다목적'플랫폼 (가장 간단한 것 중 하나)을 위해 가능한 가장 작은 ARM 커널을 만들려고했습니다. 나는 당신이 찾고있는 옵션 (USB, WiFi, SPI, I2C)을 포함하여 구성 가능한 모든 옵션을 꺼서 얼마나 작은 지 확인했습니다. 지금, 나는 여기 커널 말하는 겁니다, 이것은 포함하지 않는 모든 사용자 공간 구성 요소를.

좋은 소식은 플래시에 잘 맞는다는 것입니다. 결과 zImage는 383204 바이트입니다.

나쁜 소식 : 256kB의 RAM으로 부팅 할 수 없습니다.

$ size obj/vmlinux
  text     data     bss     dec     hex filename
734580    51360   14944  800884   c3874 obj/vmlinux

.text 세그먼트는 사용 가능한 RAM보다 크므로 커널은 압축을 풀 수 없으며 부팅 할 메모리를 할당 할뿐만 아니라 유용한 것을 실행하지 않아도됩니다.

시스템에서 지원하는 경우 (즉, Flash에서 직접 명령을 페치 할 수있는 경우) 현장에서 실행 지원 (CONFIG_XIP)을 사용하는 것이 한 가지 해결 방법입니다. 그러나 이는 커널이 비 압축 플래시에 적합해야하며 734kB> 700kB 여야한다는 것을 의미합니다. 또한 .data 및 .bss 섹션은 총 66kB이며 다른 모든 것 (즉, 커널에서 동적으로 할당 된 모든 데이터 구조)에 대해서는 190kB를 남겨 둡니다.

그것은 단지 커널입니다. 필요한 드라이버 나 사용자 공간이 없으면

예, 약간 더 많은 RAM이 필요합니다.


1
대단한 답변 .. 베어 리눅스 커널이 무겁다는 것을 알고 놀랐습니다. 후속 질문이 있습니다. 다른 OS에서 리눅스 드라이버를 사용할 수있는 래퍼가 있습니까? 내가 리눅스에 대해 좋아하는 것은 드라이버 가용성이다. 내가 만지는 모든 단일 하드웨어는 리눅스 드라이버를 가지고 있으며, 이것들을 포팅하는 것은 항상 고통 스럽다. 리눅스에 관심이있는 유일한 이유는 드라이버이기 때문에 질문이다.
Frank

커널 부팅 링크에 대한 참고 사항 인 Eric의 다음 게시물에서 압축 된 커널 이미지를 190K로 압축하고 약 360K로 압축 해제하여 이론적으로 플래시 압축되지 않은 플래시에 맞출 수 있음을 알았습니다. 더 많은 정보 : elinux.org/Linux_Tiny 그러나 나는 프로젝트의 상태가 무엇인지 모른다.
Mihailo

5

IMO, 당신은 꿈꾸고 있습니다. 특히 USB, 네트워킹 및 802.11 / wifi의 경우. 나는 단지 당신이 그렇게 할 수 있다고 생각하지 않으며 M3는 정말 스트레칭입니다.

OpenWRT는 내가 네트워킹에 대해 알고있는 가장 작고 내장 가능한 Linux 배포판 중 하나이며 Wifi를 사용하는 경우 2MB 미만으로 얻기가 어렵습니다.

현재 라우터에서 일반적으로 사용되는 Broadcom 또는 Atheros SoC와 함께 원하거나 고급 ARM 칩을 살펴보십시오.


당신은 옳을지도 모르지만 WiFi에 대한 설명으로 질문을 업데이트했습니다. 모든 프로토콜, dchp / ip 및 기본 소켓이 필요하지는 않습니다.
Frank

4

프로세서에 MMU가 있습니까? http://www.uclinux.org/ 를보고 싶지 않다면 언급 한 것보다 훨씬 작은 커널 크기를 제공해야합니다. 일부 CortexM3 Atmel 칩에서 작동하므로 사용자에게 적합 할 수 있습니다. 나는 그것을 사용하지 않았으므로 이것은 단지 추론입니다. Doh, 방금 질문이 업데이트 된 것을 보았습니다. MMU가 없다면 ( "아마도 그렇지 않습니다") "정상"커널을 사용할 수없고 ucLinux를 사용해야합니다.


@mihalo uclinux +1을 지적 해 주셔서 감사합니다. 나는 그것에 대해 질문을했습니다. 손을 빌려줄 수 있는지 감사하십시오.
Frank

불행히도 나는 이것에 대해 많은 경험을 가지고 있지 않습니다. 나는 ucLinux 포트를 보았고 거기에 언급 된 모든 보드에는 외부 RAM이 있습니다. 내가 본 가장 작은 커널 (압축되지 않은)은 ADI Blackfin (400KB와 같지만 ARM이 아니고 ARM의 경우 훨씬 더 클 수 있음)이었습니다. Atmels ARM 마이크로 프로세서의 경우 약 1.5MB였으며 모두 외부 RAM을 사용했습니다.
Mihailo

시간을 내 주셔서 감사합니다 ..
Frank

2

MMU가 아닌 소규모 플랫폼에서 POSIX 준수를 원할 경우 NuttX 를 대안 으로 고려할 수 있습니다 .


3
꽤 깔끔해 보이지만 Linux에 비해 장단점을 포함시켜 더 완벽한 답변을 얻을 가치가 있습니다.
PeterJ

2

구체적인 내용은 기억 나지 않지만 uCLinux를 실행하는 STM32F4 보드를 만드는 회사가 있으며 소프트웨어를 다운로드 할 수 있지만 해당 보드에는 외부 RAM과 플래시가 모두 있습니다.

참고로 가격이 너무 높아서 학습 경험으로 원하지 않는 한 Pi 또는 Pine64를 얻는 것이 좋습니다. 우리 회사는이를 조사하고 개발 비용을 고려하여 stm32f4를 사용하여 임베디드 Linux에서 무엇이든 실행하면 경제적으로 불가능하며 부품 비용 만 계산하기로 결정했습니다.


- BOM이 포함되어 우수한 기사는 M3 / M4에 uClinux의 실행을위한 비용 electronicdesign.com/embedded/...
스콧 Seidman

0

아마도 uCLinux가 작동 할 것입니다. 그러나 MMU가 없으므로 시스템에 대한 메모리 보호 기능이 없습니다. 이는 모든 응용 프로그램의 충돌로 인해 전체 시스템이 중단 될 수 있음을 의미합니다. MMU없이 메모리 조각화 문제가 발생할 수도 있습니다. TI Sitaras 중 하나를 보지 않겠습니까? 그것들은 여전히 ​​싸기 때문에 훨씬 더 융통성이있는 완전한 Linux를 실행할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.