求助 micropython 中的两种固化方式
[复制链接]
int mp_find_frozen_module(const char *str, size_t len, void **data) {
#if MICROPY_MODULE_FROZEN_STR
mp_lexer_t *lex = mp_lexer_frozen_str(str, len);
if (lex != NULL) {
*data = lex;
return MP_FROZEN_STR;
}
#endif
#if MICROPY_MODULE_FROZEN_MPY
const mp_raw_code_t *rc = mp_find_frozen_mpy(str, len);
if (rc != NULL) {
*data = (void*)rc;
return MP_FROZEN_MPY;
}
#endif
return MP_FROZEN_NONE;
}
micropython 的 .py 文件编译成 .mpy 文件后有两种存放方式:
- 存放在文件系统中,通过 import 调用
- 直接固化在固件中,这样就可以直接使用了
由于 rt-thread 提供的移植可以方便的使用文件系统,所以我使用该移植。
但是我目前想执行执行文件系统中的 .mpy 文件还不行,查看代码我发现在执行固化 .py 代码在内部有两种形式:
- MP_FROZEN_STR
- MP_FROZEN_MPY
我知道 MP_FROZEN_MPY 是执行固件中的模块,那么 MP_FROZEN_STR 是什么意思,这里是否和无法直接执行 .mpy 文件有关呢?
|