Добрый день. Скажите пожалуйста каким образом я могу посмотреть размер занимаемый стеком в определенное время!. Я нашел только функции которые показывают неиспользованную память , но не нашел ответа учитывают они нижнюю границу используемого стека или нет . Например …
int freeRam () {
extern int __heap_start, *__brkval;
int v;
return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}
Мне кажется , что нет , ( а тогда он мне не подходит )так как __brkval последний указатель используемой памяти , и не факт что стек не залез на нее…(возможно ошибаюсь)
Спасибо
Никаким просто у меня есть подозрения что в определенный момент стек переписывает мои данные , т.к я ожидаю одно , а в итоге мусор… С другой стороны этот кусок кода отдельно работает и никакого мусора.
Проблема тут одна: как названия регистров, так и названия констант неуниверсальны - где-то они определены, где-то - нет.
Текущее положение стека можно узнать, взяв адрес локальной переменной (предполагая, что она единственная) или параметра функции.
Текущее положение указателя кучи можно узнать, запросив немного памяти.
Соответственно, количество свободной памяти - их разница.
В том то и дело , что не единственная. мало того используя библиотеки экранов я не во всех разбирался , что они используют , поэтому хотел в момент наблюдения глюка посмотреть размер стека , чтоб исключить его вмешательство, т.к после компиляции остаток памяти остается где-то порядка полутора килобайт…
Да с мк стормозил , но с 8 кб немного… Atmega 2560/// Библиотека конечно хорошо , но она тоже место занимает , а у меня дефицит с оперативкой иначе б даже не возник такой вопрос…
По сути мне надо было понять, смогу я уложиться в мегу или все таки придется либо вешать внешнюю рам либо просто перейти на что нить другое…Но аналога с большим количества портов кроме кортекса не нашел , поэтому пока выясняю возможность использование меги
4 масива с профилями которые постоянно используются и меняются . в еепром и SD пробовал но вызывает торможение в комплексе которое меня не устраивает … и остальное локальные глобальные переменные
TempList [4][750]
возможно после оптимизации и отказа от библиотек (если получиться изучив их написать свое) я уменьшу размер , но врядли очень существенно… поэтому хотелось понять мега тупиковый вариант или есть смысл продолжать
Да просмотрел , существенно размер она не добавит …спасибо не увидел раньше… хотя размер стека я вроде и у себя смог получить а именно мне он нужен был
Возможно SPI флеш ускорило бы работу , но во первых я так и не смог пока подружить преобразователь уровня TXS с ней , а во вторых на ней еще 6 устройств включая tft … Боюсь не сильно вырастет быстродействие
А зачем SPI flash, если нужно оперативно менять значения?
Вам нужна SPI RAM, что-то такое: https://aliexpress.ru/item/4000242457828.html
Петрович публиковал библиотеку для работы с ней:
ну да она, но не суть … проблема в том что я не смог пока подружить связку мега TXS память… толи преобразователь кривой толи руки… пишет неизвестное оборудование