micropython的pyboard模块是如何从C实现生成的

How is the micropython's pyboard module generated from C implementation

有很多pyboard模块可以被micropython使用。目前我只知道这些模块的真正实现是用 C 完成的。我的问题是: Python 模块和 C 实现之间的关系是如何映射的? 比如我们可以使用import pyb,pybPython文件在哪里? 比如我们可以使用from pyb import LED调用强度函数,Python LED class定义在哪里?它的强度函数的定义在哪里?

找到它的最简单方法是克隆定义 pyb 模块的 source code and then start looking around using whatever text/file search tool you prefer. Search for files/text 'pyb' and/or 'LED'. Then you'll find for instance modpyb.c(在 C 中,而不是在 Python 中)。在那里你可以看到模块的全局字典有一个条目

{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pyb_led_type) }

这是 MicroPython 的行话,意思是“有一个名为 LED 的东西,它的类型是 pyb_led_type。后者是 LED class 的 C 代码,可在 led.c 中找到,包括 led_obj_intensity 函数。