【转贴】Linux如何运行于8位AVR微控制器?

北朝旧贴 | 钟利时 | 8/15/2020 | 共 9243 字 | 编辑本页

钟利时 于 2018-2-27 19:33:41 发表了:

本帖最后由 钟利时 于 2018-2-27 19:38 编辑

此文可以作为临高未来复刻计算机的一个参考。(我是跪着看完的)

Linux 如何运行于 8 位 AVR 微控制器?

作者:德米特里·格林伯格

更新记录 2

太平洋夏令时(PDT),2012 年 4 月 3 日凌晨 1 点:上传了新的源代码存档;使用内存的 FPM(Fast Page

Mode,快页模式)模式和修改后的 i-cache(指令缓存)配置文件加快了仿真器频率(6.5KHz->10KHz);更新了移植指南,包括内核镜像、新的更小的 ramdisk(虚拟磁盘)和新的完整镜像。

更新记录 1

太平洋夏令时(PDT),2012 年 3 月 29 日晚 19 点:上传了新的源代码存档;修改了 Makefile,并且现在包含了一个移植指南,它可以帮助您将它移植到其他的开发板或 CPU 中。

222256.jpg(28.79 KB, 下载次数: 0)

2018-2-27 19:27 上传

简介

我们经常可以看到初学者在微控制器论坛中询问他们是否可以在他们微不足道的小的 8 位微机中运行 Linux。这些问题的结果通常是带来笑声。我们也经常看到,在 Linux 论坛中,询问 Linux 运行的最低要求是什么。常见的答案是 Linux 需要一个 32 位架构和一个 MMU(存储器管理单元),并至少 1MB 的 RAM 来满足内核的需求。本项旨在(并且成功)粉碎这些概念。下图中您所看到的开发板基于 ATmega1284P。我还制作了一块基于 ATmega644a 的开发板,也同样获得了成功。该开发板没有使用其他处理器,启动 Linuxx

2.6.34 内核。事实上,它甚至可以运行一个完整的 Ubuntu 栈,包括 X(如果你有时间等它启动)和 gnome。

RAM(随即存取存储器)

是的,没错,完整的 Linux 安装需要数兆字节的 RAM 和 32 位带有 MMU 的 CPU。本项目拥有这一切。首先,让我们访问 RAM。正如您所看到的,在电路中有一块古董级的 30 引脚 SIMM 内存模块。这些是基于 80286 的 PC 曾经使用的。它通过接口和 ATmega 连接,我写代码来访问它并按照规格刷新它(SDRAM 需要恒定速率刷新以避免丢失数据)。它到底有多快呢?刷新中断每 62ms 发生一次,占用时间 1.5ms,因此占用 3%以下的 CPU。访问 RAM,为了便于编程,一次访问一个字节。这样产生的最大带宽约为 300KBps。

222257.jpg(28.54 KB, 下载次数: 0)

2018-2-27 19:27 上传

存储

对于 RAM 需要工作在休眠状态,我们有两件事要处理。存储并不是太难解决的问题。使用 SPI 可以十分容易的与 SD 卡交互,我的项目中做到了这一点。一个 1GB 的 SD 卡可以工作的很好,虽然 512MB 就已经满足这一特殊的文件系统(Ubuntu 夏

Jaunty)。ATmega 拥有一个硬件 SPI 模块,但无论出于何种原因,它工作的不是十分顺畅,因此我将这个接口进行位拆裂。它仍然足够块——大约 200KBps。这对项目来说还非常有意义——它能够在有足够管脚的任何微控制器上实现,而不用使用其他硬件模块。

222258.jpg(35.29 KB, 下载次数: 0)

2018-2-27 19:27 上传

CPU(中央处理单元)

所有剩下的就是那个 32 位 CPU 和 MMU 需求。不过 AVR 没有 MMU,并且它是 8 位的。为了克服这一困难,我编写了一款 ARM 仿真器。ARM 是我最熟悉的架构,并且它足够简单,可以让我很舒服的为它编写出一个仿真器。为什么要编写一个,而不是移植一个呢?好吧,移植别人的代码是没有乐趣的,再加上我看到没有将仿真器轻松移植到 8 位设备上的书面资料。原因之一:AVR 编译器坚持 16 位处理整数将会给你带来麻烦,如简单的“(1<<20)”,产生 0。你需要用“1UL<<20”。不必要的说,困扰其他人的未知基本代码寻遍所有的地方,整数都被假定并将会失败,这将是一个灾难。另外,我想用这个机会编写一款很好的模块化 ARM 仿真器。所以我付诸行动。

其他功能

电路板通过一个串行端口和真实世界进行通信。目前,它通过串行端口连接到我 PC 运行的 minicom 上,但是它可测的替代连接是连接到电路上的一个键盘和一个字符 LCD,可以使其完全独立。电路板上还有两个 LED。它们指示 SD 卡的访问情况。一个代表读操作,一个代表写操作。电路板上还有一个按钮。当按下并按住 1 秒时它将使串行端口脱离仿真的 CPU 的当前有效速度。AVR 的主频是 24MHz(超过原有 20MHz 的轻微超频)。

它的速度有多快?

uARM 肯定没有速率守护进程。它花了大约 2 个小时启动到 BASH 提示符("init=/bin/bash"内核命令行)。然后用 4 个多小时启动整个 Ubuntu("exec)

init"然后登陆)。启动 X 将消耗更长时间。有效的仿真 CPU 速度约为 6.5KHz,这与你期望的在一个可怜的 8 位微控制器上仿真一个 32 位 CPU 和 MMU 是同等的水平。奇怪的是,一旦启动,该系统是有些可用的。您可以输入一个命令,并在一分钟之内得到答复。也就是说实际上你是可以使用它的。比如,今天我还用它来格式化我的 SD 卡。这绝对不是最快的,但我觉得它可能是最便宜、最慢、最简单的手工组装、最低的部件数量以及最低端的 LinuxU

PC。电路板是使用导线手工焊接的,甚至没有使用印刷电路板(PCB)的必要。

仿真器的细节?

仿真器是相当模块化的,允许它随意扩展仿真其他 SoC(片上系统)和硬件配置。仿真的 CPU 是 ARMv5TE。前一段时间,我开始进行支持 ARMv6 的工作,但是一直没有完成(从代码中可以看出来),因为不是很需要。仿真的 SoC 是 PXA255。由于模块化的设计,你可以替换 SoC.c 文件,并使用相同的 ARMv5TE 核心编译一个完整的新的 SoC,或者替换核心,或者按照意愿替换外设。这是有目的的,我的意思是这个代码也是一个关于 ARM 简

SoC 如何工作的相当整洁的范例。CPU 仿真器自身的代码并不是太整洁,那么,好吧,它是一个 CPU 模拟器。这是几年前花了超过 6 个月的空闲时间写的,然后就放在一边了。它最近复活是专门为了这个项目。仿真器实现了 i-cache 来提高速度。这给予了 AVR 很多帮助,使内部存储器能够以超过每秒 5MB 的速率访问,而不像我的外部 RAM。我还没有抽出时间去实现 d-cache(数据缓存),但是这已经在我的待办事项列表上了。访问块设备没有被仿真为 SD 设备。事实证明这太慢了。取而代之的是一个准虚拟化磁盘设备(pvdisk,参见 pvDisk.tar.bz2,GPL 许可证),我编写的时候使用了一个无效的操作码来调入仿真器并访问磁盘。我的镜像中的 ramdisk(虚拟磁盘)加载这个 pvdisk,然后改变根目录到/dev/pvd1。ramdisk 被包含在了“rd.img”中。我使用的“机器类型”是 PalmTE2。为什么?因为我非常熟悉这款硬件,它是我见到的第一款 PXA255 机器类型。

Hypercall(超级调用)?

有一些服务你可以通过使用一个特殊的操作码向仿真器发出请求。在 ARM 中它是 0xF7BBBBBB,在 Thumb 中它是 0xBBBB。挑选这些是由于它们所在的范围 ARM 保证是未定义的。超级调用号码通过寄存器 R12 被传递,参数通过寄存器 R0-R3 被传递,返回值被放置在 R0 中。

调用:

0 = 停止仿真

1 = 打印十进制数

2 = 打印字符

3 = 获取 RAM 大小

4 = 块设备操作(R0 = 操作,R1 =

扇区(sector)号)。请注意,这些不写入仿真的 RAM,它们使用另一个超级调用填充了仿真用户访问的仿真器内部缓冲区,一次一个字。我的意思是实现 DMA,但是还没有抽出时间去做。操作:

0 = 获取信息(如果扇区号是 0,返回扇区的数量;如果扇区号是 1,以字节位单位返回扇区大小)

1 = 扇区读取

2 = 扇区写入

5 = 块设备缓冲区访问(R0 = 值输入/值输出,R1 = 字数,R2 = 如果写入为 1,其他情况为 0)

Thumb 支持?

完全支持 Thumb。我欺骗了一下,解码每个 Thumb 指令字符串(instr)为等价的 ARM 指令字符串并执行,以此代替使用 ARM 仿真器函数。它不像它原来一样快,但是它简单并且代码小巧。可以使用 256KB 的查找表,但是我感觉 256KB 对于微控制器的闪存来说太大了。一些 Thumb 指令不能被转换为 ARM 指令,它们被正确处理代替。

我想要建立一个!

用于非商业目的,你肯定可以做到这一点。接线方式如下:

RAM 的 DQ0-DQ7 连接 AVR 的 C0-C7;

RAM 的 A0-A7 连接 AVR 的 A0-A7;

RAM 的 A8-A11 连接 AVR 的 B0-B3;

RAM 的 nRAM nRAS nCAS nWE 连接 AVR 的 D7 B4 B5;

SD 的 DI SCK DO 连接 AVR 的 B6 B7 D6;

LED 的 read write 连接 AVR 的 D2 D3(LED 的其他管脚接地);

按钮连接 AVR 的 D4(其他管脚接地)。

RAM 可以是任何 30 引脚的 16MB 的 SIMM,可以运行在每 64 毫秒 4000 个周期的 CAS-before-RAS 刷新频率下。我使用的(OWC)可以花几块钱在网上买到。原理图显示在这里,点击它查看大图或点击这里。

源代码?

这个代码有点儿乱,但是它可以工作。点击这里下载。许可证简单:用于非商业用途,只要你保留原有的许可证文件和源代码一起,并发布所有你的改动,那么我们都很酷!用于商业用途,请和我联系,我们将在一些事情上达成一致。要在 PC 上建立仿真器并进行尝试输入“make”。要运行使用“./uARM 止

DISK_IMAGE”。要建立优化的 PC 版本使用“make BUILD=opt”。要建立 AVR 运行的版本使用“make

BUILD=avr”。现在,它的编译目标是 ATmega1284P。要以 ATmega644 为编译目标,除了要修改 makefile,减少 icache.h 中的数字以便于 i-cache 足够小来配合 644 内部的 RAM。在归档文件中还包括用于 1284p 最终的 hex 文件。

启动过程

要在 AVR 中保留代码空间,几乎没有启动代码存在于仿真器中。事实上,“ROM”总共 50 字节:8 字节用来选择 Thumb 模式,一些 Thumb 代码要读取 SD 卡的第一个扇区并跳到 Thumb 模式(参看 embeddedBoot.c)。SD 卡的 MBR 有另一个 bootloader(在 Thumb 模式下写入)。这个 bootloader 看着 MBR,找到活动分区并加载它的内容到 RAM 的末尾。然后,它跳到目的 RAM 地址+512(参看 mbrBoot.c)。这里运行着第三个,也是最大的 bootloader,ELLE(参看 ELLE.c)。这个 bootloader 重新定位了 ramdisk,建立 ATAGS,并调用内核。我提供了所有的二进制文件和源代码以便于大家能够按照意愿制作您自己镜像。启动过程会让人回忆起 PC 开机。:)包含的 mkbooting.sh 工具可以用来制作用于启动分区的工作镜像。一个完整的磁盘镜像?请点击:第一版镜像,第二版镜像。

