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 文件后有两种存放方式:
由于 rt-thread 提供的移植可以方便的使用文件系统,所以我使用该移植。 但是我目前想执行执行文件系统中的 .mpy 文件还不行,查看代码我发现在执行固化 .py 代码在内部有两种形式:
我知道 MP_FROZEN_MPY 是执行固件中的模块,那么 MP_FROZEN_STR 是什么意思,这里是否和无法直接执行 .mpy 文件有关呢?
MP_FROZEN_STR应该是从你的文件系统中读取的脚本,无法执行时,要查一下以下几种情况
你的这个文件是不是存在
文件的编码方式 是不是对的