реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Прошивка STM32F7 через другой STM32F7 (UART), Прошивка ведомых ведущим.
AVStech
сообщение May 23 2018, 14:58
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 19-01-17
Пользователь №: 95 076



Добрый день! Повторюсь в этой ветке, так как в основном работа с ARM

Возникла необходимость прошивки микроконтроллера STM32F7 другим микроконтроллером STM32F7 подключенный к нему через UART, а также прошивки Atmega328P подключенного по SPI. Необходимость возникла по причине того, что SoM на Allwinere страдает кучей недостатков в том числе отсутствием необходимого количества UART.
Постараюсь описать кратко идею:
Есть несколько микроконтроллеров STM32F7 общающихся между собой по UART и один Atmega328P подключенный к STMке по SPI, из них:

а) 1-й Микроконтроллер STM32F7: Концентратор на базе STM32F7 он собирает данные с разных микроконтроллеров по UART пакует их в пакет и отправляет по Wi-Fi пользователю через модуль ESP-01 или ESP-06 (UART+2xGPIO). Также данный контроллер имеет слот под microSD подключенный по SDIO и FRAM по SPI.

б) 2-е...5-е Микроконтроллеры STM32F7 (4 штуки): собирают различную цифровую и аналоговую информацию, обрабатывают ее и отправляют на концентратор (см. пункт а)), который в свою очередь ее упаковывает и отправляет в сеть.

в) Микроконтроллер Atmega328P: Следит за уровнем заряда батареи, управляет вкл и выкл систем питания, и в теории программирует по i2c две микросхемы BQ25892 (устанавливает настройки).

Как все это должно работать в теории:

1. Вставляем в microSD слот карту памяти с папкой, например, Firmware, и контроллер (концентратор stm32 из пункта а)) просматривает файлы и в случае, если находит в ней прошивку старше загруженной шьется сам и шьет все остальные контроллеры включая Atmega328P. Затем удаляет все исходники из папки Firmware. Все папка пуста.

2. Подключается по wifi к сети интернет, заходит по ссылке в сети интернет смотрит версии прошивки и если есть прошивки старше загруженной качает ее на microSD карту в папку Firmware, перезагружается, и затем как в варианте с microSD шьется сам и шьет все остальные контроллеры включая Atmega328P. Затем удаляет все исходники из папки Firmware. Все папка пуста.

Теперь вопросы - это возможно реализовать на практике?

И "ДА" - Естественно все микроконтроллеры имеют необходимый bootloader и все прошивки скомпилированы в бин или хекс.

У меня одна проблема - я не могу учится по учебникам, то ли мозг так заточен, то ли уситчивости не хватает. Я не нашел ни одного примера. Я могу взять чужой пример и переделать его. С нуля не получается, тем более что нужно быстро.
Поэтому спрашиваю это физически возможно?
Если да то прошу помощи - пример как это сделать, включая схему подключения между контроллерами. Ведь голый uart не пойдет нужно с концентратора еще и gpio подводить к ногам boot0 и boot1 и RST ведомых микроконтроллеров (для avr также)

П.С. Если кто-то готов помочь, но нет времени я готов оплатить это время. Но вот только в бюджетах я ограничен. Если кому интересно пишите в личку, может договоримся.

Спасибо.

Сообщение отредактировал AVStech - May 23 2018, 17:06
Go to the top of the page
 
+Quote Post
zombi
сообщение May 23 2018, 16:44
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата
Прошивка ведомых ведомым.

Может прошивка ведомых ведущим? не?
Go to the top of the page
 
+Quote Post
AVStech
сообщение May 23 2018, 17:07
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 19-01-17
Пользователь №: 95 076



Цитата(zombi @ May 23 2018, 19:44) *
Может прошивка ведомых ведущим? не?


Исчерпывающий ответ на мой вопрос sm.gif

Поправил. Спасибо!
Go to the top of the page
 
+Quote Post
_pv
сообщение May 23 2018, 17:10
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



мелкий 8ми битный МК, за питанием следить и рубить его остальным, кто спать сам нормально не умеет - ещё как-то понять можно, если бы не:
4 штуки stm32f7, да ещё один который просто данные с уартов собирает - вот это уже слишком.
вы что-то явно делаете не так, особенно учитывая уровень остальных вопросов.

а физически сделать конечно можно, даже без boot0/1 и ресета.
читайте AN4657
Go to the top of the page
 
+Quote Post
AVStech
сообщение May 23 2018, 17:19
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 19-01-17
Пользователь №: 95 076



Цитата(_pv @ May 23 2018, 20:10) *
вы что-то явно делаете не так, особенно учитывая уровень остальных вопросов.
а физически сделать конечно можно, даже без boot0/1 и ресета.
читайте AN4657


Ну собственно другого ответа я и не ждал. Судя по вашему ответу вы не особенно то и вчитывались в проблему и вопросы. Мне сейчас не до учебников. Есть что предложить конкретно? Со схемой и кодом? Я даже заплатить готов, если цена и результат устроит обоих.

