ports/stm32: Support the new flash storage configuration.

This commit is contained in:
iabdalkader 2022-09-18 15:59:38 +02:00
parent f6dc340ee8
commit 8542c9c882
11 changed files with 120 additions and 50 deletions

View File

@ -151,8 +151,9 @@
#define OMV_FIR_LEPTON_BUF_SIZE (1K) // FIR Lepton Packet Double Buffer (328 bytes)
#define OMV_JPEG_BUF_SIZE (32 * 1024) // IDE JPEG buffer (header + data).
#define OMV_TEXT_ORIGIN 0x08040000
#define OMV_TEXT_LENGTH 1792K
// Memory map.
#define OMV_FLASH_ORIGIN 0x08000000
#define OMV_FLASH_LENGTH 2048K
#define OMV_DTCM_ORIGIN 0x20000000 // Note accessible by CPU and MDMA only.
#define OMV_DTCM_LENGTH 128K
#define OMV_ITCM_ORIGIN 0x00000000
@ -167,6 +168,12 @@
#define OMV_SRAM4_LENGTH 64K
#define OMV_AXI_SRAM_ORIGIN 0x24000000
#define OMV_AXI_SRAM_LENGTH 512K
// Flash configuration.
#define OMV_FLASH_FFS_ORIGIN 0x08020000
#define OMV_FLASH_FFS_LENGTH 128K
#define OMV_FLASH_TXT_ORIGIN 0x08040000
#define OMV_FLASH_TXT_LENGTH 1792K
#define OMV_FLASH_EXT_ORIGIN 0x90000000
#define OMV_FLASH_EXT_LENGTH 16M

View File

@ -44,13 +44,19 @@
// Flash Latency
#define OMV_FLASH_LATENCY (FLASH_LATENCY_5)
// Linker script constants (see the linker script template stm32fxxx.ld.S).
#define OMV_TEXT_ORIGIN 0x08010000
#define OMV_TEXT_LENGTH 448K
#define OMV_SRAM1_ORIGIN 0x20000000
#define OMV_SRAM1_LENGTH 128K
#define OMV_DTCM_ORIGIN 0x10000000
#define OMV_DTCM_LENGTH 64K
// Memory map.
#define OMV_FLASH_ORIGIN 0x08000000
#define OMV_FLASH_LENGTH 512K
#define OMV_SRAM1_ORIGIN 0x20000000
#define OMV_SRAM1_LENGTH 128K
#define OMV_DTCM_ORIGIN 0x10000000
#define OMV_DTCM_LENGTH 64K
// Flash configuration.
#define OMV_FLASH_FFS_ORIGIN 0x08004000
#define OMV_FLASH_FFS_LENGTH 48K
#define OMV_FLASH_TXT_ORIGIN 0x08010000
#define OMV_FLASH_TXT_LENGTH 448K
/* SCCB/I2C */
#define SCCB_I2C (I2C1)

View File

@ -107,8 +107,9 @@
#define OMV_FFS_BUF_SIZE (16K) // Flash filesystem cache
#define OMV_JPEG_BUF_SIZE (8 * 1024) // IDE JPEG buffer size (header + data).
#define OMV_TEXT_ORIGIN 0x08010000
#define OMV_TEXT_LENGTH 960K
// Memory map.
#define OMV_FLASH_ORIGIN 0x08000000
#define OMV_FLASH_LENGTH 1024K
#define OMV_DTCM_ORIGIN 0x10000000
#define OMV_DTCM_LENGTH 64K
#define OMV_SRAM1_ORIGIN 0x20000000
@ -116,6 +117,12 @@
#define OMV_SRAM2_ORIGIN 0x20028800
#define OMV_SRAM2_LENGTH 30K
// Flash configuration.
#define OMV_FLASH_FFS_ORIGIN 0x08004000
#define OMV_FLASH_FFS_LENGTH 48K
#define OMV_FLASH_TXT_ORIGIN 0x08010000
#define OMV_FLASH_TXT_LENGTH 960K
// Image sensor I2C
#define ISC_I2C (I2C1)
#define ISC_I2C_ID (1)

View File

