不同场合用各自适合的东西,譬如我上家机械臂公司,手臂各关节是 DSP 控制无刷电机,然后底部使用的主机为 x86 平台,跑 RT-PREEMPT 补丁的 Linux 内核负责整个的路径规划、逆解、插补等,同时负责 UI 界面显示、网络通讯等事务,主机和各电机之间通过增强版的 RS485 通讯(支持广播、并发读写操作)。
以上,非常小粒度的实时控制使用 DSP/MCU 裸跑实现,稍微大些粒度的用 Linux 可以更加高效。(更小粒度的用 FPGA 实现。)
有的时候使用小系统,加了文件系统、网络、UI 之后,实时性不见得比 Linux 好,而且要造很多轮子,开发也不方便,用 Linux, 应用程序就可以跑实时任务,方便快捷。(譬如,让小系统支持 IPv6 会很麻烦。)
楼上说复杂的,我想说的是,系统的出现是为了简化编程的,譬如小系统自动帮我们调度任务,那么同样的原理,大的系统则是更大的简化(前提是在合适的场合)。
很多人不愿意用 Linux 主要是不熟悉该系统,其实,如果你也像我这样,日常生活、工作都使用 Linux 桌面系统的话,无需额外花时间学习,即可积累足够多的 Linux 经验。然而可惜的是,大多数人只图眼前方便,或是随大流,或是不愿意改变,顶多把 Linux 当一个开发工具(E.g. 那些用 Windows 调试 Linux 的朋友),错失宝贵财富。