За AN4657 правда спасибо, если не найду решения почитаю!
Go to the top of the page
 
+Quote Post
mantech
сообщение May 23 2018, 17:40
Сообщение #6


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(AVStech @ May 23 2018, 17:58) *
Необходимость возникла по причине того, что SoM на Allwinere страдает кучей недостатков в том числе отсутствием необходимого количества UART.


Не понятно, какой аллвиннер имеется ввиду, например в А10 уартов аж 8 штук!
Go to the top of the page
 
+Quote Post
Arlleex
сообщение May 23 2018, 17:50
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264



Цитата
Теперь вопросы - это возможно реализовать на практике?

Реализовать можно, соединять микроконтроллеры между собой можно как угодно (желательно меньше уровней иерархии). Мне, например, приходилось писать многоуровневые bootloader-ы, в которых до кучи и интерфейсные связи были разными.

Цитата
У меня одна проблема

Цитата
Я не нашел ни одного примера

Не правда, в интернетах полно примеров загрузчиков.

Цитата
Я могу взять чужой пример и переделать его

Скажем так. Любая задача не имеет универсального подхода к решению. Все равно придется подпиливать для себя. Поэтому, даже если Вы найдете рабочий загрузчик в интернете, или тут кто-нибудь скинет (хотя загрузчик на UART-е пишется за пару часов работы с Reference Manual-ом и компилятором), Вы вряд ли так сходу адаптируете его под свою функциональность и нужды. Я почитал, что Вам требуется и могу сказать, что это делается за полдня, без выкачки по сети Интернет. Над второй частью придется посидеть подольше. Однако криминала не вижу все равно.

P.S. Но браться не буду.

Сообщение отредактировал Arlleex - May 23 2018, 17:51
Go to the top of the page
 
+Quote Post
AVStech
сообщение May 23 2018, 18:17
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 19-01-17
Пользователь №: 95 076



Цитата(mantech @ May 23 2018, 20:40) *
Не понятно, какой аллвиннер имеется ввиду, например в А10 уартов аж 8 штук!

Добрый!
Был взят H2+ но не только в uart-ах была проблема. А в временном лаге между сигналом датчика и отображения данных на экране пользователя, а тауже температурных режимах. И мы не работали с камнем. Мы работали с модулем. А там их было 5 один ушел на дебаг второй на wifi. Соответственно одного не хватало. Сделали mux но это оказалось тупиков. При последующих опытах выяснили что приемлемый лаг получается с использование stm32f7, при условии загрузки до 70%.

Цитата(Arlleex @ May 23 2018, 20:50) *
Реализовать можно, соединять микроконтроллеры между собой можно как угодно (желательно меньше уровней иерархии). Мне, например, приходилось писать многоуровневые bootloader-ы, в которых до кучи и интерфейсные связи были разными.



Не правда, в интернетах полно примеров загрузчиков.


Скажем так. Любая задача не имеет универсального подхода к решению. Все равно придется подпиливать для себя. Поэтому, даже если Вы найдете рабочий загрузчик в интернете, или тут кто-нибудь скинет (хотя загрузчик на UART-е пишется за пару часов работы с Reference Manual-ом и компилятором), Вы вряд ли так сходу адаптируете его под свою функциональность и нужды. Я почитал, что Вам требуется и могу сказать, что это делается за полдня, без выкачки по сети Интернет. Над второй частью придется посидеть подольше. Однако криминала не вижу все равно.

P.S. Но браться не буду.


Как бы так себя правильно спозиционировать, чтобы было понятно мой уровень в программировании и не только.
Скажу так, я не программист. Мой уровень в программировании ноль, а уровень общения с микроконтроллерами понять можно по количеству сообщений на форуме и вообще вопросах которые я задаю.
Я больше инженер-конструктор, технолог, разрабатываю общую концепцию устройств, описываю алгоритмы динамики движения и управления различными машинами в математических формулах. В радиоэлектронике с 2014 года примерно. За 4 года успел освоить только Азы и освоить некоторую компонентную базу. Могу прочитать даташит сделать схему развести плату, спаять и собрать рабочее устройство, отладить его на физическом уровне с асцилографом и анализатором. Максимум могу написать ну очень простенькую программку, руководствуясь разными примерами, в том числе даташитом. Но в данный момент и текущего состояния проекта понимаю, что нужно самому входить в тему, хотя бы на том уровне на котором это необходимо. Уперся в вопрос который задал, потому что для меня это в новинку и подсказать мне не кому.
Go to the top of the page
 
+Quote Post
x893
сообщение May 23 2018, 18:55
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



а посему нельзя использовать собственные загрузчики для 2...5
с 1-го можно управлять только RST на 2..5
точно также можно и AVR прошивать.
И не связываться с BOOT0 и протоколом от ST

То есть проблема явно надуманная. Хотя если книг не читать, то может и сложно будет.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение May 23 2018, 19:04
Сообщение #10


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(AVStech @ May 23 2018, 17:58) *
...Возникла необходимость прошивки...


спрошу аккуратно.
- Это гипотетическая задача или есть такое железо, где это требуется (если можно, для общего развития, обрисуйте в двух словах)?
Ну и классический вопрос
- что произойдёт если допустили ошибку в прошивке прошивальщика при очередном агрэйде кристалла?


(круглый)
Go to the top of the page
 
+Quote Post
AVStech
сообщение May 24 2018, 05:22
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 19-01-17
Пользователь №: 95 076



Цитата(x893 @ May 23 2018, 21:55) *
а почему нельзя использовать собственные загрузчики для 2...5
с 1-го можно управлять только RST на 2..5
точно также можно и AVR прошивать.
И не связываться с BOOT0 и протоколом от ST

То есть проблема явно надуманная. Хотя если книг не читать, то может и сложно будет.


Bootloader'ы будут конечно собственные. Об этом писал в начале. Правильно ли я понимаю, что подключаю только UART между концентратором и ведомым и от концентратора GPIO к RST ведомого?
Судя по всему буду читать книжки...
Спасибо!

Цитата(kolobok0 @ May 23 2018, 22:04) *
спрошу аккуратно.
- Это гипотетическая задача или есть такое железо, где это требуется (если можно, для общего развития, обрисуйте в двух словах)?
Ну и классический вопрос
- что произойдёт если допустили ошибку в прошивке прошивальщика при очередном агрэйде кристалла?


(круглый)


Постараюсь также аккуратно ответить:
- это реальное железо, пока в двух экземплярах. Также один ведомый модуль на STM32F7 сейчас в проработке, вот его даже на бумаге нет. В двух словах пользовательское устройство, где все 4 ведомых и концентратор на RTOS. Для понимания Концентратор выполняет еще некоторые вычисления кроме того, чтобы собирать пакеты и отправлять их в сеть. Более сказать не могу.
- для каждого камня выведен отдельный разъем JTAG, в случае сбоя можно перепрошить через него. Сейчас так и делаем, прошиваем каждый модуль отдельно, что не удобно и не возможно для самостоятельной прошивки (обновления) пользователем. Поэтому продолжая Вашу мысль, сначала планируем отработать прошивку на двух эталонах, только после чего выкладывать обновление в сеть. Но если все же произошел сбой, то пользователю придется отправлять устройство изготовителю. Сейчас вообще любая прошивка возможна только изготовителем.
Go to the top of the page
 
+Quote Post
x893
сообщение May 24 2018, 06:06
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Когда загрузчики свои - вообще не проблема.
UART + RST хватит для обновлений всех подчинённых.
Go to the top of the page
 
+Quote Post
_pv
сообщение May 24 2018, 06:10
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



ресет-то зачем?
Go to the top of the page
 
+Quote Post
AVStech
сообщение May 24 2018, 06:43
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 19-01-17
Пользователь №: 95 076



Цитата(_pv @ May 24 2018, 09:10) *
ресет-то зачем?


Я так понимаю чтобы выполнить основной принцип IAP :
Принцип из документа:
"Когда происходит сброс (reset), счетчик программ настроен на выполнение драйвера IAP. Это должен быть компактный код, который проверяет конкретное условие, например, что комбинация клавиш нажата, или в моем случае сверяет версии прошивки. Когда стартовое условие выполняется, код драйвера IAP либо обновляет пользовательское приложение (прошивку) или запускает её."
Правда в документе AN4657 указано, что прошивка качается на внутреннюю память камня, мне же желательно работа напрямую с карты памяти, так как если он сначала качнет, если вообще места хватит себе на внутренюю флеш прошивку, потом прошьется, потом проверит все ли норм и удалит старую.
В принципе по данному алгоритму можно сделать собственный bootloader, который будет шить собственный камень. Но как это сделать для камня, который далеко от слота карты памяти ведущего, и у которого нет собственного накопителя, кроме флеша, который к тому же почти под завязку заполнен?

Или я опять читаю одно, а понимаю все не верно?

Сообщение отредактировал AVStech - May 24 2018, 06:54
Go to the top of the page
 
+Quote Post
_pv
сообщение May 24 2018, 07:24
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Туда (в свой бутлоадер, а не встроенный) и программно, по команде от уарта попасть можно, без аппаратного ресета.
И скорее во внутреннюю память(ram) складываются килобайтные куски, так уж ymodem устроен который в данном конкретном случае они использовали.
И куски эти потом сразу пишутся во флэш поверх старой прошивки.
Рама меньше чем флэша, всё не сохранишь перед прошивкой флэша.
Можно ещё флэш пополам поделить и при обновлении писать в другую половину и только после успешного завершения и верификации менять флаг, какую половину использовать. Так старая прошивка не испортится при неудачном обновлении.
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2025 - 14:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01515 секунд с 7
ELECTRONIX ©2004-2016