Phân phối linux nhúng nhỏ nhất?


19

Tôi muốn hỏi các chuyên gia ngoài kia .. Bản phân phối linux nhúng tốt nhất cho:

  • Bộ nhớ flash ~ 700Kb
  • Ram ~ 256Kb
  • Bộ xử lý: Vỏ não cao cấp M3 (ví dụ từ gia đình STM32 chẳng hạn)

Các mô-đun cần thiết: - Lõi hạt nhân - Bộ trình điều khiển cơ bản: USB / Mạng (cho WiFi - Không có AP, chỉ có máy khách, không bảo mật) / SPI / Uart / I2C

Đây có phải là tất cả có thể hoặc tôi đang mơ?

Ý tưởng là sử dụng CortexM3 cao cấp 5 đô la và không sử dụng bất kỳ bộ nhớ ngoài nào để tôi có thể tận hưởng trình điều khiển sẵn sàng cho SDIO / WiFi, v.v.

  • Tôi đã cập nhật câu hỏi với sự làm rõ trên WiFi. WiFi theo nghĩa là nó đơn giản, chạy của máy khách. Không có gì lạ mắt, có lẽ wep nếu tôi có thể phù hợp với nó.

  • Một cập nhật khác: Làm thế nào về uCLinux?

Câu trả lời:


26

Tôi muốn nói rằng bạn đang mơ. Vấn đề chính sẽ là RAM hạn chế.

Vào năm 2004, Eric Beerman đã quản lý để có được một nhân khởi động với 2,5 MB RAM , với rất nhiều chức năng bị loại bỏ.

Tuy nhiên, đó là trên x86 và bạn đang nói về ARM. Vì vậy, tôi đã cố gắng xây dựng hạt nhân ARM nhỏ nhất có thể, cho nền tảng 'đa năng' (một trong những đơn giản nhất). Tôi đã tắt tất cả các tùy chọn có thể định cấu hình, bao gồm các tùy chọn bạn đang tìm kiếm (USB, WiFi, SPI, I2C), để xem nó sẽ nhỏ đến mức nào. Bây giờ, tôi chỉ đề cập đến kernel ở đây và điều này không bao gồm bất kỳ thành phần không gian người dùng nào .

Tin tốt: nó sẽ phù hợp với đèn flash của bạn. Kết quả zImage là 383204 byte.

Tin xấu: với 256kB RAM, nó sẽ không thể khởi động:

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

Phân đoạn .text lớn hơn RAM có sẵn của bạn, vì vậy kernel không thể giải nén, hãy để một mình phân bổ bộ nhớ để khởi động, chứ đừng nói đến việc chạy bất cứ thứ gì hữu ích.

Một cách giải quyết khác là sử dụng hỗ trợ tại chỗ (CONFIG_XIP), nếu hệ thống của bạn hỗ trợ điều đó (nghĩa là, nó có thể tìm nạp các hướng dẫn trực tiếp từ Flash). Tuy nhiên, điều đó có nghĩa là hạt nhân của bạn cần phải nén không nén trong flash và 734kB> 700kB. Ngoài ra, các phần .data và .bss có tổng cộng 66kB, để lại 190kB cho tất cả mọi thứ khác (nghĩa là, tất cả các cấu trúc dữ liệu được phân bổ động trong kernel).

Đó chỉ là hạt nhân. Không có trình điều khiển bạn cần, hoặc bất kỳ không gian người dùng.

Vì vậy, vâng, bạn sẽ cần thêm một chút RAM.


1
Câu trả lời tuyệt vời .. Tôi ngạc nhiên khi thấy hạt nhân linux trần quá nặng .. Tôi có một câu hỏi tiếp theo .. Có bất kỳ trình bao bọc nào ngoài đó cho phép tôi sử dụng trình điều khiển linux với các hệ điều hành khác không? Điều tôi thích ở Linux là tính khả dụng của trình điều khiển .. Mỗi phần cứng tôi chạm vào đều có trình điều khiển linux và luôn luôn khó khăn khi chuyển những thứ này, lý do duy nhất tôi quan tâm đến Linux là các trình điều khiển thực sự, do đó là câu hỏi.
Frank

Chỉ cần một lưu ý về liên kết khởi động hạt nhân, tôi đã thấy trong các bài đăng sau đây của Eric rằng anh ấy đã quản lý để đưa hình ảnh hạt nhân nén lên 190K và không bị nén khoảng 360K vì vậy về mặt lý thuyết bạn có thể lắp nó vào flash của bạn không bị nén. Thông tin thêm: elinux.org/Linux_Tiny tuy nhiên tôi không biết tình trạng của dự án là gì.
Mihailo

5

IMO, bạn đang mơ. Đặc biệt với USB, mạng và 802.11 / wifi. Tôi chỉ không nghĩ rằng bạn có thể làm điều đó và M3 thực sự là một sự kéo dài.

OpenWRT là một trong những bản phân phối Linux nhỏ nhất và có thể nhúng nhất mà tôi biết để kết nối mạng và thật khó để có được dưới 2 MB, đặc biệt là có Wifi.

Hãy thử tìm kiếm các chip ARM cao cấp hơn nếu đó là những gì bạn thực sự muốn hoặc đi với Broadcom hoặc Atheros SoC hiện đang phổ biến trong các bộ định tuyến.


bạn rất có thể đúng, tuy nhiên tôi đã cập nhật câu hỏi với sự làm rõ trên WiFi .. Tôi sẽ không cần tất cả các giao thức, dchp / ip và ổ cắm cơ bản ..
Frank

4

Bạn có MMU trên bộ xử lý? Nếu bạn không muốn xem: http://www.uclinux.org/ sẽ cung cấp cho bạn kích thước hạt nhân nhỏ hơn nhiều so với đề cập. Nó hoạt động cho một số chip Atex CortexM3 vì vậy nó có thể hoạt động cho bạn. Tôi đã không sử dụng nó vì vậy đây chỉ là suy đoán. Doh, tôi vừa thấy câu hỏi đó đã được cập nhật - tốt nếu bạn không có MMU (mà bạn có thể không có), bạn không thể sử dụng kernel "bình thường" và bạn sẽ cần sử dụng ucLinux.


@mihalo cảm ơn bạn đã chỉ ra uclinux +1 cho điều đó. Tôi đã hỏi một câu hỏi về điều đó .. Đánh giá cao nếu bạn có thể giúp một tay ..
Frank

Thật không may, tôi không có nhiều kinh nghiệm với điều này, tôi đã xem xét các cổng ucLinux và tất cả các bo mạch được đề cập đều có RAM ngoài. Hạt nhân nhỏ nhất (không nén) mà tôi thấy là dành cho ADI Blackfin - thứ gì đó giống như 400KB nhưng đó không phải là ARM và ARM có thể lớn hơn đáng kể. Đối với bộ vi xử lý ARM của Atmels, nó có dung lượng khoảng 1,5 MB và tất cả đều sử dụng RAM ngoài.
Mihailo

Mihailo cảm ơn vì đã dành thời gian để nhìn xung quanh ..
Frank

2

Bạn có thể muốn coi NuttX như một giải pháp thay thế nếu bạn thực sự muốn tuân thủ POSIX trong một nền tảng nhỏ, không phải MMU.


3
Điều đó có vẻ khá gọn gàng, nhưng nó có thể có giá trị bao gồm một số ưu / nhược điểm so với Linux để làm cho nó trở thành một câu trả lời đầy đủ hơn.
PeterJ

2

Tôi không nhớ chi tiết cụ thể, nhưng có một công ty sản xuất bo mạch có STM32F4 chạy uCLinux, phần mềm có thể tải xuống, nhưng chúng có cả RAM ngoài và flash trên các bo mạch đó.

Một lưu ý nữa là giá rất cao nên bạn nên mua Pi hoặc Pine64, trừ khi bạn muốn đây là một trải nghiệm học tập. Công ty chúng tôi đã xem xét và xem xét chi phí phát triển và quyết định như vậy nếu chúng tôi chạy bất cứ thứ gì trên Linux nhúng bằng stm32f4 là không khả thi về mặt kinh tế, chỉ cần tính chi phí cho các bộ phận.


Bài viết tuyệt vời bao gồm chi phí BOM để chạy uClinux trên M3 / M4 - Electronicdesign.com/embedded/
mẹo

0

uCLinux có thể sẽ hoạt động. Tuy nhiên, bạn sẽ không có bảo vệ bộ nhớ trên hệ thống vì bạn không có MMU. Điều này có nghĩa là bất kỳ sự cố trong bất kỳ ứng dụng nào cũng có thể làm sập toàn bộ hệ thống. Bạn cũng có thể gặp phải các vấn đề phân mảnh bộ nhớ mà không cần MMU. Tại sao không nhìn vào một trong những TI Sitaras? Chúng vẫn còn khá rẻ và bạn có thể chạy Linux đầy đủ trên chúng sẽ linh hoạt hơn nhiều.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.