@ -107,8 +107,9 @@
#define OMV_FFS_BUF_SIZE (32K) // Flash filesystem cache
#define OMV_JPEG_BUF_SIZE (22 * 1024) // IDE JPEG buffer (header + data).
#define OMV_TEXT_ORIGIN 0x08020000
#define OMV_TEXT_LENGTH 1920K
// Memory map.
#define OMV_FLASH_ORIGIN 0x08000000
#define OMV_FLASH_LENGTH 2048K
#define OMV_DTCM_ORIGIN 0x20000000
#define OMV_DTCM_LENGTH 128K // Note DTCM/ITCM memory is not cacheable on M7
#define OMV_ITCM_ORIGIN 0x00000000
@ -116,6 +117,12 @@
#define OMV_SRAM1_ORIGIN 0x20020000
#define OMV_SRAM1_LENGTH 384K
// Flash configuration.
#define OMV_FLASH_FFS_ORIGIN 0x08008000
#define OMV_FLASH_FFS_LENGTH 96K
#define OMV_FLASH_TXT_ORIGIN 0x08020000
#define OMV_FLASH_TXT_LENGTH 1920K
// Image sensor I2C
#define ISC_I2C (I2C1)
#define ISC_I2C_ID (1)

View File

@ -165,8 +165,9 @@
#define OMV_FIR_LEPTON_BUF_SIZE (1K) // FIR Lepton Packet Double Buffer (328 bytes)
#define OMV_JPEG_BUF_SIZE (32 * 1024) // IDE JPEG buffer (header + data).
#define OMV_TEXT_ORIGIN 0x08040000
#define OMV_TEXT_LENGTH 1792K
// Memory map.
#define OMV_FLASH_ORIGIN 0x08000000
#define OMV_FLASH_LENGTH 2048K
#define OMV_DTCM_ORIGIN 0x20000000 // Note accessible by CPU and MDMA only.
#define OMV_DTCM_LENGTH 128K
#define OMV_ITCM_ORIGIN 0x00000000
@ -182,6 +183,12 @@
#define OMV_AXI_SRAM_ORIGIN 0x24000000
#define OMV_AXI_SRAM_LENGTH 512K
// Flash configuration.
#define OMV_FLASH_FFS_ORIGIN 0x08020000
#define OMV_FLASH_FFS_LENGTH 128K
#define OMV_FLASH_TXT_ORIGIN 0x08040000
#define OMV_FLASH_TXT_LENGTH 1792K
// Domain 1 DMA buffers region.
#define OMV_DMA_MEMORY_D1 AXI_SRAM
#define OMV_DMA_MEMORY_D1_SIZE (8*1024) // Reserved memory for DMA buffers

View File

@ -161,8 +161,9 @@
#define OMV_FIR_LEPTON_BUF_SIZE (1K) // FIR Lepton Packet Double Buffer (328 bytes)
#define OMV_JPEG_BUF_SIZE (1024*1024) // IDE JPEG buffer (header + data).
#define OMV_TEXT_ORIGIN 0x08040000
#define OMV_TEXT_LENGTH 1792K
// Memory map.
#define OMV_FLASH_ORIGIN 0x08000000
#define OMV_FLASH_LENGTH 2048K
#define OMV_DTCM_ORIGIN 0x20000000 // Note accessible by CPU and MDMA only.
#define OMV_DTCM_LENGTH 128K
#define OMV_ITCM_ORIGIN 0x00000000
@ -178,6 +179,12 @@
#define OMV_DRAM_ORIGIN 0xC0000000
#define OMV_DRAM_LENGTH 32M
// Flash configuration.
#define OMV_FLASH_FFS_ORIGIN 0x08020000
#define OMV_FLASH_FFS_LENGTH 128K
#define OMV_FLASH_TXT_ORIGIN 0x08040000
#define OMV_FLASH_TXT_LENGTH 1792K
// Domain 1 DMA buffers region.
#define OMV_DMA_MEMORY_D1 AXI_SRAM
#define OMV_DMA_MEMORY_D1_SIZE (16*1024) // Reserved memory for DMA buffers

View File

