计算机综合实践项目:自编程单片机系统(一)

身边几个玩编程计算器的同窗说,用计算器编程帧率过低了。一开始我以为,好端端的处理器能卡成这样,确定是计算器系统的问题。要是用个人开发板来跑绝对不会卡,但转念一想个人开发板只能在计算机上编程而后烧写进去,拿编译型语言去跟解释型语言比效率是没有意义的。编程

后来查了一下资料,他们用的计算器中居然使用8位单片机。我有两个想法:其一,性能不强的处理器加上解释型语言,难怪跑在上面的程序会卡;其二,使用性能至关的单片机的我,应该也能开发一个可自编程的平台吧。编程语言

因而就有了这个项目,设计一个可自编程的单片机系统。有几个问题须要考虑:编辑器

 

1、用什么处理器函数

上有树莓派,个人考虑范围仅限单片机。8/16位机我比较熟悉,但空间和性能都十分受限,32位机性能强,空间也能够外扩。具体选哪一种,主要取决于应用。性能

2、用什么编程语言学习

编译型语言要有编译器,是我如今不会写也不会移植的东西;解释型语言的效率在计算器中被证实不行;高级语言都被排除了,只剩汇编可用了。设计

汇编代码转换成单片机直接执行的机器语言被计算器玩家证实为危险行为,必须有一个托管汇编代码运行的环境,称之为虚拟机吧,相应地把机器语言称为字节码,这是从Java学来的概念。虚拟机和字节码的格式均可以任我发挥。接口

3、用什么交互设备内存

做为一台微型电脑,必需要有办法来显示。我不想外接显示器,因此要板载显示屏。从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阶段也能完成。至于第二阶段,想一想都以为难,先挂着吧。

最后强调一句,造轮子阶段,能够借鉴方案但毫不抄代码。

相关文章
相关标签/搜索