ports/stm32: Add support for additional GC blocks.

This commit is contained in:
iabdalkader 2024-06-22 16:17:38 +02:00
parent 7aa40047a7
commit 112c753bb5
17 changed files with 180 additions and 174 deletions

View File

@ -107,27 +107,26 @@
// Linker script constants (see the linker script template stm32fxxx.ld.S).
// Note: fb_alloc is a stack-based, dynamically allocated memory on FB.
// The maximum available fb_alloc memory = FB_ALLOC_SIZE + FB_SIZE - (w*h*bpp).
#define OMV_MAIN_MEMORY SRAM1 // data, bss and heap
#define OMV_STACK_MEMORY DTCM // stack memory
#define OMV_DMA_MEMORY SRAM3 // 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 (7M) // JPEG buffer is placed after FB/fballoc memory.
#define OMV_VOSPI_MEMORY SRAM4 // VoSPI buffer memory.
#define OMV_VOSPI_MEMORY_OFFSET (20K) // SRAM4 reserves 16K for CM4 + 4K D3 DMA buffers.
#define OMV_FB_OVERLAY_MEMORY AXI_SRAM // Fast fb_alloc memory.
#define OMV_FB_SIZE (4M) // FB memory: header + VGA/GS image
#define OMV_FB_ALLOC_SIZE (3M) // minimum fb alloc size
#define OMV_FB_OVERLAY_SIZE (480 * 1024) // Fast fb_alloc memory size.
#define OMV_STACK_SIZE (64K)
#define OMV_MAIN_MEMORY SRAM1 // data, bss and heap
#define OMV_DMA_MEMORY SRAM3 // DMA buffers memory.
#define OMV_HEAP_SIZE (199K)
#define OMV_SDRAM_SIZE (8 * 1024 * 1024) // This needs to be here for UVC firmware.
#define OMV_LINE_BUF_SIZE (11 * 1024) // Image line buffer round(2592 * 2BPP * 2 buffers).
#define OMV_STACK_MEMORY DTCM // stack memory
#define OMV_STACK_SIZE (64K)
#define OMV_FB_MEMORY DRAM // Framebuffer, fb_alloc
#define OMV_FB_SIZE (4M) // FB memory: header + VGA/GS image
#define OMV_FB_ALLOC_SIZE (2M) // minimum fb alloc size
#define OMV_JPEG_MEMORY DRAM // JPEG buffer memory buffer.
#define OMV_JPEG_BUF_SIZE (1024 * 1024) // IDE JPEG buffer (header + data).
#define OMV_VOSPI_MEMORY SRAM4 // VoSPI buffer memory.
#define OMV_VOSPI_MEMORY_OFFSET (20K) // SRAM4 reserves 16K for CM4 + 4K D3 DMA buffers.
#define OMV_FB_OVERLAY_MEMORY AXI_SRAM // Fast fb_alloc memory.
#define OMV_FB_OVERLAY_SIZE (480K) // Fast fb_alloc memory size.
#define OMV_GC_BLOCK0_MEMORY DRAM // Extra GC block 0.
#define OMV_GC_BLOCK0_SIZE (1M)
#define OMV_MSC_BUF_SIZE (2K) // USB MSC bot data
#define OMV_VFS_BUF_SIZE (1K) // VFS struct + FATFS file buffer (624 bytes)
#define OMV_JPEG_BUF_SIZE (1024 * 1024) // IDE JPEG buffer (header + data).
#define OMV_SDRAM_SIZE (8 * 1024 * 1024) // This needs to be here for UVC firmware.
#define OMV_LINE_BUF_SIZE (11 * 1024) // Image line buffer round(2592 * 2BPP * 2 buffers).
// Memory map.
#define OMV_FLASH_ORIGIN 0x08000000

View File

@ -47,14 +47,13 @@
#define OMV_USB1_IRQ_HANDLER (USBD_IRQHandler)
// Linker script constants (see the linker script template port/x.ld.S).
#define OMV_FB_MEMORY SRAM // Framebuffer, fb_alloc
#define OMV_MAIN_MEMORY SRAM // data, bss and heap memory
#define OMV_HEAP_SIZE (64K)
#define OMV_STACK_MEMORY SRAM // stack memory
#define OMV_STACK_SIZE (8K)
#define OMV_FB_MEMORY SRAM // Framebuffer, fb_alloc
#define OMV_FB_SIZE (128K) // FB memory: header + QVGA/GS image
#define OMV_FB_ALLOC_SIZE (16K) // minimum fb alloc size
#define OMV_STACK_SIZE (8K)
#define OMV_HEAP_SIZE (64K)
#define OMV_JPEG_BUF_SIZE (16 * 1024) // IDE JPEG buffer (header + data).
#define OMV_TEXT_ORIGIN 0x00026000

