В общем, абсолютно, у меня есть коллекция кирпичных микроконтроллеров, каждый так часто становлюсь ленивым и идет другим.
Он очень специфичен для вашего микроконтроллера и семьи. Например, подсчет булавки очень важен, так же сильно, как вы можете получить, для вашего доллара, если ваш микроконтроллер полагается на определенные контакты в цепи (или даже в программном приспособлении), и эти контакты могут быть перепрограммированы программным обеспечением. Например, контакты jtag, которые также могут быть штырьками gpio. И ваш код по какой-то причине использует их как контакты gpio. И дизайн чипа таков, что они не могут использовать интерфейс jtag, когда чип находится в состоянии сброса, тогда вы можете получить кирпичный.
Другой очень простой - это pll или часы в целом. Если/при разработке кода для инициализации системы часов (при условии, что вы решите сделать это, даже если вы используете код поставщика чипов), и у вас есть ошибка, которая переключает чип на часы, которые вы неправильно инициализировали или не существует , это может быть кирпич.
Теперь некоторые чип-проекты, многие, помогут вам по-разному. Семейство AVR в целом есть режим программирования, который происходит, когда чип находится в состоянии сброса или связан с сбросом, так что любой код во флэш-памяти не может повлиять на его функциональность, вы можете иметь плохую конструкцию платы, конечно, но ваш код не может предотвратить это от работы. Другим методом является «привязка» штыря (или штифтов), который предназначен для функции загрузки, устанавливает одностороннюю нормальную загрузку, связывает ее с другой и переходит в альтернативный загрузчик. Это то, что у вас есть на stm32 boot0 и иногда boot1 зависит. это ваш выход из бесплатной карты для этой семьи чипов, если вы закроете свой чип (pll/clock или испортите SWD-штырьки, используя их как gpio), вы «просто» меняете boot0 и загружаетесь во внутренний загрузчик (который AFAIK вы не можете испортить), который, как известно, работает. С помощью этого загрузчика вы можете использовать SWD (теперь чипы не кирпичные) или сам загрузчик (всегда поддерживается серийный, иногда usb или другой). Аналогичная сделка NXP. Atmel ARM имели (имеют) SAM-BA, теперь они действительно поддерживают SWD, вы можете получить код самбы и попытаться заблокировать его во флэш-памяти, но слишком легко разблокировать и удалить мушку, чтобы это было терпят неудачу с их стороны.
Как часть вашего системного дизайна, если у вас нет одного из этих встроенных функций, чтобы сохранить вас от функций черчения (например, boot0 на STM32), тогда я рекомендую вам добавить его. Очень ранний код инициализирует выделенный штырь gpio в качестве ремня в ваше программное обеспечение, если этот штырь gpio потянут в одну сторону, делает обычную загрузку, если вытащил другую, а затем вращался в бесконечном цикле или перешел к другому, чтобы гарантировать, что он не будет ошибочным кодом. Не полная гарантия того, что вы не ошиблись в проекте и не испортите этот код, но он по крайней мере позволяет вам развить ваш загрузчик/проект, а не кирпичный лоток, полный частей/досок, когда вы работаете через периферийные устройства, которые могут его кирпич.
Замечание, позволяющее дымоудалить часть, является еще одним способом ее кирпичной кладки, и это может время от времени происходить.
Множество примеров того, как загрузить STM32, а также различные коды из ST, которые вы также можете использовать в качестве отправной точки. (все из которых имеют различное качество, вы получаете то, за что платите). Их документы хороши, лучше, чем некоторые из конкурентов, не сложно загружать и настраивать их периферийные устройства, иногда проще, чем пытаться использовать консервированную библиотеку. YMMV, вы должны попробовать различные решения.Но если вы новичок в этом, то, скорее всего, удастся вывести из строя, к счастью, у вас есть чип, который вы не можете использовать, пока ваш дизайн платы вырывает булавку boot0. Для прототипа платы для STM32 я предпочитаю иметь кнопку boot0 и кнопку сброса, просто сброс сбрасывает чип и запускает, удерживает boot0 и нажимает reset, и он переходит в загрузчик. оба должны быть правильно подключены с правильным подтягиванием вверх или вниз по мере необходимости для этой задачи. или перемычка работает с привязкой boot0 напрямую высоким или низким, а затем сбрасывает поп, стоит вам больше времени, но работает.
Очень тщательный ответ, спасибо. Я приму свой ответ и буду очень осторожен при разработке. Ура! – jmkjaer