Create a new linker script with more space for the firmware.
This commit is contained in:
parent
fe6e50b770
commit
661c20dd18
29
ports/stm/boards/STM32F411_nvm_flash.ld
Normal file
29
ports/stm/boards/STM32F411_nvm_flash.ld
Normal file
@ -0,0 +1,29 @@
|
||||
/*
|
||||
GNU linker script for STM32F411 with nvm and an external flash chip, and reserves
|
||||
more space for the CircuitPython firmware and less for the filesystem
|
||||
(since the filesystem will be on the external flash chip).
|
||||
*/
|
||||
|
||||
/* Specify the memory areas */
|
||||
MEMORY
|
||||
{
|
||||
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 512K /* entire flash */
|
||||
FLASH_ISR (rx) : ORIGIN = 0x08000000, LENGTH = 16K /* sector 0 */
|
||||
FLASH_FS (rx) : ORIGIN = 0x08004000, LENGTH = 32K /* sectors 1,2 are 16K */
|
||||
FLASH_NVM (rwx) : ORIGIN = 0x0800C000, LENGTH = 16K /* sector 3 is 16K */
|
||||
FLASH_FIRMWARE (rx) : ORIGIN = 0x08010000, LENGTH = 448K /* sector 4 is 64K, sectors 5,6,7 are 128K */
|
||||
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K
|
||||
}
|
||||
|
||||
/* produce a link error if there is not this amount of RAM for these sections */
|
||||
_minimum_stack_size = 24K;
|
||||
_minimum_heap_size = 16K;
|
||||
|
||||
/* Define the top end of the stack. The stack is full descending so begins just
|
||||
above last byte of RAM. Note that EABI requires the stack to be 8-byte
|
||||
aligned for a call. */
|
||||
_estack = ORIGIN(RAM) + LENGTH(RAM);
|
||||
|
||||
/* RAM extents for the garbage collector */
|
||||
_ram_start = ORIGIN(RAM);
|
||||
_ram_end = ORIGIN(RAM) + LENGTH(RAM);
|
@ -28,14 +28,16 @@
|
||||
|
||||
// Non-volatile memory config
|
||||
#define CIRCUITPY_INTERNAL_NVM_SIZE (0x4000)
|
||||
#define CIRCUITPY_INTERNAL_NVM_START_ADDR (0x08010000)
|
||||
#define CIRCUITPY_INTERNAL_NVM_SECTOR FLASH_SECTOR_4
|
||||
#define CIRCUITPY_INTERNAL_NVM_START_ADDR (0x0800C000)
|
||||
#define CIRCUITPY_INTERNAL_NVM_SECTOR FLASH_SECTOR_3
|
||||
#define NVM_BYTEARRAY_BUFFER_SIZE 512
|
||||
|
||||
// Flash config
|
||||
#define FLASH_SIZE (0x80000)
|
||||
#define FLASH_PAGE_SIZE (0x4000)
|
||||
#define BOARD_FLASH_SIZE (FLASH_SIZE - CIRCUITPY_INTERNAL_NVM_SIZE- 0x2000 - 0xC000)
|
||||
#define FLASH_SIZE (0x80000)
|
||||
#define FLASH_PAGE_SIZE (0x4000)
|
||||
#define BOARD_FLASH_SIZE (FLASH_SIZE - CIRCUITPY_INTERNAL_NVM_SIZE- 0x2000 - 0xC000)
|
||||
#define INTERNAL_FLASH_FILESYSTEM_SIZE 0x8000
|
||||
#define INTERNAL_FLASH_FILESYSTEM_START_ADDR 0x08004000
|
||||
|
||||
// On-board flash
|
||||
#define SPI_FLASH_MOSI_PIN (&pin_PB15)
|
||||
|
@ -17,4 +17,4 @@ MCU_VARIANT = STM32F411xE
|
||||
MCU_PACKAGE = UFQFPN48
|
||||
|
||||
LD_COMMON = boards/common_nvm.ld
|
||||
LD_FILE = boards/STM32F411_nvm.ld
|
||||
LD_FILE = boards/STM32F411_nvm_flash.ld
|
||||
|
@ -41,9 +41,13 @@
|
||||
|
||||
#ifdef STM32F411xE
|
||||
#define STM32_FLASH_SIZE 0x80000 //512KiB
|
||||
#ifndef INTERNAL_FLASH_FILESYSTEM_SIZE
|
||||
#define INTERNAL_FLASH_FILESYSTEM_SIZE 0xC000 //48KiB
|
||||
#endif
|
||||
#ifndef INTERNAL_FLASH_FILESYSTEM_START_ADDR
|
||||
#define INTERNAL_FLASH_FILESYSTEM_START_ADDR 0x08004000
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef STM32F412Zx
|
||||
#define STM32_FLASH_SIZE 0x100000 //1MB
|
||||
|
Loading…
Reference in New Issue
Block a user