Речь о том, что я не храню предустановки во флэше, как это обычно делают нормальные люди.
флеша - 32к, ЕЕПРОМ - всего 1К. Вы уверены. что экономия 3% флеша стоит этих плясок с ЕЕПРОМ? - 1к флеша обычно бех труда можно выиграть оптимизацией кода и библиотек
Речь о том, что я не храню предустановки во флэше, как это обычно делают нормальные люди.
флеша - 32к, ЕЕПРОМ - всего 1К. Вы уверены. что экономия 3% флеша стоит этих плясок с ЕЕПРОМ? - 1к флеша обычно бех труда можно выиграть оптимизацией кода и библиотек
Не уверен. Хотя есть соображения я в еепроме храню не только настройки но и музыку. А она пишется отдельно от прошивки.
И да, кто бы мне помог оптимизировать библиотеку про BME280 она целык 2к отъедает. Главно BMP280 не такая жадная почемуто.
Так и задавайте структурой. Все настройки объединить в одну структуру и её использовать в обеих программах, чтобы при лбых изменениях структуры, менялось сразу в обеих.
Понятно, но эти массивы принадлежат совершенно разным частям программы и программы пишут разные люди и в разное время
И что? Создали одну структуру и все её используют одну и ту же.
b612 пишет:
вообщем там трудно договориться.
Если у проекта есть руководитель, то и договариваться нечего - построил всех и сказал как делать.
А если проект делается "демократически", бросайте его немедленно. Один хрен ничего не получится. Вавилонская башня - хрестоматийный пример.
2кб на сложный сенсор, который выдает float в Q-формате - это неплохой результат. Наврядли дальнейшая оптимизация будет стоить дёшево. Мне пришлось извернуться и конвертить Q-number прямо в строку, чтобы обойти float. Но я до сих пор не уверен, что это радикально уменьшило расход ресурса.
А что в этом интересного? Любой функционал поглощает ресурс. BMP выдает давление и температуру, BME - дополнительно к этому еще и влажность выкатывает. И эта часть - где-то треть объёма от всех вычислений, да ещё и с конвертацией из необычного формата. Так что - оптимизация возможна только за счёт ограничения функционала. Например - отказ от float. Ну и ещё там можно подсократить кое-что. Но стоит ли овчинка выделки - вопрос на миллион.
А что в этом интересного? Любой функционал поглощает ресурс. BMP выдает давление и температуру, BME - дополнительно к этому еще и влажность выкатывает. И эта часть - где-то треть объёма от всех вычислений, да ещё и с конвертацией из необычного формата. Так что - оптимизация возможна только за счёт ограничения функционала. Например - отказ от float. Ну и ещё там можно подсократить кое-что. Но стоит ли овчинка выделки - вопрос на миллион.
полтора К за влажность , не жирно ли ?
Float по идее жрать ничего не должен ибо он уже присутствует в проекте.
Разговор ниочём. Его даже лучше будет снести, как оффтоп.
Жирно, не жирно - это ваши субъективные оценки. Хотите "нежирно" - убейте, например, неделю рабочего времени на оптимизацию. После этого понятно будет - жирно или нет. Лично я, основаясь на опыте, написал, что это - немного. Можно начать вдавливать код в определённый объём, но это будет очень специфическое решение, возможно даже, что под один единственный проект.
Вопрос такой. Как лучше писать, в обьектно ориентированном стиле с использованием нескольких классов в классе или не в обьектно ориентированном с использованиём одного класса и множества функций в нем. В чом разница будет таких подходов в скорости и обьемах занимаемой памяти? К примеру на esp01, esp12e-f, esp32.
Вопрос такой. Как лучше писать, в обьектно ориентированном стиле с использованием нескольких классов в классе или не в обьектно ориентированном с использованиём одного класса и множества функций в нем. В чом разница будет таких подходов в скорости и обьемах занимаемой памяти? К примеру на esp01, esp12e-f, esp32.
слишком абстрактно. Выложите два примера реализаций - тогда сравним.
И лучше не засорять прикрепленную тему, а создать новую
ноги начали расти из того, что надо было както разместить данные в еепроме, не тратя на это флэш.
ну, чудес-то не бывает - чтобы использовать ваши данные, что хранятся в EMEM - вы все равно сначала их в оперативку считываете
Речь о том, что я не храню предустановки во флэше, как это обычно делают нормальные люди.
А при начале работы переписывают из флэша в еепром.
Речь о том, что я не храню предустановки во флэше, как это обычно делают нормальные люди.
флеша - 32к, ЕЕПРОМ - всего 1К. Вы уверены. что экономия 3% флеша стоит этих плясок с ЕЕПРОМ? - 1к флеша обычно бех труда можно выиграть оптимизацией кода и библиотек
Речь о том, что я не храню предустановки во флэше, как это обычно делают нормальные люди.
флеша - 32к, ЕЕПРОМ - всего 1К. Вы уверены. что экономия 3% флеша стоит этих плясок с ЕЕПРОМ? - 1к флеша обычно бех труда можно выиграть оптимизацией кода и библиотек
И да, кто бы мне помог оптимизировать библиотеку про BME280 она целык 2к отъедает. Главно BMP280 не такая жадная почемуто.
И оперативу зараза жрёт
Я бы то же был рад увидеть легкую библиотеку BME280.
У меня MBE280 by Tyler Glenn она вообще 10кб хавает :(
Проще было бы задать адреса железно.
Ни разу не проще. Вы даже не представляете, какой это ящик Пандоры.
Так и задавайте структурой. Все настройки объединить в одну структуру и её использовать в обеих программах, чтобы при лбых изменениях структуры, менялось сразу в обеих.
И что? Создали одну структуру и все её используют одну и ту же.
А если проект делается "демократически", бросайте его немедленно. Один хрен ничего не получится. Вавилонская башня - хрестоматийный пример.
2кб на сложный сенсор, который выдает float в Q-формате - это неплохой результат. Наврядли дальнейшая оптимизация будет стоить дёшево. Мне пришлось извернуться и конвертить Q-number прямо в строку, чтобы обойти float. Но я до сих пор не уверен, что это радикально уменьшило расход ресурса.
Что интересно 1.5к это не BMЕ280 жрёт, а это разница между те что жрут BMP и BME.
BMP около 1.5
BME почти 3
А что в этом интересного? Любой функционал поглощает ресурс. BMP выдает давление и температуру, BME - дополнительно к этому еще и влажность выкатывает. И эта часть - где-то треть объёма от всех вычислений, да ещё и с конвертацией из необычного формата. Так что - оптимизация возможна только за счёт ограничения функционала. Например - отказ от float. Ну и ещё там можно подсократить кое-что. Но стоит ли овчинка выделки - вопрос на миллион.
А что в этом интересного? Любой функционал поглощает ресурс. BMP выдает давление и температуру, BME - дополнительно к этому еще и влажность выкатывает. И эта часть - где-то треть объёма от всех вычислений, да ещё и с конвертацией из необычного формата. Так что - оптимизация возможна только за счёт ограничения функционала. Например - отказ от float. Ну и ещё там можно подсократить кое-что. Но стоит ли овчинка выделки - вопрос на миллион.
Float по идее жрать ничего не должен ибо он уже присутствует в проекте.
Разговор ниочём. Его даже лучше будет снести, как оффтоп.
Жирно, не жирно - это ваши субъективные оценки. Хотите "нежирно" - убейте, например, неделю рабочего времени на оптимизацию. После этого понятно будет - жирно или нет. Лично я, основаясь на опыте, написал, что это - немного. Можно начать вдавливать код в определённый объём, но это будет очень специфическое решение, возможно даже, что под один единственный проект.
об ОЗУ - мы не касаемся EEPROM и памяти программы (по крайней мере пока).
Итак, если мы посмотрим в Atmel'овскую документацию, то увидим. что общее распределение памяти у
------------------------------------------------------------------------------------------------
Евгений, а можно в Топике вставить картинку. Ссылка не правильно работает!
Ну, Вы хоть ссылку на мой пост дайте, тут пять страниц, где мне теперь искать эту ссылку.
Я думаю про эту картинку был вопрос :)
Помоги пожалуйста понять как работает выделение памяти, самостоятельно я осознать это не смог. Возьмём простой код:
и скомпилируем его в среде Arduino для, скажем, attiny25. Получим:
После компиляции:
Стоп, что? Почему "B" располагается в динамической (HEAP+STACK) памяти?? А если сделать логгинг более детальным?
Чти за PROGMEM. И не в этой теме
Чти за PROGMEM. И не в этой теме
И заодно, забыть про String, т.к. евойный конструктор первое, что делает, это копирует строку из еепрома целиком в рам.
Почему, почему все строковые константы (это же константы, правда?) уходят в динамическую память?
А куда им уходить? Ваше предложение?
А куда им уходить? Ваше предложение?
Я предполагал, что они уходят во flash, где хранится сама программа.
Почитал по совету DetSimen о PROGMEM, нашёл макрос F(), осознал как жить дальше.
Спасибо за разъяснение.
Вы про String()? Да, я уже вернулся к старому доброму
char *message = "that's it";
Спасибо!
Добрый - это char message[] = "abcd" ...
Вопрос такой. Как лучше писать, в обьектно ориентированном стиле с использованием нескольких классов в классе или не в обьектно ориентированном с использованиём одного класса и множества функций в нем. В чом разница будет таких подходов в скорости и обьемах занимаемой памяти? К примеру на esp01, esp12e-f, esp32.
слишком абстрактно. Выложите два примера реализаций - тогда сравним.
И лучше не засорять прикрепленную тему, а создать новую