STM32F103R в прикладном программировании

Санкарб
Сб 12 января 2019 г., 6:46
Привет,

Я пытаюсь реализовать в прикладных программировании с помощью SD -карты. Мое основное приложение работает нормально от адреса 0x08000000, как инициализировано в библиотеке arduino_stm32. Я написал свой код приложения во Flash из адреса 0x08010000. Код написан успешно сделан. После этого мне придется перейти на адрес своего приложения и запустить свое приложение.
Чтобы запустить это приложение, я использую эту функцию:
typedef void (fun)(void); //Define a parameter of a function type. fun AppStart; void Jump2App(uint32_t Addr) { if ((((uint32_t*)Addr) & 0x2FFE0000) == 0x20000000) { AppStart = (fun)((uint32_t)(Addr + 4)); __set_MSP((__io uint32_t)Addr); // nvic_init((uint32_t)0x08010000,0); // nvic_sys_reset(); AppStart(); //Go to APP. } }

Rogerclark
Сб 12 января 2019 г. 8:41
Какое ядро ​​arduino вы используете?

Санкарб
Сб 12 января 2019 г. 9:17
Я использую библиотеку arduino_stm32, которая была опубликована вами на GitHub..
https: // github.com/rogerclarkmelbourne/arduino_stm32

Санкарб
Вт 15 января 2019 г. 15:32
[Rogerclark - Сб 12 января 2019 г. 8:41] - Какое ядро ​​arduino вы используете?
Я использую ядро ​​arduino_stm32.. Пожалуйста, помогите мне получить этот IAP

Стивестронг
Вторник 15 января 2019 г. 8:40 вечера
Как загрузить свой эскиз?
Начальный адрес устанавливается линкером в зависимости от метода загрузки.

Посмотрите на процедуру сброса CMSIS: https: // www.STM32duino.com/viewtopic.pH ... 012#P44928

Санкарб
Ср. 16 января 2019 г., 4:52
[Стивестронг - Вторник 15 января 2019 г. 8:40 вечера] - Как загрузить свой эскиз?
Спасибо за воспроизведение Stevestrong,
Используя эту библиотеку EEPROM, я пишу свой файл BIN приложения в определенном локте, начиная с 0x08010000
https: // github.com/rogerclarkmelbourne/ ... IES/EEPROM

Санкарб
Ср. 16 января 2019 г., 6:45
[Стивестронг - Вторник 15 января 2019 г. 8:40 вечера] - Начальный адрес устанавливается линкером в зависимости от метода загрузки.

Посмотрите на процедуру сброса CMSIS: https: // www.STM32duino.com/viewtopic.pH ... 012#P44928
Как работает этот стартовый адрес на линкере, работает.?
Я использую метод SD -карты для загрузки файла моего приложения.

После просмотра процедуры сброса CMSIS
static __INLINE void NVIC_SystemReset(void) { SCB->AIRCR = (NVIC_AIRCR_VECTKEY | (SCB->AIRCR & (0x700)) | (1<

Стивестронг
Ср 16 января 2019 г. 8:25 утра
http: // wiki.STM32duino.com/index.PHP?тип ... g_a_sketch

Еще раз: как загрузить свой эскиз?

Санкарб
Ср 16 января 2019 г. 9:49
[Стивестронг - Ср 16 января 2019 г. 8:25] - http: // wiki.STM32duino.com/index.PHP?тип ... g_a_sketch

Еще раз: как загрузить свой эскиз?
Использование Arduino IDE через Stlink я использую для загрузки эскиза

Стивестронг
Ср 16 января 2019 г. 10:03
Насколько я понял, вы на самом деле хотите написать «загрузчик», который начинается с 0x800000 (адрес сброса процессора), считывает код с SD -карты и записывает этот код на Flash, начиная с 0x8001000, это правильное?

Это будет работать только в том случае, если программа, загруженная с SD -карты, была связана с помощью правильного начального адреса 0x8001000.
Специальная помощь необходимо использовать для таблицы вектора IRQ.
Посмотрите на загрузчик STM32Duino, в качестве примера, как можно реализовать прыжок к коду пользователя: https: // github.com/rogerclarkmelbourne/ ... являются.C#L201

Санкарб
Ср 16 января 2019 г. 10:07
[Стивестронг - Ср 16 января 2019 г. 10:03] - Насколько я понял, вы на самом деле хотите написать «загрузчик», который начинается с 0x800000 (адрес сброса процессора), считывает код с SD -карты и записывает этот код на Flash, начиная с 0x8001000, это правильное?
Да, ты прав.

Санкарб
Ср 16 января 2019 г. 13:25
[Стивестронг - Ср 16 января 2019 г. 10:03] - Посмотрите на загрузчик STM32Duino, в качестве примера, как можно реализовать прыжок к коду пользователя: https: // github.com/rogerclarkmelbourne/ ... являются.C#L201
После изучения этой функции прыжка загрузчика мне нужно добавить эту функцию в свое существующее ядро ​​arduino_stm32. Это правильно?
Или же написать мой код только с помощью этой библиотеки загрузчика?

Стивестронг
Ср 16 января 2019 г. 14:01
Основной загрузчик загружает код, который будет запрограммирован на вспышку через интерфейс USB (протокол DFU).
Вы можете переписать весь код загрузчика, чтобы взять программу, чтобы прошивать с SD -карты вместо USB -интерфейса.
Или просто приобретите от него части интереса и добавьте их в свой существующий код.
Вы должны выяснить себя, какие части вам нужны.

Ваша основная проблема - настройка Arduino IDE для создания и хранения вашего нового кода (для запрограммирования) на SD -карте.

Mrburnette
Ср 16 января 2019 г. 15:12
[Санкарб - Ср 16 января 2019 г. 10:07] -
[Стивестронг - Ср 16 января 2019 г. 10:03] - Насколько я понял, вы на самом деле хотите написать «загрузчик», который начинается с 0x800000 (адрес сброса процессора), считывает код с SD -карты и записывает этот код на Flash, начиная с 0x8001000, это правильное?
Да, ты прав.
Это «школьный проект», потому что мне трудно понять, как это проблема STM32Duino?
Написание загрузчика для чтения SD, загрузки памяти, а затем загрузить код не простая задача, но это было сделано
До: https: // www.Google.com/search?Q = Read+SD ... загрузчик

Луча

Санкарб
Чт 17 января 2019 г. 5:18 утра
[Стивестронг - Ср 16 января 2019 г. 14:01] - Основной загрузчик загружает код, который будет запрограммирован на вспышку через интерфейс USB (протокол DFU).
Вы можете переписать весь код загрузчика, чтобы взять программу, чтобы прошивать с SD -карты вместо USB -интерфейса.
Или просто приобретите от него части интереса и добавьте их в свой существующий код.
Вы должны выяснить себя, какие части вам нужны.

Ваша основная проблема - настройка Arduino IDE для создания и хранения вашего нового кода (для запрограммирования) на SD -карте.
Спасибо, Стивестронг, я попробую, как вы сказали.

Санкарб
Чт 17 января 2019 г. 5:33 утра
[Mrburnette - Ср 16 января 2019 г. 15:12] - Это «школьный проект», потому что мне трудно понять, как это проблема STM32Duino?
Написание загрузчика для чтения SD, загрузки памяти, а затем загрузить код не простая задача, но это было сделано
До: https: // www.Google.com/search?Q = Read+SD ... загрузчик

Луча
Привет, Mrburnette,
Я собираюсь внедрить FOTA. Через FTP я собираюсь отправить .Файл корзины, который может быть сохранен в SD/External Flash. Затем, используя этот IAP (загрузчик), я собираюсь написать код в Flash Controller.

Каждый раз, когда этот загрузчик должен проверять, что появится новый .Файл корзина доступен или нет. Если доступно, он должен заменить новый код в Flash Controller. Я думаю, ты можешь понять сейчас.
В данной ссылке ни один из Bootloader+SD, сделанный для STM32Duino, я думаю, что их ядро ​​отличается от этого.

Mrburnette
Чт 17 января 2019 г. 5:53 утра
[Санкарб - Чт 17 января 2019 г. 5:33] - ...
Я собираюсь внедрить FOTA. Через FTP я собираюсь отправить .Файл корзины, который может быть сохранен в SD/External Flash. Затем, используя этот IAP (загрузчик), я собираюсь написать код в Flash Controller.

Каждый раз, когда этот загрузчик должен проверять, что появится новый .Файл корзина доступен или нет. Если доступно, он должен заменить новый код в Flash Controller. Я думаю, ты можешь понять сейчас.
В данной ссылке ни один из Bootloader+SD, сделанный для STM32Duino, я думаю, что их ядро ​​отличается от этого.
Я очень редко отвечаю на запрос с конкретной реализацией; скорее мне нравится думать выше реализации и управлять своими нейронами в более абстрактном. В любом случае, ссылки показали несколько векторов атаки.

F (irmware) OTA через FTP бинарного материала - это большая работа, когда группы Wi -Fi IOT уже реализовали OTA для Espressif ESP8266 & ESP32. Но подходите к себе.

Если STM32F103 является жестким требованием, я бы бросил загрузчик и использовал второй UC на стадию BT (или Wi -Fi) непосредственно на STM32 на кремниевом серийном погрузке.

Здесь, в Атланте, 5 долларов получит Raspberry Pi Zero-W, который является полной реализацией Linux и ест синие таблетки на десерт.


Луча

Rogerclark
Чт 17 января 2019 г., 6:57
Я согласен с Рэем

У меня есть несколько плат STM32, которые связаны с малиновым PI, (примечание. Это не платы, которые я разработал, это доски, которые я использую), а дизайн платы соединяет Boot0 и сброс к GPIO на RPI, а также Serial UART1

Обновления прошивки выполняются с использованием внутреннего загрузчика в STM32F103, с помощью RPI Driving Boot Boot High, а затем переключал штифт сброса, перед отправкой прошивки через сериал со скоростью 56 тыс. И это удивительно надежный.

Протокол обновления последовательной прошивки хорошо задокументирован ST, и есть реализации с открытым исходным кодом E.глин. STM32FLASH, который, как я подозреваю, будет легче перенести в ESP8266 или ESP32 и т. Д., Чем создание сложного процесса, который вы описываете FTP для SD, а затем SD для прошивки в STM32

Я бы не использовал ваш метод для этого.

Санкарб
Пт 18 января 2019 г. 11:08
Спасибо, Рэй & Роджер
После просмотра ваших сообщений я хочу изменить свое приложение для обновления прошивки с помощью "2 MCU+USARTX". Не могли бы вы предоставить любой путь, как начать в отношении этого.

Mrburnette
Пт 18 января 2019 г., 8:20 вечера
[Санкарб - Пт 18 января 2019 г. 11:08] - Спасибо, Рэй & Роджер
После просмотра ваших сообщений я хочу изменить свое приложение для обновления прошивки с помощью "2 MCU+USARTX". Не могли бы вы предоставить любой путь, как начать в отношении этого.
Конечно, на этом форуме появилось несколько подходов. Может, этот начнет тебя:
https: // www.STM32duino.com/viewtopic.PHP?t = 3003

Я нашел вышеперечисленное, используя поиск сайта в Google: ESP8266 Загрузить OTA Сайт: STM32DUINO.компонент Луча