smv_70
1

Свой загрузчик в STM32F4

14.11.2013, 05:12. Показов 10067. Ответов 23
Метки нет (Все метки)

здравствуйте
задача организовать удалённую перепрошивку устройств
соединение модемное так что перепрошивка будет сводиться к тому что в свободную область памяти программ надо скачать новый код а потом менять указатель на этот код (я так думаю)
получится 2-е программы в разных областях памяти
с микроконтроллером вроде разобрался а вот загрузчики ещё не писал
подскажите куда копать?
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.11.2013, 05:12
Ответы с готовыми решениями:

USB загрузчик stm32f4. Кто делал?
Хочу сделать возможность прошивки устройства через USB (mass storage). Видел есть программа для...

Свой бутлоадер в stm32f4
Помогите завести собственный бутлоадер. Вот код запуска пользовательского кода: if ((*(volatile...

Свой личный загрузчик
Ребята, подскажите, как сделать свой личный загрузчик на Диске, с помощью программы НЕРО....

Где Yandex.Disk прячет свой загрузчик?
Неделю назад поставил программку-клиент Яндекс диска, до сих пор не могу разобраться откуда он...

23
10218 / 6598 / 495
Регистрация: 28.12.2010
Сообщений: 21,164
Записей в блоге: 1
14.11.2013, 08:08 2
...на электрониксе тема f=35&t=16577
и конечно же на это стоит обратить внимание http://vg.ucoz.ru/publ/program... b/9-1-0-22
0
460 / 309 / 29
Регистрация: 15.08.2011
Сообщений: 968
14.11.2013, 21:00 3
STM32F4 имеет собственный загрузчик.
Но использование USB для загрузки в данном конкретном случае неудобно. Кто будет переключать входы boot и дергать reset? Кнопки, джамперы - это уже не удаленная загрузка.
Однозначно нужен загрузчик по UART. Модемное соединение проще всего преобразовывать в UART, и сигналы RTS, DTR завести на reset и boot0. А boot1 сажается на землю.
0
1924 / 1239 / 124
Регистрация: 04.01.2010
Сообщений: 4,447
14.11.2013, 22:15 4
paskal, все это неуместно, учитывая требования задачи.
Цитата Сообщение от smv_70 Посмотреть сообщение
соединение модемное
smv_70, я делал свои загрузчики для TI-шных кортексов M3, у них есть Stellaris (это библа такая), и у них на ее базе были примеры разных вариантов бутлоадера. По-копайтесь в примерах, должно быть. Для М3 (STM32F1xx) точно есть.
0
460 / 309 / 29
Регистрация: 15.08.2011
Сообщений: 968
15.11.2013, 00:15 5
Цитата Сообщение от Voland_ Посмотреть сообщение
paskal, все это неуместно, учитывая требования задачи.
Почему неуместно? Аргументируйте пожалуйста.
0
1924 / 1239 / 124
Регистрация: 04.01.2010
Сообщений: 4,447
15.11.2013, 08:52 6
paskal, ну первое - это то, что программирование со встроенным загрузчиком предоставляет полный доступ к чипу, что в общем-то не очень хорошо и, самое главное, не исправимо, т.к. нет своего загрузчика. Второе - программатор должен будет уметь правильным образом управлять RTS/DTR, чтобы перегружать контроллер. Штатные этого делать, к сожалению, не будут.
В остальном ваш совет подходит.
0
460 / 309 / 29
Регистрация: 15.08.2011
Сообщений: 968
15.11.2013, 20:22 7
Цитата Сообщение от Voland_ Посмотреть сообщение
ну первое - это то, что программирование со встроенным загрузчиком предоставляет полный доступ к чипу, что в общем-то не очень хорошо и, самое главное, не исправимо, т.к. нет своего загрузчика.
Стоп! С чего вы взяли что в штатном загрузчике это неисправимо?
Штатный загрузчик позволяет поставить защиту на любую область флеша какую мы захотим, а также снять защиту когда захотим. С этим no problem.
Цитата Сообщение от Voland_ Посмотреть сообщение
Второе - программатор должен будет уметь правильным образом управлять RTS/DTR, чтобы перегружать контроллер. Штатные этого делать, к сожалению, не будут.
Какие еще штатные программаторы? FlashLoaderDemo? Это не программатор, а демонстрашка. Скажу так: работать на нем невозможно, нужно садится и писать свой. Тем более что протокол не сложный и хорошо описан и разжеван в документации STM.

А задача у нас была почти такая же как и у ТС:
Имеется комплекс в котором должна быть возможность перепрошивки на полигоне без вскрытия. (заказчик голову отвернет если хоть какой лючок вскроешь). Для этого используем разъем снаружи, который соединен с нашей платой через нуль-модемное соединение. Далее как я описывал раньше, но еще с интересным дополнением. Моя программа работает не только как программатор, но и как терминал после прошивки процессора. Т.е. печатает в окне текст, который идет по UART-у. Соответственно, в программе которую я заливаю в STM, я перенаправляю ввод-вывод в UART. Тогда оператор printf печатает текст в моем терминале.
Только ради этого уже стоит писать свой программатор.
Для наглядности как это выглядит пара скриншотов:



Добавлено через 10 минут
Ну еще добавлю что через переходник USB-COM он также работает
0
1924 / 1239 / 124
Регистрация: 04.01.2010
Сообщений: 4,447
15.11.2013, 21:42 8
Паскаль, все придумано уже до вас ). Не надо подробностей!
Скрытность кода предполагает не только отсутствие доступа к его чтению (опустим "китайские" методы), но и сокрытие заливаемого апдейта, например, одним из известных методов кодирования. То есть то что вы льете, может быть доступно и заказчику и заказчику заказчика, и вообще, всем подряд. И, конечно, скрыть это - не последняя задача, которую может выполнить СВОЙ загрузчик, а не штатный. Во-вторых если вы закрываете опр.области во ФЛЕШ, стирание области должно происходить полностью, чтобы достучаться к закрытым областям. Соответственно, эти области можно только стереть и записать заново, что, в общем случае, не совсем удобно. Соответственно, этим тоже должен заниматься загрузчик.
Я с вами согласен, что, возможно, ТС, не описал всех своих задач, но движется по правильному пути, и пишет таки свой собственный лоадер.
0
460 / 309 / 29
Регистрация: 15.08.2011
Сообщений: 968
15.11.2013, 22:34 9
Цитата Сообщение от Voland_ Посмотреть сообщение
Паскаль, все придумано уже до вас ). Не надо подробностей!
Что, придумано под данную конкретную задачу удаленной загрузки? Ну так дайте ссылку. Мне бы очень пригодилась.

Цитата Сообщение от Voland_ Посмотреть сообщение
Скрытность кода предполагает не только отсутствие доступа к его чтению (опустим "китайские" методы), но и сокрытие заливаемого апдейта, например, одним из известных методов кодирования.
Простите, а нафига? ТС ничего этого не просил.

Цитата Сообщение от Voland_ Посмотреть сообщение
Во-вторых если вы закрываете опр.области во ФЛЕШ, стирание области должно происходить полностью, чтобы достучаться к закрытым областям. Соответственно, эти области можно только стереть и записать заново, что, в общем случае, не совсем удобно.
Что то вы с документацией на STM слабовато знакомы. Заблокированная область памяти не только не может быть записана, но и не стираема также. Считайте что она становится как бы ПЗУ, т.е. ее содержимое нельзя изменить пока не снимешь блокировку.
0
1924 / 1239 / 124
Регистрация: 04.01.2010
Сообщений: 4,447
16.11.2013, 23:06 10
Цитата Сообщение от paskal Посмотреть сообщение
Ну так дайте ссылку. Мне бы очень пригодилась.
Сказал же, что видел. Поищите в гугле - на сайте СТ наталкивался на платные варианты, но где-то в библиотеках у меня есть примеры лоадера на STM32F103, их не проверял. В остальном - я ведь ответил уже - работал с готовыми примерами библы STELLARIS для ТИ. Имея определенное желание можно их переделать и для СТМ, я думаю, что архитектура и ядро кортексов если и не одинаковые, то имеет 99% сходство.
Цитата Сообщение от paskal Посмотреть сообщение
ТС ничего этого не просил.
Согласен, не просил. Просил сделать удаленную загрузку.
Цитата Сообщение от paskal Посмотреть сообщение
с документацией на STM слабовато
- ну, камень в свой огород я припомню, это вы зря так . Хотя, вы и заставили меня полезть в их дебри документов (а именно AN2606 и AN3155
) Вам виднее, конечно, как именно работает бутлоадер, если честно. Скажу только, что из прочитанного материала стало понятно, что настройки сильно зависят и от конкретного чипа, и от версии его бутлоадера. Так что говорить "о незнании", какого-то там конкретного случая по меньшей мере преждевременно.

Добавлено через 7 минут
... В любом случае - при использовании штатного бутлоадера ни программа, ни используемые хранимые во ФЛЕШ параметры не могут быть надежно защищены. Имхо, не солидно.
0
460 / 309 / 29
Регистрация: 15.08.2011
Сообщений: 968
17.11.2013, 17:57 11
Цитата Сообщение от Voland_ Посмотреть сообщение
ну, камень в свой огород я припомню, это вы зря так
Только не забывайте что это вы начали наезжать на мою наработку. Испытанную между прочим в железе.
А то что stellaris и STM якобы на 99% одинаковые вы сильно ошибаетесь. Кортекс это ядро. Система команд, набор регистров, еще кое какие мелочи - контроллер прерываний например. Это одинаково. А вся периферия вообще, и программирование флеш в частности, у разных фирм абсолютно разные. Это вам не MCS-51.
Цитата Сообщение от Voland_ Посмотреть сообщение
... В любом случае - при использовании штатного бутлоадера ни программа, ни используемые хранимые во ФЛЕШ параметры не могут быть надежно защищены. Имхо, не солидно.
Да хоть чем пиши. Хоть бутлодером, хоть джитагом, но штатный бутлодер записан в ПЗУ и его ничем нельзя удалить. Вы хоть десять своих загрузчиков напишете, но все равно вашу программу можно прочитать через штатный загрузчик (если защита не включена).
0
1924 / 1239 / 124
Регистрация: 04.01.2010
Сообщений: 4,447
19.11.2013, 20:16 12
- ...беру таймаут до выяснения, насчет защиты ФЛЕШа на чтение. Сейчас нет возможности проверить бут и его возможности. Но я вернусь к этой теме чуть позже. К сожалению, доки у СТ составлены таким образом, что проще проверить, чем найти текстовое подтверждение.
- Что касается штатного/нештатного лоадера - тут дело ваше, хотите - используйте, вам же не запрещают. Просто куда ни глянь - везде писаны собственные загрузчики.
- А по поводу сравнения ТИ и СТ (могу назвать еще NXP) - я и не сказал, что эти чипы идентичны по периферии. Просто лоадеры и вся обвязка писаны с использованием их штатных SDK, функции вызова которых если и не одинаковы, то очень близкие по написанию и последовательности. Да, они имеют разные функции на уровне SDK. Да, ассемблер будет выглядеть по-разному. Но сишный код будет до боли похожий.
0
1924 / 1239 / 124
Регистрация: 04.01.2010
Сообщений: 4,447
11.12.2013, 14:18 13
Цитата Сообщение от Voland_ Посмотреть сообщение
Но я вернусь к этой теме чуть позже
"Вертаю в зад обещанное"...
Попробовал тут немного:
Условия испытаний - контроллер STM32F103 medium-density, загружается с пом. внутреннего бутлоадера, програмится утилитой STM Flash Loader через UART. После прошивки нажимается опция READ PROTECTION ENABLE и, вуаля. Контроллер работает, но при повторной попытке обратиться через бутлоадер выдается сообщение о возможности только стереть контроллер, но достучаться к его данным на FLASH нельзя.
Так что фразой
Цитата Сообщение от paskal Посмотреть сообщение
Вы хоть десять своих загрузчиков напишете, но все равно вашу программу можно прочитать через штатный загрузчик (если защита не включена).
вы явно погорячились.
0
460 / 309 / 29
Регистрация: 15.08.2011
Сообщений: 968
11.12.2013, 22:02 14
Цитата Сообщение от Voland_ Посмотреть сообщение
Условия испытаний - контроллер STM32F103 medium-density, загружается с пом. внутреннего бутлоадера, програмится утилитой STM Flash Loader через UART. После прошивки нажимается опция READ PROTECTION ENABLE и, вуаля. Контроллер работает, но при повторной попытке обратиться через бутлоадер выдается сообщение о возможности только стереть контроллер, но достучаться к его данным на FLASH нельзя.
А это и есть то о чем я убеждаю вас уже 2 страницы: что штатный загрузчик позволяет полностью защитить флеш. Ну что ж лучше поздно...
Цитата Сообщение от Voland_ Посмотреть сообщение
Так что фразой
Вы хоть десять своих загрузчиков напишете, но все равно вашу программу можно прочитать через штатный загрузчик (если защита не включена)
вы явно погорячились.
Voland, вы смысл фразы не поняли? Было "можно прочитать если защита не включена". А вы что сделали? Включили защиту и убедились что не читается. Тоже мне открытие!
0
152 / 119 / 11
Регистрация: 16.08.2013
Сообщений: 576
11.12.2013, 22:44 15
Я как лицо не заинтересованное, подтверждаю, что написанное вами трактуется двояко и ближе по смыслу к тому как понял Voland.
0
Модератор
Эксперт по электронике
8485 / 6312 / 854
Регистрация: 14.02.2011
Сообщений: 21,878
11.12.2013, 22:53 16
я что то не понял а кто будет активизировать загрузчик необходимый для прошивки?
как при запуске микросхема будет определять ей работать нужно или её прошивать собираются
у STM Flash Loader нужно ножками подергать чтобы она в режим программирования ушла
а дистанционно как это сделать?
Цитата Сообщение от paskal Посмотреть сообщение
Имеется комплекс в котором должна быть возможность перепрошивки на полигоне без вскрытия. (заказчик голову отвернет если хоть какой лючок вскроешь). Для этого используем разъем снаружи, который соединен с нашей платой через нуль-модемное соединение.
небось какая нибудь ножка на разъеме сидела, всунул в разъем ответчик ножка на земле и микросхема понимает что её шить собираются и включает свой загрузчик?
0
1924 / 1239 / 124
Регистрация: 04.01.2010
Сообщений: 4,447
11.12.2013, 23:09 17
ValeryS, отвечу за паскаля - идея была повесить boot0 и ресет на ноги, управляемые по RS232. Тогда да, можно ресетить контроллер и завести его в его штатный бут. Да, гарантированно, да это будет работать.
Кроме того, есть всегда возможность программно "прыгнуть" на адрес встроенного бута, указав нужные параметры.

ЗЫ: я с ним дискутирую на тему, что это неприемлемо с т.з. разработчика. То есть ты напишешь софт, запустишь его в чип, а потом обновления установленных компонентов будут соответствовать фактически отдаче компилированного кода в открытом виде. Ну, и железная оснастка останется как на ладошке - бери и копируй.
Никто так не делает - все пишут свои бутлоадеры с дешифраторами, которые берут внешнюю прошивку и распаковывают ее внутри чипа. При таком подходе "копировальщику" останется только один метод - микрошлиф.

Добавлено через 4 минуты
paskal, вы уже совершенно забыли контекст спора, посему, позволю себе процитировать суть. Итак:
Цитата Сообщение от paskal Посмотреть сообщение
Что то вы с документацией на STM слабовато знакомы. Заблокированная область памяти не только не может быть записана, но и не стираема также. Считайте что она становится как бы ПЗУ, т.е. ее содержимое нельзя изменить пока не снимешь блокировку.
Цитата Сообщение от Voland_ Посмотреть сообщение
... В любом случае - при использовании штатного бутлоадера ни программа, ни используемые хранимые во ФЛЕШ параметры не могут быть надежно защищены. Имхо, не солидно.
Обратите особое внимание на фразу "ни программа, ни используемые параметры во ФЛЕШ". Имеется ввиду, что с пом.удаленного бутлоадера можно их стереть. Да, это вернет чип к жизни. Но и потеряет иногда бесценные данные. Чего можно избежать, использую свой бутлоадер, получив при этом множество дополительных плюшек.
ЗЫ: да и тон, вами использованный, весьма вызывающий.
ЗЫ2: ТС хотел бутлоадер, у вас есть что-то по теме?
0
Модератор
Эксперт по электронике
8485 / 6312 / 854
Регистрация: 14.02.2011
Сообщений: 21,878
11.12.2013, 23:28 18
Цитата Сообщение от Voland_ Посмотреть сообщение
ValeryS, отвечу за паскаля - идея была повесить boot0 и ресет на ноги, управляемые по RS232.
т.е будет еще одна мелкосхема, чтобы главную прошивать?
тогда почему не реализовать свой джитаг?
и зачем в главной микросхеме свой загрузчик?
0
152 / 119 / 11
Регистрация: 16.08.2013
Сообщений: 576
11.12.2013, 23:54 19
Все для того чтобы защитить прошивку от копирования при обновления ПО мк. Штатный загрузчик льет так как есть, а свой загрузчик льет зашифрованную прошивку, тем более шифрованную своим, нераспространенным методом.
0
Модератор
Эксперт по электронике
8485 / 6312 / 854
Регистрация: 14.02.2011
Сообщений: 21,878
12.12.2013, 00:06 20
Цитата Сообщение от korsaj Посмотреть сообщение
Все для того чтобы защитить прошивку от копирования при обновления ПО мк.
ага и при этом
Цитата Сообщение от paskal Посмотреть сообщение
Модемное соединение
которое любой может перехватить
Цитата Сообщение от korsaj Посмотреть сообщение
тем более шифрованную своим, нераспространенным методом.
кому надо вскроют
принцип "черного ящика" еще никто не отменял
если известна реакция мелкосхемы на входной сигнал то можно и свою прогу накатать
я их вон уже сколько накатал
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.12.2013, 00:06

Помощь в написании контрольных, курсовых и дипломных работ здесь.

WebBrowser или TChromium, свой загрузчик файлов
Можно ли в webbrowser сделать так чтобы вместо загрузки файла не открывался стандартный загрузчик...

Как посадить свой домен на свой сайт, который на домашнем компе?
У меня статический ip. на картинке видно что сейчас в настройках, в качестве записи A указал...

Свой компонент от ListBox. Не могу задать свой тип для Items
День добрый господа. Нуждаюсь в вашей помощи. Суть такова, что я желаю создать свой компонент на...

Как установить свой текст подсказки при наведении на свой контрол?
Как установить свой текст подсказки при наведении на свой контрол?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.