Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Re: STM32F103C8 перенос таблицы прерываний

Пн окт 29, 2018 15:12:42

Что находится в STM32F103C8 по адресу 0x3FF0?
Флеш начинается с 0x08000000.

на 0х08000000 вообще ничего нет.

Re: STM32F103C8 перенос таблицы прерываний

Пн окт 29, 2018 15:16:56

Тогда привет тебе от бутлоадера)

Добавлено after 2 minutes 21 second:
Заливай бутлоадер, и снова делай дамп тогда

Re: STM32F103C8 перенос таблицы прерываний

Пн окт 29, 2018 15:20:57

Тогда привет тебе от бутлоадера)

Добавлено after 2 minutes 21 second:
Заливай бутлоадер, и снова делай дамп тогда

я протупил, в программаторе просто не пишется 0х800, но подразумевается.
Пишется с 0х8004000, все ок
Приложу хекс файл еще http://rgho.st/8NNVJfX5K

Re: STM32F103C8 перенос таблицы прерываний

Пн окт 29, 2018 15:50:34

Написал два скетча, пробуй.

https://yadi.sk/d/R_o1KuuOAoNSaQ
https://yadi.sk/d/fHssRYf43igznw

1. Грузи сперва бутлоадер с вытиранием всего флэша
2. Грузи основную прогу с вытиранием только секторов загрузки (по картинке 5)

3. Подключай к USART-USB PA2 - TX (параметры связи 115к, 8 , 1, нет)

4. При включении МК вылетит сообщение "Hello, this is main programm!" - это значит, что МК прыгнул в основную прогу
5. Замкни PB9 на GND, держи замкнутым и тыцни на ресет, должно вылететь "Programming mode. Erease firmware? Y/N"

Ждём результатов.

P.S. Проверил у себя в железе.

Re: STM32F103C8 перенос таблицы прерываний

Вт окт 30, 2018 07:39:33

Написал два скетча, пробуй.

https://yadi.sk/d/R_o1KuuOAoNSaQ
https://yadi.sk/d/fHssRYf43igznw

1. Грузи сперва бутлоадер с вытиранием всего флэша
2. Грузи основную прогу с вытиранием только секторов загрузки (по картинке 5)

3. Подключай к USART-USB PA2 - TX (параметры связи 115к, 8 , 1, нет)

4. При включении МК вылетит сообщение "Hello, this is main programm!" - это значит, что МК прыгнул в основную прогу
5. Замкни PB9 на GND, держи замкнутым и тыцни на ресет, должно вылететь "Programming mode. Erease firmware? Y/N"

Ждём результатов.

P.S. Проверил у себя в железе.

Вообщем то работает, только сообщение о том что мы в главной программе не вылетает.

Re: STM32F103C8 перенос таблицы прерываний

Вт окт 30, 2018 07:43:32

А что из этого тогда работает?

Добавлено after 2 minutes 3 seconds:
Хочу видеть полный дамп двух последних залитых прошивок с адреса 0x8000000 и схему подключения boot0, boot1.

Re: STM32F103C8 перенос таблицы прерываний

Вт окт 30, 2018 07:43:36

А что из этого тогда работает?

1,2 и 5 пункты. При замыкании PB9 выдает на экран сообщение которые вы написали.

Re: STM32F103C8 перенос таблицы прерываний

Вт окт 30, 2018 07:47:13

Используется плата - самопал или вот это? Но сперва хочу полный дамп, ибо вчера всё проверил - рабочие прошивки.
Изображение

Re: STM32F103C8 перенос таблицы прерываний

Вт окт 30, 2018 07:55:24

http://rgho.st/7rXr4J8XT вот такая плата, МК stm32f103c8, то же самое что вы прислали

Re: STM32F103C8 перенос таблицы прерываний

Вт окт 30, 2018 08:03:43

Можно в моём проекте поменять ещё девайс на stm32f103c8, у меня под cb скомпилен, но это скорее всего не поможет, у них отличия, насколько помню, только в объёме флэша. Надо дампы сравнивать.

Re: STM32F103C8 перенос таблицы прерываний

Вт окт 30, 2018 09:40:50

Можно в моём проекте поменять ещё девайс на stm32f103c8, у меня под cb скомпилен, но это скорее всего не поможет, у них отличия, насколько помню, только в объёме флэша. Надо дампы сравнивать.

