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

 
 
 
Reply to this topicStart new topic
> Прошивка AVR через STM32F7, Заливка прошивки через сторонний микроконтроллер
AVStech
сообщение May 23 2018, 13:31
Сообщение #1


Участник
*

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



Добрый день!

Возникла необходимость прошивки микроконтроллера Atmega328P другим микроконтроллером STM32F7 подключенный к нему через 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 и все прошивки скомпилированы в бин или хекс.

Спасибо!
Go to the top of the page
 
+Quote Post
beard42
сообщение May 23 2018, 13:45
Сообщение #2


Участник
*

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



Учитывая это:
Цитата(AVStech @ May 23 2018, 15:31) *
П.С. Естественно все микроконтроллеры имеют необходимый bootloader и все прошивки скомпилированы в бин или хекс.

какие тогда проблемы?
Go to the top of the page
 
+Quote Post
AVStech
сообщение May 23 2018, 15:05
Сообщение #3


Участник
*

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



Цитата(beard42 @ May 23 2018, 16:45) *
Учитывая это:

какие тогда проблемы?

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

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

Спасибо.

Цитата(AVStech @ May 23 2018, 17:25) *
П.С. Если кто-то готов помочь, но нет времени я готов оплатить это время. Но вот только в бюджетах я ограничен. Если кому интересно пишите в личку, может договоримся.

Спасибо.


Тема переехала В эту ветку

Сообщение отредактировал AVStech - May 23 2018, 14:27
Go to the top of the page
 
+Quote Post
AlanDrakes
сообщение May 25 2018, 15:54
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 101
Регистрация: 2-05-15
Из: Россия, Омск
Пользователь №: 86 474



На практике такое возможно.
На STM я бы рекомендовал разделить память на две секции, или даже три.
Первая - собтвенно, загрузчик, который должен уметь необходимые интерфейсы - SDIO/WiFi/(добавить_нужное).
Вторая - приложение
Третья - какие-то данные, которые лучше хранить на плате а не на внешней памяти.

Естественно, загрузчик должен иметь возможность читать/писать карту, проверять версии прошивки основного приложения и (возможно) ведомого контроллера.
Мегу, кстати, очень просто программировать через интерфейс ISP (SPI + Reset в качестве /CS).
Где-то я подобное использовал у себя. Суть в том, что большой контроллер переводит ведомого в режим программирования, сверяет прошивку, если нужно - стирает и загружает новую. После чего отпускает сброс и позволяет тому работать уже самостоятельно. Удобно тем, что интерфейс SPI позволяет передавать и данные и сразу же прошивку (когда нужно).

Можете посмотреть в документации на любой AVR* как происходит последовательное программирование. Ничего сложного там нет.
А вот с загрузчиком - как раз будут сложности.
Go to the top of the page
 
+Quote Post
Polaris
сообщение Jul 4 2018, 11:48
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964



Почему же невозможно?
Делал такое как на AVR - шил из одной меги другую, причем прошивка была частью прошивки ведущего устройства (мега128 и мега32, так что памяти хватало).
Делал подобное и примерно так, как Вы описали в варианте 1 - LPC4088 читал с карточки прошивки и шил через CAN ведомые STM32Fxxx.
Что конкретно Вас интересует?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th April 2024 - 04:27
Рейтинг@Mail.ru


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