A. Fig Lee 0 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба Маловероятно... Ну.. Если так программировать.. Программирование должно быть детерминистик как возможно. В общем, с ресетом больше граблей, дольше и выгоды не вижу. Проще прыгнуть сразу, без всяких вероятностей Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба Ну.. Если так программировать.. Программирование должно быть детерминистик как возможно. Согласен - не дело это. Хотя и каких-то нежелательных эффектов тоже сразу не видно. Хотя наверное можно придумать. В общем, с ресетом больше граблей, дольше и выгоды не вижу. Проще прыгнуть сразу, без всяких вероятностей Согласен, так и лучше и проще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба а мне понравилась идея) у меня сейчас запуск в бутлоадер проверка флага в еепром, переход в бут или в основную программу... получается я могу сделать флаг в RAM, и переходить через ресет на бут если в флаге стоит кодовое слово, иначе уходить в основную прогу. И оставить EEPROM в покое, интересно... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 117 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба получается я могу сделать флаг в RAM, и переходить через ресет на бут если в флаге стоит кодовое слово, иначе уходить в основную прогу. И оставить EEPROM в покое, интересно...Не плодите сущностей. Вы сбрасываться как собираетесть? Программно? Вот и проверяйте флаг программного сброса в соответствующем регистре ядра. И не нужно ни EEPROM, ни ячейки в ОЗУ резервировать. А еще лучше сбрасываться после прошивки собакой и по отсутствию флага программного сброса делать проверку целостности прошивки и прыжок в нее. А по флагу программного сброса или при ошибке целостности уходить в загрузчик. Тогда вы получите возможность запуска загрузчика из основной программы программным сбросом и загрузчик при этом будет запускаться тоже со сброшенной периферией. Я делаю именно так и нахожу это очень простым и удобным. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба Сбрасывать собакой - чтобы сброс был железным? Если любой программный сброс - уход в загрузчик, то для удаленной перезагрузки устройства тоже делать фокус с вачдогом? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба В любом случае, как обслуживать ситуацию, когда в данной ячейке при холодном старте флаг случайно совпал с тем, который выставляется для прыгания в главную программу? Нужно пользоваться регистром, который показывает причину сброса. Можно совместно с ячейкой ОЗУ (и никаких случайных совпадений там уже быть не может), а можно и без неё, как отметил Сергей Борщ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
A. Fig Lee 0 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба Не плодите сущностей. Вы сбрасываться как собираетесть? Программно? Вот и проверяйте флаг программного сброса в соответствующем регистре ядра. И не нужно ни EEPROM, ни ячейки в ОЗУ резервировать. А еще лучше сбрасываться после прошивки собакой и по отсутствию флага программного сброса делать проверку целостности прошивки и прыжок в нее. А по флагу программного сброса или при ошибке целостности уходить в загрузчик. Тогда вы получите возможность запуска загрузчика из основной программы программным сбросом и загрузчик при этом будет запускаться тоже со сброшенной периферией. Я делаю именно так и нахожу это очень простым и удобным. А зачем "сброс собакой"? Что, без сброса чтото изменится? В любом случае все теже самые регистры задействованы записи/чтения флаша. Залил, проверил и прыгнул. Тогда и уходить никуда не надо.. Нужно пользоваться регистром, который показывает причину сброса. Можно совместно с ячейкой ОЗУ (и никаких случайных совпадений там уже быть не может), а можно и без неё, как отметил Сергей Борщ. Случайные совпадения в ОЗУ могут быть всегда. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба Случайные совпадения в ОЗУ могут быть всегда. Как страшно жыть... Так никакая программа работать не сможет :-) Случайные совпадения в моей схеме исключены. Вы просто не разобрались до конца. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
A. Fig Lee 0 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба Как страшно жыть... Так никакая программа работать не сможет :-) Случайные совпадения в моей схеме исключены. Вы просто не разобрались до конца. Почему не разобрался? 2 никому не нужных движения: ресет и использование РАМ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 117 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба 2 никому не нужных движения: ресетВам не нужны - не используйте. А я одним легким движением уверен, что у меня не продолжает молотить АЦП загаживая по DMA уже не свою память, мне не нужно затыкать таймера, генерящие прерывания с несуществующими в загрузчике обработчиками, что однократно запускаемая в LPC2xxx собака и в загрузчике и в приложении работает с разными настройками. Вы же можете все эти действия проводить вручную и на очередной версии приложения вдруг обнаружить, что не можете обновить прошивку потому что когда-то давно проектируя загрузчик, забыли заткнуть какую-то не использовавшуюся тогда периферию, а теперь, в новой версии, эта периферия мешает работать загрузчику. Пожалуйста! Каждый сам себе злобный Буратина. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
A. Fig Lee 0 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба Вам не нужны - не используйте. А я одним легким движением уверен, что у меня не продолжает молотить АЦП загаживая по DMA уже не свою память, мне не нужно затыкать таймера, генерящие прерывания с несуществующими в загрузчике обработчиками, что однократно запускаемая в LPC2xxx собака и в загрузчике и в приложении работает с разными настройками. Вы же можете все эти действия проводить вручную и на очередной версии приложения вдруг обнаружить, что не можете обновить прошивку потому что когда-то давно проектируя загрузчик, забыли заткнуть какую-то не использовавшуюся тогда периферию, а теперь, в новой версии, эта периферия мешает работать загрузчику. Пожалуйста! Каждый сам себе злобный Буратина. А.. А я в бутлоадере не пользую АЦП и тому подобное. Канал для записи во флеш и обмена данными - один из USB/RS232 и так далее... Все. А! Собака! Вот оно где порылось. Вотчдог - зло, его использовать плохая привычка. Тем более в бутлоадере. Он должен быть прост и бронебоен. Если там нужен вотчдог, чтото не так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 117 22 мая, 2014 Опубликовано 22 мая, 2014 · Жалоба А.. А я в бутлоадере не пользую АЦП и тому подобное.А для обновления прошивки вам нужно вручную выключить и включить устройство, или все же предусмотрена возможность запуска загрузчика по команде работающему приложению? Если предусмотрена - то где и как вы затыкаете периферию, которую перед запуском загрузчика использовало приложение? Канал для записи во флеш и обмена данными - один из USB/RS232 и так далее... Все. И их затыкать после окончания перепрошивки перед запуском приложения тоже не нужно? Тем более в бутлоадере. Он должен быть прост и бронебоен. Если там нужен вотчдог, что-то не так.Использование собаки для отслеживания таймаута в загрузчике - исключительно простое и бронебойное решение. Но вы можете строить свой велосипед по-своему. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 22 мая, 2014 Опубликовано 22 мая, 2014 · Жалоба Все же переход в загрузчик из основного приложения прыжком - реально зло... Надо в загрузчик переходить с чистого листа. Так же и в приложение хорошо бы перейти с чистого листа, ну мало ли что... мое ИМХО Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 117 22 мая, 2014 Опубликовано 22 мая, 2014 · Жалоба Надо в загрузчик переходить с чистого листа. Так же и в приложение хорошо бы перейти с чистого листа, ну мало ли что Именно. Тем более что реализуется это гораздо проще, чем все остальные пути. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
A. Fig Lee 0 22 мая, 2014 Опубликовано 22 мая, 2014 · Жалоба А для обновления прошивки вам нужно вручную выключить и включить устройство, или все же предусмотрена возможность запуска загрузчика по команде работающему приложению? Нет. Есть комманда, по ней делается програмный ресет. И по ресету мы в бутлоадере. Если кнопка не была нажата при ресете, опять уходим в главную программу. Если предусмотрена - то где и как вы затыкаете периферию, которую перед запуском загрузчика использовало приложение? И их затыкать после окончания перепрошивки перед запуском приложения тоже не нужно? Использование собаки для отслеживания таймаута в загрузчике - исключительно простое и бронебойное решение. Но вы можете строить свой велосипед по-своему. Дык - програмный ресет, ничего не надо затыкать. А вот перед прыжком в программу USB затыкаем. И надо в главной программе explicitly сделать __enable_interrupt() Все, больше телодвижений не надо. Для таймаутов пользуюсь таймером обычным. Но в данном случае его не пользую. Таймаут это фактически "флэшу кирдык", а значит, микросхеме и устройству. Нет смысла обрабатывать такую ситуацию. Везите к нам. Будем разбиратся. Все же переход в загрузчик из основного приложения прыжком - реально зло... Надо в загрузчик переходить с чистого листа. Так же и в приложение хорошо бы перейти с чистого листа, ну мало ли что... мое ИМХО Правильно. Но в приложение не обязательно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться