2016-11-01 16 views
1

Мой вопрос: если мне удастся создать какой-то загрузчик и запустить его (это называется, когда вы кладете загрузчик на MCU?), И он работает ужасно, может ли он полностью скомпоновать MCU, что делает его полностью непригодным для использования , постоянно?Может ли плохой загрузчик кирпича микроконтроллером?

Причина, по которой я спрашиваю, заключается в том, что мне поручено разработать загрузчик для STM32F407. Проблема в том, что я ничего не знаю о загрузчиках или что-то в этом роде, а это значит, что мне есть чему поучиться. Я ценю любые ответы, спасибо!

ответ

1

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

Он очень специфичен для вашего микроконтроллера и семьи. Например, подсчет булавки очень важен, так же сильно, как вы можете получить, для вашего доллара, если ваш микроконтроллер полагается на определенные контакты в цепи (или даже в программном приспособлении), и эти контакты могут быть перепрограммированы программным обеспечением. Например, контакты 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 напрямую высоким или низким, а затем сбрасывает поп, стоит вам больше времени, но работает.

+0

Очень тщательный ответ, спасибо. Я приму свой ответ и буду очень осторожен при разработке. Ура! – jmkjaer

3

Короче говоря, вы не можете скомпилировать микроконтроллер с помощью загрузчика. В конце концов загрузчик просто прошивки и может быть удалено прочь с помощью программатора через SWD Erase вспышки и ваш контроллер как новенький

+0

Да, правильный ответ! ... И у AFAIK у некоторых STM есть встроенный загрузчик (встроенный в область ПЗУ), так зачем писать другой? –

+1

@groenhen Вам нужен пользовательский загрузчик для любого ICP, который не является интерфейсом по умолчанию, использующим протокол STM, например. если ваша прошивка поставляется зашифрованной или через какой-либо интерфейс WiFi. – JimmyB

+0

@JimmyB: да согласен, но пользовательский загрузчик - это еще одна история. Но ОП спросил, возможно ли кирпич микропроцессора через загрузчик. Ответ прост: даже если вы играете с настройками/предохранителями и т. Д., Вы все равно можете восстановить контроллер, просто стирая его с помощью программиста. Как только я восстановил AVR (после игры с предохранителями CLK), используя RC-генератор (внешняя схема) и, конечно же, программатор AVR-ISP. –

1

Да, вы можете кирпич контроллер Micro, чтобы не оправился состояние. Я сделал это, и я сделал это в STM32F427.

Bootloader - это все, что нужно для тщательного выбора приоритетов Clocks, Peripharals и Interrupts. если вы это сделаете, вероятность кирпича контроллера меньше. Также проверяйте все, прежде чем выпустить код, поскольку некоторые компании хотят сохранить конфиденциальную информацию для сохранения, чтобы они взорвали линии JTAG, единственный способ программирования - через Bootloader, и если это не идеально, вуаля, вы просто кирпичный контроллер.