View File

@ -46,14 +46,13 @@ extern unsigned char *OMV_BOARD_UID_ADDR; // Unique address.
#define OMV_USB1_IRQ_HANDLER (USBD_IRQHandler)
// Linker script constants (see the linker script template port/x.ld.S).
#define OMV_FB_MEMORY RAM // Framebuffer, fb_alloc
#define OMV_MAIN_MEMORY RAM // data, bss and heap memory
#define OMV_HEAP_SIZE (60 * 1024) // MicroPython's heap
#define OMV_STACK_MEMORY RAM // stack memory
#define OMV_STACK_SIZE (16K)
#define OMV_FB_MEMORY RAM // Framebuffer, fb_alloc
#define OMV_FB_SIZE (100K) // FB memory
#define OMV_FB_ALLOC_SIZE (16K) // minimum fb alloc size
#define OMV_STACK_SIZE (16K)
#define OMV_HEAP_SIZE (60 * 1024) // MicroPython's heap
#define OMV_JPEG_BUF_SIZE (20 * 1024) // IDE JPEG buffer (header + data).
// GP LED

View File

@ -100,23 +100,21 @@
// Linker script constants (see the linker script template stm32fxxx.ld.S).
// Note: fb_alloc is a stack-based, dynamically allocated memory on FB.
// The maximum available fb_alloc memory = FB_ALLOC_SIZE + FB_SIZE - (w*h*bpp).
#define OMV_MAIN_MEMORY SRAM1 // data, bss and heap
#define OMV_STACK_MEMORY DTCM // stack memory
#define OMV_DMA_MEMORY SRAM2 // DMA buffers memory.
#define OMV_FB_MEMORY AXI_SRAM // Framebuffer, fb_alloc
#define OMV_JPEG_MEMORY SRAM3 // JPEG buffer memory buffer.
#define OMV_VOSPI_MEMORY SRAM4 // VoSPI frame buffer memory.
#define OMV_VOSPI_MEMORY_OFFSET (20K) // SRAM4 reserves 16K for CM4 + 4K D3 DMA buffers.
#define OMV_FB_SIZE (400K) // FB memory: header + VGA/GS image
#define OMV_FB_ALLOC_SIZE (100K) // minimum fb alloc size
#define OMV_MAIN_MEMORY SRAM1 // data, bss and heap
#define OMV_DMA_MEMORY SRAM2 // DMA buffers memory.
#define OMV_HEAP_SIZE (181K)
#define OMV_STACK_MEMORY DTCM // stack memory
#define OMV_STACK_SIZE (64K)
#define OMV_HEAP_SIZE (182K)
#define OMV_FB_MEMORY AXI_SRAM // Framebuffer, fb_alloc
#define OMV_FB_SIZE (400K) // FB memory: header + VGA/GS image
#define OMV_FB_ALLOC_SIZE (100K) // minimum fb alloc size
#define OMV_JPEG_MEMORY SRAM3 // JPEG buffer memory buffer.
#define OMV_JPEG_BUF_SIZE (32 * 1024) // IDE JPEG buffer (header + data).
#define OMV_VOSPI_MEMORY SRAM4 // VoSPI frame buffer memory.
#define OMV_VOSPI_MEMORY_OFFSET (20K) // SRAM4 reserves 16K for CM4 + 4K D3 DMA buffers.
#define OMV_MSC_BUF_SIZE (2K) // USB MSC bot data
#define OMV_VFS_BUF_SIZE (1K) // VFS struct + FATFS file buffer (624 bytes)
#define OMV_LINE_BUF_SIZE (3 * 1024) // Image line buffer round(640 * 2BPP * 2 buffers).
#define OMV_MSC_BUF_SIZE (2K) // USB MSC bot data
#define OMV_VFS_BUF_SIZE (1K) // VFS struct + FATFS file buffer (624 bytes)
#define OMV_JPEG_BUF_SIZE (32 * 1024) // IDE JPEG buffer (header + data).
// Memory map.
#define OMV_FLASH_ORIGIN 0x08000000

View File

