Rüya gördüğünüzü söyleyebilirim. Ana sorun sınırlı RAM olacaktır.
2004 yılında Eric Beiderman RAM 2,5 MB boyuta kadarki bir çekirdek önyükleme başardı bir ile, çok kaldırılır işlevsellik.
Ancak, bu x86'da ve ARM'den bahsediyorsunuz. Bu yüzden 'çok yönlü' platform (en basitlerinden biri) için mümkün olan en küçük ARM çekirdeğini oluşturmaya çalıştım. Ne kadar küçük olacağını görmek için aradığınızlar (USB, WiFi, SPI, I2C) dahil olmak üzere tüm yapılandırılabilir seçenekleri kapattım . Şimdi, buradaki çekirdeğe atıfta bulunuyorum ve bu herhangi bir kullanıcı alanı bileşeni içermiyor .
İyi haber: flaşınıza sığacak. Ortaya çıkan zImage 383204 bayttır.
Kötü haber: 256kB RAM ile önyükleme yapamaz:
$ size obj/vmlinux
text data bss dec hex filename
734580 51360 14944 800884 c3874 obj/vmlinux
.Text segmenti kullanılabilir RAM'inizden daha büyüktür, bu nedenle çekirdek, yararlı bir şey çalıştırmasına izin vermek yerine, önyükleme için bellek ayıramaz.
Çözümlerden biri, sisteminiz bunu destekliyorsa yerinde yürütme desteğini (CONFIG_XIP) kullanmak olacaktır (yani, talimatları doğrudan Flash'tan alabilir). Ancak bu, çekirdeğinizin sıkıştırılmamış flaşa ve 734kB> 700kB'ye sığması gerektiği anlamına gelir. Ayrıca, .data ve .bss bölümleri toplam 66kB olup, diğer her şey için (yani, çekirdekteki dinamik olarak tahsis edilen tüm veri yapıları) 190kB'ye dayanır.
Bu sadece çekirdek. İhtiyacınız olan sürücüler veya herhangi bir kullanıcı alanı olmadan.
Yani, evet, biraz daha fazla RAM'e ihtiyacınız olacak.