Python编程语言只有一个简单的学习曲线,这样开发者就可以很容易地使用它。实际上,我见过学好Python的学生!Python为开发者提供了一种高级的编程语言,它可以用来构建简单的脚本,也可以用来开发复杂的、面向对象的架构,它使用现代软件项目的所有最佳实践。相对于C语言,Python还提供了用于创建线程、处理错误以及容易集成到测试工具的内置机制。 转变的风正在吹向我们,而MicroPython可能会成为你下一次构建产品的编程语言。这节课,我们来看一下如何用MicroPython开发产品。参加者不会参加这门课程,并详细了解他们要在下一次产品中使用MicroPython。 其中有趣的是,这些语言特性让开发团队中的每一个成员都能成为程序员!MicroPython提供了一系列的库,用来控制低层的微处理器的功能来减少复杂性。举例来说,硬件工程师可能对微处理器(C)的工作原理一无所知,开发高级脚本,可以通过控制GPIO测试电路板,甚至与I2C设备进行通信。用C语言开发I2C驱动可能是很复杂的,但是MicroPython仅仅需要下面几行代码就可以创建一个I2C对象并把数据发送给依赖设备!所有处理I2C的基本工作都由MicroPython库来完成,这极大地简化了开发。(看一下我在C中使用的一个I2C驱动程序显示了数千行代码,让它成为一种非常强大的实现,并且在完成基本工作之后,可以使用总线进行交互)。 当开发一个MicroPython的产品的时候,开发者有一些关键的因素需要考虑。在开始时,开发人员需要考虑如何保护应用程序代码。MicroPython允许开发者加载Python脚本,或者将其编译成字节码,并将其放在a.mpy模块中。这种方法的问题是,只要能访问MicroPython文件系统,就能方便地获取应用程序代码,而且易于实现。bytecode的确让它有点难,但是把字节码转换回可读的代码并不困难。开发者需要考虑他们对系统安全的需求,并且可能会采取其他措施来保护知识产权。 下一步,开发者需要考虑在出现问题时如何恢复系统。依据微处理器的选择,其应用程序代码可能位于MCU内部,或者位于外部存储装置(例如SD卡)。在电力循环或欠压情况下,文件系统的功能并不强。MicroPython会在文件系统被破坏的情况下通过将默认镜像复制回文件系统来恢复。开发者需要确保他们的默认代码被集成到内核版本,这样当问题发生时,至少可以把它恢复到出厂默认值,这样,你就可以从设备上其他的内存位置恢复更新。 最终,开发者可能想要确保他们拥有多种可用的内存设备。全新旗舰MicroPython开发板,pyboardD系列,包括两个2MB的独立SPI内存设备。一种是用来储存应用程式码,另一种是储存资料。产品系统应执行类似的操作,甚至保持固件备份副本,这样当问题发生时,应用程序可以恢复,同时不会给用户造成任何问题。 MicroPython的产品设计听起来很有意思,有谁真的在开发商业产品呢?就我所知,MicroPython已经在很多产品中使用了,毫无疑问,我不知道更多。举例来说,MicroPython已经被用在小卫星上,用于电子动力和数据采集系统(有些是我自己自己参加的)。欧洲航天局已将MicroPython探测用于大型卫星系统。MicroPython也被广泛使用在流行的OpenMV模块中,开发者可以创建机器视觉应用程序。这个模块运行着MicroPython,让开发者可以通过IDE交互的方式创建脚本,然后下载到这个模块。开发者甚至可以对机器学习模型进行培训,并把它转换成OpenMV模块运行!它说明MicroPython可以用来运行简单的算法或者转换某些I/O. 用MicroPython构建嵌入式产品不能满足C/C++等每个开发团队的需要,但是它为开发者提供了一种有趣的快速原型设计或者商业产品开发的解决方案。这其中肯定有一些挑战,比如保护基于MicroPython的系统和确定的行为。通过合适的应用设计,这些问题可以在事先解决。MicroPython的易用性以及Python的流行,使用MicroPython构建嵌入式系统成为一种很有意义的机会。 |
|