@ -108,26 +108,25 @@
// Linker script constants (see the linker script template stm32fxxx.ld.S).
// Note: fb_alloc is a stack-based, dynamically allocated memory on FB.
// The maximum available fb_alloc memory = FB_ALLOC_SIZE + FB_SIZE - (w*h*bpp).
#define OMV_MAIN_MEMORY SRAM1 // data, bss and heap
#define OMV_STACK_MEMORY DTCM // stack memory
#define OMV_DMA_MEMORY SRAM3 // 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 (7M) // JPEG buffer is placed after FB/fballoc memory.
#define OMV_VOSPI_MEMORY SRAM4 // VoSPI buffer memory.
#define OMV_FB_OVERLAY_MEMORY AXI_SRAM // Fast fb_alloc memory.
#define OMV_FB_SIZE (4M) // FB memory: header + VGA/GS image
#define OMV_FB_ALLOC_SIZE (3M) // minimum fb alloc size
#define OMV_FB_OVERLAY_SIZE (480 * 1024) // Fast fb_alloc memory size.
#define OMV_STACK_SIZE (64K)
#define OMV_MAIN_MEMORY SRAM1 // data, bss and heap
#define OMV_DMA_MEMORY SRAM3 // DMA buffers memory.
#define OMV_HEAP_SIZE (160K)
#define OMV_SDRAM_SIZE (8 * 1024 * 1024) // This needs to be here for UVC firmware.
#define OMV_LINE_BUF_SIZE (11 * 1024) // Image line buffer round(2592 * 2BPP * 2 buffers).
#define OMV_STACK_MEMORY DTCM // stack memory
#define OMV_STACK_SIZE (64K)
#define OMV_FB_MEMORY DRAM // Framebuffer, fb_alloc
#define OMV_FB_SIZE (4M) // FB memory: header + VGA/GS image
#define OMV_FB_ALLOC_SIZE (2M) // minimum fb alloc size
#define OMV_FB_OVERLAY_MEMORY AXI_SRAM // Fast fb_alloc memory.
#define OMV_FB_OVERLAY_SIZE (480K) // Fast fb_alloc memory size.
#define OMV_JPEG_MEMORY DRAM // JPEG buffer memory buffer.
#define OMV_JPEG_BUF_SIZE (1024 * 1024) // IDE JPEG buffer (header + data).
#define OMV_GC_BLOCK0_MEMORY DRAM // Extra GC block 0.
#define OMV_GC_BLOCK0_SIZE (1M)
#define OMV_VOSPI_MEMORY SRAM4 // VoSPI buffer memory.
#define OMV_MSC_BUF_SIZE (2K) // USB MSC bot data
#define OMV_VFS_BUF_SIZE (1K) // VFS struct + FATFS file buffer (624 bytes)
#define OMV_JPEG_BUF_SIZE (1024 * 1024) // IDE JPEG buffer (header + data).
#define OMV_SDRAM_SIZE (8 * 1024 * 1024) // This needs to be here for UVC firmware.
#define OMV_LINE_BUF_SIZE (11 * 1024) // Image line buffer round(2592 * 2BPP * 2 buffers).
// Memory map.
#define OMV_FLASH_ORIGIN 0x08000000

View File

@ -62,21 +62,19 @@
// Note: fb_alloc is a stack-based, dynamically allocated memory on FB.
// The maximum available fb_alloc memory = FB_ALLOC_SIZE + FB_SIZE - (w*h*bpp).
// Note: fb_alloc overwrites the line buffer which is only used during readout.
#define OMV_FB_MEMORY SRAM1 // Framebuffer, fb_alloc
#define OMV_MAIN_MEMORY DTCM // data, bss and heap memory
#define OMV_STACK_MEMORY DTCM // stack memory
#define OMV_DMA_MEMORY SRAM2 // Misc DMA buffers
#define OMV_HEAP_SIZE (47K)
#define OMV_STACK_MEMORY DTCM // stack memory
#define OMV_STACK_SIZE (8K)
#define OMV_FB_MEMORY SRAM1 // Framebuffer, fb_alloc
#define OMV_FB_SIZE (152K) // FB memory: header + QVGA/GS image
#define OMV_FB_ALLOC_SIZE (10K) // minimum fb alloc size
#define OMV_STACK_SIZE (8K)
#define OMV_HEAP_SIZE (47K)
#define OMV_LINE_BUF_SIZE (2 * 1024) // Image line buffer round(320 * 2BPP * 2 buffers).
#define OMV_JPEG_BUF_SIZE (8 * 1024) // IDE JPEG buffer size (header + data).
#define OMV_MSC_BUF_SIZE (2K) // USB MSC bot data
#define OMV_VFS_BUF_SIZE (1K) // VFS struct + FATFS file buffer (624 bytes)
#define OMV_FFS_BUF_SIZE (16K) // Flash filesystem cache
#define OMV_JPEG_BUF_SIZE (8 * 1024) // IDE JPEG buffer size (header + data).
#define OMV_LINE_BUF_SIZE (2 * 1024) // Image line buffer round(320 * 2BPP * 2 buffers).
// Memory map.
#define OMV_FLASH_ORIGIN 0x08000000

