长期以来 , 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 。 一个用于存储应用程序代码 , 而另一个可以存储数据或其他信息 。 生产系统应该做一些类似的事情 , 甚至保留一个固件备份副本 , 这样 , 如果出现问题 , 应用程序就可以在用户没有问题的情况下恢复 。
- 华为|把最难捕获的用户得到了,现在开始走向全能,我真佩服这种积极性
- 白象|还剩不到60天,俄罗斯的数据存储空间将用完,俄企着急等“救援”
- 库克态度强硬,想要不交钱,那就别用iPhone手机
- 荣耀Magic4至臻版定价7999,华为用户看得上吗?
- 买手机选储存容量,128GB够用吗?要不要入手256GB版?
- OPPO|iPad Air 5价格小贵,2K档位的OPPO平板够用吗?
- 红米手机|网页制作费用大概多少钱比较合适
- 华为|放弃在清华读博,为任正非“定江山”的郑宝用,如今为何退居二线
- Python|5000mAh电池+7nm芯片+鸿蒙系统,跌至1438元,大屏5G手机
- 塞班|塞班系统占用内存小还流畅,为什么突然被淘汰了?