esaulenka 5 27 ноября, 2018 Опубликовано 27 ноября, 2018 · Жалоба 23 hours ago, Forger said: у вас семейство F3 :( , а для них действительно не требуется размещение в ОЗУ Справедливости ради, на большинстве STM (из того, что лично трогал - F1, F2, F4) запись во флеш останавливает всё выполнение из неё. Т.е., если не считать "подвисания" всего камня, никаких проблем нет. Функция записи, как и многочисленные вектора прерываний - во флеше. И про размер записи. На первых сериях было строго 16 бит за раз (откуда история про выравнивание источника? пофиг же). На F4 есть настройка, сколько писать - 1, 2, или 4 байта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 185 27 ноября, 2018 Опубликовано 27 ноября, 2018 · Жалоба 32 минуты назад, KnightIgor сказал: Я придерживаюсь противоположного мнения: именно флэш ультимативно удобна и надежна для хранения настроек. Ну да как же - удобна... А ничего что на время стирания/записи этой самой внутренней флешь, устройство неработоспособно? И время такой неработоспособности может достигать нескольких секунд. И чтобы его сконфигурить, нужно остановить его работу. А если это невозможно? Цитата - настройки извне надо копировать в ОЗУ, а в микроконтроллерах его, как правило, ощутимо меньше, чем флэш; А для записи во внутреннюю флешь на многих МК нужно расположить код записи в ОЗУ. И размер этого кода может быть в разы больше чем этот самый конфиг. Цитата - флэш надежнее; если это опровергать, нужно смириться и с тем, что и сама прошитая программа ненадежна, к чему ей тогда настройки вообще, когда она рухнет? Для надёжности обновления конфига нужно хранить его в двух копиях. С независимым стиранием. Т.е. - в двух секторах стирания флешь. Например на XMC47xx размер такого сектора == 256 КБ. Итого - под кофиг (даже из двух байт всего) придётся отдать 0.5 МБ флеша. Как-то жирновато.... Цитата Мы проверили, и оказалось, что именно содержимое EEPROM потерялось. И что? О чём это говорит? Что в том вашем ПО есть баг, из-за которого это содержимое может слетать при определённых условиях? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 185 27 ноября, 2018 Опубликовано 27 ноября, 2018 · Жалоба 34 минуты назад, KnightIgor сказал: - требуется ощутимое время на считывание из внешних хранителей. "Ощутимое" - это сколько? Пара мсек - ощутимо? ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KnightIgor 2 27 ноября, 2018 Опубликовано 27 ноября, 2018 (изменено) · Жалоба 12 minutes ago, jcxz said: Ну да как же - удобна... А ничего что на время стирания/записи этой самой внутренней флешь, устройство неработоспособно? И время такой неработоспособности может достигать нескольких секунд. И чтобы его сконфигурить, нужно остановить его работу. А если это невозможно? А для записи во внутреннюю флешь на многих МК нужно расположить код записи в ОЗУ. И размер этого кода может быть в разы больше чем этот самый конфиг. Для надёжности обновления конфига нужно хранить его в двух копиях. С независимым стиранием. Т.е. - в двух секторах стирания флешь. На XMC47xx размер такого сектора == 256 КБ. Итого - под кофиг (даже из двух байт) придётся отдать 0.5 МБ флеша. Как-то жирновато.... И что? О чём это говорит? Что в том вашем ПО есть баг, из-за которого это содержимое может слетать при определённых условиях? Если невозможно остановить, применяйте другие решения. Я ж не заставляю. Для моих разнообразных систем остановка для записи параметров некритична: это настройки, как правило, имеют место быть при вводе в экплуатацию. Потом во флэш в процессе работы никто не пишет: ресурс же ограничен, никаких логов и подобного туда не сливают. Код записи в ОЗУ не обязателен, по крайней мере для STM. Для EFM32 - да, но размер кода, что пишет, мал (там буквально пара операций). Размер конфига может быть разный. Например, таблицы подстроек могут быть большими. Если у какого-то процессора проблемы с размером страниц - это его проблемы, и надо применять другие решения. Я ж не спорю. Для STM|EFM таких проблем нет. Если ПО работает 20 лет, багов там нет. Точнее, по закону Мерфи, они там есть ("безошибочное ПО неработоспособно"), но прячутся по углам. Когда EEPROM потеряла содержимое, а модуль перегрузился и не смог загрузить настройки, он встал. PC обнаружило и сообщило. В чем проблема? И не надо начинать Холивары. Я ж никому ничего не навязываю. Не знаю, как на России, но я привык к плюрализму. Изменено 27 ноября, 2018 пользователем KnightIgor Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 27 ноября, 2018 Опубликовано 27 ноября, 2018 · Жалоба 29 minutes ago, KnightIgor said: - внешние устройства хранения есть дополнительные компоненты, для них нужно место, к ним требуются шины коммуникации, которые занимают пины и могут сбоить; Существуют контроллеры со встроенной EEPROM, для подобных задач, где нужно хранить изменяемые параметры, я использую именно такие. 29 minutes ago, KnightIgor said: подвешивание автоматов I2C EEPROM общеизвестно. Банальный ногодрыг полностью исключает эту проблему ;) 29 minutes ago, KnightIgor said: - требуется ощутимое время на считывание из внешних хранителей. Если при старте сначала вычитать данные в ОЗУ, то этой типа "проблемы" тоже нет. 29 minutes ago, KnightIgor said: - настройки извне надо копировать в ОЗУ, а в микроконтроллерах его, как правило, ощутимо меньше, чем флэш; Проект, в котором подразумеваются настройки, как правило ни разу не детский, и потому контроллер обычно ставится туда тоже не разу не "детский". А уж потратить на настройки от силы в сотню байт - ну, прям разорится можно, прям "пойти по миру" :D Да, конечно, существуют исключения, но очень очень очень очень очень редкий проект построен по принципу - "экономим на спичках". В таких проектах хороши все решения, в т.ч. и хранение настроек во флэш. Но это, имхо, больше как "костыль" для жадного заказчика ))) 29 minutes ago, KnightIgor said: - размещение параметров во флэш позволяет использовать их непосредственно как константы в выражениях кода. Тоже самое можно сказать и про встроенную EEPROM (например как в семействе STM32L1) ;) Но даже в таких случаях я сначала вычитываю в ОЗУ все настройки из EEPROM, проверяю контрольную сумму и уже потом работаю с этой копией настроек. При сохранении настроек переписываются только те настройки, которые изменились, ну и сама контрольная сумма. Не нужно перетирать весь сектор флэши, поскольку EEPROM позволяет писать по-байтно ;) 29 minutes ago, KnightIgor said: - флэш надежнее; если это опровергать, нужно смириться и с тем, что и сама прошитая программа ненадежна, В этом мире нет ничего действительно надежного ;) 29 minutes ago, KnightIgor said: когда она рухнет? У меня и это предусмотрено, но только в серьезных проектах, где это действительно важно ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KnightIgor 2 27 ноября, 2018 Опубликовано 27 ноября, 2018 · Жалоба 9 minutes ago, jcxz said: "Ощутимое" - это сколько? Пара мсек - ощутимо? ;) миллисекунда для процессоров - это вечность! Может для какой задачи и пофиг, но как по мне, иметь константы под рукой в наносекундной досягаемости значительно удобнее, чем молотить протоколы снаружи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 185 27 ноября, 2018 Опубликовано 27 ноября, 2018 · Жалоба 5 минут назад, KnightIgor сказал: Если невозможно остановить, применяйте другие решения. Я ж не заставляю. Для моих разнообразных систем остановка для записи параметров некритична: это настройки, как правило, имеют место быть при вводе в экплуатацию. Просто Вы написали так, как будто у хранения настроек во внутренней флешь одни только плюсы. А про минусы случайно забыли. 5 минут назад, KnightIgor сказал: Код записи в ОЗУ не обязателен, по крайней мере для STM. Для EFM32 - да, но размер кода, что пишет, мал (там буквально пара операций). Размер конфига может быть разный. Например, таблицы подстроек могут быть большими. Во всех STM разве flash разделена на 2 независимых банка? Я сам не знаю, но слышал тут говорили что нет. А если банк один, то как стирать? 5 минут назад, KnightIgor сказал: Если у какого-то процессора проблемы с размером страниц - это его проблемы, и надо применять другие решения. Я ж не спорю. Для STM|EFM таких проблем нет. ну-ну.... гладко было на бумаге да забыли про овраги.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KnightIgor 2 27 ноября, 2018 Опубликовано 27 ноября, 2018 · Жалоба 8 minutes ago, Forger said: Банальный ногодрыг полностью исключает эту проблему ;) Не пугайте так! Я слова такого не знаю, а если, то только у не до конца прибитой мухи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 27 ноября, 2018 Опубликовано 27 ноября, 2018 · Жалоба 7 minutes ago, KnightIgor said: миллисекунда для процессоров - это вечность! Может для какой задачи и пофиг, но как по мне, иметь константы под рукой в наносекундной досягаемости значительно удобнее, чем молотить протоколы снаружи. Имхо, тема плавно переросла в обсуждение нюансов известной поговорки: "каждый др...ит, как хочет" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KnightIgor 2 27 ноября, 2018 Опубликовано 27 ноября, 2018 (изменено) · Жалоба 5 minutes ago, jcxz said: Во всех STM разве flash разделена на 2 независимых банка? Я сам не знаю, но слышал тут говорили что нет. А если банк один, то как стирать? Можно постранично стирать. Размер страниц зависит от общего объема, как правило, и лежит от 512 байт до 2К, может до 4-х для каких-нибудь мегабайтников - не знаю, не работал. Изменено 27 ноября, 2018 пользователем KnightIgor Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 185 27 ноября, 2018 Опубликовано 27 ноября, 2018 · Жалоба 55 минут назад, KnightIgor сказал: - размещение параметров во флэш позволяет использовать их непосредственно как константы в выражениях кода. Здесь воспользуюсь Вашим же приёмом: если STM/EFM не умеет отображать память внешней FLASH на адресное пространство CPU, то это уже его проблемы. Например многие LPC это умеют. 3 минуты назад, KnightIgor сказал: Не пугайте так! Я слова такого не знаю, а если, то только у не до конца прибитой мухи. ну Вы этого не знаете, а многие тут не знают про: 59 минут назад, KnightIgor сказал: подвешивание автоматов I2C EEPROM общеизвестно 4 минуты назад, KnightIgor сказал: Можно постранично стирать. Размер страниц зависит от общего объема, как правило, и лежит от 512 байт до 2К, может до 4-х для каких-нибуть мегабайтников - не знаю, не работал. ну да - вместе с программой. Или с угрозой потери этих самых настроек при сбое питания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KnightIgor 2 27 ноября, 2018 Опубликовано 27 ноября, 2018 (изменено) · Жалоба 13 minutes ago, jcxz said: Здесь воспользуюсь Вашим же приёмом: если STM/EFM не умеет отображать память внешней FLASH на адресное пространство CPU, то это уже его проблемы. Например многие LPC это умеют. С такими монстрами не работал. Я ж говорю: мне внутренняя память ближе, чем что снаружи. И речь о EEPROM внешней была, а не о какой quad spi flash в десятки мегов. EEPROM не отображается даже Вашими горячо любимыми LPC. P.S. И, кстати, я никаких "приёмов" в этой дискуссии не применяю: я же не пытаюсь кого-то тут унизить или обманом вовлечь в ряды последователей моих решений. Вы же, коллега, мной замечены в очень бурных реакциях на мнение постеров. Изменено 27 ноября, 2018 пользователем KnightIgor Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 27 ноября, 2018 Опубликовано 27 ноября, 2018 · Жалоба 6 minutes ago, Forger said: Имхо, тема плавно переросла в обсуждение нюансов известной поговорки: "каждый др...ит, как хочет" Ага. И застрельщики те же, что и обычно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 27 ноября, 2018 Опубликовано 27 ноября, 2018 · Жалоба 4 minutes ago, jcxz said: ну Вы этого не знаете, а многие тут не знают про: "Подвешивание автоматов I2C EEPROM" легко лечится питанием той самой EEPROM от любой свободной ноги МК. Это чтобы уж совсем наверняка ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 27 ноября, 2018 Опубликовано 27 ноября, 2018 · Жалоба Just now, scifi said: Ага. И застрельщики те же, что и обычно я вообще то ищу решение конкретной проблемы :) - флаг у вас в руках :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться