使用MicroPython设计嵌入式系统

C / C ++编程语言长期以来一直主导着嵌入式系统行业,很少有其他语言能够站稳脚跟。尽管诸如Java和Ada之类的语言确实已经尝试过,但是Python的流行不仅在上升,而且已经在相当长的一段时间内被发现用于基于Linux的应用程序中。在微控制器上使用的Python似乎从未满足要求,直到MicroPython(一种旨在在微控制器上运行的Python 3端口)。现在该项目已进入第六年,’越来越受欢迎和发展势头,可以使其成为您设计下一个产品的编程语言。让’我们研究了使用MicroPython的一些利弊。

 

Python语言编程特性

Python编程语言的学习曲线很浅,这使得开发人员开始使用它非常容易。实际上,我遇到了正在学习Python的小学生! Python为开发人员提供了一种高级编程语言,他们可以使用它们来构建简单的脚本,也可以使用它们来开发复杂的面向对象的体系结构,这些体系结构利用了现代软件项目的所有最佳实践。与C相比,Python还提供了内置机制来创建线程,处理错误并轻松集成到测试工具中。

这些语言特性的有趣之处在于,它使开发团队的每个成员都可以成为程序员! MicroPython提供了一系列库,这些库提供对底层微控制器功能的控制,这些功能抽象出了复杂性。例如,硬件工程师可以设计他们的电路板,而对微控制器(或C)的工作原理几乎不了解,或者开发高级脚本,这些脚本可以通过控制GPIO甚至与I2C设备通信来测试其电路板。在C语言中,开发I2C驱动程序可能会非常复杂,但是使用MicroPython,只需要以下几行代码即可创建I2C对象并将数据发送到从设备:

 

从pyb导入I2C

i2c = I2C(1)在总线1上创建

i2c = I2C(1,I2C.MASTER)#创建并作为主服务器初始化

i2c.init(I2C.MASTER,baudrate = 400000)#作为主机的init

 

#设置将启用GMODE的接近度阈值

i2c.mem_write(40,DEVICE_SLAVE_ADDRESS,REGISTER_ADDRESS,超时= 1000)

 

而已! MicroPython库负责处理I2C的所有基础工作,从而极大地简化了开发人员的开发工作。 (查看我用C编写的I2C驱动程序中的一个,它显示了几千行代码,这是一个非常强大的实现,并且提供了一些功能,以便在基础工作完成后与总线进行交互)。

 

生产设计注意事项

在考虑将MicroPython用于产品开发时,开发人员需要考虑几个关键的考虑因素。首先,开发人员需要考虑如何保护其应用程序代码。 MicroPython允许开发人员加载基于代码文本的Python脚本,或者将这些脚本编译为字节码并放入.mpy模块。这些解决方案的问题在于,任何可以轻松访问MicroPython文件系统的人都可以轻松获得应用程序代码。字节码确实使它变得有点难,但是将字节码转换回可读的代码并不难。开发人员需要考虑其系统的安全性,并可能采取额外的步骤来保护知识产权。

接下来,开发人员需要考虑在出现问题时如何恢复系统。根据所选择的微控制器,它们的应用程序代码可能在MCU内部,也可能在外部存储设备(例如SD卡)中。我发现文件系统在关机或出现电源不足的情况下不是很可靠。如果文件系统损坏,MicroPython将通过将默认映像复制回文件系统来恢复它。开发人员需要确保将其默认代码集成到其内核版本中,以便如果出现问题,至少将它们返回到出厂默认设置,然后可以从设备上可能存在的其他内存位置恢复任何更新。 。

最后,开发人员可能希望确保板上有多个存储设备可供选择。新的旗舰MicroPython开发板pyboard D系列包括两个单独的SPI存储设备,每个设备的大小为2 MB。一个用于存储应用程序代码,而另一个则可以存储数据或其他信息。生产系统应该执行类似的操作,甚至保留固件备份副本,以便在出现问题时可以恢复应用程序而不会给用户带来任何问题。

 

基于MicroPython的产品

使用MicroPython进行产品设计听起来很吸引人,但实际上有人使用它来开发商业产品吗?据我所知,MicroPython已经在多种产品中使用,而且很有可能是我所不知道的更多产品。例如,MicroPython已在小型卫星中用于电子电源和数据采集系统(其中一些是我亲自研究的)。欧洲航天局也一直在研究在较大的卫星系统上使用MicroPython。

MicroPython也被流行使用 OpenMV 该模块允许开发人员创建机器视觉应用程序。该模块运行MicroPython,并允许开发人员通过交互式IDE创建脚本,然后将开发人员的脚本下载到模块中。开发人员甚至可以训练机器学习模型并将其转换为可在OpenMV模块上运行!这表明MicroPython不仅可以运行简单的算法,还可以运行一些I / O。

 

结论

使用MicroPython构建嵌入式产品并不能满足C / C ++等每个开发团队的需求,但它为开发人员提供了一个有趣的解决方案,用于快速原型开发或开发商业产品。当然,仍然存在挑战,例如确保基于MicroPython的系统的安全以及确保确定性的行为。这些都是可以通过预先适当的应用程序设计克服的挑战。 MicroPython的易用性和Python的普及性使使用MicroPython构建嵌入式系统成为一个有趣的机会。

One thought 上 “使用MicroPython设计嵌入式系统”

  1. 我认为,MicroPython的一个不错的目标应用是物联网和楼宇自动化传感器。其中许多都是低采样率,并且您获得系统进行通信和收集数据的速度令人惊讶。

    我还用它来调试i2c总线。您可以证明硬件正在按预期工作,可以很快解决问题“是我的S / W还是H / W?”

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.