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

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

长期以来 , 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++吗?
【Python|用MicroPython设计嵌入式系统的利弊】使用MicroPython构建嵌入式产品并不能像C/C++那样满足每个开发团队的需求 , 但它为嵌入式开发人员提供了一个有趣的解决方案 , 用于快速原型设计或开发商业产品 。 当然 , 仍然存在一些挑战 , 比如保护基于MicroPython的系统 , 确保确定性行为 。 这些都是可以通过预先进行适当的应用程序设计来克服的挑战 。 MicroPython的易用性和流行性使得利用MicroPython构建嵌入式系统成为一个有趣的机会 。