есть ли у кого рабочий пример бутлоадера? предпочтительно на Си/С++ хочу написать загрузчик из внешней eeprom, куда прошивку предварительно запишет основная прошивка но для примера подойдет любой загрузчик
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2694 Откуда: г. Чайковский
Рейтинг сообщения:0 Медали: 1
Расскажу по памяти как делал. 1. Написал скрипт линкера такой, что вектора остались на месте (я их не нашел как переносить в STM8), а все остальное разместилось в самом конце памяти программ. Все остальное это сам загрузчик. При том , для этой области памяти была включена защита от записи, т.е. от случайной порчи. 2. Основной проект собирался со скриптом линкера по умолчанию.
При запуске МК. Запускался загрузчик, и ждал от UART некой команды, если таковой не было, то передавалось управление основной программе, по адресу записанному в еепром.
Если эта некая команда приходила, то опять же по некому протоколу через UART, то загрузчик начинал обновлять всю программу. Только не правил вектор сброса, а записывал его в еепром.
Что в STM8 прикольно, область флеш не надо стирать страницами, работаешь как с еепром побайтно. Из самых явных недостатков, остается вероятность случайно порчи вектора сброса.
Так как по памяти, мог чего приврать. Но в целом как-то так.
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Но там загрузчик как раз в начале, а основной проект сдвигается В этом варианте так понимаю вектор сброса находится в области загрузчикаи его нельзя испортить при загрузке основной программы? И как защитить кусок флэша от записи?
Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2694 Откуда: г. Чайковский
Рейтинг сообщения:0 Медали: 1
Ссылку влом читать, не до STM8. Я сделал загрузчик в конец, чтобы загрузчик располагался в области памяти программ со включенной защитой от перезаписи. Если включить защиту памяти программ в начале, то как вектора править? Может в других STM8 вектора переносятся, в моем детском STM8S103 этого делать нельзя.
Цитата:
Можно уточнить про загрузчик в хвосте памяти? Как он получает управление, где этот вектор сброса?
Вектор сброса , там же где все остальные вектора, по адресу 0x8000 и каждый вектор занимает 4 байта, Раздел Interrupt mapping ДШ. Вектор представляет собой спец команду INT, применяется только в таблице векторов. Опкод 82xxxxxx где иксы адрес. При рестатре МК, он сразу и выполняется. Я же писал. Загрузчик у меня отдельный проект, со своим скриптом линковщика. А так как под исполняемый код был выделен регион в хвосте памяти, то и вектор сброса автоматически "компилился" на него. Этот проект загрузчика зашивался программатором.
Другой основной проект собирался отдельно от загрузчика. Загручзчик получал бинарник и прошивал им память, но не трогал вектор сброса, а вектор сброса основного проекта запоминал в еепром, чтобы знать куда передавать управление. Но это я повторяюсь.
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Зарегистрирован: Вт июн 10, 2008 09:17:06 Сообщений: 215 Откуда: г. Саратов
Рейтинг сообщения:0
Добрый день. Подскажите чайнику по STM8. Есть кусок кода, изменение значения "AA" в строке ld A, #$AA меняет функционал прошивки. На какой адрес будет ссылаться при значении AA, C2 ?
push A ld A, #$AA ld $983,A callf $19301 ld XL, A ld A, #$20 mul X, A addw X, #$95c1 ldw $986,X pop A retf
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения