И Как понять что сейчас срыв стека? Как я уже говорил, мне нужна fatfs, при ее подключении ничего не работает, озу пзу остаётся даже с учётом маллока на килобайт Я уже смирился и поменял на petit fatfs Только она не создаёт файлы!!! Это крайне неудобно

Комментарии: 42

  1. 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

                                                              У меня сейчас такая дилемма, че делать

Не нашли ответ?

Вам также может быть интересно

Ребят подскажите. Всё с тем айпадом после кучи сервисов вожусь. Вообщем изначально был на заставке ребут. Потом чинил чинил... Читать далее