И Как понять что сейчас срыв стека? Как я уже говорил, мне нужна fatfs, при ее подключении ничего не работает, озу пзу остаётся даже с учётом маллока на килобайт Я уже смирился и поменял на petit fatfs Только она не создаёт файлы!!! Это крайне неудобно
Комментарии: 42
Vga
У тебя оно уже падало от всего 37 пунктов меню по 12 чтоль байт, видимо ты немного переоцениваешь бъем доступной памяти Посмотри, может тыгде-то конский буфер на стеке выделяешь
Fvck
Это притаившийся malloc?
Vga
А стек ты RAMEND'ом инициализируешь?
Fvck
Я вообще хз что это такое Я стек ваш не инициализирую
Vga
Это объявленный в какой-нить функции локальный массив на килобайт
Fvck
Который создаётся при вызове этой функции Так? И происходит срыв стека из-за недостатка памяти
Vga
function foo() { char var[1024]; ... } При вызове эта функция сожрет килобайт на стеке Можешь поставить слежение за SP и посмотреть докуда он продавливается
Fvck
Таких вроде нет, но я поищу Сложна
Vga
Маллок аллоцирует из кучи, где у тебя куча выделена тоже не знаю Маллоки обычно вообще нежелательны в эмбеде
Fvck
Ну чёт я взял либу на олед А там маллок ему как раз А поменять scrbuff = malloc(1024... на scrbuff[1024] не получается
Tiny
Почему? Сложность выполнения кода сложно анализировать?
Vga
А хз. Мисру спроси
Tiny
Ну я про фрагментацию памяти, реализацию менеджера
Vga
Вероятно то, что сложнее гарантировать объем использования памяти и что удастся выделить нужный кусок из-за фрагментации и вот это все
Tiny
Про мисру как раз давеча читал у ди, что динамика там запрещена
Vga
А так это просто правило неясной легитимности, ходящее в среде эмбеддеров, что маллок плохо
Tiny
Я слышал что в ответственных по обычно память аллоцируется большим куском перед стартом программы, и больше никаких маллок
Vga
В ответственных это каких?
Tiny
В авиации, на хабре как то беседу в коментах читал
Vga
И важный вопрос - а что дальше с этим блобом делается? Статическая аллокация в нем или собственный маллок по нему выделяет? Я видел забавную статью от разработчиков какой-то игры на пс2, там 32 метра памяти
Tiny
Резерв под динамические структуры данных
Vga
Так вот они говорили что динамическую аллокацию не юзают, а грузят с диска прямо в оперативку всю структуру уровня Переходим к следующему уровню - весь блоб сбрасывается и грузится новый
Tiny
Свап файл что ли используют?
Vga
Откуда на пс2 своп?
Tiny
Не знаю) я думал что то аналогичное должно быть
Vga
Вместо того чтобы грузить с диска по отдельности модельки. выделяя под каждую памят и увязывая указателями, они сразу грузят образ ОЗУ, уже прошитый указателями и всем таким На пс2 есть 32 метра озу и 4 метра видео озу. Вся остальная память, не считая карт памяти под сейвы ридонли ВОзможно вместе с блобом уровня выделяется и буфер для динамическй аллокации под его нужды, который дропается потом вместе с ним, хз Они говорили что таким образом борются с фрагментацией памяти в условиях когда ее впритирку У томб рейдера кстати тоже уровни были самодостаточными блобами
Tiny
У нас как то был баг в проде, фрагментация хипа была надо было срочно чинить, угадаете как быстро пофиксили?))
Vga
В каждом своя копия модельки лары, например как пофиксили или сколько времени заняло?
Tiny
Времени заняло час максимум
Vga
Ну и как?
Tiny
Во время запуска программы аллоцируется некоторый обьем памяти) который не используется вообще. Когда утыкаемся во фрагментацию то просто освобождаем этот кусок памяти И что занятно проблема действительно ушла, это оказалось эффективнее чем анализировать нетривиальный большой код бывшего сотрудника
Vga
На эту тему байка была где-то Тоже игрострой, сделали игру, выпускаться через месяц, не хватает полутора метров памяти
Tiny
Читал)))
Vga
Начали ужиматься, выпускаться через неделю, все ужато, не хватает полуметра, чо делать?
Tiny
Программер удалил аллоцированный кусок памяти)) потому что знал как все происходит
Andrey
https://t.me/electro_kot/1118
Vga
Идут к Главному, он удаляет метровый массив, объявленный в самом начале объекта, который никто никогда не трогал)
Tiny
Да да)) ржака, тоже читал эту байку
Vga
Кому ржака, а кому урок) - Сэнсэй, а зачем вы этот массив выделили? - Я не первый прект пишу и знаю, что ужаться в требуемое не удается никогда, поэтому заранее делаю резерв
Fvck
У меня сейчас такая дилемма, че делать