Перейти к содержанию
    

[Решено] LPC1788 bootloader переход на адрес приложения

Этот метод не работает, точнее работает неправильно. При заходе в main() стэк оказывается сдвинут на 0x680 по сравнению с запуском приложения без бутлоадера. Ассемблерный вариант работает правильно.

Интересно почему это происходит? И что за магическое число 0x680

Я вижу у себя ту же картину. То есть, переход происходит совсем не туда куда я хочу (0x2000) Мой код:

__asm void boot_jump( uint32_t address ){
   LDR SP, [R0]    ;Load new stack pointer address
   LDR PC, [R0, #4];Load new program counter address
}

void execute_user_code(void)
{
    uint8_t tmp;

    NVIC->ICER[0] = 0xFFFFFFFF;    //Disable all interrupts 
    NVIC->ICER[1] = 0x00000001;
     
    NVIC->ICPR[0] = 0xFFFFFFFF;    //Clear all pending interrupts 
    NVIC->ICPR[1] = 0x00000001;
    for(tmp = 0; tmp < 32; tmp++)    // Clear all interrupt priority 
    {
            NVIC->IP[tmp] = 0x00;
    }
    
    LPC_SC->CCLKSEL = 0x01;     // set sysclk (12MHz) as clock source
    LPC_SC->PLL0CON = 0;             // disable PLL
    LPC_SC->PLL0FEED = 0xAA;
    LPC_SC->PLL0FEED = 0x55;

    SCB->VTOR = (0x2000) & 0x1FFFFF80;
    boot_jump(0x2000);
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Oops...

Сам себя обманул :-)

У меня в проекте там задан адрес старта 0x2000. При этом я собственными руками писал scatter file для линкера, где указа адрес старта 0x0000. И поставил галочку "верить скеттеру" :-)

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...