添加micropython模块问题
-
我根据文档
https://micropython-dev-docs.readthedocs.io/en/latest/adding-module.html#using-our-module-in-micropython
尝试添加一个新的micropython模块。STATIC const mp_map_elem_t optical_flow_globals_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_optical_flow) }, };
这段代码编译时告诉我MP_QSTR_optical_flow未声明,我看omv中其他代码也这么写的,例如py_sensor.c中
STATIC const mp_map_elem_t globals_dict_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_sensor) }, ...
MP_QSTR_sensor也找不到定义,但是编译能过,请问这个地方应该怎么处理,这个定义的原理是什么?
-
教程很简单啊。
在src/omv/py/目录下:
- 新建mymodule.c(如果需要.h的话,也新建一个)
- 把mymodule.c mymodule.o加入makefile
- mymodule.c加入代码
- 在qstrdefsomv.h加入Q(关键字)
还有
- 改mpconfigport.h,加入代码,这里有两个位置的代码。
- 这一步是为了import语句可以导入模块
- 这个文件在src/micropython/ports/stm32/mpconfigport.h
- 如果这一步不做,那么编译没问题,但是import会提示没有这个模块
-
此回复已被删除!
-
@kidswong999 我奋战了一个小时才发现要往qstrdefsomv.h加入Q(optical_flow)TAT
-
但是这个地方Q()是什么意思啊,用Qt Creator查定义什么的都查不到
-
管他是什么呢,把关键字塞进去就行了
-
@kidswong999 makefile文件就改/omv/makefile就可以吗?我在optical_flow.c中写
const mp_obj_module_t optical_flow_module = { .base = { &mp_type_module }, .globals = (mp_obj_dict_t*)&mp_module_optical_flow_globals, };
在/micropython/ports/stm32/mpconfigport.h中声明
extern const struct _mp_obj_module_t optical_flow_module;
然后在下面写
#define MICROPY_PORT_BUILTIN_MODULES \ ... { MP_OBJ_NEW_QSTR(MP_QSTR_optical_flow), (mp_obj_t)&optical_flow_module }, \ ...
编译器显示undefine referecne to 'optical_flow_module'
-
你慢慢改吧,我也不能手把手教你。。。
我是编译成功的,我最近在做一个输出NTSC/PAL的视频扩展板。编译是没啥问题。而且光流算法,OpenMV都内置了,你再写有啥用。
-
我要提取大概50个点的LKT光流,openmv的光流没有呀
-
@kidswong999 搞定了,要把.o文件加到src/makefile里,.c文件加到src/omv/makefile里,万分感谢
-
@kidswong999 你好,有没有一份最新完整的教程