视频

原始视频分为几个片段,因为我在录像时不得不更换几次照相机电池。然后,我把它们拼接在一起,创建了巨大的 3 个半小时时长的视频。视频的未剪辑版本?点击这里。然后我剪辑出有意思的部分,把它们加快了 3 倍(来适合 YouTube 视频长度限制)并制作了这段视频。在视频中可以看到一个时钟,显示从开始算起消耗的时间。

222260.png(128.92 KB, 下载次数: 0)

2018-2-27 19:27 上传


ss0070 于 2018-2-27 19:58:03 发表了:

这也太牛了……


RSE 于 2018-2-27 20:04:57 发表了:

把内存直接焊上了?这内存不就废了吗


相空月 于 2018-2-27 20:10:55 发表了:

计算机专业表示看的脑阔疼。


aszxdcgok 于 2018-2-27 20:18:28 发表了:

这个很硬啊


深潜者 于 2018-2-27 20:22:28 发表了:

毫不逊色于用继电器 Cosplay 计算机的大神


深潜者 于 2018-2-27 20:24:08 发表了:

话说对于临高来说,需要研究的应该是用什么软件在电脑上尽可能低成本的运行几百甚至更多个电传打字机级用户吧?


cc52333 于 2018-2-27 20:51:25 发表了:

深潜者 发表于 2018-2-27 20:24

话说对于临高来说,需要研究的应该是用什么软件在电脑上尽可能低成本的运行几百甚至更多个电传打字机级用户 ...

这个是不是跟银行目前很多模式一样的?


rottenweed 于 2018-2-27 20:55:39 发表了:

宁可用 μCOS 吧,太折腾了。


深潜者 于 2018-2-27 21:00:01 发表了:

cc52333 发表于 2018-2-27 20:51 这个是不是跟银行目前很多模式一样的?

差不多吧?相对来说,电传打字机是临高能实现的最简单输入输出设备了。而且它的功能也算是比较强大的了。临高现存的计算机好好保管的话,支持几十年也是可能的。大约得一直发展到集成电路时代,自产的计算机们才有可能在总计算力上与残存的旧时空计算机比肩。因此用旧时空计算机支持哑终端的时代应该会持续很久很久。


没事乱溜达 于 2018-2-27 21:18:46 发表了:

楼主跪了多久?


cc52333 于 2018-2-27 21:52:24 发表了:

深潜者 发表于 2018-2-27 21:00

差不多吧?相对来说,电传打字机是临高能实现的最简单输入输出设备了。而且它的功能也算是比较强大的了。 ...

那我觉得这个模式实现并不困难啊,现成例子很多。而且很多服务器都用了非常长的年限。。


深潜者 于 2018-2-27 22:22:53 发表了:

cc52333 发表于 2018-2-27 21:52 那我觉得这个模式实现并不困难啊,现成例子很多。而且很多服务器都用了非常长的年限。。

...

八位的服务器没有呀


cc52333 于 2018-2-28 00:56:08 发表了:

深潜者 发表于 2018-2-27 22:22

八位的服务器没有呀

按钟博士这个文,8 位也可以搞出来。

服务器就是个强点硬件啊。但是 20 几年前的硬件现在算个啥。。


某食肉动物 2 于 2018-9-17 20:56:24 发表了:

最近为了肝活在看 RISC 指令集相关,突然想起这个文

有一个想法,在临高穿越的时代 arduino 开发板已经开始在国内外的开源圈子流行

加上这篇文章的想法我们是不是可以考虑用这个做一个极其简化的 tinyPC


Avo17000 于 2018-9-17 21:57:08 发表了:

楼上元老们设想的电传打字机我觉得是对的,暂时狒狒们也不需要更高档的玩意了。我曾经设想过狒狒们在两广战役中采用以电报为主干的通讯体系就有电传打字机。各占领区内或用电报,或用人力方式逐日发送情况汇报。其中的后勤信息就在汇总后发送给广州和香港,再汇总发给临高。香港总后勤基地里,每天的电传打字机响个不停,洪元老每天就看着不断更新的巨型看板做出重要指示。


wizardtong 于 2018-9-17 22:56:57 发表了:

本帖最后由 wizardtong 于 2018-9-17 23:08 编辑

这种单片机还是老老实实开发成专用计算机跑汇编得了,是做工业控制的,开发的时候都是一个字节一个字节省着用,上面说做打字机就挺好的,Linux 太浪费了吧,而且你把他弄成通用计算机是想干啥。


没事乱溜达 于 2018-9-18 09:25:04 发表了:

wizardtong 发表于 2018-9-17 22:56 这种单片机还是老老实实开发成专用计算机跑汇编得了,是做工业控制的,开发的时候都是一个字节一个字节省着 ...

看片


没事乱溜达 于 2018-9-18 09:25:44 发表了:

坏了,跟坟了


以一敌七 于 2018-9-18 10:12:34 发表了:

这东西没用,500 废哪有那个水平去开发、维护这些啊,买上几万片 386 或者 M4 之类的 CPU,充氮气保存起来,更合算,好歹会的人还比较多。


lxr 于 2018-9-18 12:16:34 发表了:

386 即使 10 年前也太老了吧?还能买到新货吗?


wizardtong 于 2018-9-18 12:37:09 发表了:

没事乱溜达 发表于 2018-9-18 09:25

看片

不是说了是 8 位的 AVR ATMEGE128,贴里的方案还扩展了 ram,临高哪有 ram 可以用


cc5233 于 2018-9-18 13:06:06 发表了:

lxr 发表于 2018-9-18 12:16

386 即使 10 年前也太老了吧?还能买到新货吗?

类似产品或者类似性能可以买的。

开发靠自己问题不大,因为我们不需要面对复杂的客户需求,基本上就是码农写什么,用户用什么。

考虑到基层普及能力显然属于天方夜谭,所以真正用户群体完全可以接受这种设定。


没事乱溜达 于 2018-9-18 13:16:29 发表了:

wizardtong 发表于 2018-9-18 12:37 不是说了是 8 位的 AVR ATMEGE128,贴里的方案还扩展了 ram,临高哪有 ram 可以用

当然是带去了。

重新发展科技树的时候直接放弃 wintel


wizardtong 于 2018-9-18 13:50:19 发表了:

没事乱溜达 发表于 2018-9-18 13:16

当然是带去了。

重新发展科技树的时候直接放弃 wintel

那还不如在原时空采购装配好的,还便宜


没事乱溜达 于 2018-9-18 14:13:29 发表了:

wizardtong 发表于 2018-9-18 13:50 那还不如在原时空采购装配好的,还便宜

这个更省。

楼主是跪着看完的。我还跪着呢。。。。


lxr 于 2018-9-18 14:59:56 发表了:

意思是不是用这个 8 位的 U 运行一个虚拟机,虚拟机则运行一个 LINUX 系统?

这个系统能运行,但速度有点儿慢,启动时间只用了六个小时。


某食肉动物 2 于 2018-9-18 15:03:06 发表了:

lxr 发表于 2018-9-18 14:59

意思是不是用这个 8 位的 U 运行一个虚拟机,虚拟机则运行一个 LINUX 系统?

这个系统能运行,但速度有点儿慢,启 ...

差不多这个意思,但是其实可以做进一步的简化==

顺带时钟频率以及其他诸多方面都还有很大的提升空间啊


lxr 于 2018-9-18 15:13:54 发表了:

能不能做个编译器,直接编译 LINUX 源码在这个 8 位 U 上运行?这样起码运行效率会高许多。


liutom2 于 2018-9-18 16:11:27 发表了:

lxr 发表于 2018-9-18 15:13

能不能做个编译器,直接编译 LINUX 源码在这个 8 位 U 上运行?这样起码运行效率会高许多。 ...

应该是不行的,这个 8 位 CPU 的资源不够,所以搞了一个外挂的内存,这个外挂内存应该只能用虚拟机跑,直接编译的没法用


Scat 于 2018-9-18 16:58:52 发表了:

髡贼能造 1g 的闪存得哪年了,登月肯定 ok 了


没事乱溜达 于 2018-9-18 18:40:27 发表了:

Scat 发表于 2018-9-18 16:58

髡贼能造 1g 的闪存得哪年了,登月肯定 ok 了

不是单纯的制造内存

这东西给了一个电脑替代品的廉价方案思路.............非常廉价


wizardtong 于 2018-9-24 16:26:11 发表了:

lxr 发表于 2018-9-18 15:13

能不能做个编译器,直接编译 LINUX 源码在这个 8 位 U 上运行?这样起码运行效率会高许多。 ...

干脆自己开发个类似与 basic 的系统,要啥 Linux


一路向上 于 2018-9-24 17:54:34 发表了:

本帖最后由 一路向上 于 2018-9-24 17:56 编辑

美帝的马克一号,还有德棍的 Z1,Z3。这种机电式,以继电器,电容为核心的全自动计算机才是临高短期内能复现的吧?


钟利时 于 2018-9-25 04:50:49 发表了:

一路向上 发表于 2018-9-24 17:54

美帝的马克一号,还有德棍的 Z1,Z3。这种机电式,以继电器,电容为核心的全自动计算机才是临高短期内能复现 ...

我一直建议首先搞机电式计算机。

