MicroPython控制单片机
MicroPython 约等于一个可以运行在微处理器上的 Python解释器,它使得我们可以编写Python脚本来控制硬件。
编程语言大致可以分为 解释型语言 和 非解释型语言。
解释型语言大多也称作为脚本语言,例如Python这类不需要编译的编程语言,我们可以在交互式的Python解释器环境中输入一行指令,执行一行指令,获得输出;也可以把写好的脚本文件一次性交给Python解释器去解释执行。
而非解释型语言典型的以 C 语言为例,这类语言编写的代码需要通过*编译器 *编译之后才能被执行。
编译型的C语言,需要用到编译器。
解释型的Python语言,需要用到解释器
我们编写的代码,无论C语言也好,Python语言也好,都是希望计算机去执行。但是计算机是机器,只能识别01构成的二进制代码。因此,为了让机器搞懂我们现在编写的C语言代码,或Python语言代码,都需要经过一番转换,才能变成计算机设备能够理解的,进而才能被正确执行。
MicroPython是 Python 3 语言 的精简高效实现 ,包括Python标准库的一小部分,经过优化可在微控制器和受限环境中运行。MicroPython包含了诸如交互式提示,任意精度整数,关闭,列表解析,生成器,异常处理等高级功能。 足够精简,适合运行在只有256k的代码空间和16k的RAM的芯片上。MicroPython旨在尽可能与普通Python兼容,让您轻松将代码从桌面传输到微控制器或嵌入式系统。
应用展望
金融智能卡COS系统利用JavaCard虚拟机实现了APPLET的跨平台应用。但是JavaCard标准规范由Oracle公司定制,具有一定的License费用。国内COS厂商每年都需要花费几千万元来获取JavaCard标准的使用权。为了减少这笔开销,COS厂商开始寻找新的技术来取代JavaCard虚拟机,比如Native方案等,但这虽然可以在一定的程度上解决了虚拟机的作用,但对于跨平台的应用实现还是无法彻底解决。
物联网应用碎片化和安全性问题一直是阻碍其发展的主要原因,Micropython虚拟机技术理论上可以完全替代JAVACARD虚拟机,但缺少实用场景,并且其安全性也需要进一步证明论证。但从技术本身上看,Micropython虚拟机的确为物联网的应用开发提供了一种可能,如果有实际产品出现在市场上,经过物联网应用的进一步孵化,有可能会成为物联网领域的"JavaCard"。
工作原理
Micropython技术是依赖Byte Code的执行,在编译阶段就将py文件先转换成mpy文件,在通过mpy-tool.py生成Byte Code,Byte Code在执行时会依赖Virtual Machine入口表,找到对应的Module入口,最终找到对应的Funcion binary code执行。其中所有的Function都通过Dictionary的形式存储,而每一个Dictionary都有自己的QSTR,Micropython有buildin的QSTR和用户扩展的QSTR。具体流程可参考如下图:
MicroPython虽然在很大程度上都能无缝的支持Python的语法,Python的理念,但是,由于MicroPython是设计运行在微处理器上的,所以他在某些方面实现了精简以此来保障性能。同时在某些地方,MicroPython和普通的Python解释器存在一些微小的差异,所以说约等于。但这丝毫不会影响学习并使用Python去控制硬件的乐趣。
- 点赞
- 收藏
- 关注作者
评论(0)