turnon 1 19 апреля, 2023 Опубликовано 19 апреля, 2023 · Жалоба 9 hours ago, Arlleex said: Так вот в этом и проблема. Как заставить программиста стараться повышать уровень критического взгляда на свой код? В первую очередь именно программист определяет левел возможных багов. Будет ли там ворох детских болячек начинающего Си-кодера, либо что-то совершенно другое. Это только с опытом приходит. Ну или жесткий контроль наставника. В таком случае нужно быть готовым уволить первых 3-4. 1 minute ago, jcxz said: Элементарно: Держать его в 2-х копиях. А кто будет выбирать, какой стартовать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 19 апреля, 2023 Опубликовано 19 апреля, 2023 · Жалоба 1 час назад, turnon сказал: А кто будет выбирать, какой стартовать? pre-boot. Микроскопический, простейший как амёба. 3 часа назад, EdgeAligned сказал: "чрезвычайно хороший программист" накосяпорил с загрузчиком "Чрезвычайно хороший" напишет безопасно обновляемый загрузчик. Если программист не додумался до такого, то он явно не "чрезвычайно хорош". 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 86 19 апреля, 2023 Опубликовано 19 апреля, 2023 (изменено) · Жалоба Да, некоторые STM32 имеют двухбанковую организацию флеши, как раз для аздачи безопасного обновления прошивки. STM322F429VG, который у топикстартера, как раз имеет вариант конфигурирования флеши под два банка. Но желательно было выбрать версию VI с большим (2 МБ) размером флеши, чтобы двухбанковая организация была уже по-дефолту. Работа с двухбанковой флешей описана в документах ST (забыл, какой номер дока) 12 часов назад, Arlleex сказал: Да и при должном желании можно написать и загрузчик так, чтобы его можно было обновлять, и обновлять безопасно. А кто будет писать неглючный загрузчик загрузчика? 🙂 Там же вот в чем фишка то. При установке уровня защиты Level 2 отключаются все системные загрузчики СТМ-ки, и единственный способ обновления - софтовый загрузчик во флеше, в защищенной от перезаписи области. Если же установлен Level 1, тогда можно загрузиться с системного (нестираемого) загрузчика или через отладочный интерфейс, но в этом режиме невозможно ни стереть, ни записать флеш. Только понижение Level 1 до Level 0 вызовет массовое стирание флеша, и как результат, получится чистый МК, на который теперь уже нужно будет залить полную прошивку, вместе с загрузчиком и самой рабочей программой. Но выполнение этих действий для неподготовленного пользователя уже может быть труднореализуемым. К тому же, пользователю придется давать всю прошивку в целом, что не шибко то безопасно с точки зрения копирования устройства. Изменено 19 апреля, 2023 пользователем EdgeAligned Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
turnon 1 19 апреля, 2023 Опубликовано 19 апреля, 2023 · Жалоба 1 hour ago, jcxz said: pre-boot. Микроскопический, простейший как амёба. Ясно. А как он выбирает, какой загрузчик стартовать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 19 апреля, 2023 Опубликовано 19 апреля, 2023 · Жалоба 1 минуту назад, turnon сказал: Ясно. А как он выбирает, какой загрузчик стартовать? Перед каждой копией есть табличка, в которой прописаны: Флаг валидности копии, её CRC (для контроля валидности копии) и порядковый номер. pre-boot смотрит в табличку, проверяет CRC и выбирает ту копию, у которой CRC правильная. Если правильная у двух копий - выбирает ту, у которой порядкой номер больше. Копирует выбранную в ОЗУ и запускает. При обновлении загрузчика: флаг валидности снимается, пишется образ загрузчика, пишется новая табличка с новой CRC, сброшенным флагом валидности и следующим по порядку порядковым номером. После полной записи образа загрузчика, ей ставится флаг валидности. Всё. 1 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 189 19 апреля, 2023 Опубликовано 19 апреля, 2023 · Жалоба 1 час назад, EdgeAligned сказал: Да, некоторые STM32 имеют двухбанковую организацию флеши... На одном банке тоже можно сделать все безопасно Это не играет принципиальной роли кроме удобства программирования. Цитата А кто будет писать неглючный загрузчик загрузчика? Нет, там один обновляет другого, затем (либо каким-то ручным способом, либо автоматическим) новый становится главным активным. Теперь он сможет перешить соседа. Можно предусмотреть функционал отката номера активного загрузчика обратно. В любом случае, перед прошивкой на серии функционал нового загрузчика проверяется на столе, как минимум. Понятное дело, что зашив пургу, можно оказаться без одного загрузчика. Но зато второй останется ровно в том функционале, в котором он был точно работоспособен (ведь как-то забагованный он умудрился прошить? Вот и отошьет его исправленной через 5 минут версией). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 86 19 апреля, 2023 Опубликовано 19 апреля, 2023 · Жалоба Да хоть сколько ставь "соседей", которые будут обновлять друг друга, но если сам загрузчик написан косячно, то результат будет траги-комичным, как у топикстартера. Я ж уже в который раз повторяю это! Да в принципе то, если один загрузчик написан и проверен, то его и достаточно. Не нужно перезаписывать сам загрузчик! Он ведь не стирается в процессе перезаписи флеша, находясь в защищенном от записи секторе. 31 минуту назад, Arlleex сказал: ведь как-то забагованный он умудрился прошить? А че тут гадать то - подключаемся к микроконтроллеру по отладочному интерфейсу и сбрасываем Level 1 в опциях. При этом автоматически стирается вся флеш (Mass Erase) и получаем чистый микроконтроллер, который можем заново прошить с нуля. Ну а если установлен Level 2? Тогда всё, если софтовый загрузчик сам себя стер, то получили кирпич, больше никак. Причем, даже если у вас есть хоть пять копий этих загрузчиков, все равно похрен - Mass Erase сотрет без следа всё, коль у программиста руки кривые. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Михась 4 21 апреля, 2023 Опубликовано 21 апреля, 2023 · Жалоба Это все нормально, за одного битого двух небитых дают. Еще полезно такие опасные вещи делать на автомате состояний. Точка переключения состояния должна быть в одном месте, с ловушками/проверками условия. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fpga_student 0 2 мая, 2023 Опубликовано 2 мая, 2023 · Жалоба Вопщем походу проблема была в фузах. Убрали разблокировку доступа к фузам и проверку того что лок включен. По результатам проверки процедура должна была установить лок на чтение прошивки, в случае если он отключен. Если включен, больше ничего делать процедура не была должна. Однако по факту мне принесли десяток плат за 2-3 месяца из 50 установленных, где были выставлены фузы db1m и bfb2 (которые я не ставил), и естественно загрузчик переставал быть загрузчиком. Никаких других повреждений больше не видел. Убрали проверку/установку лока, все проблемы исчезли как с быстрым, там и с медленным (с паузами везде) загрузчиками. На стенде сделали 8000 перезапусков платы с быстрым загрузчиком - не случилось ни одного падения. Засим надеюсь эта жуткая история завершена, и чудо-заказчик отправится в зрительный зал) Берегитесь заказов из бьюти, друзья)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 86 2 мая, 2023 Опубликовано 2 мая, 2023 · Жалоба Дааа, мы конечно очень рады, что эта досадная история завершена. Друзья, берегитесь чудо-исполнителей с чрезвычайно хорошими программистами... Не шучу. "Дело было не в бобине, дело было не в реле", а исключительно в недосмотре программиста, ошибочно работавшего с битами опций. Как видно из последнего мессага, он решил проблему методом убирания нерабочего кода, не разбираясь, как же оно на самом деле работает. Что ж, бывают и такие программисты, не возражаю. И метод решения - выпиливание - тоже имеет место быть, когда не в силах понять. Ну бывает так, бывает. Тут я даже не возражаю и не в претензии. Ну бывают такие. "Не стреляйте в программиста, он пишет как умеет"... Ну и конечно же не забывайте тестировать как целиком готовое устройство, так и его отдельные модули и взаимодействие модулей. Вовсе не обязательно 8000 раз перезапускать работу устройства. Достаточно лишь проверить один раз поведение модуля. Ну пусть два раза. Ну хорошо, три раза. 8000 раз - перебор. Потому как убрали ошибочный модуль и он больше не вызывал ошибки. Но вот протестировали ли перепрошивку МК через сд-карту или снова забыли - вопрос к чрезвычайно хорошему программисту, на который навряд ли он может внятно ответить... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 2 мая, 2023 Опубликовано 2 мая, 2023 · Жалоба Берегитесь заказов из бьюти, друзья)) Откель? (((-8Ж Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fpga_student 0 2 мая, 2023 Опубликовано 2 мая, 2023 · Жалоба On 5/2/2023 at 10:09 PM, Obam said: Берегитесь заказов из бьюти, друзья)) Откель? (((-8Ж Beauty. Индустрия красоты. Скоро кому-то сказочно повезет. Берегись пылесоса, разраб) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
turnon 1 5 мая, 2023 Опубликовано 5 мая, 2023 · Жалоба On 5/2/2023 at 10:32 PM, fpga_student said: Beauty. Индустрия красоты. Скоро кому-то сказочно повезет. Берегись пылесоса, разраб) Так а что не так с заказчиками из индустррии красоты? Часто перезагружают устройство? Так это вам в благо, баг помогли найти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться