Skip to content

bootloader: Fix LPC55S69 bootloader segmentation #10791

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -77,12 +77,23 @@
#define MBED_RAM_SIZE NS_DATA_SIZE
#endif

#if !defined(NVIC_INTERRUPT_NUM)
#define NVIC_INTERRUPT_NUM 60
#endif

#if !defined(EXCEPTION_VECT_NUM)
#define EXCEPTION_VECT_NUM 16
#endif

#if !defined(MEMORY_ADDR_SIZE_IN_BYTE)
#define MEMORY_ADDR_SIZE_IN_BYTE 4
#endif

#define m_interrupts_start MBED_APP_START
#define m_interrupts_size 0x140
#define m_interrupts_size ((NVIC_INTERRUPT_NUM + EXCEPTION_VECT_NUM) * MEMORY_ADDR_SIZE_IN_BYTE)

#define m_text_start MBED_APP_START + 0x140
#define m_text_size MBED_APP_SIZE - 0x140
#define m_text_start MBED_APP_START + m_interrupts_size
#define m_text_size MBED_APP_SIZE - m_interrupts_size

#define m_interrupts_ram_start MBED_RAM_START
#define m_interrupts_ram_size __ram_vector_table_size__
Expand All @@ -93,13 +104,13 @@
#define m_usb_sram_start 0x40100000
#define m_usb_sram_size 0x00004000

LR_IROM1 m_interrupts_start m_text_start+m_text_size-m_interrupts_start { ; load region size_region
LR_IROM1 m_interrupts_start (AlignExpr(m_text_start, 8)+m_text_size-m_interrupts_start) { ; load region size_region

VECTOR_ROM m_interrupts_start m_interrupts_size { ; load address = execution address
* (RESET,+FIRST)
}

ER_IROM1 m_text_start FIXED m_text_size { ; load address = execution address
ER_IROM1 AlignExpr(m_text_start, 8) FIXED m_text_size { ; load address = execution address
* (InRoot$$Sections)
.ANY (+RO)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,15 +57,31 @@ __ram_vector_table__ = 1;
#define MBED_BOOT_STACK_SIZE 0x400
#endif

#if !defined(NVIC_INTERRUPT_NUM)
#define NVIC_INTERRUPT_NUM 60
#endif

#if !defined(EXCEPTION_VECT_NUM)
#define EXCEPTION_VECT_NUM 16
#endif

#if !defined(MEMORY_ADDR_SIZE_IN_BYTE)
#define MEMORY_ADDR_SIZE_IN_BYTE 4
#endif

#if !defined(MBED_INTERRUPTS_SIZE)
#define MBED_INTERRUPTS_SIZE ((NVIC_INTERRUPT_NUM + EXCEPTION_VECT_NUM) * MEMORY_ADDR_SIZE_IN_BYTE)
#endif

__stack_size__ = MBED_BOOT_STACK_SIZE;

STACK_SIZE = DEFINED(__stack_size__) ? __stack_size__ : 0x0800;
M_VECTOR_RAM_SIZE = DEFINED(__ram_vector_table__) ? 0x200 : 0x0;

MEMORY
{
m_interrupts (RX) : ORIGIN = MBED_APP_START, LENGTH = 0x140
m_text (RX) : ORIGIN = MBED_APP_START + 0x140, LENGTH = MBED_APP_SIZE - 0x140
m_interrupts (RX) : ORIGIN = MBED_APP_START, LENGTH = MBED_INTERRUPTS_SIZE
m_text (RX) : ORIGIN = MBED_APP_START + MBED_INTERRUPTS_SIZE, LENGTH = MBED_APP_SIZE - MBED_INTERRUPTS_SIZE
m_data (RW) : ORIGIN = MBED_RAM_START, LENGTH = MBED_RAM_SIZE
m_usb_sram (RW) : ORIGIN = 0x40100000, LENGTH = 0x00004000
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,10 +80,26 @@ if (isdefinedsymbol(__heap_size__)) {
define symbol __size_heap__ = 0x0400;
}

if (!isdefinedsymbol(NVIC_INTERRUPT_NUM)) {
define symbol NVIC_INTERRUPT_NUM = 60;
}

if (!isdefinedsymbol(EXCEPTION_VECT_NUM)) {
define symbol EXCEPTION_VECT_NUM = 16;
}

if (!isdefinedsymbol(MEMORY_ADDR_SIZE_IN_BYTE)) {
define symbol MEMORY_ADDR_SIZE_IN_BYTE = 4;
}

if (!isdefinedsymbol(MBED_INTERRUPTS_SIZE)) {
define symbol MBED_INTERRUPTS_SIZE = ((NVIC_INTERRUPT_NUM + EXCEPTION_VECT_NUM) * MEMORY_ADDR_SIZE_IN_BYTE);
}

define symbol m_interrupts_start = MBED_APP_START;
define symbol m_interrupts_end = (MBED_APP_START + 0x13F);
define symbol m_interrupts_end = (MBED_APP_START + (MBED_INTERRUPTS_SIZE - 1));

define symbol m_text_start = (MBED_APP_START + 0x140);
define symbol m_text_start = (MBED_APP_START + MBED_INTERRUPTS_SIZE);
define symbol m_text_end = (MBED_APP_START + MBED_APP_SIZE - 1);

define symbol m_interrupts_ram_start = MBED_RAM_START;
Expand Down