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

Кто любит RISC в жизни, заходим, не стесняемся.
Alex-Elektron
Встал на лапы
Сообщения: 113
Зарегистрирован: Сб янв 11, 2014 21:25:55

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

Сообщение Alex-Elektron »

В дереве проекта слева внизу. Пока не закомментите - счастья не будет. Изображение

Добавлено after 2 minutes 20 seconds:
VladislavS ,
Вы же его до загрузки лоадером всё равно будете отлаживать.
- и чё? А картинка 5 я для кого рисовал?
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

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

Сообщение VladislavS »

А причём тут картинка 5? Ну вот скомпилировал ты приложение с адреса 0x1ABCDEF0, загрузил/прошил его для отладки по этому адресу и?
Alex-Elektron
Встал на лапы
Сообщения: 113
Зарегистрирован: Сб янв 11, 2014 21:25:55

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

Сообщение Alex-Elektron »

И стартуешь Debug. Если загрузчик залит, он кидает на стартовый адрес основной проги и всё прекрасно отлаживается. Забыл сказать, что в данный момент именно так и поступаю. Главное, загрузчик не затереть при заливке из кейла, а чтобы этого не произошло - картинка 5.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

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

Сообщение VladislavS »

Ну вот, а можно без всяких загрузчиков просто запустить приложение и оно само под себя всё настроит.

PS: Точно по той же причине не стоит рассчитывать на начальное состояние всех регистров при инициализации периферии - мало ли кто и как тебя запустил и что делал до этого.
Alex-Elektron
Встал на лапы
Сообщения: 113
Зарегистрирован: Сб янв 11, 2014 21:25:55

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

Сообщение Alex-Elektron »

Точно по той же причине не стоит рассчитывать на начальное состояние всех регистров при инициализации периферии - мало ли кто и как тебя запустил и что делал до этого.
Чёт не припомню из практики, не из своей, не из практики коллег, чтобы хоть в одном STMовском МК при старте был хоть один регистр не по дефолту. Всё, как доктор в ДШ прописал. У них есть свои баги, но они связаны не с этим и давно все ворэраунды описаны в ерате. Так что не сочиняйте сказки. Тем более, что они не по теме.

Добавлено after 2 minutes 22 seconds:
ТС, давайте добивать Вашу проблему. Нашли system_stm32f10x.h?
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

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

Сообщение VladislavS »

[uquote="Alex-Elektron",url="/forum/viewtopic.php?p=3494131#p3494131"]Так что не сочиняйте сказки. Тем более, что они не по теме.[/uquote]Как раз таки по теме! Ваш загрузчик вернул все регистры которые изменил в процессе работы?
Alex-Elektron
Встал на лапы
Сообщения: 113
Зарегистрирован: Сб янв 11, 2014 21:25:55

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

Сообщение Alex-Elektron »

Мой загрузчик не затрагивает никакие регистры, если не нажато сочетание кнопок, кроме тех, которые используются для этих кнопок. Да, эти входы у меня настроены в загрузчике и их настроику я не сбрасываю перед джампом намеренно, ибо я их продолжаю юзать в основной программе, так что никаких проблем не возникает. А если речь идёт о разработке серьёзного софта в нормальном КБ, где один человек или группа отвечают за написание загрузчика, другая группа отвечает за основной софт и, по вашему мнению, эти группы между собой никак не общаются и первая группа пишет всякий мусор в регистры, не сбрасывая их перед джампом в основную программу - это опять же ваши домыслы. Существует на этот случай ТЗ, где согласуются обе части: загрузчик и основная программа и в большинстве случаев просто НЕНУЖНО сбрасывать некоторые регистры. Причём, это ТЗ читают обе группы разработчиков.
settz0r
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт окт 23, 2018 09:10:53

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

Сообщение settz0r »

[uquote="Alex-Elektron",url="/forum/viewtopic.php?p=3494131#p3494131"]
Точно по той же причине не стоит рассчитывать на начальное состояние всех регистров при инициализации периферии - мало ли кто и как тебя запустил и что делал до этого.
Чёт не припомню из практики, не из своей, не из практики коллег, чтобы хоть в одном STMовском МК при старте был хоть один регистр не по дефолту. Всё, как доктор в ДШ прописал. У них есть свои баги, но они связаны не с этим и давно все ворэраунды описаны в ерате. Так что не сочиняйте сказки. Тем более, что они не по теме.

Добавлено after 2 minutes 22 seconds:
ТС, давайте добивать Вашу проблему. Нашли system_stm32f10x.h?[/uquote]
все нашел, закомментил, ничего не меняется...
Alex-Elektron
Встал на лапы
Сообщения: 113
Зарегистрирован: Сб янв 11, 2014 21:25:55

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

Сообщение Alex-Elektron »

В таком случае, оба проекта в студию...
settz0r
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт окт 23, 2018 09:10:53

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

Сообщение settz0r »

http://rgho.st/8Kw5cvfGx - бутлоадер находится в Uart_lib.c
http://rgho.st/7VnSVNmLW - основной проект.
Alex-Elektron
Встал на лапы
Сообщения: 113
Зарегистрирован: Сб янв 11, 2014 21:25:55

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

Сообщение Alex-Elektron »

Основную прогу ещё не смотрел. Где здесь джамп?

Код: Выделить всё

int main(void)
{
	 uint32_t i;
	//uint8_t CData[8]; 
	
	//System_Clock_Init();
 // System_Timer_Init();
	My_Uart1_Init();
	My_Uart2_Init();
	My_Uart3_Init();

	i = flash_read(0xE000ED08);
	//Send_Uart_N(2,i);
	
	while(1)
	{	
	 Delay_ms(1);		
		
		
	// LedTime=My_ADC1_Read(10);
		
	}
}
settz0r
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт окт 23, 2018 09:10:53

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

Сообщение settz0r »

[uquote="Alex-Elektron",url="/forum/viewtopic.php?p=3494188#p3494188"]Основную прогу ещё не смотрел. Где здесь джамп?

Код: Выделить всё

int main(void)
{
	 uint32_t i;
	//uint8_t CData[8]; 
	
	//System_Clock_Init();
 // System_Timer_Init();
	My_Uart1_Init();
	My_Uart2_Init();
	My_Uart3_Init();

	i = flash_read(0xE000ED08);
	//Send_Uart_N(2,i);
	
	while(1)
	{	
	 Delay_ms(1);		
		
		
	// LedTime=My_ADC1_Read(10);
		
	}
}
[/uquote]

Открой файл Uart_lib.c, там прописан джамп
Alex-Elektron
Встал на лапы
Сообщения: 113
Зарегистрирован: Сб янв 11, 2014 21:25:55

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

Сообщение Alex-Elektron »

И? У тебя нигде нет вызова

Код: Выделить всё

Go_to_App(void);
Добавлено after 1 minute 26 seconds:
Также не вижу условий входа в загрузчик/основную программу

Добавлено after 2 minutes 22 seconds:
Нашёл.

Добавлено after 1 minute 15 seconds:
Функций у тебя наворочено, фиг проследишь. Попробуй для отладки сделать вход в загрузчик/основную программу по кнопке при включении
settz0r
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт окт 23, 2018 09:10:53

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

Сообщение settz0r »

[uquote="Alex-Elektron",url="/forum/viewtopic.php?p=3494194#p3494194"]Функций у тебя наворочено, фиг проследишь. Попробуй для отладки сделать вход в загрузчик/основную программу по кнопке при включении[/uquote]
Кнопка подключена. У меня при включении кнопки, срабатывает вход в прерывание и зажигается диод.
Alex-Elektron
Встал на лапы
Сообщения: 113
Зарегистрирован: Сб янв 11, 2014 21:25:55

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

Сообщение Alex-Elektron »

Код: Выделить всё

 
void USART2_INIT(){
    
	RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_AFIOEN; 	// GPIOA Clock ON. Alter function clock ON
    
    //TX
	GPIOA->CRL	&= ~GPIO_CRL_CNF2; 		// Clear CNF bit 9
	GPIOA->CRL	|=  GPIO_CRL_CNF2_1;	// Set CNF bit 9 to 10 - AFIO Push-Pull
	GPIOA->CRL	|=  GPIO_CRL_MODE2_0;	// Set MODE bit 9 to Mode 01 = 10MHz
    
    GPIOA->BSRR |= GPIO_BSRR_BS2;

	//RX
	GPIOA->CRL	&= ~GPIO_CRL_CNF3;		// Clear CNF bit 9
	GPIOA->CRL	|=  GPIO_CRL_CNF3_0;	// Set CNF bit 9 to 01 = HiZ
	GPIOA->CRL	&= ~GPIO_CRL_MODE3;		// Set MODE bit 9 to Mode 01 = 10MHz
    
    RCC->APB1ENR |= RCC_APB1ENR_USART2EN;		//USART1 Clock ON
    
	USART2->BRR = 0x139;						// Bodrate for 115000 on 36 Mhz
	USART2->CR1 |= USART_CR1_UE | USART_CR1_RE | USART_CR1_RXNEIE | USART_CR1_TE;	// USART1 ON, TX ON, RX ON

	NVIC_EnableIRQ(USART2_IRQn);		// USART2 interrupt enable
}

void USART2_TX(uint8_t data){
    while(!(USART2->SR & USART_SR_TC));
	USART2->DR = data;
	
}

void send_text(char *data){

    while(*data!='\0'){
        USART2_TX(*data);
        data++;
    }
}

int main(){
    GPIO_Init();

    for(uint32_t i=0; i<36000; i++);
    
    if(!(GPIOA->IDR & GPIO_IDR_IDR1)){

        SystemInit();
      
        USART2_INIT();
        
        __enable_irq();
        
        USART2_TX(13);
        send_text("Programming mode. Erease firmware? Y/N");
               
    }
    
    else{
        GoToUserApp();
    }
    
    while(1);

}
Добавлено after 16 minutes 7 seconds:
Необходимо резюме всего вышесказанного:

1) Загружен свой бутлоадер
2) Загружена основная программа
3) МК заходит в бутлоадер и пишет основную прогу в память
4) При перезагрузке МК не переходит на основную прогу

что-то в таком духе. Дамп с флэша МК снимал?
settz0r
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт окт 23, 2018 09:10:53

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

Сообщение settz0r »

Все верно, у меня не получается перейти по адресу зашитой программы. Нет никакой реакции на кнопку: ни прерывания, ни зажигания светодиода.
Дамп не пробовал снимать.
Alex-Elektron
Встал на лапы
Сообщения: 113
Зарегистрирован: Сб янв 11, 2014 21:25:55

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

Сообщение Alex-Elektron »

Дамп в студию. Вечером скеч накидаю, проверишь у себя.
settz0r
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт окт 23, 2018 09:10:53

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

Сообщение settz0r »

Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

Что находится в STM32F103C8 по адресу 0x3FF0?
Флеш начинается с 0x08000000.
Alex-Elektron
Встал на лапы
Сообщения: 113
Зарегистрирован: Сб янв 11, 2014 21:25:55

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

Сообщение Alex-Elektron »

У него начальный адрес основной проги 0x8004000. 16 кб загрузчик занимает
Ответить

Вернуться в «ARM»