@ -173,8 +173,9 @@
#define OMV_FIR_LEPTON_BUF_SIZE (1K) // FIR Lepton Packet Double Buffer (328 bytes)
#define OMV_JPEG_BUF_SIZE (1024*1024) // IDE JPEG buffer (header + data).
#define OMV_TEXT_ORIGIN 0x08040000
#define OMV_TEXT_LENGTH 1792K
// Memory map.
#define OMV_FLASH_ORIGIN 0x08000000
#define OMV_FLASH_LENGTH 2048K
#define OMV_DTCM_ORIGIN 0x20000000 // Note accessible by CPU and MDMA only.
#define OMV_DTCM_LENGTH 128K
#define OMV_ITCM_ORIGIN 0x00000000
@ -189,6 +190,12 @@
#define OMV_AXI_SRAM_LENGTH 512K
#define OMV_DRAM_ORIGIN 0xC0000000
#define OMV_DRAM_LENGTH 32M
// Flash configuration.
#define OMV_FLASH_FFS_ORIGIN 0x08020000
#define OMV_FLASH_FFS_LENGTH 128K
#define OMV_FLASH_TXT_ORIGIN 0x08040000
#define OMV_FLASH_TXT_LENGTH 1792K
#define OMV_FLASH_EXT_ORIGIN 0x90000000
#define OMV_FLASH_EXT_LENGTH 32M

View File

@ -164,8 +164,9 @@
#define OMV_FIR_LEPTON_BUF_SIZE (1K) // FIR Lepton Packet Double Buffer (328 bytes)
#define OMV_JPEG_BUF_SIZE (1024*1024) // IDE JPEG buffer (header + data).
#define OMV_TEXT_ORIGIN 0x08040000
#define OMV_TEXT_LENGTH 1792K
// Memory map.
#define OMV_FLASH_ORIGIN 0x08000000
#define OMV_FLASH_LENGTH 2048K
#define OMV_DTCM_ORIGIN 0x20000000 // Note accessible by CPU and MDMA only.
#define OMV_DTCM_LENGTH 128K
#define OMV_ITCM_ORIGIN 0x00000000
@ -181,6 +182,12 @@
#define OMV_DRAM_ORIGIN 0xC0000000
#define OMV_DRAM_LENGTH 64M
// Flash configuration.
#define OMV_FLASH_FFS_ORIGIN 0x08020000
#define OMV_FLASH_FFS_LENGTH 128K
#define OMV_FLASH_TXT_ORIGIN 0x08040000
#define OMV_FLASH_TXT_LENGTH 1792K
// Domain 1 DMA buffers region.
#define OMV_DMA_MEMORY_D1 AXI_SRAM
#define OMV_DMA_MEMORY_D1_SIZE (16*1024) // Reserved memory for DMA buffers

View File

@ -169,8 +169,9 @@
#define OMV_FIR_LEPTON_BUF_SIZE (1K) // FIR Lepton Packet Double Buffer (328 bytes)
#define OMV_JPEG_BUF_SIZE (1024*1024) // IDE JPEG buffer (header + data).
#define OMV_TEXT_ORIGIN 0x08040000
#define OMV_TEXT_LENGTH 1792K
// Memory map.
#define OMV_FLASH_ORIGIN 0x08000000
#define OMV_FLASH_LENGTH 2048K
#define OMV_DTCM_ORIGIN 0x20000000 // Note accessible by CPU and MDMA only.
#define OMV_DTCM_LENGTH 128K
#define OMV_SRAM1_ORIGIN 0x30000000
@ -183,13 +184,19 @@
#define OMV_AXI_SRAM_LENGTH 512K
#define OMV_DRAM_ORIGIN 0xC0000000
#define OMV_DRAM_LENGTH 8M
#define OMV_FLASH_EXT_ORIGIN 0x90000000
#define OMV_FLASH_EXT_LENGTH 16M
#define OMV_CM4_RAM_ORIGIN 0x30044000 // Cortex-M4 memory.
#define OMV_CM4_RAM_LENGTH 16K
#define OMV_CM4_FLASH_ORIGIN 0x08020000
#define OMV_CM4_FLASH_LENGTH 128K
// Flash configuration.
#define OMV_FLASH_FFS_ORIGIN 0x08020000
#define OMV_FLASH_FFS_LENGTH 128K
#define OMV_FLASH_TXT_ORIGIN 0x08040000
#define OMV_FLASH_TXT_LENGTH 1792K
#define OMV_FLASH_EXT_ORIGIN 0x90000000
#define OMV_FLASH_EXT_LENGTH 16M
// Domain 1 DMA buffers region.
#define OMV_DMA_MEMORY_D1 AXI_SRAM
#define OMV_DMA_MEMORY_D1_SIZE (16*1024) // Reserved memory for DMA buffers

View File

@ -17,41 +17,39 @@ ENTRY(Reset_Handler)
/* Specify the memory areas */
MEMORY
{
DTCM (xrw) : ORIGIN = OMV_DTCM_ORIGIN, LENGTH = OMV_DTCM_LENGTH
DTCM (xrw) : ORIGIN = OMV_DTCM_ORIGIN, LENGTH = OMV_DTCM_LENGTH
#if defined(OMV_ITCM_ORIGIN)
ITCM (xrw) : ORIGIN = OMV_ITCM_ORIGIN, LENGTH = OMV_ITCM_LENGTH
ITCM (xrw) : ORIGIN = OMV_ITCM_ORIGIN, LENGTH = OMV_ITCM_LENGTH
#endif
SRAM1 (xrw) : ORIGIN = OMV_SRAM1_ORIGIN, LENGTH = OMV_SRAM1_LENGTH
SRAM1 (xrw) : ORIGIN = OMV_SRAM1_ORIGIN, LENGTH = OMV_SRAM1_LENGTH
#if defined(OMV_SRAM2_ORIGIN)
SRAM2 (xrw) : ORIGIN = OMV_SRAM2_ORIGIN, LENGTH = OMV_SRAM2_LENGTH
SRAM2 (xrw) : ORIGIN = OMV_SRAM2_ORIGIN, LENGTH = OMV_SRAM2_LENGTH
#endif
#if defined(OMV_SRAM3_ORIGIN)
SRAM3 (xrw) : ORIGIN = OMV_SRAM3_ORIGIN, LENGTH = OMV_SRAM3_LENGTH
SRAM3 (xrw) : ORIGIN = OMV_SRAM3_ORIGIN, LENGTH = OMV_SRAM3_LENGTH
#endif
#if defined(OMV_SRAM4_ORIGIN)
SRAM4 (xrw) : ORIGIN = OMV_SRAM4_ORIGIN, LENGTH = OMV_SRAM4_LENGTH
SRAM4 (xrw) : ORIGIN = OMV_SRAM4_ORIGIN, LENGTH = OMV_SRAM4_LENGTH
#endif
#if defined(OMV_AXI_SRAM_ORIGIN)
AXI_SRAM (xrw) : ORIGIN = OMV_AXI_SRAM_ORIGIN, LENGTH = OMV_AXI_SRAM_LENGTH
AXI_SRAM (xrw) : ORIGIN = OMV_AXI_SRAM_ORIGIN, LENGTH = OMV_AXI_SRAM_LENGTH
#endif
#if defined(OMV_DRAM_ORIGIN)
DRAM (xrw) : ORIGIN = OMV_DRAM_ORIGIN, LENGTH = OMV_DRAM_LENGTH
DRAM (xrw) : ORIGIN = OMV_DRAM_ORIGIN, LENGTH = OMV_DRAM_LENGTH
#endif
FLASH_TEXT (rx) : ORIGIN = OMV_TEXT_ORIGIN, LENGTH = OMV_TEXT_LENGTH
#if defined(OMV_FLASH_FFS_ORIGIN)
FLASH_FFS (rx) : ORIGIN = OMV_FLASH_FFS_ORIGIN, LENGTH = OMV_FLASH_FFS_LENGTH
#endif
FLASH_TEXT (rx) : ORIGIN = OMV_FLASH_TXT_ORIGIN, LENGTH = OMV_FLASH_TXT_LENGTH
#if defined(OMV_FLASH_EXT_ORIGIN)
FLASH_EXT (rx) : ORIGIN = OMV_FLASH_EXT_ORIGIN, LENGTH = OMV_FLASH_EXT_LENGTH
#endif
}
_heap_size = OMV_HEAP_SIZE; /* required amount of heap */
_stack_size = OMV_STACK_SIZE; /* minimum amount of stack */
_ram_end = ORIGIN(OMV_MAIN_MEMORY) + LENGTH(OMV_MAIN_MEMORY);
#if defined(OMV_FFS_MEMORY)
#if !defined(OMV_FFS_MEMORY_OFFSET)
#define OMV_FFS_MEMORY_OFFSET (0)
#endif
_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)
@ -66,8 +64,18 @@ _jpeg_buf = ORIGIN(OMV_JPEG_MEMORY) + OMV_JPEG_MEMORY_OFFSET;
_vospi_buf = ORIGIN(OMV_VOSPI_MEMORY) + OMV_VOSPI_MEMORY_OFFSET;
#endif
_heap_size = OMV_HEAP_SIZE; /* required amount of heap */
_stack_size = OMV_STACK_SIZE; /* minimum amount of stack */
// Location of filesystem flash storage
_micropy_hw_internal_flash_storage_start = ORIGIN(FLASH_FFS);
_micropy_hw_internal_flash_storage_end = ORIGIN(FLASH_FFS) + LENGTH(FLASH_FFS);
#if defined(OMV_FFS_MEMORY)
#if !defined(OMV_FFS_MEMORY_OFFSET)
#define OMV_FFS_MEMORY_OFFSET (0)
#endif
// Location of filesystem RAM cache
_micropy_hw_internal_flash_storage_ram_cache_start = ORIGIN(OMV_FFS_MEMORY) + OMV_FFS_MEMORY_OFFSET;
_micropy_hw_internal_flash_storage_ram_cache_end = LENGTH(OMV_FFS_MEMORY);
#endif
/* Define output sections */
SECTIONS
@ -156,10 +164,11 @@ SECTIONS
_fir_lepton_buf = .; // FIR Lepton Packet Double Buffer (328 bytes)
. = . + OMV_FIR_LEPTON_BUF_SIZE;
#if !defined(OMV_FFS_MEMORY) && defined(OMV_FFS_BUF_SIZE)
#if defined(OMV_FFS_BUF_SIZE)
. = ALIGN(16);
_ffs_cache = .; // Flash filesystem cache
_micropy_hw_internal_flash_storage_ram_cache_start = .;
. = . + OMV_FFS_BUF_SIZE;
_micropy_hw_internal_flash_storage_ram_cache_end = .;
#endif
#if !defined(OMV_JPEG_MEMORY)