View File

@ -61,21 +61,19 @@
// Linker script constants (see the linker script template stm32fxxx.ld.S).
// Note: fb_alloc is a stack-based, dynamically allocated memory on FB.
// The maximum available fb_alloc memory = FB_ALLOC_SIZE + FB_SIZE - (w*h*bpp).
#define OMV_FB_MEMORY SRAM1 // Framebuffer, fb_alloc
#define OMV_MAIN_MEMORY DTCM // data, bss and heap
#define OMV_HEAP_SIZE (55K)
#define OMV_STACK_MEMORY ITCM // stack memory
#define OMV_STACK_SIZE (16K)
#define OMV_DMA_MEMORY DTCM // Misc DMA buffers
#define OMV_FB_MEMORY SRAM1 // Framebuffer, fb_alloc
#define OMV_FB_SIZE (300K) // FB memory: header + VGA/GS image
#define OMV_FB_ALLOC_SIZE (84K) // minimum fb alloc size
#define OMV_STACK_SIZE (16K)
#define OMV_HEAP_SIZE (55K)
#define OMV_LINE_BUF_SIZE (3 * 1024) // Image line buffer round(640 * 2BPP * 2 buffers).
#define OMV_JPEG_BUF_SIZE (22 * 1024) // IDE JPEG buffer (header + data).
#define OMV_MSC_BUF_SIZE (2K) // USB MSC bot data
#define OMV_VFS_BUF_SIZE (1K) // VFS struct + FATFS file buffer (624 bytes)
#define OMV_FFS_BUF_SIZE (32K) // Flash filesystem cache
#define OMV_JPEG_BUF_SIZE (22 * 1024) // IDE JPEG buffer (header + data).
#define OMV_LINE_BUF_SIZE (3 * 1024) // Image line buffer round(640 * 2BPP * 2 buffers).
// Memory map.
#define OMV_FLASH_ORIGIN 0x08000000

View File

@ -114,23 +114,21 @@
// Linker script constants (see the linker script template stm32fxxx.ld.S).
// Note: fb_alloc is a stack-based, dynamically allocated memory on FB.
// The maximum available fb_alloc memory = FB_ALLOC_SIZE + FB_SIZE - (w*h*bpp).
#define OMV_FFS_MEMORY DTCM // Flash filesystem cache memory
#define OMV_MAIN_MEMORY SRAM1 // data, bss and heap memory
#define OMV_HEAP_SIZE (228K)
#define OMV_STACK_MEMORY ITCM // stack memory
#define OMV_DMA_MEMORY SRAM2 // DMA buffers memory.
#define OMV_STACK_SIZE (64K)
#define OMV_FB_MEMORY AXI_SRAM // Framebuffer, fb_alloc
#define OMV_JPEG_MEMORY SRAM3 // JPEG buffer memory.
#define OMV_VOSPI_MEMORY SRAM4 // VoSPI buffer memory.
#define OMV_FB_SIZE (400K) // FB memory: header + VGA/GS image
#define OMV_FB_ALLOC_SIZE (100K) // minimum fb alloc size
#define OMV_STACK_SIZE (64K)
#define OMV_HEAP_SIZE (228K)
#define OMV_LINE_BUF_SIZE (5 * 1024) // Image line buffer.
#define OMV_JPEG_MEMORY SRAM3 // JPEG buffer memory.
#define OMV_JPEG_BUF_SIZE (32 * 1024) // IDE JPEG buffer (header + data).
#define OMV_DMA_MEMORY SRAM2 // DMA buffers memory.
#define OMV_VOSPI_MEMORY SRAM4 // VoSPI buffer memory.
#define OMV_FFS_MEMORY DTCM // Flash filesystem cache memory
#define OMV_MSC_BUF_SIZE (2K) // USB MSC bot data
#define OMV_VFS_BUF_SIZE (1K) // VFS struct + FATFS file buffer (624 bytes)
#define OMV_JPEG_BUF_SIZE (32 * 1024) // IDE JPEG buffer (header + data).
#define OMV_LINE_BUF_SIZE (5 * 1024) // Image line buffer.
// Memory map.
#define OMV_FLASH_ORIGIN 0x08000000

