长期以来,C/C++编程语言一直主导着嵌入式开发系统行业,很少有其他语言能够站稳脚跟。虽然Java和Ada等语言已经尝试过了,但Python这种语言的普及率不仅在上升,而且在相当长的一段时间内已经进入了基于Linux的应用程序。不过,在微控制器上使用的Python似乎从来都不符合要求,直到设计用于微控制器的Python 3.0端口MicroPython出现,它越来越受欢迎,势头也越来越强劲,这可能使它成为你设计下一个产品时使用的编程语言。
让我们分析一下使用MicroPython的一些优点和缺点:
Python语言编程特性
Python编程语言的学习曲线很短,这使得开发人员非常容易开始使用它。Python为开发人员提供了一种高级编程语言,可以用来构建简单的脚本,也可以用来开发复杂的面向对象体系结构,这些体系结构使用了现代软件项目的所有最佳实践。与C相比,Python还提供了用于创建线程、处理错误和轻松集成到测试工具中的内置机制。
这些语言特性的有趣之处在于,它们使开发团队的每个成员都有可能成为程序员!MicroPython提供了一系列库,为抽象出复杂性的低级微控制器功能提供控制。例如,硬件工程师可以设计电路板,而对微控制器(或C)的工作原理几乎一无所知,开发高级脚本,通过控制GPIO来测试电路板,甚至可以与I2C设备通信。在C语言中,开发I2C驱动程序可能相当复杂,但在MicroPython中,创建I2C对象并将数据发送到从设备只需要以下几行代码:
from pyb import I2C
i2c = I2C(1) # create on bus 1
i2c = I2C(1, I2C.MASTER) # create and init as a master
i2c.init(I2C.MASTER, baudrate=400000) # init as a master
# Set the proximity threshold that will enable GMODE
i2c.mem_write (40, DEVICE_SLAVE_ADDRESS, REGISTER_ADDRESS, timeout=1000)
就这样!处理I2C的所有基础工作都由MicroPython库处理,这大大简化了嵌入式开发。
生产设计考虑
当考虑使用MyPython进行产品开发时,开发者需要考虑的几个关键因素。首先,开发人员需要考虑如何保护他们的应用程序代码。MicroPython允许开发人员加载基于代码文本的Python脚本,或者将这些脚本编译成字节码,并将其放入.mpy模块中。这些解决方案的问题在于,任何能够访问MicroPython文件系统的人都可以随时获得应用程序代码,这非常容易。字节码确实让它变得有点难,但将字节码转换回可读代码并不太难。开发者需要考虑他们需要他们的系统有多安全,并有可能采取额外的措施来保护知识产权。
接下来,开发人员需要考虑如果出现问题,他们将如何恢复系统。根据选择的微控制器,它们的应用程序代码可能在微控制器内部,也可能在存储设备(如SD卡)外部。文件系统在电源循环或断电情况下不是很健壮。如果文件系统损坏,MicroPython将通过将默认图像复制回文件系统来恢复它。如果开发人员需要将默认设置集成到其他设备的默认位置,那么他们至少可以将这些更新恢复到其他设备的默认位置。
最后,嵌入式开发人员可能希望确保他们在板上有多个内存设备可供选择。新的旗舰MicroPython开发板pyboard D系列包括两个单独的SPI内存设备,每个2 MB。一个用于存储应用程序代码,而另一个可以存储数据或其他信息。生产系统应该做一些类似的事情,甚至保留一个固件备份副本,这样,如果出现问题,应用程序就可以在用户没有问题的情况下恢复。
基于MicroPython的产品
虽然使用MicroPython进行产品设计听起来很有趣,但实际上有人用它来开发商业产品吗?根据调查,MicroPython已经在一些产品中使用,例如,MicroPython已被用于小型卫星的电子电源和数据采集系统。
MicroPython还用于流行的OpenMV模块,该模块允许开发人员创建机器视觉应用程序。该模块运行MicroPython,允许开发人员通过交互式IDE创建脚本,然后将开发人员的脚本下载到模块中。开发者甚至可以训练机器学习模型,并将其转换为在OpenMV模块上运行!这表明,MicroPython不仅可以运行简单的算法,还可以切换一些I/O。
Micropython会取代C/C++吗?
使用MicroPython构建嵌入式产品并不能像C/C++那样满足每个开发团队的需求,但它为嵌入式开发人员提供了一个有趣的解决方案,用于快速原型设计或开发商业产品。当然,仍然存在一些挑战,比如保护基于MicroPython的系统,确保确定性行为。这些都是可以通过预先进行适当的应用程序设计来克服的挑战。MicroPython的易用性和流行性使得利用MicroPython构建嵌入式系统成为一个有趣的机会。