Перейти к содержанию

    

Прошивка AVR через STM32F7

Добрый день!

 

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

 

Спасибо!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Учитывая это:

П.С. Естественно все микроконтроллеры имеют необходимый bootloader и все прошивки скомпилированы в бин или хекс.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Учитывая это:

 

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

У меня одна проблема - я не могу учится по учебникам, то ли мозг так заточен, то ли уситчивости не хватает. Я не нашел ни одного примера. Я могу взять чужой пример и переделать его. С нуля не получается, тем более что нужно срочно.

Поэтому спрашиваю это физически возможно?

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

 

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

 

Спасибо.

 

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

 

Спасибо.

 

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

Изменено пользователем AVStech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На практике такое возможно.

На STM я бы рекомендовал разделить память на две секции, или даже три.

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

Вторая - приложение

Третья - какие-то данные, которые лучше хранить на плате а не на внешней памяти.

 

Естественно, загрузчик должен иметь возможность читать/писать карту, проверять версии прошивки основного приложения и (возможно) ведомого контроллера.

Мегу, кстати, очень просто программировать через интерфейс ISP (SPI + Reset в качестве /CS).

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

 

Можете посмотреть в документации на любой AVR* как происходит последовательное программирование. Ничего сложного там нет.

А вот с загрузчиком - как раз будут сложности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему же невозможно?

Делал такое как на AVR - шил из одной меги другую, причем прошивка была частью прошивки ведущего устройства (мега128 и мега32, так что памяти хватало).

Делал подобное и примерно так, как Вы описали в варианте 1 - LPC4088 читал с карточки прошивки и шил через CAN ведомые STM32Fxxx.

Что конкретно Вас интересует?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация