AVStech 0 23 мая, 2018 Опубликовано 23 мая, 2018 · Жалоба Добрый день! Возникла необходимость прошивки микроконтроллера 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 и все прошивки скомпилированы в бин или хекс. Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beard42 0 23 мая, 2018 Опубликовано 23 мая, 2018 · Жалоба Учитывая это: П.С. Естественно все микроконтроллеры имеют необходимый bootloader и все прошивки скомпилированы в бин или хекс. какие тогда проблемы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AVStech 0 23 мая, 2018 Опубликовано 23 мая, 2018 (изменено) · Жалоба Учитывая это: какие тогда проблемы? У меня одна проблема - я не могу учится по учебникам, то ли мозг так заточен, то ли уситчивости не хватает. Я не нашел ни одного примера. Я могу взять чужой пример и переделать его. С нуля не получается, тем более что нужно срочно. Поэтому спрашиваю это физически возможно? Если да то прошу помощи - пример как это сделать, включая схему подключения между контроллерами. Ведь голый uart не пойдет нужно с концентратора еще и gpio подводить к ногам boot0 и boot1 ведомых микроконтроллеров (для avr reset) П.С. Если кто-то готов помочь, но нет времени я готов оплатить это время. Но вот только в бюджетах я ограничен. Если кому интересно пишите в личку, может договоримся. Спасибо. П.С. Если кто-то готов помочь, но нет времени я готов оплатить это время. Но вот только в бюджетах я ограничен. Если кому интересно пишите в личку, может договоримся. Спасибо. Тема переехала В эту ветку Изменено 23 мая, 2018 пользователем AVStech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlanDrakes 1 25 мая, 2018 Опубликовано 25 мая, 2018 · Жалоба На практике такое возможно. На STM я бы рекомендовал разделить память на две секции, или даже три. Первая - собтвенно, загрузчик, который должен уметь необходимые интерфейсы - SDIO/WiFi/(добавить_нужное). Вторая - приложение Третья - какие-то данные, которые лучше хранить на плате а не на внешней памяти. Естественно, загрузчик должен иметь возможность читать/писать карту, проверять версии прошивки основного приложения и (возможно) ведомого контроллера. Мегу, кстати, очень просто программировать через интерфейс ISP (SPI + Reset в качестве /CS). Где-то я подобное использовал у себя. Суть в том, что большой контроллер переводит ведомого в режим программирования, сверяет прошивку, если нужно - стирает и загружает новую. После чего отпускает сброс и позволяет тому работать уже самостоятельно. Удобно тем, что интерфейс SPI позволяет передавать и данные и сразу же прошивку (когда нужно). Можете посмотреть в документации на любой AVR* как происходит последовательное программирование. Ничего сложного там нет. А вот с загрузчиком - как раз будут сложности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Polaris 0 4 июля, 2018 Опубликовано 4 июля, 2018 · Жалоба Почему же невозможно? Делал такое как на AVR - шил из одной меги другую, причем прошивка была частью прошивки ведущего устройства (мега128 и мега32, так что памяти хватало). Делал подобное и примерно так, как Вы описали в варианте 1 - LPC4088 читал с карточки прошивки и шил через CAN ведомые STM32Fxxx. Что конкретно Вас интересует? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться