Micropython添加自定義Module-cc3200篇

最近因爲課程需要在研究用Micropython進行cc3200的開發,在進行到添加自定義模塊的步驟時,搜索了網上基本都是別的硬件平臺下的教程,雖然大致步驟相同,但是也有些細微差別,就寫個教程記錄下。

以下整理了幾個別的硬件平臺下添加自定義模塊的教程:

esp32:http://www.eemaker.com/micropython-add-module.html  (後面的教程添加的模塊代碼借用了該教程)

LPC1788:https://www.jianshu.com/p/1b2915bb570d

stm32:https://zhuanlan.zhihu.com/p/36306272

官方:http://docs.micropython.org/en/latest/develop/cmodules.html    (官方的教程試了下沒成功,不知道適不適用於cc3200,如果有成功的歡迎交流)


一.在ports/cc3200/mods文件夾下新建一個文件modtest.c 

 modtest.c的代碼內容如下:

#include "stdint.h"
#include "stdio.h"

#include "py/obj.h"
#include "py/runtime.h"
//定義的modtest全局字典,之後我們添加type和function就要添加在這裏
STATIC const mp_rom_map_elem_t modtest_globals_table[] = {
    {MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_modtest)},   //這個對應python層面的__name__ 屬性
};
//這個可以認爲是把modtest_globals_table註冊到 mp_module_modtest.globals裏面去
STATIC MP_DEFINE_CONST_DICT(mp_module_modtest_globals, modtest_globals_table);   

//這個是定義一個module類型
const mp_obj_module_t mp_module_modtest = {
    .base = {&mp_type_module},    
    .globals = (mp_obj_dict_t *)&mp_module_modtest_globals,
};

 這一步只定義了一個簡單的module,沒有實際的功能。

二.把module.c添加到MK文件中去

 在cc3200平臺下需要修改的文件是ports/cc3200/application.mk,打開該文件,按如下格式添加modtest.c:

APP_MODS_SRC_C = $(addprefix mods/,\
	modmachine.c \
	modnetwork.c \
	...
	pybwdt.c \
	modtest.c \
	)

三.將定義的module註冊到micropython中

 打開ports/cc3200/mpconfigport.h,找到#define MICROPY_PORT_BUILTIN_MODULES,添加我們定義的模塊:

extern const struct _mp_obj_module_t mp_module_ubinascii;
extern const struct _mp_obj_module_t mp_module_ussl;
extern const struct _mp_obj_module_t mp_module_modtest;    //在此處添加聲明

#define MICROPY_PORT_BUILTIN_MODULES \
    { MP_ROM_QSTR(MP_QSTR_umachine),    MP_ROM_PTR(&machine_module) },      \
    { MP_ROM_QSTR(MP_QSTR_wipy),        MP_ROM_PTR(&wipy_module) },         \
    ...
    { MP_ROM_QSTR(MP_QSTR_ussl),        MP_ROM_PTR(&mp_module_ussl) },      \
    { MP_ROM_QSTR(MP_QSTR_modtest),     MP_ROM_PTR(&mp_module_modtest) },   \    //在此處添加定義

以上,添加自定義模塊就完成了,照官方介紹make編譯下,在將mcuimg.bin燒錄進cc3200,如下圖執行代碼,說明我們添加modtest模塊成功。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章