View File

@ -115,26 +115,25 @@
// Linker script constants (see the linker script template stm32fxxx.ld.S).
// Note: fb_alloc is a stack-based, dynamically allocated memory on FB.
// The maximum available fb_alloc memory = FB_ALLOC_SIZE + FB_SIZE - (w*h*bpp).
#define OMV_MAIN_MEMORY SRAM1 // 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 AXI_SRAM // Fast fb_alloc memory.
#define OMV_FB_SIZE (20M) // FB memory: header + VGA/GS image
#define OMV_FB_ALLOC_SIZE (11M) // minimum fb alloc size
#define OMV_FB_OVERLAY_SIZE (496 * 1024) // Fast fb_alloc memory size.
#define OMV_STACK_SIZE (64K)
#define OMV_MAIN_MEMORY SRAM1 // data, bss and heap
#define OMV_HEAP_SIZE (240K)
#define OMV_SDRAM_SIZE (32 * 1024 * 1024) // This needs to be here for UVC firmware.
#define OMV_LINE_BUF_SIZE (11 * 1024) // Image line buffer round(2592 * 2BPP * 2 buffers).
#define OMV_MSC_BUF_SIZE (2K) // USB MSC bot data
#define OMV_VFS_BUF_SIZE (1K) // VFS struct + FATFS file buffer (624 bytes)
#define OMV_STACK_MEMORY ITCM // stack memory
#define OMV_STACK_SIZE (64K)
#define OMV_FB_MEMORY DRAM // Framebuffer, fb_alloc
#define OMV_FB_SIZE (16M) // FB memory: header + VGA/GS image
#define OMV_FB_ALLOC_SIZE (11M) // minimum fb alloc size
#define OMV_FB_OVERLAY_MEMORY AXI_SRAM // Fast fb_alloc memory.
#define OMV_FB_OVERLAY_SIZE (496K) // Fast fb_alloc memory size.
#define OMV_JPEG_MEMORY DRAM // JPEG buffer memory buffer.
#define OMV_JPEG_BUF_SIZE (1024 * 1024) // IDE JPEG buffer (header + data).
#define OMV_DMA_MEMORY SRAM3 // Misc DMA buffers memory.
#define OMV_VOSPI_MEMORY SRAM4 // VoSPI buffer memory.
#define OMV_GC_BLOCK0_MEMORY DRAM // Extra GC block 0.
#define OMV_GC_BLOCK0_SIZE (4M)
#define OMV_MSC_BUF_SIZE (2K) // USB MSC bot data
#define OMV_VFS_BUF_SIZE (1K) // VFS struct + FATFS file buffer (624 bytes)
#define OMV_SDRAM_SIZE (32 * 1024 * 1024) // This needs to be here for UVC firmware.
#define OMV_LINE_BUF_SIZE (11 * 1024) // Image line buffer round(2592 * 2BPP * 2 buffers).
// Memory map.
#define OMV_FLASH_ORIGIN 0x08000000

View File

