В отладке вижу, что стек лег по нужному адресу.
А вот с heap проблемы. Первый же вызов malloc() и программа сваливается в HardFault_Handler().
Попробовал heap вернуть по адресу внутренней RAM 0х20000000 - все ОК.
Кто нибудь сталкивался с этим...?
Скаттер файл:
Код
LR_IROM1 0x08000000 0x00080000 { ; load region size_region
ER_IROM1 0x08000000 0x00080000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
RW_IRAM1 0x20000000 0x00020000 { ; RW data
.ANY (+RW +ZI)
}
ARM_LIB_STACK 0x10003000 EMPTY -0x800{
}
ARM_LIB_HEAP 0x1000000 EMPTY 0x0800 {; Heap region growing up
}
}
ER_IROM1 0x08000000 0x00080000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
RW_IRAM1 0x20000000 0x00020000 { ; RW data
.ANY (+RW +ZI)
}
ARM_LIB_STACK 0x10003000 EMPTY -0x800{
}
ARM_LIB_HEAP 0x1000000 EMPTY 0x0800 {; Heap region growing up
}
}
Программа:
Код
int main(void)
{
uint8_t *ptr;
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
[size=3]ptr=malloc(10);[/size]
*(ptr++)=125;
.....
while(1);
}
{
uint8_t *ptr;
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
[size=3]ptr=malloc(10);[/size]
*(ptr++)=125;
.....
while(1);
}