杨为民 发表于 2025-3-19 00:03:43

51-FORTH(1): 8051计算机诞生记

一、 是单片机还是计算机?
著名的“APPLEII”,其CPU是8位的,主频是1MHz的,标配RAM是16KB的。虽然性能指标如此低,却被尊称为“微型计算机”,其1977年的4KB RAM的首发版售价为1298美元。
对比最新的“AI8051U芯片”即使工作在8BIT模式,其CPU主频也高达40MHz,片上RAM就更高达32KB。而如此高的性能指标,却只能屈尊被称为“单片机”,其某宝零售价仅4元人民币。
如果也能用的“AI8051U芯片”作为CPU造出一台“微型计算机”来,那么这颗划时代的芯片就会开创出另一个“单片计算机”的新时代。要想“用单片机造计算机”,首先要弄清楚“单片机”与“计算机”之间的最本质差别是什么,这差别绝对不是硬件性能上的差异。笔者认为它们之间最本质的差别是“新功能的开发模式”。典型的单片机开发模式是:如果用户要在单片机现有功能的基础上增加新功能,必须在另外的计算机(比如笔记本电脑)上将实现新功能的高级/汇编计算机语言程序用“编译器”编译为CPU可执行机器码(比如HEX烧录文件),然后下载到单片机中,然后单片机才具有新功能。这个单片机开发模式的本质是“编译器软件”(比如Keil的C51)不是在AI8051U芯片上运行的,所以“AI8051U芯片”只能被称为“单片机”。APPLE II微型计算机开发模式是:由于其初期4KB RAM版本上面就安装了“Integer BASIC(由沃兹尼亚克编写,固化在ROM中)”,所以如果用户需要什么新的功能,就可以从键盘上向计算机一行一行地输入BASIC程序,然后计算机中的BASIC语言“编译器(解释型的)” 就开始一行一行地“解释和执行”输入的BASIC程序,然后APPLE II就具有了新功能。这个计算机开发模式的本质是“编译器软件”(Integer BASIC)是在APPLE II上运行的,所以“APPLEII”就能称为是“计算机”。因此区分“单片机”与“计算机”最重要的区别是高级计算机语言的编译器运行在什么地方。比如“树莓派”开发板再小,因为其上面运行了Linux的“GCC”编译器,所以“树莓派”是计算机。
再比如工业单片机控制系统,不管其体积多大,哪怕它还有键盘、鼠标和触摸屏,还是只能称为“单片机”系统。

二、 最小8051单片计算机
FORTH语言是一种高级计算机语言,FORTH系统内含一个解释型的编译器,该解释器对输入的命令和程序进行解释执行。“51-FORTH”是笔者开发的运行在8051单片机上的FORTH系统,51-FORTH系统以HEX格式烧录文件的方式提供,经一次性地用STC-ISP烧录固化到8051单片机的FLASH中,以后每次开机就都会自动运行,无需再次烧录。51-FORTH从单片机的串口1上接收命令或者程序,然后进行解释和执行,实现操作者的目的。要想在运行51-FORTH的单片机上增加新的功能,只需要通过串口1向单片机输入程序,单片机上的51-FORTH就会解释这些程序,生成和保存单片机可以执行的机器码,等以后操作者下命令后执行这些新功能了。按照前面的计算机定义,只需要在8051单片机上安装51-FORTH系统,我们就打造了一台名副其实的“8051计算机”了:8051单片机 + 51-FORTH = 8051计算机下图是笔者制作的“最小8051计算机”系统,系统的硬件仅包括一片“AI8051U单片机”,一个电源开关,一个TTL串口转USB转接口:
由于在这个系统中串口-USB转换器可以看做是计算机的外部设备,因此最小的8051计算机仅包括一片“AI8051U”单片机,因此也可以把“AI8051U”单片机称为“8051单片计算机”,这就是我一直称它开辟了一个8051单片机的新时代的原因之一。最小8051计算机系统的软件有两个“附件1_51_FORTH_V011.rar”和“附件2_超级终端_Win10_EXE.rar”。附件1解压后的“51_FORTH_V011.HEX”是51-FORTH针对“AI8051U”的V0.11学习版本,用STC-ISP软件以8-BIT模式和33.1776MHz的主频烧录到“AI8051U/STC8051U”单片机中即可。以“AIapp-ISP-v6.95E.exe”为例:
附件2解压后的“Hyper Terminal.exe”是一款绿色的Winows超级终端软件,在Win7和Win10上都可以使用。使用时不需要安装,双击该文件名就可以执行了:
按左上角的“+”号,打开8051单片计算机使用的串口:
将串口的波特率设置为9600,然后按打开串口,启动超级终端。超级终端启动后,打开单片机的电源,可以看到51-FORTH系统的启动过程:
51-FORTH的输入提示符为“JL>”,操作者必须等到出现这个提示符后(表示系统当前的任务已经处理完成)才能输入新一行的命令或者程序,操作者按下<CR>回车键后,51-FORTH开始解释执行这一行命令。比如:
上面“HELLO”是51-FORTH命令,执行后再屏幕上显示“Hello, World!”字符串,后面跟的“ok”是命令正常执行的信息。上面“111 222 + .”是51-FORTH程序,计算数字“111”与“222”的加法,然后将结果显示出来。FORTH语言用空格区分程序行的每一个“元素”。这段程序用BASIC语言写出来为“?111+222”,用C语言写出来为“printf(“%d”,111+222);”,对比FORTH,每个语言的特点都很明显了。如果操作者使用的是Linux操作系统,据网络查询说安装“minicom”串口通讯程序也行。51-FORTH区分大小写字母,像上面的“hello”就被51-FORTH认为是错误的,因为它在命令表里找不到这个词,结果就给出出错的提示。

