查看: 2145|回复: 14

为什么我们需要MicroPython?

[复制链接]
  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3300

    主题

    6547

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32032
    最后登录
    2024-4-26
    发表于 2021-5-27 10:21:21 | 显示全部楼层 |阅读模式
    为什么我们需要MicroPython?


    在开始今天的正文之前,小编想先问大家一个问题:什么是快乐星球(编程)?作为一个编程新人,小编认为,编程是一门关于创造的艺术,能够让我们把抽象的意识具象化,而对于创造艺术的过程,应该是无比快乐的。
    那么有没有办法让我们更快乐?当然,让编程更加简单,不仅快乐会加倍,编程效率也会大大提高。而关于这一点,小编认为,Python做到了。可以说,现在Python已经不再是一门单纯的编程语言了,它更是一个万能的工具箱,可以让复杂的事情变简单。
    这里我们先提前给出结论,Python是一款更适合初学者的入门语言。
    为什么这样说呢?我们就拿在大学期间接触到的第一门语言来进行对比。相信大家在上学时候,学到的第一门语言大多是C/C++。既然是入门语言,他们一定很简单吧。如果真的这么想了,小编只能说声不好意思:想得太简单了。可能一个小小的指针就能把我们搞得云里雾里,可以说,我们丝毫没有感受到编程和创造的快乐。
    而上述这些还往往是在基础理论学习上,如果我们真的熬过了这一阶段,到了实际使用的一步,还会发现,即便是一个很小的功能也需要花费很多行代码来实现。
    我们就拿一个最简单的字符串拼接来举例子吧:
    1. char str[50];
    2. strcpy (str,"hello, micropython!");
    3. strcat (str,"hello, world!");
    4. printf(str);
    复制代码
    这里,我们首先要申请一个长度为50的字符数组以存储结果。之后调用C库函数进行字符串操作。最后,调用printf函数将结果打印出来。
    让我们先来分析下这段代码,实话讲,如果不是学习过C的同学,可能并不知道这段代码是在干什么。除了翻翻xx翻译,看看关键字的英语含义,估计也没有啥其他办法了。其次,实现步骤繁琐,同时要依赖一些附加库。同时,当我们要使用某个变量前,不仅要声明类型,还要考虑数组长度问题,以防访问越界,看到segment fault。
    最重要的是要知道str字符数组的指针意味着什么。
    然而同样的功能如果换到Python呢?
    1. str1 = 'hello, micropython!'
    2. str2 = 'hello, world!'print(str1 + str2)
    复制代码
    同样的操作,我们只要三行就能解决。而且,我相信,就算没有系统学习过,或是完全没接触过Python的同学,也能大致知道这是在干什么吧。而且,我们去掉了变量声明部分,免去了我们思考数据类型的烦恼。
    那么,我们当真不需要C吗,不是的,CPython和MicroPython其实都是由C语言实现的,我能够这么方便的实现这些功能,也正是因为大神们帮我们用C打好了基础,我们才能够树下乘凉。但是C语言本身对于计算机基础/硬件底层知识有着较高的要求,真正驾驭起来可不是很容易的。
    可能这时,有人会问了,今天的主角不是MicroPython吗,怎么聊起来Python了,所谓好戏都在后头,我们这就开启MicroPython篇。
    MicroPython是英国剑桥大学的Damien George教授所发明,教授本身是一名计算机工程师,每天都要使用Python来工作,同时也兼顾一些机器人项目。正如那颗砸到牛顿的苹果一样,每天的工作,让他冒出了一个新想法,能否用Python来控制单片机,实现对机器人的控制呢?经过了大约6个月的时间,MicroPython诞生了,包含了几乎所有CPython(即我们在PC上使用的Python)的功能。
    自此,单片机的开发,正式开启了又一华章。
    那么除了之前说的,使用Python开发的代码简洁易懂之外,就没有什么其他优势了吗?当然有了,而且,小编想要说的是,这个优势被应用到单片机开发上,会显得格外的亮眼。
    对于传统的硬件开发而言,C/C++是不二之选,总结一下这一传统的开发形式:代码编辑->编译->烧写->运行。在这一模式下,当我们发现有个隐藏的小彩蛋(bug),哪怕只是需要添加一个小小的分号来修复,或者说我们想要添加一个简简单单的小功能,就必须重新对代码进行编译,然后下载到目标板中,才能够实现代码的正常运行。
    那么有了MicroPython,当我们烧写了MicroPython固件到板子上之后,实际上就是将一个叫做的代码解释器的东东,放到了我们的MCU上。什么叫做代码解释器呢?通俗点讲,他就是包工头,根据客户需求,指挥大家来干活。有了它,之后的一切就会变得简单。我们的代码开发流程就会变为:代码编辑->运行。
    是的,就是变得如此的简单,省去了耗时的代码编译以及代码烧写的过程。而且,MicroPython目前支持两种开发模式:
    被称为REPL的交互式命令行:
    这是一个类似于PC端Python命令行的东西,不同的地方在于,这个东西一般是通过串口进行通信的。我们可以随时输入代码并执行,就好像我们来到包工头的办公室,直接发号施令。一旦发现代码有误,可以立即更改。

    将代码保存到文件系统,开机自动启动:
    我们可以将代码保存到MicroPython的文件系统中。这就相当于,我们在包工头的办公室中事先制定好了工作流程图,包工头需要按照这个来进行任务的调度。MicroPython默认开机后先执行boot.py,随后开始执行main.py。

    这样一来,有了MicroPython这一利器,我们无需因为代码的修改,而反复编译代码和烧写固件。

    我们需要做的,只是确保代码逻辑,实现一键运行,这就大大提高了我们的开发效率,让开发过程更加灵活便捷。

    这就是本次小编想要和大家分享的内容,在最后回答一下开头的问题,为什么我们需要MicroPython?因为它会使得我们的开发更加方便,高效。

    期待更多人加入MicroPython的大家庭。





    签到签到
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-12-30 08:07
  • 签到天数: 87 天

    [LV.6]常住居民II

    0

    主题

    242

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    1097
    最后登录
    2022-12-30
    发表于 2021-5-27 11:55:46 | 显示全部楼层
    嗯,准备学python了,就是python版本更迭的忒快了,跟不上
    生命不息,奋斗不止!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-3-5 08:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    91

    主题

    2928

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    7809
    最后登录
    2024-4-26
    发表于 2021-5-27 15:10:00 | 显示全部楼层
    找个小项目做做比较好,因为学完还没想好干点啥
    加油哦
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2022-4-14 11:08
  • 签到天数: 47 天

    [LV.5]常住居民I

    23

    主题

    131

    帖子

    0

    高级会员

    Rank: 4

    积分
    724
    最后登录
    2024-1-20
    发表于 2021-5-27 17:48:42 | 显示全部楼层
    jundao721 发表于 2021-5-27 15:10
    找个小项目做做比较好,因为学完还没想好干点啥

    有没有想法,咱一起讨论一下
    签到签到
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2022-5-25 16:03
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    8

    主题

    718

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3395
    最后登录
    2024-3-5
    发表于 2021-5-27 18:22:19 | 显示全部楼层
    有相应开发板或项目文件学习吗?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    20 小时前
  • 签到天数: 750 天

    [LV.10]以坛为家III

    23

    主题

    1361

    帖子

    4

    金牌会员

    Rank: 6Rank: 6

    积分
    5230
    最后登录
    2024-4-25
    发表于 2021-5-27 20:40:57 | 显示全部楼层
    本帖最后由 tobot 于 2021-5-27 20:48 编辑

    好吧,在micropython社区3月24的帖子里面表示支持的板子:
    NXP i.MX RT10XX - 0x4fb2d5bd
    NXP LPC55xx - 0x2abc77ec
    NXP KL32L2x - 0x7f83e793
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-3-5 08:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    91

    主题

    2928

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    7809
    最后登录
    2024-4-26
    发表于 2021-5-28 09:12:51 | 显示全部楼层
    h12121 发表于 2021-5-27 17:48
    有没有想法,咱一起讨论一下

    让日天整个群,方便咱一边学习,一边交流。@NXP管管
    加油哦
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2023-1-31 09:34
  • 签到天数: 202 天

    [LV.7]常住居民III

    7

    主题

    1515

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3816
    最后登录
    2024-2-19
    发表于 2021-5-28 15:18:01 | 显示全部楼层
    三天可上手,五天可上项目
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-4-3 10:59
  • 签到天数: 329 天

    [LV.8]以坛为家I

    3

    主题

    1392

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    5355
    最后登录
    2024-4-25
    发表于 2021-5-28 22:55:18 | 显示全部楼层
    对于软件工程师来说,不需要对硬件底层很熟悉,即可使用一款单片机,这是一个很方便的事情
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    昨天 17:02
  • 签到天数: 618 天

    [LV.9]以坛为家II

    0

    主题

    1810

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    4520
    最后登录
    2024-4-26
    发表于 2021-5-29 13:41:12 | 显示全部楼层
    很好,学习
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-26 20:48 , Processed in 0.141903 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表