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.