Hi3861下移植micropython无法引入freeze程序的解决方法 原创
再见南丫岛
发布于 2022-2-27 19:35
浏览
0收藏
最近在移植micropython到海思Hi3861芯片,基本框架已经完成。现在在研究http的访问,需要urequest.py库。直接在文件系统下存储该文件,然后引用该py库是没有问题的,但是不能freeze之后打包进固件中。于是研究了一下源码,现把解决的思路整理一下,仅供参考。
1、需要启用MICROPY_MODULE_FROZEN宏。
2、添加manifest.py文件,用于freeze哪个py文件。
3、makefile中添加FROZEN的路径,也就是第二部的文件。
4、在py.mk中会编译该文件,编译成frozen_content.o
5、编译后会生成frozencontent.c文件。问题就从这里出现。此处自动生成的mpy_names中只有文件名,没有路径。
6、import的函数实现在py\builtinimport.c中,导入的时候,会查找frozen文件,但是查找的时候,是有“./”的这样,在于mpy文件对比的时候出现了不一致的情况。可能是我在移植代码的时候有地方遗漏,所以使用了一个临时方案解决这个问题。
既修改源码,在文件对比的时候,主动把“./”删除。这样就可以了。
STATIC mp_import_stat_t mp_frozen_stat_helper(const char *name, const char *str)
函数也要做同样的修改。
到此,编译成功,也可以正常import了。因为自己对micropython的理解还不够深入,暂时先这样解决这个问题,后续找到rootcause之后再更新解决方法。
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2022-3-13 20:51:43修改
赞
3
收藏
回复
3
1
相关推荐
赞,感谢大佬排坑