但我们初期可以在机电式计算机上开个金手指——用单片机实现机电计算机的处理器、内存部分。因为这两个部分是最复杂、最影响速度的地方。

在穿越时,可以带上一些单片机继电器系统板,而不是单片机芯片。系统板上不仅有单片机芯片,还有必须的晶振、继电器接口的二极管。这些我们很长时间内都无法制造。系统板通过继电器输入输出。有两种电压(36V 直流发电机电源用于继电器电路;4 ~ 4.8V 铅酸蓄电池电源用于单片机数字电路)

一个标准托盘那么大的空间(W 1m×L 0.8m×H 2m)可以装 1600 盒这种系统板。每块系统板多配若干块单片机,用于刷不同的程序。

这种单片机+继电器混合电脑比 ENIAC 性能可强悍多了。

这种计算机需要解决的几个关键设备:

(1)纸带读写机:由单片机组成。可通过串口与主机通信。

(2)电传打字机:由单片机组成。可利用纸带输入、输出,并可通过串口与主机通信。电传打字机是我们在 CRT 出现之前唯一能制造的可视化输入、输出设备。我们初期能造的电传打字机只能是字模式英文打字机。点阵式汉字打字机需要至少 256KB 字库,对原始计算机来说这是非常吓人的存储空间。

(3)纸带编程器:由单片机组成。可通过打孔纸带输入,为另一片单片机芯片编程。也可以将另一片单片机的程序读出来输出为纸带。一旦解决纸带编程器,可以不用珍贵的 PC 为单片机编程。

单片机还有动态加载问题:单片机很多是哈佛结构,指令和数据存储分开,程序一次烧写在 EEPROM 里。很难像冯诺依曼结构那样将指令动态加载。

解决这个问题的方法:

(1)设计一个中间语言解释器(类似 JVM)。单片机里刷的是解释器。在系统板上需要一个足够大的外部 RAM,或者在单片机选型时选择数据内存 64KB 的型号。解释器估计在 4KB ~ 8KB。

(2)每块系统板多配一些单片机芯片,系统板使用 ZIF 插座。多余的单片机芯片刷上不同的常用程序,减少重新编程的概率。


某食肉动物 2 于 2018-9-25 10:16:42 发表了:

钟利时 发表于 2018-9-25 04:50 我一直建议首先搞机电式计算机。

但我们初期可以在机电式计算机上开个金手指——用单片机实现机电计算机 ...

zif 同样可以用来接 eefprom


wizardtong 于 2018-9-25 12:37:55 发表了:

钟利时 发表于 2018-9-25 04:50

我一直建议首先搞机电式计算机。

但我们初期可以在机电式计算机上开个金手指——用单片机实现机电计算机 ...

不知道临高什么时候可以生产磁带机,临高众年轻一点的都没见过纸带机,手动翻译机器码编程有点困难啊


一路向上 于 2018-9-25 14:21:25 发表了:

wizardtong 发表于 2018-9-25 12:37 不知道临高什么时候可以生产磁带机,临高众年轻一点的都没见过纸带机,手动翻译机器码编程有点困难啊 ...

能写汇编,再努努力就能写机器码了。

所以应该先问问有多少人写过汇编。


thinostrich 于 2018-9-25 15:57:49 发表了:

钟利时 发表于 2018-9-25 04:50

我一直建议首先搞机电式计算机。

但我们初期可以在机电式计算机上开个金手指——用单片机实现机电计算机 ...

几年前在大学很流行的 S3C6410 开发板就挺好,可以烧 WINCE 或者 Linux,带 SD 卡。这样只要做一个串口的打印机和卡纸读写器就行。开发板上带几百兆的 ROM 和 RAM,SD 卡里可以存新开发的程序。当时一块板子 1000 块,带核心板、所有引出脚和 4 寸左右的触屏。

如果要省钱就 S3C2410,只能跑被裁的不成样子的 Linux,但也支持 SD 卡和 ROM/RAM,就是小点。

再穷就是飞思卡尔的 16 位系列单片机,也是带 SD 卡的,就是只能用自带的几百 K ROM/RAM 了。我觉得是没必要带 8 位机的,接口板子都比芯片贵了,没必要省芯片的钱了。


thinostrich 于 2018-9-25 16:06:58 发表了:

一路向上 发表于 2018-9-25 14:21

能写汇编,再努努力就能写机器码了。

