身边几个玩编程计算器的同学说,用计算器编程帧率太低了。一开始我觉得,好端端的处理器能卡成这样,肯定是计算器系统的问题。要是用我的开发板来跑绝对不会卡,但转念一想我的开发板只能在计算机上编程然后烧写进去,拿编译型语言去跟解释型语言比效率是没有意义的。
后来查了一下资料,他们用的计算器中竟然使用8位单片机。我有两个想法:其一,性能不强的处理器加上解释型语言,难怪跑在上面的程序会卡;其二,使用性能相当的单片机的我,应该也能开发一个可自编程的平台吧。
于是就有了这个项目,设计一个可自编程的单片机系统。有几个问题需要考虑:
一、用什么处理器
上有树莓派,我的考虑范围仅限单片机。8/16位机我比较熟悉,但空间和性能都十分受限,32位机性能强,空间也可以外扩。具体选哪种,主要取决于应用。
二、用什么编程语言
编译型语言要有编译器,是我现在不会写也不会移植的东西;解释型语言的效率在计算器中被证明不行;高级语言都被排除了,只剩汇编可用了。
汇编代码转换成单片机直接执行的机器语言被计算器玩家证明为危险行为,必须有一个托管汇编代码运行的环境,称之为虚拟机吧,相应地把机器语言称为字节码,这是从Java学来的概念。虚拟机和字节码的格式都可以任我发挥。
三、用什么交互设备
作为一台微型电脑,必须要有办法来显示。我不想外接显示器,所以要板载显示屏。从12864 OLED单色屏到240*320 TFT彩屏,流畅显示所需的带宽也有很大差距,应该根据单片机的性能来选型。
编程嘛,键盘总要有的。最理想的情况当然是用USB口外接键盘,对于没有USB的单片机,也得提供一个矩阵键盘。
选择还挺多哈。考虑到我现在的水平,经过一周的深思熟虑,我将这个项目分为两个阶段:第一阶段在上述选项中都选择了较简单的,是现在就能动手的项目;第二阶段更为完整,但需要更多的学习。
第一阶段:
制作GUI开发板,板载1.3寸128*64 OLED屏;
为开发板编写硬件驱动库;
(以下内容须做到平台无关,即对于其他型号的单片机,只要有接口相同的硬件驱动库就能使用)
设计一个文档编辑器用于编程;
设计一种虚拟机上运行的汇编语言,要能调用库函数;
编写能运行这种汇编语言的虚拟机;
编写汇编器,将汇编代码转换成字节码;
用软件实现内存分页,以解决大量数据的问题。
第1.5阶段:
如果AVR单片机的性能带不起虚拟机,就通过开发板的扩展接口连接STM32F103开发板;
原来的单片机作硬件驱动与图形加速用;
用Cortex-M3足矣,再强就是下一阶段的事了;
制作几个外接模块,如电容触摸、SD卡+扬声器等,以丰富功能。
第二阶段:
使用STM32F405VGT6单片机,168MHz Cortex-M4无所畏惧;
板载2.8寸240*320 TFT全彩触摸屏,挂在FSMC上;
USB接口外接键盘,最好是机械键盘,声音响亮盖过物理老师的激情;
类C语言编程,编译成ARM的机器语言,在单片机上直接执行,用MPU来保护系统;
如果让机器直接执行太危险,让虚拟机执行字节码也行;
……
这个规划过于遥远,先构想到这里。相比于前一版这个版本更像是手机而不是计算器。
预计今年年底之前完成第一阶段,时间充足的话第1.5阶段也能完成。至于第二阶段,想想都觉得难,先挂着吧。
最后强调一句,造轮子阶段,可以借鉴方案但绝不抄代码。
原文地址:https://www.cnblogs.com/jerry-fuyi/p/11619309.html