@ -126,29 +126,26 @@
// Note: fb_alloc is a stack-based, dynamically allocated memory on FB.
// The maximum available fb_alloc memory = FB_ALLOC_SIZE + FB_SIZE - (w*h*bpp).
#define OMV_MAIN_MEMORY SRAM1 // 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_VOSPI_MEMORY_OFFSET (4K) // First 4K reserved for D3 DMA buffers.
#define OMV_FB_OVERLAY_MEMORY AXI_SRAM // Fast fb_alloc memory.
#define OMV_CYW43_MEMORY FLASH_EXT // CYW43 firmware in external flash mmap'd flash.
#define OMV_CYW43_MEMORY_OFFSET (0x90F00000)// Last Mbyte.
#define OMV_HEAP_SIZE (196K)
#define OMV_STACK_MEMORY ITCM // stack memory
#define OMV_STACK_SIZE (64K)
#define OMV_FB_MEMORY DRAM // Framebuffer, fb_alloc
#define OMV_FB_SIZE (20M) // FB memory: header + VGA/GS image
#define OMV_FB_ALLOC_SIZE (11M) // minimum fb alloc size
#define OMV_FB_OVERLAY_SIZE (496 * 1024) // Fast fb_alloc memory size.
#define OMV_STACK_SIZE (64K)
#define OMV_HEAP_SIZE (196K)
#define OMV_SDRAM_SIZE (32 * 1024 * 1024) // This needs to be here for UVC firmware.
#define OMV_LINE_BUF_SIZE (11 * 1024) // Image line buffer round(2592 * 2BPP * 2 buffers).
#define OMV_MSC_BUF_SIZE (2K) // USB MSC bot data
#define OMV_VFS_BUF_SIZE (1K) // VFS struct + FATFS file buffer (624 bytes)
#define OMV_FIR_LEPTON_BUF_SIZE (1K) // FIR Lepton Packet Double Buffer (328 bytes)
#define OMV_FB_OVERLAY_MEMORY AXI_SRAM // Fast fb_alloc memory.
#define OMV_FB_OVERLAY_SIZE (496K) // Fast fb_alloc memory size.
#define OMV_JPEG_MEMORY DRAM // JPEG buffer memory buffer.
#define OMV_JPEG_BUF_SIZE (1024 * 1024) // IDE JPEG buffer (header + data).
#define OMV_DMA_MEMORY SRAM3 // Misc DMA buffers memory.
#define OMV_VOSPI_MEMORY SRAM4 // VoSPI buffer memory.
#define OMV_VOSPI_MEMORY_OFFSET (4K) // First 4K reserved for D3 DMA buffers.
#define OMV_CYW43_MEMORY FLASH_EXT // CYW43 firmware in external flash mmap'd flash.
#define OMV_CYW43_MEMORY_OFFSET (0x90F00000)// Last Mbyte.
#define OMV_SDRAM_SIZE (32 * 1024 * 1024) // This needs to be here for UVC firmware.
#define OMV_MSC_BUF_SIZE (2K) // USB MSC bot data
#define OMV_VFS_BUF_SIZE (1K) // VFS struct + FATFS file buffer (624 bytes)
#define OMV_FIR_LEPTON_BUF_SIZE (1K) // FIR Lepton Packet Double Buffer (328 bytes)
#define OMV_LINE_BUF_SIZE (11 * 1024) // Image line buffer round(2592 * 2BPP * 2 buffers).
// Memory map.
#define OMV_FLASH_ORIGIN 0x08000000

View File

@ -107,26 +107,25 @@
// Linker script constants (see the linker script template stm32fxxx.ld.S).
// Note: fb_alloc is a stack-based, dynamically allocated memory on FB.
// The maximum available fb_alloc memory = FB_ALLOC_SIZE + FB_SIZE - (w*h*bpp).
#define OMV_MAIN_MEMORY SRAM1 // data, bss and heap
#define OMV_STACK_MEMORY ITCM // stack memory
#define OMV_DMA_MEMORY SRAM3 // 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 (63M) // JPEG buffer is placed after FB/fballoc memory.
#define OMV_VOSPI_MEMORY SRAM4 // VoSPI buffer memory.
#define OMV_FB_OVERLAY_MEMORY AXI_SRAM // Fast fb_alloc memory.
#define OMV_FB_SIZE (32M) // FB memory: header + VGA/GS image
#define OMV_FB_ALLOC_SIZE (31M) // minimum fb alloc size
#define OMV_FB_OVERLAY_SIZE (496 * 1024) // Fast fb_alloc memory size.
#define OMV_STACK_SIZE (64K)
#define OMV_MAIN_MEMORY SRAM1 // data, bss and heap
#define OMV_HEAP_SIZE (250K)
#define OMV_SDRAM_SIZE (64 * 1024 * 1024) // This needs to be here for UVC firmware.
#define OMV_LINE_BUF_SIZE (11 * 1024) // Image line buffer round(2592 * 2BPP * 2 buffers).
#define OMV_MSC_BUF_SIZE (2K) // USB MSC bot data
#define OMV_VFS_BUF_SIZE (1K) // VFS struct + FATFS file buffer (624 bytes)
#define OMV_STACK_MEMORY ITCM // stack memory
#define OMV_STACK_SIZE (64K)
#define OMV_FB_MEMORY DRAM // Framebuffer, fb_alloc
#define OMV_FB_SIZE (32M) // FB memory: header + VGA/GS image
#define OMV_FB_ALLOC_SIZE (23M) // minimum fb alloc size
#define OMV_FB_OVERLAY_MEMORY AXI_SRAM // Fast fb_alloc memory.
#define OMV_FB_OVERLAY_SIZE (496K) // Fast fb_alloc memory size.
#define OMV_JPEG_MEMORY DRAM // JPEG buffer memory buffer.
#define OMV_JPEG_BUF_SIZE (1024 * 1024) // IDE JPEG buffer (header + data).
#define OMV_GC_BLOCK0_MEMORY DRAM // Extra GC block 0.
#define OMV_GC_BLOCK0_SIZE (8M)
#define OMV_DMA_MEMORY SRAM3 // DMA buffers memory.
#define OMV_VOSPI_MEMORY SRAM4 // VoSPI buffer memory.
#define OMV_SDRAM_SIZE (64 * 1024 * 1024) // This needs to be here for UVC firmware.
#define OMV_MSC_BUF_SIZE (2K) // USB MSC bot data
#define OMV_VFS_BUF_SIZE (1K) // VFS struct + FATFS file buffer (624 bytes)
#define OMV_LINE_BUF_SIZE (11 * 1024) // Image line buffer round(2592 * 2BPP * 2 buffers).
// Memory map.
#define OMV_FLASH_ORIGIN 0x08000000

