microPython源码分析.1

我最近写了很多microPython的程序,越写越回不到写C的日子。你说在这个背后是如何实现这一切的?为什么在烧录一个几百kb的bin文件之后就会获得这些魔法效果?我可不可以把这种魔法效果移植到别处呢?我找了很久,零零碎碎的,而且大多数文章都是适可而止,让我很难受。。。我想所有的一切都可以在源码中获得。我们将会在这个过程中学到什么:

  1. 交叉编译技术

  2. 环境搭建技术

  3. c模块编写

  4. py接口编写

  5. 代码组织

  6. 内在原理

  7. 驱动移植

  8. 待续

这里

mpy最早是在stm32上面实现的,后面是移植到各种的平台上面。我这次的硬件想使用ESP32,说说一些我的取舍,首先是资料丰富,各种层次的资料都比较齐全,而且是官方是比较积极的在更新。第二点的取舍是功能丰富,我们可以看下面这个功能的框图.其次是很便宜,一个最小的裸片才不到15块钱(不说s2的型号),集成USB,下载这些的功能的板子是20块钱以里。学习的硬件条件很便宜。

整个过程是阅读为主,所以需要一款文本阅读器。要求首先是要可以搜索,然后就是最好可以把里面的函数对象和宏定义的对象显示出来。我这里先使用VSCode来读,当不满足需求的时候来搭配其它的软件读取。

功能框图

https://www.espressif.com/zh-hans/products/socs/esp32
https://github.com/micropython/micropython
https://micropython.org/
https://micropython.org/download/
https://micropython.org/download/esp32
https://www.espressif.com/zh-hans/support/documents/technical-documents

对于一些芯片上面的寄存器的信息,在这里有

https://github.com/micropython/micropython-esp32
https://github.com/micropython

在官方的仓库里面有几个仓库

现在是只有一个主库在维和,剩下都是在历史仓库

可能研究使用

这个库是几年前的一个历史库

git clone https://github.com/micropython/micropython-esp32.git

我们可以执行上面的这个命令来拉取一份库文件

可以看到最后的一次修改在18年

我们都21年了

这里前后两个库都放在这里

这个地方是代码的组织形式

在doc里面有说明

py的这个目录是mpy的c实现,我们之后会重点的读

一共167个文件

这个目录是:用于将脚本转换为预编字典的微型Python交叉编译器

(0)

相关推荐

  • 如何为 esp32 编译和配置及烧写 MicroPython 固件。

    MicroPython 在 esp-idf (esp32) 上编译固件 esp32 编译 micropython 的固件相关的资料应该很多吧,我也会出一篇,但会额外讲一些 linux 的东西的. 资料 ...

  • Arduino IDE下ESP32环境搭建与离线安装

    Arduino IDE下ESP32环境搭建与离线安装 ESP32环境搭建的核心关节在ESP32的tools下的get.exe文件身上:安装时,get.exe会运行get.py脚本,先找package目 ...

  • microPython源码分析.2

    这个目录里面是最小的实现 这个目录里面是一些驱动 底层驱动 类Unix上面用于编译py的编译器 Python的核心实现 STM32上面的mpy实现 Unix上面的mpy实现 upip,DFU这些工具的 ...

  • 设计模式(一)——Java单例模式(代码+源码分析)

    设计模式(一)——Java单例模式(代码+源码分析)

  • 设计模式(十五)——命令模式(Spring框架的JdbcTemplate源码分析)

    设计模式(十五)——命令模式(Spring框架的JdbcTemplate源码分析)

  • Qt update刷新之源码分析(一)

    在做GUI开发时,要让控件刷新,会调用update函数:那么在调用了update函数后,Qt究竟基于什么原理.执行了什么代码使得屏幕上有变化?本文就带大家来探究探究其内部源码. Qt手册中关于QWid ...

  • 【老孟Flutter】源码分析系列之InheritedWidget

    老孟导读:这是2021年源码系列的第一篇文章,其实源码系列的文章不是特别受欢迎,一个原因是原理性的知识非常枯燥,我自己看源码的时候特别有感触,二是想把源码分析讲的通俗易懂非常困难,自己明白 和 让别人 ...

  • Wifi模块—源码分析Wifi热点的开启(Android P)

    一 前言 Android使用一个修改版wpa_supplicant作为daemon来控制WIFI,它是一个安全中间件,代码位于external/wpa_supplicant,为各种无线网卡提供统一的安 ...

  • 协程库 libtask 源码分析

    本文在公司内网有不错的反响,但不同于传统的前端技术文章,所以阅读起来可能有点晦涩. 假设读者已经了解了协程的概念.实现协程的底层技术支持,基于底层基础,我们来看看如何实现协程以及协程的应用. 什么是 ...

  • 线程池ThreadPoolExecutor源码分析,看这一篇就够了

    前言 多线程是我们日常工作中很少能接触到的技术,但是面试的时候100%会被问到,万一工作中用到了基本不会,本篇咱们就来深入分析线程池的实现类ThreadPoolExecutor. 1.构造方法 构造方 ...

  • DRF认证流程及源码分析

    认证 前言 用户验证用户是否合法登陆. 部分内容在DRF视图的使用及源码流程分析讲解,建议先看讲解视图的这篇文章. 使用流程 认证使用的方法流程如下: 自定义认证类,继承BaseAuthenticat ...