用MicroPython设计嵌入式系统的利弊

liftword2周前 (12-20)技术文章21

长期以来,C/C++编程语言一直主导着嵌入式开发系统行业,很少有其他语言能够站稳脚跟。虽然JavaAda等语言已经尝试过了,但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构建嵌入式系统成为一个有趣的机会。


了解更多

相关文章

python能做嵌入式吗 python 嵌入

近些年来Python非常流行,Python是一种面向对象的解释型计算机程序设计语言,Python语法简洁清晰,易读性以及可扩展性,Python具有丰富和强大的库,能够把用其他语言制作的各种模块(尤其是...

嵌入式开发:嵌入式系统中Python与C/C++的比较

C/C++编程语言在嵌入式系统编程中占据主导地位,尽管它们有许多缺点。另一方面,Python有许多优点,使其成为嵌入式开发的优秀语言。让我们看看每一个利弊,以及为什么你应该考虑Python作为嵌入式编...

Python嵌入版 Python嵌入版安装pandas

Python嵌入版1.什么是Python嵌入版Python嵌入版(Embedded Python)是将Python解释器集成到另一个程序中的形式,使得可以在程序中调用和执行Python代码。主要的Py...

通俗一点讲什么是嵌入式? 嵌入式 什么意思

嵌入式系统,就是,在其它电子产品或设备中,加入(嵌入)一个小小的"计算机"。目的是为了,人机交互、采集传感器数据、处理数据、控制执行机构和通信。这些是"计算机"擅长的。...

如何自学嵌入式技术?一篇就够了 自学嵌入式要多久

嵌入式系统是指在特定用途下,集成电路和软件设计为一体,用于控制、监控等特定应用领域的计算机系统。嵌入式系统广泛应用于家用电器、通信、交通、医疗、工业自动化等领域。嵌入式系统的开发需要掌握硬件和软件的知...