三、 51-FORTH简介
51-FORTH语言是在8051单片机上运行的Forth语言,由标准Forth加8051单片机扩展部分组成。除了标准的Forth语言外,还增加了许多对“AI8051U”单片机的片上设备和GPIO接口的支持功能。Forth是一种非常适合单片机编程的计算机语言。由于Forth最主要的特征是一种交互式的和解释性的高级计算机语言,用户通过文字终端用键盘输入Forth命令和程序,Forth系统对每个输入行中的“Forth字”(用空格分开的语法元素)进行解释,是命令就立即执行,是程序就编译为代码放到内存中等待调用和执行。而所谓Forth编程就是将这些命令和程序写在一个文本文件中,然后调用Forth解释程序来读取这个文本文件,逐行进行解释和执行。按照这个Forth的工作流程,需要不断输入和存放新的命令和程序,因此运行Forth的计算机需要大量的RAM,通常只运行在像PC机这样的数据和程序都放在RAM中的冯诺依曼架构的计算机上,而难运行在将数据分开放到RAM区域和将CODE代码分开放到FLASH区域的哈弗架构的8051单片机上。在51-FORTH项目开始研究时都是用硬件的方式在STC单片机外接SRAM,这个方案的抗干扰能力差,最重要的是无法推荐给广大的普通用户。直到具有32KB的片上的XRAM的AI8051U单片机问世,51-FORTH才可以独立运行在单个单片机上,不再需要其他的硬件支持了。因此,不管是什么样的开发板和实验箱,只要安装的是AI8051U芯片,只要烧录进51-FORTH,就成了一台“8051单片计算机”了,就可以用它来学习和研究Forth语言在51单片机上的应用了。比如“擎天柱核心板”就是一台加强版的“最小8051单片计算机”。由于Forth是一门非常小众的计算机语言,目前的51-FORTH是V0.11学习版,其X51汇编语言功能被限制了,主要提供大家学习了解标准Forth语言用。
附件1:51-FORTH V0.11存在P4~P7端口不能用的BUG
附件2:

版本已更新了
附件3: 51-FORTH V0.21已改正P4~P7端口不能用的BUG



神农鼎 发表于 2025-3-30 20:43:54

杨为民 发表于 2025-3-30 19:59
这个学习版是十几年前针对IAP15F/STC15W系列的单片机写的,下个版本会用“USB转双串口@AI8H2K12UV-1.1” ...
擎天柱2. USB转单串口


【新提醒】擎天柱2:Ai8051U-LQFP48+Ai8H2K08U-SOP8 转 89C52-DIP40 核心板 V1.0 20241028 - TinyML,Ai8051U 人工智能 开山之作,AI手写计算器 国芯技术交流网站 - AI32位8051交流社区


可能 Ai8051U 实验箱 更合适

深圳国芯人工智能有限公司-实验箱



https://www.stcaimcu.com/data/do ... E%B1AI8051U-SCH.pdf



国芯人工智能 发表于 2025-3-19 00:08:00

STC的“AI8051U芯片”作为CPU打造一台“微型计算机”,首先需要明确的是,单片机与微型计算机的界限并非仅由硬件性能决定,而是由其应用场景和系统架构所定义。AI8051U芯片虽然在主频和RAM上远超早期的APPLE II,但其设计初衷仍是面向嵌入式应用,而非通用计算。因此,要将其升级为“微型计算机”,需在以下方面进行系统性优化:<br><br>1. 外设扩展:增加显示器、键盘、存储设备等标准外设接口,使其具备完整的输入输出能力。<br>2. 操作系统:移植或开发轻量级操作系统,支持多任务管理和文件系统,提升用户体验。<br>3. 软件生态:构建编译器、开发工具链和应用软件库,形成完整的开发生态。<br><br>若成功实现,AI8051U芯片将不仅是一颗高性能单片机,更可能成为“单片计算机”的开创者,推动嵌入式系统向更广阔的应用领域发展。然而,这一过程需克服技术壁垒和成本挑战,才能真正实现从“单片机”到“微型计算机”的跨越。<br><br>[本文内容由国芯人工智能辅助生成,仅供参考]

