Всем привет.
Столкнулся с очень непонятной штукой. 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 тоже есть проблемы, но значительно реже проявляющиеся.
размеры областей роли особой не играют, то есть никаких невлезаний в область памяти нет. Из вещей мной неуправляемых это кусок работы с езернетом забранный из куба. Есть у кого какие-то идеи как может разметка памяти так драматически влиять?
|