Санкарб
Сб 12 января 2019 г., 6:46
Привет,
Я пытаюсь реализовать в прикладных программировании с помощью SD -карты. Мое основное приложение работает нормально от адреса 0x08000000, как инициализировано в библиотеке arduino_stm32. Я написал свой код приложения во Flash из адреса 0x08010000. Код написан успешно сделан. После этого мне придется перейти на адрес своего приложения и запустить свое приложение.
Чтобы запустить это приложение, я использую эту функцию:
Я пытаюсь реализовать в прикладных программировании с помощью 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
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
Начальный адрес устанавливается линкером в зависимости от метода загрузки.
Посмотрите на процедуру сброса 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 утра
Санкарб
Ср 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
Это будет работать только в том случае, если программа, загруженная с 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 -карте.
Вы можете переписать весь код загрузчика, чтобы взять программу, чтобы прошивать с SD -карты вместо USB -интерфейса.
Или просто приобретите от него части интереса и добавьте их в свой существующий код.
Вы должны выяснить себя, какие части вам нужны.
Ваша основная проблема - настройка Arduino IDE для создания и хранения вашего нового кода (для запрограммирования) на SD -карте.
Mrburnette
Ср 16 января 2019 г. 15:12
[Санкарб - Ср 16 января 2019 г. 10:07] -Это «школьный проект», потому что мне трудно понять, как это проблема STM32Duino?[Стивестронг - Ср 16 января 2019 г. 10:03] - Насколько я понял, вы на самом деле хотите написать «загрузчик», который начинается с 0x800000 (адрес сброса процессора), считывает код с SD -карты и записывает этот код на Flash, начиная с 0x8001000, это правильное?Да, ты прав.
Написание загрузчика для чтения 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?Привет, Mrburnette,
Написание загрузчика для чтения SD, загрузки памяти, а затем загрузить код не простая задача, но это было сделано
До: https: // www.Google.com/search?Q = Read+SD ... загрузчик
Луча
Я собираюсь внедрить 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
Я бы не использовал ваш метод для этого.
У меня есть несколько плат 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". Не могли бы вы предоставить любой путь, как начать в отношении этого.
После просмотра ваших сообщений я хочу изменить свое приложение для обновления прошивки с помощью "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.компонент Луча