Проект который вы скинули работает, проблема была с ST-Link, но понимаете я делал подобный проект сам и переносил его на другой адрес, он работал, но когда я добавлял прерывание, оно не срабатывало при переносе, главная проблема в этом. Вы мне прислали проект, где нет прерывания.

Re: STM32F103C8 перенос таблицы прерываний

Вт окт 30, 2018 14:34:54

Вечером скину с прерыванием, не перенёс этот проект вчера на ЯД.

Добавлено after 1 minute 13 seconds:
А вообще, попробуй добавить прерывание прямо в мой проект)

Например, по тому же приёму байта в прерывании от ЮСАРТ отсылай его назад

Добавлено after 4 hours 47 minutes 5 seconds:
Обновил файлы основной программы по ссылке на Я.Диске, добавил прерывание от ЮСАРТА2 на приём, данные возвращаются корректно => таблица прерываний на месте. Всё работает. Проверяй у себя, потом дальше будем разбираться.

Re: STM32F103C8 перенос таблицы прерываний

Ср окт 31, 2018 08:29:20

Вечером скину с прерыванием, не перенёс этот проект вчера на ЯД.

Добавлено after 1 minute 13 seconds:
А вообще, попробуй добавить прерывание прямо в мой проект)

Например, по тому же приёму байта в прерывании от ЮСАРТ отсылай его назад

Добавлено after 4 hours 47 minutes 5 seconds:
Обновил файлы основной программы по ссылке на Я.Диске, добавил прерывание от ЮСАРТА2 на приём, данные возвращаются корректно => таблица прерываний на месте. Всё работает. Проверяй у себя, потом дальше будем разбираться.

Да все работает.

Re: STM32F103C8 перенос таблицы прерываний

Ср окт 31, 2018 08:31:12

С EXTI разберёшься или нужна помощь?

Re: STM32F103C8 перенос таблицы прерываний

Ср окт 31, 2018 08:35:16

С EXTI разберёшься или нужна помощь?

Пока сам попробую, если что то не получиться, обращусь к вам, спасибо за помощь)

Re: STM32F103C8 перенос таблицы прерываний

Пн окт 28, 2019 20:52:37

Да все работает.
Так в чем же была ошибка, вы поняли в чем разница между тем что вы делали изначально и рабочим вариантом? Просто у меня похожая ситуация, вроде перемусолено все сто раз, все сделал как "те парни из интернета", но прыгнуть из одного проекта в другой не могу....

Два пустых проекта уже создал один светодиодом дрыгает, второй просто вызывает первый, все настроил а вызова нет, прыжок в никуда... Собственно вот оба проекта: https://yadi.sk/d/yNoaSm-SbkeSAA они под Atollic TrueSTUDIO. Шью каждый отдельно они каждый занимает по сектору.

В проекте который должен вызвать другой проект все настройки умолчальные, в майне код:
Код:
#define APPLICATION_ADDRESS    0x08004000
uint32_t app_jump_address;
typedef void(*pFunction)(void);
pFunction Jump_To_Application;
__disable_irq();
app_jump_address = *( uint32_t*) (APPLICATION_ADDRESS + 4);
Jump_To_Application = (pFunction)app_jump_address;
/* Initialize user application's Stack Pointer */
__set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
Jump_To_Application();
У второго настройки изменены, в system_stm32f4xx.c:
#define VECT_TAB_OFFSET 0x4000 /*!< Vector Table base offset field.
This value must be a multiple of 0x200. */


stm32_flash.ld:
/* Specify the memory areas */
MEMORY
{
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 192K
CCMRAM (rw) : ORIGIN = 0x10000000, LENGTH = 64K
FLASH (rx) : ORIGIN = 0x8004000, LENGTH = 2032K
}


Вроде все указал ничего не забыл, а нет, не работает...

Re: STM32F103C8 перенос таблицы прерываний

Вт окт 29, 2019 11:49:56

Решение нашел. Проблема была в том что перед прыжком на новый код прерывания я запрещал, а после не разрешал, ну вот не думал я что код который фактически с нуля инициализирует все переменные и периферию требует этого... Ошибся..



Просто в начале майна добавил разрешение:
/**
* @brief The application entry point.
* @retval int
*/
int main(void)
{
/* USER CODE BEGIN 1 */

__enable_irq();

/* USER CODE END 1 */
Ответить