
本帖最后由 丿灬幸灬 于 2018-11-5 11:17 编辑 / l8 L1 t: B& s" @# o- M {9 A/ n ; ~. p7 W) R! T1 }9 F% X Linux内核可以在没有MMU的情况下运行 从内核4.2开始Linux就被移植到STM32。让我们从头开始做一台STM32电脑! D$ p- q" _- I ![]() 描述3 a# F) S" c2 G+ @# g1 k l8 x uc-PC代表微控制器pc。它基于STM32F429IIT6,运行主流Linux 4.13.3,带有VGA显示端口,USB等,就像一台电脑。 : `1 p- p& E6 V 细节 uClinux不再激活。, L% l D7 v+ _$ T 主线Linux内核有一个CONFIG_MMU for ARM,已经移植到ARMV7-M,带有STM32、EFM32、LPC18xx的defconfig。尽管存在一些限制,但是这些MCUs可以运行与x86计算机相同的Linux内核!/ {- p' v" d; c: n' l4 R & Z6 c2 `8 H0 S7 P0 r 对于STM32F429来说,最激动人心的事情是现在几乎所有的外设都已经在主线内核中实现了,比如USART, ADC, DAC, pinctrl, LTDC, DCMI, USB, MII/RMII, I2C,还有详细的devicetree绑定。stm32429-eval。dts和stm32f429i-disco。dts就是很好的例子。. i1 ~4 G+ K" I! I3 m4 c 所以我选择STM32F429IIT6, lqfp-176 SOC,足够容纳:; A1 m ]0 y. q A- h3 N- G+ u 64 MB SDR SDRAM# W P* G0 z6 ?) p 128MB的SLC nand flash 10/100M以太网 640x480@60hz VGA输出 2个USB端口 1 SD卡插槽 1台摄像机(OV2640、OV7670等)% V3 ^) g0 s0 w( V" M , e: m) O2 x2 `( T0 k6 t3 o7 a* L 剩下的引脚不多了。 3 o9 h4 }3 x8 v: l 在内核4.13.3中,所有的相关驱动程序都被启用并修复了错误。内核略小于2MB,因此在其内部闪存中有XIP,核心驱动程序如USART、yaffs、framebuffer等。其他驱动程序如USB被制成模块,存储在nand闪存中。 只需插入VGA显示器和USB键盘,就可以享受busybox命令了。6 G& n4 H, P0 U, }1 z# } ![]() ![]() ![]() " _6 g2 P# g0 b* g) j2 k ![]() $ i6 @( o3 d9 D0 \ ![]() ![]() 6 v( b! T6 \! r; a ![]() 5 o: y1 C$ |& V) s3 u% y & O O; a1 S/ T4 E. Y 注意: 目前没有硬件浮点数支持。" R. H$ K. T/ P; g, s$ |0 I USB不接受低速设备,所以你可能需要无线USB键盘。: M# o( z; h( p 摄像机驱动程序太慢,可能会触发DMA底流错误。5 O9 i9 @6 T$ k) Q# S! B9 b. Y, Z 网络还没有完成。udhcpc无法工作,获得IP地址的唯一方法是在内核命令行中编写它。它也没有DNS。4 }9 P/ @. V) n BootLoader见GitHub2 P) K B' i5 R- m6 w- f/ x4 h* T 演示视频见bilibili 参考资料8 ], ?# Z1 a9 ]8 E# M 8 T* I' c! D F+ c: U, I/ @ 原文请见hackaday |
![]() |
学习学习 |
厉害,学习之 |
单片机跑 Linux 这种没有 MMU 的环境约束还是比较大的吧?我最近倒是在研究 PIC32MZ-DA 系列跑 Linux,那个芯片有 TLB MMU 和片内 32MB DDR2,感觉好像约束会小一点。 |