Например TDA7294

Форум РадиоКот :: Просмотр темы - STM32F103C8 перенос таблицы прерываний
Форум РадиоКот
http://radiokot.ru/forum/

STM32F103C8 перенос таблицы прерываний
http://radiokot.ru/forum/viewtopic.php?f=59&t=158272
Страница 2 из 3

Автор:  Alex-Elektron [ Пн окт 29, 2018 10:23:50 ]
Заголовок сообщения:  Re: STM32F103C8 перенос таблицы прерываний

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

Добавлено after 2 minutes 20 seconds:
VladislavS ,
Цитата:
Вы же его до загрузки лоадером всё равно будете отлаживать.
- и чё? А картинка 5 я для кого рисовал?

Автор:  VladislavS [ Пн окт 29, 2018 10:33:59 ]
Заголовок сообщения:  Re: STM32F103C8 перенос таблицы прерываний

А причём тут картинка 5? Ну вот скомпилировал ты приложение с адреса 0x1ABCDEF0, загрузил/прошил его для отладки по этому адресу и?

Автор:  Alex-Elektron [ Пн окт 29, 2018 10:39:50 ]
Заголовок сообщения:  Re: STM32F103C8 перенос таблицы прерываний

И стартуешь Debug. Если загрузчик залит, он кидает на стартовый адрес основной проги и всё прекрасно отлаживается. Забыл сказать, что в данный момент именно так и поступаю. Главное, загрузчик не затереть при заливке из кейла, а чтобы этого не произошло - картинка 5.

Автор:  VladislavS [ Пн окт 29, 2018 10:43:19 ]
Заголовок сообщения:  Re: STM32F103C8 перенос таблицы прерываний

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

PS: Точно по той же причине не стоит рассчитывать на начальное состояние всех регистров при инициализации периферии - мало ли кто и как тебя запустил и что делал до этого.

Автор:  Alex-Elektron [ Пн окт 29, 2018 10:54:55 ]
Заголовок сообщения:  Re: STM32F103C8 перенос таблицы прерываний

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

Добавлено after 2 minutes 22 seconds:
ТС, давайте добивать Вашу проблему. Нашли system_stm32f10x.h?

Автор:  VladislavS [ Пн окт 29, 2018 10:59:39 ]
Заголовок сообщения:  Re: STM32F103C8 перенос таблицы прерываний

Так что не сочиняйте сказки. Тем более, что они не по теме.
Как раз таки по теме! Ваш загрузчик вернул все регистры которые изменил в процессе работы?

Автор:  Alex-Elektron [ Пн окт 29, 2018 11:09:36 ]
Заголовок сообщения:  Re: STM32F103C8 перенос таблицы прерываний

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

Автор:  settz0r [ Пн окт 29, 2018 11:10:22 ]
Заголовок сообщения:  Re: STM32F103C8 перенос таблицы прерываний

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

Добавлено after 2 minutes 22 seconds:
ТС, давайте добивать Вашу проблему. Нашли system_stm32f10x.h?

все нашел, закомментил, ничего не меняется...

Автор:  Alex-Elektron [ Пн окт 29, 2018 11:11:16 ]
Заголовок сообщения:  Re: STM32F103C8 перенос таблицы прерываний

В таком случае, оба проекта в студию...

Автор:  settz0r [ Пн окт 29, 2018 11:30:04 ]
Заголовок сообщения:  Re: STM32F103C8 перенос таблицы прерываний

http://rgho.st/8Kw5cvfGx - бутлоадер находится в Uart_lib.c
http://rgho.st/7VnSVNmLW - основной проект.

Автор:  Alex-Elektron [ Пн окт 29, 2018 11:42:44 ]
Заголовок сообщения:  Re: STM32F103C8 перенос таблицы прерываний

Основную прогу ещё не смотрел. Где здесь джамп?
Код:
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 [ Пн окт 29, 2018 11:49:27 ]
Заголовок сообщения:  Re: STM32F103C8 перенос таблицы прерываний

Основную прогу ещё не смотрел. Где здесь джамп?
Код:
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);
      
   }
}


Открой файл Uart_lib.c, там прописан джамп

Автор:  Alex-Elektron [ Пн окт 29, 2018 11:57:12 ]
Заголовок сообщения:  Re: STM32F103C8 перенос таблицы прерываний

И? У тебя нигде нет вызова
Код:
Go_to_App(void);


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

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

Добавлено after 1 minute 15 seconds:
Функций у тебя наворочено, фиг проследишь. Попробуй для отладки сделать вход в загрузчик/основную программу по кнопке при включении

Автор:  settz0r [ Пн окт 29, 2018 12:02:18 ]
Заголовок сообщения:  Re: STM32F103C8 перенос таблицы прерываний

Функций у тебя наворочено, фиг проследишь. Попробуй для отладки сделать вход в загрузчик/основную программу по кнопке при включении

Кнопка подключена. У меня при включении кнопки, срабатывает вход в прерывание и зажигается диод.

Автор:  Alex-Elektron [ Пн окт 29, 2018 12:19:51 ]
Заголовок сообщения:  Re: STM32F103C8 перенос таблицы прерываний

Код:
 
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 [ Пн окт 29, 2018 12:26:34 ]
Заголовок сообщения:  Re: STM32F103C8 перенос таблицы прерываний

Все верно, у меня не получается перейти по адресу зашитой программы. Нет никакой реакции на кнопку: ни прерывания, ни зажигания светодиода.
Дамп не пробовал снимать.

Автор:  Alex-Elektron [ Пн окт 29, 2018 12:37:33 ]
Заголовок сообщения:  Re: STM32F103C8 перенос таблицы прерываний

Дамп в студию. Вечером скеч накидаю, проверишь у себя.

Автор:  settz0r [ Пн окт 29, 2018 13:09:09 ]
Заголовок сообщения:  Re: STM32F103C8 перенос таблицы прерываний

http://rgho.st/8gq7mGbP2
http://rgho.st/7DNWPdmDS
http://rgho.st/7HCgXdvCV
частичный дамп

Автор:  Мурик [ Пн окт 29, 2018 15:01:28 ]
Заголовок сообщения:  Re: STM32F103C8 перенос таблицы прерываний

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

Автор:  Alex-Elektron [ Пн окт 29, 2018 15:06:06 ]
Заголовок сообщения:  Re: STM32F103C8 перенос таблицы прерываний

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

Страница 2 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/