三. OPENMV4P中增加以太网接口驱动
1.增加RMII接口引脚定义
在“openmv\src\micropython\ports\stm32\boards\OPENMV4P\mpconfigboard.h”, 文件中增加RMII引脚定义
// Ethernet via RMII
#define MICROPY_HW_ETH_MDC (pin_C1)
#define MICROPY_HW_ETH_MDIO (pin_A2)
#define MICROPY_HW_ETH_RMII_REF_CLK (pin_A1)
#define MICROPY_HW_ETH_RMII_CRS_DV (pin_A7)
#define MICROPY_HW_ETH_RMII_RXD0 (pin_C4)
#define MICROPY_HW_ETH_RMII_RXD1 (pin_C5)
#define MICROPY_HW_ETH_RMII_TX_EN (pin_B11)
#define MICROPY_HW_ETH_RMII_TXD0 (pin_G13)
#define MICROPY_HW_ETH_RMII_TXD1 (pin_G12)
在“openmv\src\micropython\ports\stm32\boards\OPENMV4P\pins.csv”文件中增加RMII引脚定义”
ETH_MDC,PC1
ETH_MDIO,PA2
ETH_RMII_REF_CLK,PA1
ETH_RMII_CRS_DV,PA7
ETH_RMII_RXD0,PC4
ETH_RMII_RXD1,PC5
ETH_RMII_TX_EN,PB11
ETH_RMII_TXD0,PG13
ETH_RMII_TXD1,PG12
2.打开LWIP编译
在 “openmv\src\omv\boards\OPENMV4P\omv_boardconfig.mk”文件中,增加LWIP编译选项
MICROPY_PY_LWIP = 1
4.编译出现中的问题
make TARGET=OPENMV4P
Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
Including User C Module from /mnt/e/openmv/src/omv/modules
GEN /mnt/e/openmv/src/build/micropython/genhdr/qstrdefs.collected.h
QSTR not updated
GEN /mnt/e/openmv/src/build/micropython/genhdr/compressed.collected
Compressed data not updated
arm-none-eabi-gcc: error: /mnt/e/openmv/src/build/micropython/sdio.o: No such file or directory
omv/ports/stm32/omv_portconfig.mk:621: recipe for target 'firmware' failed
make: *** [firmware] Error 1
注意上边的加粗部分,
打开 “openmv\src\omv\ports\stm32\omv_portconfig.mk”去掉sdio.o的链接,如下
ifeq ($(MICROPY_PY_LWIP), 1)
FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/,\
sdio.o \(删除)
lib/lwip/src/core/*.o \
lib/lwip/src/core/*/*.o \
lib/lwip/src/netif/*.o \
lib/lwip/src/apps/*/*.o \
extmod/modlwip.o \
extmod/moduwebsocket.o \
extmod/modwebrepl.o \
)
endif
5.提示内存不够用
在“openmv\src\omv\boards\OPENMV4P\omv_boardconfig.h”中,更改如下:
把512K的AXI_SRAM作为程序内存空间,把SRAM1作为Fast fb alloc memory 使用。
// The maximum available fb_alloc memory = FB_ALLOC_SIZE + FB_SIZE - (w*h*bpp).
#define OMV_MAIN_MEMORY AXI_SRAM // data, bss and heap
#define OMV_STACK_MEMORY ITCM // stack memory
#define OMV_DMA_MEMORY SRAM3 // Misc DMA buffers memory.
#define OMV_FB_MEMORY DRAM // Framebuffer, fb_alloc
#define OMV_JPEG_MEMORY DRAM // JPEG buffer memory buffer.
#define OMV_JPEG_MEMORY_OFFSET (31M) // JPEG buffer is placed after FB/fballoc memory.
#define OMV_VOSPI_MEMORY SRAM4 // VoSPI buffer memory.
#define OMV_FB_OVERLAY_MEMORY SRAM1 // Fast fb_alloc memory.
#define OMV_FB_OVERLAY_MEMORY_OFFSET (240*1024) // Fast fb_alloc memory size.