реклама на сайте
подробности

 
 
> Не могу разобраться с линкером Keil и размещением векторов, bootloader и вектора прервыаний
fmdost
сообщение Jun 20 2017, 22:37
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



никак не могу передать управление из бутлоадера на основную программу начинающуюся с адреса 0x08002000. Тоесть, переходит из бутлоадера на адрес 0x08002000 исправно, а там в дизасемблере.
Цитата
0x08002000 0EE0 DCW 0x0EE0
0x08002002 2000 DCW 0x2000
0x08002004 2101 DCW 0x2101
0x08002006 0800 DCW 0x0800
0x08002008 3A89 DCW 0x3A89
0x0800200A 0800 DCW 0x0800
0x0800200C 38B1 DCW 0x38B1


В стартупе есть такие строчки
Цитата
0x8002100 LDR R0, =SystemInit
0x8002102 BLX R0
0x8002104 LDR R0, =__main
0x8002106 BX R0


ИЧСХ, в __main заходит, а SystemInit нет!

Если руками переставить "стрелочку" на 0x8002100 программа начинает работать корректно.
ЧЗНХ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
esaulenka
сообщение Jun 22 2017, 11:21
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Вот так оно работает:

Код
static void StartMain (const void * aAddr)
{
    void (*code_entry)(void);

    struct StartVector {
        uint32_t stack_ptr;        // stack pointer
        uint32_t entry_ptr;        // code entry pointer
    };

    StartVector *start = (StartVector*) aAddr;

    // set interrupt vectors
    SCB->VTOR = (uint32_t)aAddr;

    // get code entry
    code_entry = (void (*)(void)) start->entry_ptr;

    // set stack pointer
    __set_PSP (start->stack_ptr);

    // start application
    code_entry ();
}


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 11:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.0137 секунд с 7
ELECTRONIX ©2004-2016