Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.51/49: Рейтинг темы: голосов - 49, средняя оценка - 4.51
0 / 0 / 0
Регистрация: 07.04.2010
Сообщений: 880
1

Можно ли прошивку от STM32F103 залить в F100, F102?

16.09.2011, 21:41. Просмотров 9662. Ответов 20
Метки нет (Все метки)

Паз уж в контроллерах ST Microitistronics всё такое стандартизированное и одинаковое (вплоть до распиновки), возник вопрос, будет ли одна и та же прошивка работать в разных контроллерах? Дефайн STM32F10X_MD_VL кроме как на доступность различной периферии вроде ни на что и не влияет?

Объясню, зачем это надо: планирую сделать 2 версии девайса - одну бюджетную на F100, другую точно такую же но на F103 с распаянным USB для обновления прошивки. А прошивку хочется иметь одну и ту же.

Чтобы прошивка знала, "в каком контроллере она сидит", я сделаю перемычку, которую буду впаивать для F100 и не впаивать для F103. При старте прошивка узнает по наличию перемычки о том, что это за контроллер и соответственно будет или не будет инициализировать USB.

Сработает, как думаете?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.09.2011, 21:41
Ответы с готовыми решениями:

Скомпилировать и залить прошивку в PIC
подскажите пожалуйста, я заказазывал программу прошивки, человек мне ее передал и пропал, а я не...

Samsung 3400 f - не могу залить прошивку
Всем доброго времени суток! Ув. спецы помогите пожалуйста реанимировать не могу залить прошивку,...

Залить прошивку под виндой (РЕШЕНО)
Собсно, не имею понятия, что сейчас можно использовать для заливки .ELF в MSP430FR5739 через...

Не получается в роутер Тенда F3 залить английскую прошивку
Купил роутер на таобао пришел рабочий, но с китайской прошивкой. Текущая версия 11.11.01.13. Сам...

20
0 / 0 / 0
Регистрация: 10.08.2010
Сообщений: 1,264
16.09.2011, 21:56 2
Скорей всего нет. Еще ведь хеадеры существуют. Также частоты разные. Стартупы сильно отличаются.
0
0 / 0 / 0
Регистрация: 11.06.2011
Сообщений: 322
16.09.2011, 22:02 3
..... разве что сделать участки с условной компиляцией - потроха то у 103 пожирнее и инициализации соответственно больше.
0
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 44
16.09.2011, 22:17 4
Там два разных дефайна. Для 103- MD, для 100-MD_VL. Работать может и будет, если будет использоваться периферия, которая есть в обоих контроллерах. Лучше две проги написать, там всего то и надо будет названия векторов прерываний подправить, да ЮСБ выпилить. :)
0
0 / 0 / 0
Регистрация: 07.04.2010
Сообщений: 880
17.09.2011, 00:15 5
Ну в том и дело то что не хочется сразу 2 проекта держать, пусть даже с одинаковыми кодами. Поэтому и хочу некоторую универсальность сделать.

Частоты почему разные? Пусть 24 МГц везде будет. Разве что... я только что вспомнил, что USB только при 48 МГц работает. Засада.
0
0 / 0 / 0
Регистрация: 07.10.2010
Сообщений: 135
17.09.2011, 00:41 6
Есть у меня смутное подозрение, что по "Unique divice ID rikystir" можно определить семейство эстешек.
Соответственно можно его читать, определять в какой проц прошивку залили и в соответствии с этим делать нужную инициализацию.
Но шибко задротский этот способ получается =)

А можно по-человечески задать какой-то дефайн, и через препроцессор собирать нужные куски кода в зависимости от того, какое значение имеет параметр.
0
0 / 0 / 0
Регистрация: 07.04.2010
Сообщений: 880
17.09.2011, 01:01 7
Задача - чтоб прошивка была ОДНА.

Так-то да, можно в одном проекте через дефайны всё сделать, написать Makefile для сборки сразу двух версий прошивок. Но всё же хочется иметь ОДНУ прошивку на выходе, подходящую к обеим аппаратным версиям устройства.
0
0 / 0 / 0
Регистрация: 10.08.2010
Сообщений: 1,264
17.09.2011, 01:42 8
А как ты будешь прерывания инициализировать? Их же там разное количество.
0
0 / 0 / 0
Регистрация: 07.04.2010
Сообщений: 880
17.09.2011, 01:58 9
Внутри самой прошивки будет стоять проверка, "в каком контроллере она сидит". Будет это определяться либо аппаратными средствами (перемычка между какими-нибудь пинами), либо как сказал ptumbum можно поискать программные средства, например по unique ID. Далее прошивка сама уже будет инициализировать всё что нужно в соответствии с контроллером, в котором она находится.
0
0 / 0 / 0
Регистрация: 10.08.2010
Сообщений: 1,264
17.09.2011, 02:04 10
Твоя прошивка за надобностью сможет написать обработчики прерывания?? В любом случае они должны быть объявлены стартапе. Или он тоже будет динамически меняться??
0
0 / 0 / 0
Регистрация: 07.04.2010
Сообщений: 880
17.09.2011, 02:33 11
Цитата Сообщение от o9d
Твоя прошивка за надобностью сможет написать обработчики прерывания?? В любом случае они должны быть объявлены стартапе. Или он тоже будет динамически меняться??
Обработчики будут написаны для всей периферии, в т.ч. для той, которая отсутствует в контроллере младшей линейки. При несконфигурированном NVIC обработчик несуществующей периферии не будет вызываться, а то, что ссылка на этот обработчик будет висеть в таблице прерываний - ничего страшного, прерывание никогда не возникнет, главное, чтоб таблица векторов прерываний совпадала для всего семейства STM32F. Это я уточню.
0
0 / 0 / 0
Регистрация: 10.08.2010
Сообщений: 1,264
17.09.2011, 02:47 12
Зайди на сайт stm. У них нет F100 и F103 совпадающих одновременно по размеру оперативки и флешу. А значит два разных конфига для линкера.
0
0 / 0 / 0
Регистрация: 07.10.2010
Сообщений: 135
17.09.2011, 03:15 13
o9d, никто не мешает написать линк-скрипт, с учётом меньшего объёма памяти. Или даже не использовать при линковке всю память. А уже в ходе выполнения выяснять реальный объём памяти, и использовать его скажем под кучу.
0
0 / 0 / 0
Регистрация: 27.05.2010
Сообщений: 95
17.09.2011, 10:34 14
ptumbum, o9d тебе говорит, что таблица векторов прерываний у них разная, а она жестко прописывается во флеше. Хотя можно извратиться с NVIC_SetVectorTable.
0
0 / 0 / 0
Регистрация: 11.06.2011
Сообщений: 322
17.09.2011, 12:09 15
Цитата Сообщение от OTPINE
Задача - чтоб прошивка была ОДНА.
... так в чем проблема?
Код
#ifdef STM32F103
... код для STM32F103
#elif defined(STM32F100)
... код для STM32F100
#endif
... общий код
Цитата Сообщение от ptumbum
...можно по-человечески задать какой-то дефайн, и через препроцессор собирать нужные куски кода в зависимости от того, какое значение имеет параметр.
... или я чего то недопонимаю?
0
0 / 0 / 0
Регистрация: 07.10.2010
Сообщений: 135
17.09.2011, 13:29 16
otxmt, так ведь в самомо ядре Sortix-M3 есть регистр, позволяющий таблицу векторов мапить куда угодно.
0
0 / 0 / 0
Регистрация: 07.10.2010
Сообщений: 135
17.09.2011, 17:34 17
ShypKyttir, не. Чел хочет что бы был один бинарник на все процы.
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 1,116
17.09.2011, 21:48 18
Тогда надо что-то вроде пиколинкуса.
0
0 / 0 / 0
Регистрация: 01.04.2011
Сообщений: 177
18.09.2011, 11:38 19
Если озаботиться тем что бы вектора прерываний и основной код были в разных секторах флеши то один бинарь на разные контроллеры реален, но только для обновления. Сначало шьете в контроллеры полные прошивки. А при обновлении заменяете сектора с основным кодом, оставляя не тронутой таблицу прерываний. Еще можно собрать 2 бинаря и упаковать их в софт для обновления. Для секъюрности можно и зашифровать. При обновлении софтина нащупывает контроллер, получает инфу о версии и выбирает чего лить.
0
0 / 0 / 0
Регистрация: 18.04.2010
Сообщений: 600
18.09.2011, 13:13 20
Цитата Сообщение от _kuordyomomkit
Если озаботиться тем что бы вектора прерываний и основной код были в разных секторах флеши то один бинарь на разные контроллеры реален, но только для обновления. Сначало шьете в контроллеры полные прошивки. А при обновлении заменяете сектора с основным кодом, оставляя не тронутой таблицу прерываний. Еще можно собрать 2 бинаря и упаковать их в софт для обновления. Для секъюрности можно и зашифровать. При обновлении софтина нащупывает контроллер, получает инфу о версии и выбирает чего лить.
имхо это оптимальный вариант. Есть 2 бинарника прошивки, каждый всяко не больше 500кб, шифруем их, сляпываем в один файл + немного служебной информации, типа длина 1го файла, длина 2го файла, версия и т.д., и пишем софтину, которая определяет камень (или пользователь указыавет), и вынимает из большого зашифрованного файла нужный файл прошивки. 2 файла прошивки для разных контроллеров элементарно получаются из одного исходника с использованием условной компиляции
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.09.2011, 13:13

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как залить прошивку в ADSP процессор фирмы Analog Devices
Приветствую, Столкнулся со следующей проблемой. Есть одно устройство. В нем есть микросхема...


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

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

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