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
|
// Non-volatile memory config
|
||||||
#define CIRCUITPY_INTERNAL_NVM_SIZE (0x4000)
|
#define CIRCUITPY_INTERNAL_NVM_SIZE (0x4000)
|
||||||
#define CIRCUITPY_INTERNAL_NVM_START_ADDR (0x08010000)
|
#define CIRCUITPY_INTERNAL_NVM_START_ADDR (0x0800C000)
|
||||||
#define CIRCUITPY_INTERNAL_NVM_SECTOR FLASH_SECTOR_4
|
#define CIRCUITPY_INTERNAL_NVM_SECTOR FLASH_SECTOR_3
|
||||||
#define NVM_BYTEARRAY_BUFFER_SIZE 512
|
#define NVM_BYTEARRAY_BUFFER_SIZE 512
|
||||||
|
|
||||||
// Flash config
|
// Flash config
|
||||||
#define FLASH_SIZE (0x80000)
|
#define FLASH_SIZE (0x80000)
|
||||||
#define FLASH_PAGE_SIZE (0x4000)
|
#define FLASH_PAGE_SIZE (0x4000)
|
||||||
#define BOARD_FLASH_SIZE (FLASH_SIZE - CIRCUITPY_INTERNAL_NVM_SIZE- 0x2000 - 0xC000)
|
#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
|
// On-board flash
|
||||||
#define SPI_FLASH_MOSI_PIN (&pin_PB15)
|
#define SPI_FLASH_MOSI_PIN (&pin_PB15)
|
||||||
|
@ -17,4 +17,4 @@ MCU_VARIANT = STM32F411xE
|
|||||||
MCU_PACKAGE = UFQFPN48
|
MCU_PACKAGE = UFQFPN48
|
||||||
|
|
||||||
LD_COMMON = boards/common_nvm.ld
|
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
|
#ifdef STM32F411xE
|
||||||
#define STM32_FLASH_SIZE 0x80000 //512KiB
|
#define STM32_FLASH_SIZE 0x80000 //512KiB
|
||||||
|
#ifndef INTERNAL_FLASH_FILESYSTEM_SIZE
|
||||||
#define INTERNAL_FLASH_FILESYSTEM_SIZE 0xC000 //48KiB
|
#define INTERNAL_FLASH_FILESYSTEM_SIZE 0xC000 //48KiB
|
||||||
|
#endif
|
||||||
|
#ifndef INTERNAL_FLASH_FILESYSTEM_START_ADDR
|
||||||
#define INTERNAL_FLASH_FILESYSTEM_START_ADDR 0x08004000
|
#define INTERNAL_FLASH_FILESYSTEM_START_ADDR 0x08004000
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef STM32F412Zx
|
#ifdef STM32F412Zx
|
||||||
#define STM32_FLASH_SIZE 0x100000 //1MB
|
#define STM32_FLASH_SIZE 0x100000 //1MB
|
||||||
|
Loading…
Reference in New Issue
Block a user