View File

@ -46,15 +46,14 @@ extern unsigned char *OMV_BOARD_UID_ADDR; // Unique ID address.
#define OMV_USB1_IRQ_HANDLER (USBD_IRQHandler)
// Linker script constants (see the linker script template port/x.ld.S).
#define OMV_FB_MEMORY RAM // Framebuffer, fb_alloc
#define OMV_MAIN_MEMORY RAM // data, bss and heap memory
#define OMV_STACK_MEMORY RAM // stack memory
#define OMV_FB_SIZE (151K) // FB memory: header + QVGA/GS image
#define OMV_FB_ALLOC_SIZE (12K) // minimum fb alloc size
#define OMV_MAIN_MEMORY RAM // data, bss and heap memory
#define OMV_HEAP_SIZE (32 * 1024) // MicroPython's heap
#define OMV_STACK_MEMORY RAM // stack memory
#define OMV_STACK_SIZE (8K)
#define OMV_HEAP_SIZE (32 * 1024) // MicroPython's heap
#define OMV_JPEG_BUF_SIZE (20 * 1024) // IDE JPEG buffer (header + data).
#define OMV_FB_MEMORY RAM // Framebuffer, fb_alloc
#define OMV_FB_SIZE (151K) // FB memory: header + QVGA/GS image
#define OMV_FB_ALLOC_SIZE (12K) // minimum fb alloc size
#define OMV_JPEG_BUF_SIZE (20 * 1024) // IDE JPEG buffer (header + data).
// GP LED
#define OMV_LED_PIN (25)

View File

@ -93,7 +93,7 @@
#include "extmod/vfs.h"
#include "extmod/vfs_fat.h"
#include "boot_utils.h"
#include "mp_utils.h"
int errno;
extern char _vfs_buf[];
@ -273,13 +273,8 @@ soft_reset:
mp_thread_init();
#endif
// Stack limit should be less than real stack size, so we have a
// chance to recover from limit hit. (Limit is measured in bytes)
mp_stack_set_top(&_estack);
mp_stack_set_limit((char *) &_estack - (char *) &_sstack - 1024);
// GC init
gc_init(&_heap_start, &_heap_end);
// Initialize the stack and GC memory.
mp_init_gc_stack(&_sstack, &_estack, &_heap_start, &_heap_end, 1024);
#if MICROPY_ENABLE_PYSTACK
static mp_obj_t pystack[384];
@ -405,7 +400,7 @@ soft_reset:
if (res == FR_NO_FILESYSTEM) {
// Create a fresh filesystem.
led_state(LED_RED, 1);
bootutils_init_filesystem(vfs_fat);
mp_init_filesystem(vfs_fat);
led_state(LED_RED, 0);
// Flush storage
storage_flush();
@ -480,11 +475,11 @@ else {
// Run boot.py script.
bool interrupted = bootutils_exec_bootscript("boot.py", true, false);
bool interrupted = mp_exec_bootscript("boot.py", true, false);
// Run main.py script on first soft-reset.
if (first_soft_reset && !interrupted && mp_vfs_import_stat("main.py")) {
bootutils_exec_bootscript("main.py", true, openmv_config.wifidbg);
mp_exec_bootscript("main.py", true, openmv_config.wifidbg);
goto soft_reset_exit;
}

View File

@ -6,5 +6,6 @@
fb_alloc_free_till_mark(); \
} while (0);
#define MICROPY_GC_SPLIT_HEAP (1)
#define MICROPY_PY_SOCKET_EXTENDED_STATE (1)
#define MICROPY_BANNER_NAME_AND_VERSION "OpenMV " OPENMV_GIT_TAG "; MicroPython " MICROPY_GIT_TAG

View File

@ -154,7 +154,7 @@ FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/common/, \
pendsv.o \
usbdbg.o \
file_utils.o \
boot_utils.o \
mp_utils.o \
sensor_utils.o \
)
@ -253,7 +253,6 @@ FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/,\
usb.o \
usrsw.o \
eth.o \
gccollect.o \
help.o \
flash.o \
flashbdev.o \

View File

@ -56,13 +56,6 @@ _ram_end = ORIGIN(OMV_MAIN_MEMORY) + LENGTH(OMV_MAIN_MEMORY);
_cm4_ram_start = ORIGIN(CM4_SRAM);
#endif
#if defined(OMV_JPEG_MEMORY)
#if !defined(OMV_JPEG_MEMORY_OFFSET)
#define OMV_JPEG_MEMORY_OFFSET (0)
#endif
_jpeg_buf = ORIGIN(OMV_JPEG_MEMORY) + OMV_JPEG_MEMORY_OFFSET;
#endif
#if defined(OMV_VOSPI_MEMORY)
#if !defined(OMV_VOSPI_MEMORY_OFFSET)
#define OMV_VOSPI_MEMORY_OFFSET (0)
@ -111,6 +104,27 @@ SECTIONS
/* used by the startup to initialize data */
_sidata = LOADADDR(.data);
#if defined(OMV_GC_BLOCK0_MEMORY)
.gc_block0 (NOLOAD) :
{
. = ALIGN(4);
. += OMV_GC_BLOCK0_SIZE;
. = ALIGN(4);
} >OMV_GC_BLOCK0_MEMORY
#endif
.gc_blocks_table :
{
. = ALIGN(4);
_gc_blocks_table_start = .;
#if defined(OMV_GC_BLOCK0_MEMORY)
LONG (ADDR(.gc_block0))
LONG (SIZEOF(.gc_block0) / 4)
#endif
_gc_blocks_table_end = .;
. = ALIGN(4);
} > FLASH_TEXT
/* Main framebuffer memory */
.fb_memory (NOLOAD) :
{
@ -136,6 +150,17 @@ SECTIONS
} >OMV_FB_OVERLAY_MEMORY
#endif
#if defined(OMV_JPEG_MEMORY)
/* JPEG framebuffer memory */
.jpeg_memory (NOLOAD) :
{
. = ALIGN(4);
_jpeg_buf = .; // IDE JPEG buffer
. = . + OMV_JPEG_BUF_SIZE;
. = ALIGN(4);
} >OMV_JPEG_MEMORY
#endif
/* Misc DMA buffers section */
.dma_memory (NOLOAD) :
{

View File

@ -51,13 +51,6 @@ _ram_end = ORIGIN(OMV_MAIN_MEMORY) + LENGTH(OMV_MAIN_MEMORY);
_ffs_cache = ORIGIN(OMV_FFS_MEMORY) + OMV_FFS_MEMORY_OFFSET;
#endif
#if defined(OMV_JPEG_MEMORY)
#if !defined(OMV_JPEG_MEMORY_OFFSET)
#define OMV_JPEG_MEMORY_OFFSET (0)
#endif
_jpeg_buf = ORIGIN(OMV_JPEG_MEMORY) + OMV_JPEG_MEMORY_OFFSET;
#endif
#if defined(OMV_VOSPI_MEMORY)
#if !defined(OMV_VOSPI_MEMORY_OFFSET)
#define OMV_VOSPI_MEMORY_OFFSET (0)
@ -113,6 +106,17 @@ SECTIONS
} >OMV_FB_OVERLAY_MEMORY
#endif
#if defined(OMV_JPEG_MEMORY)
/* JPEG framebuffer memory */
.jpeg_memory (NOLOAD) :
{
. = ALIGN(4);
_jpeg_buf = .; // IDE JPEG buffer
. = . + OMV_JPEG_BUF_SIZE;
. = ALIGN(4);
} >OMV_JPEG_MEMORY
#endif
/* Misc DMA buffers section */
.dma_memory (NOLOAD) :
{