From 6867d744abf37cbd488092bd41555cce7fed39c1 Mon Sep 17 00:00:00 2001 From: "Kwabena W. Agyeman" Date: Sun, 7 Mar 2021 15:38:46 -0800 Subject: [PATCH] Reduce bus contention and save RAM --- src/micropython | 2 +- src/omv/boards/BORMIO/omv_boardconfig.h | 22 ++++++++++++---------- src/omv/boards/OPENMV4/omv_boardconfig.h | 20 +++++++++++--------- src/omv/boards/OPENMV4P/omv_boardconfig.h | 18 +++++++++--------- src/omv/boards/OPENMVPT/omv_boardconfig.h | 18 +++++++++--------- src/omv/boards/PORTENTA/omv_boardconfig.h | 4 ++-- 6 files changed, 44 insertions(+), 40 deletions(-) diff --git a/src/micropython b/src/micropython index c9dc65ad1..4ff0f33ee 160000 --- a/src/micropython +++ b/src/micropython @@ -1 +1 @@ -Subproject commit c9dc65ad17b05c3f8a00706709122dbb4fb5d72c +Subproject commit 4ff0f33eef2d11767ac6c92b701c763515ac6dd1 diff --git a/src/omv/boards/BORMIO/omv_boardconfig.h b/src/omv/boards/BORMIO/omv_boardconfig.h index 071ddd743..1522ff572 100644 --- a/src/omv/boards/BORMIO/omv_boardconfig.h +++ b/src/omv/boards/BORMIO/omv_boardconfig.h @@ -12,7 +12,7 @@ #define __OMV_BOARDCONFIG_H__ // Architecture info -#define OMV_ARCH_STR "BORMIO H7 8192 SDRAM" // 33 chars max +#define OMV_ARCH_STR "BORMIO H7 1024" // 33 chars max #define OMV_BOARD_TYPE "BORMIO" #define OMV_UNIQUE_ID_ADDR 0x1FF1E800 #define OMV_UNIQUE_ID_SIZE 3 // 3 words @@ -130,7 +130,7 @@ #define OMV_FFS_MEMORY DTCM // Flash filesystem cache memory #define OMV_MAIN_MEMORY SRAM1 // data, bss and heap #define OMV_STACK_MEMORY SRAM1 // stack memory -#define OMV_DMA_MEMORY AXI_SRAM // DMA buffers 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 buffer memory. @@ -138,9 +138,9 @@ #define OMV_CYW43_MEMORY_OFFSET (0x90F00000)// Last Mbyte. #define OMV_FB_SIZE (400K) // FB memory: header + VGA/GS image -#define OMV_FB_ALLOC_SIZE (96K) // minimum fb alloc size +#define OMV_FB_ALLOC_SIZE (108K) // minimum fb alloc size #define OMV_STACK_SIZE (32K) -#define OMV_HEAP_SIZE (180K) +#define OMV_HEAP_SIZE (172K) #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 @@ -156,7 +156,9 @@ #define OMV_ITCM_ORIGIN 0x00000000 #define OMV_ITCM_LENGTH 64K #define OMV_SRAM1_ORIGIN 0x30000000 -#define OMV_SRAM1_LENGTH 256K +#define OMV_SRAM1_LENGTH 248K +#define OMV_SRAM2_ORIGIN 0x3003E000 // 8KB of SRAM1 +#define OMV_SRAM2_LENGTH 8K #define OMV_SRAM3_ORIGIN 0x30040000 #define OMV_SRAM3_LENGTH 32K #define OMV_SRAM4_ORIGIN 0x38000000 @@ -168,13 +170,13 @@ // Domain 1 DMA buffers region. #define OMV_DMA_MEMORY_D1 AXI_SRAM -#define OMV_DMA_REGION_D1_BASE (OMV_AXI_SRAM_ORIGIN+(496*1024)) -#define OMV_DMA_REGION_D1_SIZE MPU_REGION_SIZE_16KB +#define OMV_DMA_REGION_D1_BASE (OMV_AXI_SRAM_ORIGIN+(508*1024)) +#define OMV_DMA_REGION_D1_SIZE MPU_REGION_SIZE_4KB // Domain 2 DMA buffers region. -//#define OMV_DMA_MEMORY_D2 SRAM3 -//#define OMV_DMA_REGION_D2_BASE (OMV_SRAM3_ORIGIN+(0*1024)) -//#define OMV_DMA_REGION_D2_SIZE MPU_REGION_SIZE_32KB +#define OMV_DMA_MEMORY_D2 SRAM2 +#define OMV_DMA_REGION_D2_BASE (OMV_SRAM2_ORIGIN+(0*1024)) +#define OMV_DMA_REGION_D2_SIZE MPU_REGION_SIZE_8KB // Domain 3 DMA buffers region. //#define OMV_DMA_MEMORY_D3 SRAM4 diff --git a/src/omv/boards/OPENMV4/omv_boardconfig.h b/src/omv/boards/OPENMV4/omv_boardconfig.h index 03d044cc7..28460be48 100644 --- a/src/omv/boards/OPENMV4/omv_boardconfig.h +++ b/src/omv/boards/OPENMV4/omv_boardconfig.h @@ -138,15 +138,15 @@ #define OMV_FFS_MEMORY DTCM // Flash filesystem cache memory #define OMV_MAIN_MEMORY SRAM1 // data, bss and heap memory #define OMV_STACK_MEMORY ITCM // stack memory -#define OMV_DMA_MEMORY AXI_SRAM // DMA buffers 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. #define OMV_VOSPI_MEMORY SRAM4 // VoSPI buffer memory. #define OMV_FB_SIZE (400K) // FB memory: header + VGA/GS image -#define OMV_FB_ALLOC_SIZE (96K) // minimum fb alloc size +#define OMV_FB_ALLOC_SIZE (108K) // minimum fb alloc size #define OMV_STACK_SIZE (64K) -#define OMV_HEAP_SIZE (244K) +#define OMV_HEAP_SIZE (236K) #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 @@ -162,7 +162,9 @@ #define OMV_ITCM_ORIGIN 0x00000000 #define OMV_ITCM_LENGTH 64K #define OMV_SRAM1_ORIGIN 0x30000000 -#define OMV_SRAM1_LENGTH 256K +#define OMV_SRAM1_LENGTH 248K +#define OMV_SRAM2_ORIGIN 0x3003E000 // 8KB of SRAM1 +#define OMV_SRAM2_LENGTH 8K #define OMV_SRAM3_ORIGIN 0x30040000 #define OMV_SRAM3_LENGTH 32K #define OMV_SRAM4_ORIGIN 0x38000000 @@ -172,13 +174,13 @@ // Domain 1 DMA buffers region. #define OMV_DMA_MEMORY_D1 AXI_SRAM -#define OMV_DMA_REGION_D1_BASE (OMV_AXI_SRAM_ORIGIN+(496*1024)) -#define OMV_DMA_REGION_D1_SIZE MPU_REGION_SIZE_16KB +#define OMV_DMA_REGION_D1_BASE (OMV_AXI_SRAM_ORIGIN+(508*1024)) +#define OMV_DMA_REGION_D1_SIZE MPU_REGION_SIZE_4KB // Domain 2 DMA buffers region. -//#define OMV_DMA_MEMORY_D2 SRAM3 -//#define OMV_DMA_REGION_D2_BASE (OMV_SRAM3_ORIGIN+(0*1024)) -//#define OMV_DMA_REGION_D2_SIZE MPU_REGION_SIZE_32KB +#define OMV_DMA_MEMORY_D2 SRAM2 +#define OMV_DMA_REGION_D2_BASE (OMV_SRAM2_ORIGIN+(0*1024)) +#define OMV_DMA_REGION_D2_SIZE MPU_REGION_SIZE_8KB // Domain 3 DMA buffers region. //#define OMV_DMA_MEMORY_D3 SRAM4 diff --git a/src/omv/boards/OPENMV4P/omv_boardconfig.h b/src/omv/boards/OPENMV4P/omv_boardconfig.h index a5d2ae95d..72cf30548 100644 --- a/src/omv/boards/OPENMV4P/omv_boardconfig.h +++ b/src/omv/boards/OPENMV4P/omv_boardconfig.h @@ -142,18 +142,18 @@ #define OMV_FFS_MEMORY DTCM // Flash filesystem cache memory #define OMV_MAIN_MEMORY SRAM1 // data, bss and heap #define OMV_STACK_MEMORY ITCM // stack memory -#define OMV_DMA_MEMORY AXI_SRAM // Misc DMA buffers 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_OVERLAY_MEMORY_OFFSET (496*1024) // Fast fb_alloc memory size. +#define OMV_FB_OVERLAY_MEMORY_OFFSET (508*1024) // Fast fb_alloc memory size. #define OMV_FB_SIZE (20M) // FB memory: header + VGA/GS image #define OMV_FB_ALLOC_SIZE (11M) // minimum fb alloc size #define OMV_STACK_SIZE (64K) -#define OMV_HEAP_SIZE (244K) +#define OMV_HEAP_SIZE (256K) #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). @@ -170,9 +170,9 @@ #define OMV_ITCM_ORIGIN 0x00000000 #define OMV_ITCM_LENGTH 64K #define OMV_SRAM1_ORIGIN 0x30000000 -#define OMV_SRAM1_LENGTH 256K -#define OMV_SRAM3_ORIGIN 0x30040000 -#define OMV_SRAM3_LENGTH 32K +#define OMV_SRAM1_LENGTH 272K // SRAM1 + SRAM2 + 1/2 SRAM3 +#define OMV_SRAM3_ORIGIN 0x30044000 +#define OMV_SRAM3_LENGTH 16K #define OMV_SRAM4_ORIGIN 0x38000000 #define OMV_SRAM4_LENGTH 64K #define OMV_AXI_SRAM_ORIGIN 0x24000000 @@ -183,13 +183,13 @@ // Domain 1 DMA buffers region. #define OMV_DMA_MEMORY_D1 AXI_SRAM -#define OMV_DMA_REGION_D1_BASE (OMV_AXI_SRAM_ORIGIN+(496*1024)) -#define OMV_DMA_REGION_D1_SIZE MPU_REGION_SIZE_16KB +#define OMV_DMA_REGION_D1_BASE (OMV_AXI_SRAM_ORIGIN+OMV_FB_OVERLAY_MEMORY_OFFSET) +#define OMV_DMA_REGION_D1_SIZE MPU_REGION_SIZE_4KB // Domain 2 DMA buffers region. #define OMV_DMA_MEMORY_D2 SRAM3 #define OMV_DMA_REGION_D2_BASE (OMV_SRAM3_ORIGIN+(0*1024)) -#define OMV_DMA_REGION_D2_SIZE MPU_REGION_SIZE_32KB +#define OMV_DMA_REGION_D2_SIZE MPU_REGION_SIZE_16KB // Domain 3 DMA buffers region. #define OMV_DMA_MEMORY_D3 SRAM4 diff --git a/src/omv/boards/OPENMVPT/omv_boardconfig.h b/src/omv/boards/OPENMVPT/omv_boardconfig.h index 2e9493ebc..ec252e795 100644 --- a/src/omv/boards/OPENMVPT/omv_boardconfig.h +++ b/src/omv/boards/OPENMVPT/omv_boardconfig.h @@ -139,18 +139,18 @@ #define OMV_FFS_MEMORY DTCM // Flash filesystem cache memory #define OMV_MAIN_MEMORY SRAM1 // data, bss and heap #define OMV_STACK_MEMORY ITCM // stack memory -#define OMV_DMA_MEMORY AXI_SRAM // DMA buffers 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_OVERLAY_MEMORY_OFFSET (496*1024) // Fast fb_alloc memory size. +#define OMV_FB_OVERLAY_MEMORY_OFFSET (508*1024) // Fast fb_alloc memory size. #define OMV_FB_SIZE (32M) // FB memory: header + VGA/GS image #define OMV_FB_ALLOC_SIZE (31M) // minimum fb alloc size #define OMV_STACK_SIZE (64K) -#define OMV_HEAP_SIZE (240K) +#define OMV_HEAP_SIZE (256K) #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). @@ -167,9 +167,9 @@ #define OMV_ITCM_ORIGIN 0x00000000 #define OMV_ITCM_LENGTH 64K #define OMV_SRAM1_ORIGIN 0x30000000 -#define OMV_SRAM1_LENGTH 256K -#define OMV_SRAM3_ORIGIN 0x30040000 -#define OMV_SRAM3_LENGTH 32K +#define OMV_SRAM1_LENGTH 272K // SRAM1 + SRAM2 + 1/2 SRAM3 +#define OMV_SRAM3_ORIGIN 0x30044000 +#define OMV_SRAM3_LENGTH 16K #define OMV_SRAM4_ORIGIN 0x38000000 #define OMV_SRAM4_LENGTH 64K #define OMV_AXI_SRAM_ORIGIN 0x24000000 @@ -180,13 +180,13 @@ // Domain 1 DMA buffers region. #define OMV_DMA_MEMORY_D1 AXI_SRAM -#define OMV_DMA_REGION_D1_BASE (OMV_AXI_SRAM_ORIGIN+(496*1024)) -#define OMV_DMA_REGION_D1_SIZE MPU_REGION_SIZE_16KB +#define OMV_DMA_REGION_D1_BASE (OMV_AXI_SRAM_ORIGIN+OMV_FB_OVERLAY_MEMORY_OFFSET) +#define OMV_DMA_REGION_D1_SIZE MPU_REGION_SIZE_4KB // Domain 2 DMA buffers region. #define OMV_DMA_MEMORY_D2 SRAM3 #define OMV_DMA_REGION_D2_BASE (OMV_SRAM3_ORIGIN+(0*1024)) -#define OMV_DMA_REGION_D2_SIZE MPU_REGION_SIZE_32KB +#define OMV_DMA_REGION_D2_SIZE MPU_REGION_SIZE_16KB // Domain 3 DMA buffers region. #define OMV_DMA_MEMORY_D3 SRAM4 diff --git a/src/omv/boards/PORTENTA/omv_boardconfig.h b/src/omv/boards/PORTENTA/omv_boardconfig.h index 8b32e2aa7..f6781ba64 100644 --- a/src/omv/boards/PORTENTA/omv_boardconfig.h +++ b/src/omv/boards/PORTENTA/omv_boardconfig.h @@ -140,7 +140,7 @@ #define OMV_FFS_MEMORY DTCM // Flash filesystem cache memory #define OMV_MAIN_MEMORY SRAM1 // data, bss and heap #define OMV_STACK_MEMORY SRAM1 // stack memory -#define OMV_DMA_MEMORY AXI_SRAM // DMA buffers 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. @@ -183,7 +183,7 @@ // Domain 1 DMA buffers region. #define OMV_DMA_MEMORY_D1 AXI_SRAM -#define OMV_DMA_REGION_D1_BASE (OMV_AXI_SRAM_ORIGIN+(480*1024)) +#define OMV_DMA_REGION_D1_BASE (OMV_AXI_SRAM_ORIGIN+OMV_FB_OVERLAY_MEMORY_OFFSET) #define OMV_DMA_REGION_D1_SIZE MPU_REGION_SIZE_32KB // Domain 2 DMA buffers region.