jcxz 242 26 мая, 2023 Опубликовано 26 мая, 2023 · Жалоба 12 минут назад, Юрий48 сказал: Так понимаю, что в ОЗУ не влезаю. Картинок в интерфейсе много. Можно ли что то в этом случае предпринять? Телепаты как всегда - в отпуске. Что вы там добавляете и как - только они могут угадать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Юрий48 0 26 мая, 2023 Опубликовано 26 мая, 2023 (изменено) · Жалоба В 26.05.2023 в 15:41, jcxz сказал: Телепаты как всегда - в отпуске. Что вы там добавляете и как - только они могут угадать. Процессор STM32F103C8T6, память - 64 Кб Flash, 20 Кб SRAM. Первый случай: программа работает без замечаний, расклад памяти такой - "Program Size: Code=43824 RO-data=3524 RW-data=9520 ZI-data=10272". Второй случай: помимо прочего в программе есть "static uint16_t Win2_Ric [] = {...}". Добавляю туда 644 байт и программа зависает. Расклад памяти при этом такой - "Program Size: Code=43816 RO-data=3524 RW-data=10164 ZI-data=10268". Вот я и пишу: "Так понимаю, что в ОЗУ не влезаю. Картинок в интерфейсе много. Можно ли что то в этом случае предпринять?" Изменено 26 мая, 2023 пользователем Юрий48 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 26 мая, 2023 Опубликовано 26 мая, 2023 · Жалоба 6 минут назад, Юрий48 сказал: Второй случай: помимо прочего в программе есть "static uint16_t Win2_Ric [] = {...}". Добавляю туда 644 байт и программа зависает. Расклад памяти при этом такой - "Program Size: Code=43816 RO-data=3524 RW-data=10164 ZI-data=10268". Вот я и пишу: "Так понимаю, что в ОЗУ не влезаю. Картинок в интерфейсе много. А зачем картинку пихать в ОЗУ? Вроде ей самое место - во флеши. "static uint16_t const Win2_Ric [] = {...}; 6 минут назад, Юрий48 сказал: Так понимаю, что в ОЗУ не влезаю. Если бы это было так, то компилятор выдал бы ошибку компиляции. Проблема у вас в чём-то другом. Но без кода - не угадать. И без расшифровки содержимого HardFault-регистров. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Юрий48 0 26 мая, 2023 Опубликовано 26 мая, 2023 · Жалоба В 26.05.2023 в 16:30, jcxz сказал: А зачем картинку пихать в ОЗУ? Вроде ей самое место - во флеши. "static uint16_t const Win2_Ric [] = {...}; А с const программа не компилируется. Эту проблему в самом начале я замёл под ковёр, а сейчас поезд уже ушёл, чтобы её разматывать - нет на это ни сил не времени. В 26.05.2023 в 16:30, jcxz сказал: Если бы это было так, то компилятор выдал бы ошибку компиляции. Действительно, если подсчитать, то получается, что в ОЗУ = 20432 байта или 19.953125 килобайт, т. е. - влезает, но на самом, самом пределе. И это получается как то влияет, поскольку кроме добавления 644 байт ничего более не делается. В 26.05.2023 в 16:30, jcxz сказал: И без расшифровки содержимого HardFault-регистров. Очень бы хотелось разобраться с этой проблемой до конца, но, учитывая ранее сказанное и лимит времени, решаю рисунок сделать программно - всего 12 линий. Может, когда будет время или всё совсем развалится придётся вернуться к этой проблемме. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 26 мая, 2023 Опубликовано 26 мая, 2023 · Жалоба 1 hour ago, Юрий48 said: А с const программа не компилируется. Эту проблему в самом начале я замёл под ковёр, а сейчас поезд уже ушёл, чтобы её разматывать - нет на это ни сил не времени. Если что то не компилируется, то компилятор пишет причину чёрным по белому. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 26 мая, 2023 Опубликовано 26 мая, 2023 · Жалоба Бывают программы, которые работают не благодаря, а вопреки. В них главное - не спугнуть. 1 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 26 мая, 2023 Опубликовано 26 мая, 2023 (изменено) · Жалоба Позволю и себе добавить "припарку" этому "мёртвому" RW-data=10164 ZI-data=10268 Если не хватило прядка полукилобайта ОЗУ, то навеняка от ZI-data (это всё, что инициируется нулями) можно эти пол-килобайта отщипнуть (-; Изменено 26 мая, 2023 пользователем Obam Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 27 мая, 2023 Опубликовано 27 мая, 2023 · Жалоба 15 часов назад, Юрий48 сказал: А с const программа не компилируется. 15 часов назад, Юрий48 сказал: Очень бы хотелось разобраться с этой проблемой до конца, но, учитывая ранее сказанное и лимит времени Учитывая вышенаписанное, любое изменение этой "программы" может привести как к её "работе", так и не работе. Сочуствую её пользователям... 16 часов назад, Юрий48 сказал: Может, когда будет время Никогда не будет. И не времени у вас нет, а желания. При желании, время всегда можно найти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Юрий48 0 27 мая, 2023 Опубликовано 27 мая, 2023 · Жалоба В 27.05.2023 в 09:24, jcxz сказал: И не времени у вас нет, а желания. Согласен, поскольку при удовлетворении этого желания угрохаю столько времени, что вообще все желания отпадут. А сечас уже сделал, как наметил и даже освободил немного памяти и иду дальше до момента, когда опять что ни будь не обрушится и придётся обращатся к Вам. Вот тогда то Вы и припомните мне всё. Ну, да ладно, главное, что бы в конце какой ни будь толк из этого вышел. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 85 27 мая, 2023 Опубликовано 27 мая, 2023 · Жалоба В 26.05.2023 в 20:22, Юрий48 сказал: А с const программа не компилируется. Почему? Наверно потому, что пытаетесь эту переменную изменять в коде? Вообще, когда инициализуете переменную, её копия (вернее, список инициализаторов) уже и без того помещается во флеше. В процессе старта эти инициализаторы копируются из флеша в ОЗУ и далее переменная доступна в ОЗУ. Не объявляйте слишком много статических (static) массивов для хранения картинок, используйте хранение во флеше, а для изменяемых массивов используйте локальные переменные в функциях. Тогда они помещаются в стеке, а он динамический, при выходе из функции массив становится недействительным и занятая им память освобождается. В 26.05.2023 в 20:22, Юрий48 сказал: ОЗУ = 20432 байта или 19.953125 килобайт, т. е. - влезает, но на самом, самом пределе. Но расход стека наверняка не учитывается, отсюда и проблема - он выходит за границы и портит содержимое ОЗУ, предназначенное для статического хранения. Не храните слишком много статических массивов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Юрий48 0 28 мая, 2023 Опубликовано 28 мая, 2023 · Жалоба В 27.05.2023 в 20:21, EdgeAligned сказал: Наверно потому, что пытаетесь эту переменную изменять в коде? Дело в том, что изначально была создана сложная структура указателей на эту переменную, которая (структура) на тот момент была удобна (несколько вложенных функций), но эта конструкция при const вызывала ошибку, с которой я не разобрался, и которая вот сейчас меня и ударила. Сейчас что либо менять смысла не вижу, но разбраться всё же надо. Но это уже в новом проекте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться