Перейти к содержанию
    

Я последовательно соединял две независимых кнопки (у каждой две группы контактов). В обычном режиме каждая работает сама по себе, а когда нажимаю обе - особый случай.

Теперь аналогичное делаю программным способом, с некоторыми дополнительными условиями.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Т.е. данная кнопка выносится на корпус и доступна любому пользователю? На мой взгляд, не есть хорошее решение. Если бы какой-то Master мог сделать это по внешней технологической команде, тогда ещё приемлемо.

У меня обычно есть несколько кнопок, и я делаю вход в загрузчик, если при включении питания нажата определённая комбинация. Обычный обыватель не догадается, и в случае неисправности комбинацию можно сообщить пользователю. Опять же залить что попало он туда не сможет, потому что есть проверка целостности прошивки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А у меня есть видеорегистратор, который виснет если при включении держать кнопку, и только ресетом через дырочку отвисает. Подозреваю как раз в загрузчик переходит. А вот что выйти кнопкой включения нельзя - руки бы поломал бы.... Да еще кнопки так стоят, что включая легко задеть ту самую заветную%)...

 

У меня кнопочка внутри прибора - аварийный вариант.

Штатно переход в загрузчик командой по езернет или при загрузки с битой прошивкой или левым кодом безопасности.

 

Но аварийная кнопка нужна. Если случайно зальют левак какой-то с верным ЦРЦ и верным кодом безопасности или в котором команда перехода в бутлоадер сломана или езернет отвалится, или случайно у битого кода совпадет ЦРЦ, мало ли что.....

 

Так же надо не забывать что иногда ваши устройства собирают партнеры которые могут и обновлять прошивки во время сборки, что им ЖТАГ поставлять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но аварийная кнопка нужна. Если случайно зальют левак какой-то с верным ЦРЦ и верным кодом безопасности или в котором команда перехода в бутлоадер сломана или езернет отвалится, или случайно у битого кода совпадет ЦРЦ, мало ли что.....
Именно. Или какой-то непредусмотренной комбинацией штатных настроек устройство приводится в нерабочее состояние (ну бывает, любая программа содержит минимум одну ошибку), или клиенту случайно отправили промежуточную, совсем нерабочую версию - вот в таком крайнем случае можно попросить клиента вскрыть устройство, замкнуть заветную точку и залить исправление. Это быстрее и дешевле, чем пересылать устройство на ремонт через половину земного шарика. В штатном режиме устройство обновляется командой по интерфейсу без вмешательства человека.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Т.е. данная кнопка выносится на корпус и доступна любому пользователю?
Она не выносится, она уже есть и является частью клавиатуры прибора. И используется обычно по своему назначению, а вызов загрузчика это её вторая скрытая функция, активируемая лишь в момент подачи питания на несколько миллисекунд.

Убеждать вас в её необходимости я не буду. Сами всё поймёте рано или поздно.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Она не выносится, она уже есть и является частью клавиатуры прибора. И используется обычно по своему назначению, а вызов загрузчика это её вторая скрытая функция, активируемая лишь в момент подачи питания на несколько миллисекунд.

Убеждать вас в её необходимости я не буду. Сами всё поймёте рано или поздно.

Может быть и так, но тогда есть вероятность получить такое:

А у меня есть видеорегистратор, который виснет если при включении держать кнопку, и только ресетом через дырочку отвисает. Подозреваю как раз в загрузчик переходит. А вот что выйти кнопкой включения нельзя - руки бы поломал бы.... Да еще кнопки так стоят, что включая легко задеть ту самую заветную%)...

Ну и как же быть, если нет никаких кнопок. В нашей системе и без кнопок всё нормально работает, переход в загрузчик только по командам CAN, Ethernet. Не считаю наличие данной кнопки необходимостью любой системы и Вас также переубеждать не стану. Думаю, где-то может быть оправдано такое решение где-то нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вот можно ли зайти во встроенный загрузчик в STM32? Адрес известен, перенести таблицу векторов... Или там работает абсолютная адресация, и нужно отобразить System память на нулевые адреса (что делается ножками boot)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У ST есть несколько подробных аппнотов по загрузчику. Думаю, этот вопрос там освещен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У ST есть несколько подробных аппнотов по загрузчику. Думаю, этот вопрос там освещен.

Листал. Там расписано, как работать со встроенным загрузчиком. Но чтобы из рабочей программы скакнуть, такого не помню. Впрочем, читал не внимательно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может быть и так, но тогда есть вероятность получить такое:
Чтобы такого не было я использую таймаут и выхожу из загрузчика при его бездействии.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Листал. Там расписано, как работать со встроенным загрузчиком. Но чтобы из рабочей программы скакнуть, такого не помню. Впрочем, читал не внимательно.

Эта фича не предусмотрена, насколько я понял. Но никто не мешает МК самому себе дёргать ногу BOOT0 и делать сброс (+конденсатор, чтобы нужный уровень на BOOT0 продержался до выхода из сброса).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И используется обычно по своему назначению, а вызов загрузчика это её вторая скрытая функция, активируемая лишь в момент подачи питания на несколько миллисекунд.

Правильно. Да, ограничения накладывает, но если продумать комбинацию (CTRL+ALT+DEL например :-)) В последних SAM3 именно так и сделана фунция ERASE. В момент подачи питания анализируется уровень PIO_ERASE, а потом программа в праве переключить на PIO или оставить как есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Писал ответ в соседнюю тему и пришла в голову такая мысль: запустить загрузчик на Cortex-M3/M4 очень просто. Мы же знаем, где он находится. Значит знаем, где начинаются его вектора. Нам надо запретить прерывания, установить VTOR на вектора загрузчика, загрузить в MSP число из первого слова векторов, переключить стек на MSP и передать управление на адрес из второго слова векторов. То есть произвести те же действия, которые мы делаем при запуске приложения из самописного загрузчика.

 

P.S. Хм, ViKo как раз это и предлагал. Надо читать сообщения внимательнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Писал ответ в соседнюю тему и пришла в голову такая мысль: запустить загрузчик на Cortex-M3/M4 очень просто. Мы же знаем, где он находится. Значит знаем, где начинаются его вектора. Нам надо запретить прерывания, установить VTOR на вектора загрузчика, загрузить в MSP число из первого слова векторов, переключить стек на MSP и передать управление на адрес из второго слова векторов. То есть произвести те же действия, которые мы делаем при запуске приложения из самописного загрузчика.

 

P.S. Хм, ViKo как раз это и предлагал. Надо читать сообщения внимательнее.

А смысл? Входить в загрузчик без кнопки все равно не получится.

В смысле получится, пока прошивка нормальная, как только глюк - все.

Хотя если просто пользовать фирменный загрузчик в своем бутлоадере, то да.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чего то я не понял бизнеса...

Хотим загрузить загрузчик без ресета? Так столько копий сломано что это чревато. А если с ресетом, то вроде и так запуститься штатный загрузчик?

 

Чего я не понимаю? Или это способ ухода от вочдога? Так регистры то не сбросятся...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...