Всем привет.
Столкнулся с очень непонятной штукой. GCC под Stm32F767, оптимизация О2, никакой линкер оптимизации.
Разметка памяти:
RAM = 0x20000000, size 0x80000,
data и bss - лежит с начала RAM
stack poitner задается на 0x20080000
тут все работает прекрасно, если сделать
RAM = 0x20000000, size 0x80000,
data и bss - лежит с 0x20010000
stack poitner задается на 0x20010000
тоже все работает хорошо, но если сделать
RAM = 0x20010000, size 0x70000,
data и bss - лежит с 0x20010000 (с начала RAM)
stack poitner задается на 0x20010000
то никаких падений нет, но начинаются проблемы в обмене по езернету. Пакеты застревают, причем не теряются, они все есть, но почему то временами не отправляются. То есть приходит UDP запрос, ответа нет, а со следующим запросом приходит ответ на этот и на предыдущий.
При этом в разметке
RAM = 0x20000000, size 0x20000,
data и bss - лежит с начала RAM
stack poitner задается на 0x20080000
тоже есть проблемы, но значительно реже проявляющиеся.
размеры областей роли особой не играют, то есть никаких невлезаний в область памяти нет. Из вещей мной неуправляемых это кусок работы с езернетом забранный из куба. Есть у кого какие-то идеи как может разметка памяти так драматически влиять?