所以应该先问问有多少人写过汇编。 ...

带过来的单片机和电脑的寿命应该是差不多的,所以我觉得大概率一直用高级语言用到带来的设备全挂了。就看那时候科技树能爬到什么程度了。C 语言发明的时候 8086 都还没出来呢,全国有几百台“超级"电脑和上千套”超级“单片机应该够用到 8086 年代。只要别在电脑都挂掉了 8086 还没搞出来。这样就可以避开大规模使用打孔机、机器码时代。


wizardtong 于 2018-9-25 23:45:52 发表了:

本帖最后由 wizardtong 于 2018-9-25 23:57 编辑

一路向上 发表于 2018-9-25 14:21

能写汇编,再努努力就能写机器码了。

所以应该先问问有多少人写过汇编。 ...

基本上学过单片机的都会用汇编吧,毕竟高级语言转化率太低,单片机又需要省资源。但机器码过分了啊,一代有几个愿意写这东西的,还有纸带,错了还得用胶布贴上再改。。。哪怕有磁带机用呢


wizardtong 于 2018-9-25 23:53:40 发表了:

一路向上 发表于 2018-9-25 14:21

能写汇编,再努努力就能写机器码了。

所以应该先问问有多少人写过汇编。 ...

我感觉临高可能会有一个职业专门翻译机器码,就相当于抄录员什么的


钟利时 于 2018-9-26 19:18:27 发表了:

thinostrich 发表于 2018-9-25 16:06

带过来的单片机和电脑的寿命应该是差不多的,所以我觉得大概率一直用高级语言用到带来的设备全挂了。就看 ...

临高的计算机大致可以分为三条路线走,或者可以分为三个研究所:

一所:维护已有的计算机,一直坚持到自制计算机出现。你说的那些开发板属于这个领域。

(绝密机构,只有元老能接触的黑科技场所。)

二所:从最基本的逻辑元件开始,重新设计制造数字计算机。从继电器逻辑电路开始。单片机是继电器计算机的理想化模型。同时也负责电报机、交换机。

(对高学历规划民开放的场所。培养逻辑电路、数字计算机人才。)

三所:该所研究“另一种计算机”。

(绝密机构,有高学历规划民参加。该所产品可被欧洲工匠仿制,如泄露出去危害极大。所以该所保密程度比一所还高)


meicn 于 2018-9-26 20:47:59 发表了:

开个完全不好笑的笑话,这玩意的 LCD 和 SD 卡都是独立驱动的,这两个模块自带的驱动 MCU 芯片比这个 CPU 都强大……


thinostrich 于 2018-9-27 11:53:36 发表了:

钟利时 发表于 2018-9-26 19:18

临高的计算机大致可以分为三条路线走,或者可以分为三个研究所:

一所:维护已有的计算机,一直坚持到自 ...

4004 集成了 2000 多晶体管,当前普通继电器的寿命是 10 万次开关。假如每执行一个周期有 1000 个继电器动作,运行 100 条指令就有一次预期故障得修。。。

继电器计算机最多短时间取代机械计算器执行一些专用计算任务。

用三极管硬拼一个 4004 还行,继电器不太靠谱吧。


没事乱溜达 于 2018-9-27 12:02:54 发表了:

meicn 发表于 2018-9-26 20:47 开个完全不好笑的笑话,这玩意的 LCD 和 SD 卡都是独立驱动的,这两个模块自带的驱动 MCU 芯片比这个 CPU 都强大… ...

原来这样。。


lzy0702 于 2018-9-29 12:27:42 发表了:

钟利时 发表于 2018-9-26 06:18

临高的计算机大致可以分为三条路线走,或者可以分为三个研究所:

一所:维护已有的计算机,一直坚持到自 ...

原时空的计算机不作死的话,用个二十年是可以的,再加上储备,坚持 40~50 年不应该成为问题。现在同人文里各种 10 年不到就连大图书馆的资料都要蒸发的潮流是有偏差的。

计算机的知识应该算是公开得最好的一类了,绝大多数标准和协议都明明白白写了定义,复现起来有据可依。指令集这东西是可以查的,实现出来和原时空一样就行,IPC 之类的效率可以先放放,能把原时空的软件跑起来就是很大胜利了。我觉得 CPU 部分都还好说,资料普遍比较全,那些需要 GPU 的部分问题很大