03:35
Спящий баг
У нас железка в трёх версиях, 1, 2 и 3. Каждой версии существует разное число экземпляров.
На все версии у меня один проект прошивки. При помощи условной компилации в нём написано:
#ifdef VERSION_1
//низкоуровневые настройки для 1-й версии
#endif
И так далее. Различий между версиями немного, но они очень важны. Прошивка, скомпилированная для одной версии, не будет работать на другой. Даже не запустится.
Естественно, у меня всё автоматизировано. В компиляторе есть нужное число конфигураций, есть кнопка batch build. Когда я готовлю "релиз", я собираю все версии прошивки одним махом и кладу в целевую папку.
И вот мы стали обновлять ПО у пользователя с самой старой версией железки. А оно не запускается. Не перепрошивали ему железку давно, прошло уже много релизов. Мне пришлось перебрать несколько версий прошивок, прежде чем я нашёл ту, на которой всё перестало работать. Причина была тупая. Я случайно внёс изменения в раздел, который не компилируется, когда идёт сборка для самой новой железки. А тестировали мы всё именно на ней. Когда же идёт компиляция под старую версию, ошибка попадает в прошивку. Ошибку я исправил. (теперь иди, под новой версией железки проверь!)
Это что за кринж такой? Почему мы не тестируем на старой железке перед релизом? Да потому что нет у нас её. Все экземпляры находятся у пользователей. Единственное нормальное решение -- иметь у себя по одному экземпляру каждой версии. И так можно было бы сделать, если бы железки стоили по сто баксов. Но они стоят гораздо дороже. Получается, что выгоднее ловить баги у пользователей, чем держать у себя три (а в перспективе ещё больше) тестовых стенда.
На все версии у меня один проект прошивки. При помощи условной компилации в нём написано:
#ifdef VERSION_1
//низкоуровневые настройки для 1-й версии
#endif
И так далее. Различий между версиями немного, но они очень важны. Прошивка, скомпилированная для одной версии, не будет работать на другой. Даже не запустится.
Естественно, у меня всё автоматизировано. В компиляторе есть нужное число конфигураций, есть кнопка batch build. Когда я готовлю "релиз", я собираю все версии прошивки одним махом и кладу в целевую папку.
И вот мы стали обновлять ПО у пользователя с самой старой версией железки. А оно не запускается. Не перепрошивали ему железку давно, прошло уже много релизов. Мне пришлось перебрать несколько версий прошивок, прежде чем я нашёл ту, на которой всё перестало работать. Причина была тупая. Я случайно внёс изменения в раздел, который не компилируется, когда идёт сборка для самой новой железки. А тестировали мы всё именно на ней. Когда же идёт компиляция под старую версию, ошибка попадает в прошивку. Ошибку я исправил. (теперь иди, под новой версией железки проверь!)
Это что за кринж такой? Почему мы не тестируем на старой железке перед релизом? Да потому что нет у нас её. Все экземпляры находятся у пользователей. Единственное нормальное решение -- иметь у себя по одному экземпляру каждой версии. И так можно было бы сделать, если бы железки стоили по сто баксов. Но они стоят гораздо дороже. Получается, что выгоднее ловить баги у пользователей, чем держать у себя три (а в перспективе ещё больше) тестовых стенда.
08.04.2023 в 09:17
ох уж эти любители решать софтовые проблемы железячным способом ))))
мы не смогли грамотно спроектировать проект, поэтому нам потребуется иметь дополнительное железо для тестирования )))
08.04.2023 в 11:03
08.04.2023 в 11:57
08.04.2023 в 19:10
ну, вообще-то микроконтроллеры именно для этого и придуманы - чтобы решать железячные проблемы софтовым способом
08.04.2023 в 22:10
CD_Eater, юморист.
09.04.2023 в 08:08