View File

@ -37,9 +37,11 @@ MEMORY
#if defined(OMV_DRAM_ORIGIN)
DRAM (xrw) : ORIGIN = OMV_DRAM_ORIGIN, LENGTH = OMV_DRAM_LENGTH
#endif
FLASH_TEXT (rx) : ORIGIN = OMV_TEXT_ORIGIN, LENGTH = OMV_TEXT_LENGTH
FLASH_TEXT (rx) : ORIGIN = OMV_FLASH_TXT_ORIGIN, LENGTH = OMV_FLASH_TXT_LENGTH
}
_heap_size = OMV_HEAP_SIZE; /* required amount of heap */
_stack_size = OMV_STACK_SIZE; /* minimum amount of stack */
_ram_end = ORIGIN(OMV_MAIN_MEMORY) + LENGTH(OMV_MAIN_MEMORY);
#if defined(OMV_FFS_MEMORY)
@ -63,9 +65,6 @@ _jpeg_buf = ORIGIN(OMV_JPEG_MEMORY) + OMV_JPEG_MEMORY_OFFSET;
_vospi_buf = ORIGIN(OMV_VOSPI_MEMORY) + OMV_VOSPI_MEMORY_OFFSET;
#endif
_heap_size = OMV_HEAP_SIZE; /* required amount of heap */
_stack_size = OMV_STACK_SIZE; /* minimum amount of stack */
/* Define output sections */
SECTIONS
{
@ -133,7 +132,7 @@ SECTIONS
_fir_lepton_buf = .; // FIR Lepton Packet Double Buffer (328 bytes)
. = . + OMV_FIR_LEPTON_BUF_SIZE;
#if !defined(OMV_FFS_MEMORY) && defined(OMV_FFS_BUF_SIZE)
#if defined(OMV_FFS_BUF_SIZE)
. = ALIGN(16);
_ffs_cache = .; // Flash filesystem cache
. = . + OMV_FFS_BUF_SIZE;