答案当然是可以,只不过需要进行多处适配,这些坑就是由BSP工程师来踩。
下面就由高到低介绍下不同等效主频下启动linux的效果。
1. 24MHz
几个月前,我抽空从零开始diy了一块简单的cortex-a8水果派(
基于Cortex-A8内核的荔枝Pi_Cortex-A8开发板-打造工程师的专属众筹平台-电子发烧友网,
荔枝派概览 - [ Lichee Pi 荔枝派 全流程指南 ] - 看云),从板级硬件设计,产测,到boot适配,linux,安卓适配等的坑都踩了一遍。
过程中为了调试DDR以及测试在低主频下的功耗情况,就曾把ddr时钟和主频降到了最低的24M.
在24M ddr时钟下我甚至成功用入门级100M带宽示波器生成了眼图…
实测效果是,基本不用做太多适配,系统就能起来,只是速度慢了很多,原本在1g主频下20s不到启动的,现在需要超过五分钟(具体时间忘了,记得的另一个数据是96M时需要122s),而且由于时钟太慢,800*480的屏幕刷新不过来,出现了严重的图像的弹跳/抖动现象,已经无法保证屏幕时序了…不过估计在128*64的点阵屏上还可以 逃(
其实这个感觉有点像关掉icache/dcache的效果,关掉之后连串口终端的回显都不利索了…
看上去在24M时结果并没有什么特别的,只是简单的慢了小几十倍而已…其实这基本就是286的主频了,当年286跑dos不就很流畅吗?
为啥是24M,不能更低了吗?因为我用的芯片的外置晶振就是24M,主频是由它倍频上去,而无法分频…
2. 10KHz
相比前面的降两个数量级,这次直接降三个数量级看看,某些童鞋应该已经猜到这个等效主频是什么情况下的了:
Linux on an 8-bit micro?对的,就是在本身主频只有24M的八位avr单片机上跑arm模拟器来启动linux,得到的等效主频不到10KHz,看看作者自己的评价:
uARM is certainly no speed demon. It takes about 2 hours to boot to bash prompt ("init=/bin/bash" kernel command line). Then 4 more hours to boot up the entire Ubuntu ("exec init" and then login). Starting X takes a lot longer. The effective emulated CPU speed is about 6.5KHz, which is on par with what you'd expect emulating a 32-bit CPU & MMU on a measly 8-bit micro. Curiously enough, once booted, the system is somewhat usable. You can type a command and get a reply within a minute. That is to say that you can, in fact, use it. I used it to day to format an SD card, for example.
作者博客里还有一些在单片机上写的模拟器,也挺有意思,可以看看。
所以到此我们对于电脑卡有了新的理解,也可以了解到做好系统适配,再慢的u都能跑起来。
因此再看题主的问题就不会觉得有什么奇怪的了。
3. <5Hz
再次降三个数量级,直接到题主的目标频率。
这个是我参考前面的数据估算的等效主频,权当yy吧。
多数人都知道32/64位cpu,了解dos时代的16位cpu,听过八位的单片机,少数人也许也知道更低成本的四位单片机(只能用汇编编程),但要实现数Hz的等效主频,这些都还太快…
其实在dos时代,工控领域还活跃着一朵奇葩: 一位机,以MC14500B为代表。
MC14500B - Wiki自身主频是100KHz,再加上只有八位机八分之一的带宽,如果在这个一位机上跑avr模拟器,再跑arm模拟器,那等效主频绝对在5Hz以内。
真跑起来的话,可能就需要小半年才跑到init,快一年到login,若干年来startx...
4. mHz
编不下去了…mHz的话,应该MC的红石电路可以吧!那时可能要用一辈子去看linux启动了…
当然不跑模拟器的话,也许能跑到和一位机比肩的速度呢!
5.
其实计算机的发展就是从最开始几十Hz的继电器开始的,把我的答案倒回去看就是计算机发展史啊!
在这个多数人认为是大开脑洞的问题下,却正是半个多世纪前科学家们实际面临的问题,阿波罗登月时代的常规内存甚至不到1KB,就靠这种容量和主频的数字系统(这时都没有真正意义上的cpu),却能够完成登月任务。相比而言,现在程序员们做的压力测试是不是弱爆了…
所以那个时代的程序员多数可以被称为计算机科学家,而现在的程序员多数只能被称为程序员吧 逃 (
---
脑洞风的问题回答很受知乎欢迎呢,被编辑推荐破两百赞了~
就像评论里说的,我不是大V,而是个实战派的自由职业者,不会有太多时间答题,但实战干货还是挺多的,基本上想得到的产品我都能实现。
我也没有时间整个微信公众号什么的,这里就不放二维码了 /斜眼笑
不过业余时间我还是抽空搞了个开源的荔枝派,想交流 嵌入式、IC设计、射频、工业设计、前后端、DL/RL、EA、天文、军工、Lowifi等的朋友可以来本人大水群 荔枝派DIY交流群573832310 来水水。