杨为民 发表于 2025-3-25 02:06:53

有补充帖子发表:
Ai8051U单片机(11):AI8051U=“AI单片计算机”?--看见更大的世界
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=16501
(出处: 国芯技术交流网站)

小涵子爸爸 发表于 2025-3-25 08:22:46

可惜Forth语言还是太小众了哇

ercircle 发表于 2025-3-25 08:26:05

前排学习

angmall 发表于 2025-3-25 08:56:46

小涵子爸爸 发表于 2025-3-25 08:22
可惜Forth语言还是太小众了哇

Forth语言在单片机应用中具有以下优势:

1. 资源效率高:
   - 占用内存小,适合资源受限的单片机系统
   - 执行速度快,接近汇编语言的性能

2. 交互式开发:
   - 支持实时编程和调试,无需完整的编译-下载-运行周期
   - 可以在运行时修改和测试代码,加快开发速度

3. 直接硬件控制:
   - 可以直接访问和控制硬件寄存器
   - 适合底层驱动程序和硬件抽象层的开发

4. 模块化和可扩展:
   - 易于创建和管理代码库
   - 可以根据项目需求定制语言特性

5. 代码复用性高:
   - 通过定义新的词(函数)来扩展语言功能
   - 鼓励创建可重用的代码块

6. 适合实时系统:
   - 具有可预测的执行时间,适合实时控制应用
   - 支持中断处理和多任务操作

7. 自举能力:
   - Forth解释器可以在目标硬件上运行
   - 支持在单片机上进行交互式编程和调试

8. 跨平台性:
   - Forth程序易于移植到不同的硬件平台
   - 减少跨平台开发的工作量

9. 学习曲线相对平缓:
   - 语法简单,核心概念少
   - 适合快速上手和原型开发

10. 适合特定领域应用:
    - 在仪器控制、数据采集等领域有独特优势
    - 适合需要频繁修改和调整的应用场景

这些优势使Forth在某些单片机应用中成为一个有吸引力的选择,特别是在资源受限、需要快速开发或频繁调试的场景中。


ercircle 发表于 2025-3-30 16:19:49

杨老师,建议把通讯用的串口改为别的引脚或者USB-CDC串口,这样就可以在擎天柱上玩了。



神农鼎 发表于 2025-3-30 18:08:20

是否需要我们在 AIapp-ISP 中增加啥功能,就可以玩了
或者在我们的暂时未正式发布的 IDE 中增加啥功能,就可以玩了





杨为民 发表于 2025-3-30 19:59:07

ercircle 发表于 2025-3-30 16:19
杨老师,建议把通讯用的串口改为别的引脚或者USB-CDC串口,这样就可以在擎天柱上玩了。




这个学习版是十几年前针对IAP15F/STC15W系列的单片机写的,下个版本会用“USB转双串口@AI8H2K12UV-1.1”来增加一个专用的串口。
我的硬件能力不够,要是谁能把擎天柱和这个双串口做在一块主板上,那么这将是第一台“双CPU(不是双核)单片微型计算机”了。

杨为民 发表于 2025-3-30 20:31:43

神农鼎 发表于 2025-3-30 18:08
是否需要我们在 AIapp-ISP 中增加啥功能,就可以玩了
或者在我们的暂时未正式发布的 IDE 中增加啥功能,就 ...
(1)DOS环境、LINUX命令窗口模式的用户输入都是基于“一个一个敲字符”的输入模式:意思是用户每敲一个键,操作系统就要响应,判断需要怎么处理,比如用户按了“退格键”。

(2)AIapp-ISP和串口助手是基于“行发送”的工作模式:用户在发送窗口中编辑(比如使用退格键和复制粘贴)好了“一行字符串”,然后再“全速”发送出去。
(3)51-FORTH目前版本是模仿DOS命令行方式:一个字符一个字符地接收,直到检测到<CR>回车符,再将这一行命令进行解释执行。
(4)由于51-FORTH目前版本的串口1接收没有使用中断模式,纯粹是软件循环检测上位机发来的字符,然后处理完这个字符再接收下一个字符。所以用现在的AIapp-ISP就会出现丢字符现象,甚至连<CR>回车都丢掉。相信大家已经观察到这个现象了。
(5)目前AIapp-ISP解决的方法是增加一个“字符发送间隔”的选项框即可,选择每“100毫秒”间隔发送一个发送窗口里的字符(模拟人工每秒10个字符的手速)就可以了。用户选择“0毫秒”间隔,则就按照现在的全速发送就好了。
(6)由于将来“非最小的8051单片微型计算机”可能会有键盘和TFT显示屏,因此51-FORTH会一直保持这种“DOS/LINUX 命令行方式:一个字符一个字符地接收命令”的人机交互模式。
页: [1] 2
查看完整版本: 51-FORTH(1): 8051计算机诞生记