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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Самозагрузчик
zltigo
сообщение Apr 13 2016, 08:03
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (scifi @ Apr 12 2016, 18:03) *
Ассемблерный код здесь идеологически более правильный.

Ассемблерный код в данном случае, как телеге пятое колесо sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 13 2016, 08:10
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(zltigo @ Apr 13 2016, 11:03) *
Ассемблерный код в данном случае, как телеге пятое колесо sad.gif.

Я ж не заставляю. У нас свободная страна. Каждый волен иметь своих тараканов в голове laughing.gif
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Apr 13 2016, 09:00
Сообщение #33


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(scifi @ Apr 13 2016, 09:10) *
Я ж не заставляю. У нас свободная страна. Каждый волен иметь своих тараканов в голове laughing.gif

ОТ: о какой стране речь? wink.gif
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 13 2016, 09:41
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(KnightIgor @ Apr 13 2016, 12:00) *
ОТ: о какой стране речь? wink.gif

А, ну да. Разъехались, панимаишь, по свету. Космополиты laughing.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 13 2016, 09:47
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (scifi @ Apr 13 2016, 12:41) *
А, ну да. Разъехались, панимаишь, по свету. Космополиты laughing.gif

К делу отношения не имеет, но я никуда не "разъехались", я сейчас на родине. А писать стараюсь всегда максимально четко и без привлечения лишних сущностей и заплаток. В данном случае вызов пишется на чистейшем как слеза Си. Посему и пятое колесо не нужно.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 13 2016, 09:50
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(zltigo @ Apr 13 2016, 12:47) *
В данном случае вызов пишется на чистейшем как слеза Си. Посему и пятое колесо не нужно.

Вы свою версию вызова не привели. Все уже предъявили, а Вы скрываете rolleyes.gif Код - в студию!
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 13 2016, 10:03
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (scifi @ Apr 13 2016, 12:50) *
Вы свою версию вызова не привели. Все уже предъявили, а Вы скрываете rolleyes.gif Код - в студию!

Абсолютно совпадает с той, котрую я ранее поддержал.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 13 2016, 10:14
Сообщение #38


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(zltigo @ Apr 13 2016, 13:03) *
Абсолютно совпадает с той, котрую я ранее поддержал.

Наверное, поддержали мысленно, потому что здесь не видно. Ну да ладно.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Apr 13 2016, 10:21
Сообщение #39


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Коль все предъявили, тогда и я...: rolleyes.gif
Код
/* Адрес таблицы */
      SCB->VTOR = APPL_ADDR;
    
/* Указатель на приложение */
      pFunc_t JumpAppl = (pFunc_t)(*(__IO uint32_t *)(APPL_ADDR + 4));
      __set_MSP(*(__IO uint32_t *)APPL_ADDR);
      JumpAppl();
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 13 2016, 10:35
Сообщение #40


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(ViKo @ Apr 13 2016, 13:21) *
Коль все предъявили, тогда и я...: rolleyes.gif
Код
      __set_MSP(*(__IO uint32_t *)APPL_ADDR);
<-- компилятор может изменить значение указателя стека
      JumpAppl();

Выше было сказано: где гарантия, что компилятор не изменит значение указателя стека перед переходом?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Apr 13 2016, 10:43
Сообщение #41


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(scifi @ Apr 13 2016, 13:35) *
Выше было сказано: где гарантия, что компилятор не изменит значение указателя стека перед переходом?

Я, что, своего загрузчика не знаю? rolleyes.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 13 2016, 11:14
Сообщение #42


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (scifi @ Apr 13 2016, 11:50) *
Все уже предъявили, а Вы скрываете
Не все еще.
CODE
struct application
{
    struct vectors
    {
        typedef void( *handler )( void );
        uint32_t    MSP_init;
        handler     Reset_vector;
        handler     Core_handler[14];
        handler     MCU_handler[MCU_VECTORS];
    }       Vectors;
    uint32_t Size;                          // application size, 4-byte words
};

extern application const Application;

....
            {
                // set vectors table to application vectors
                SCB->VTOR = (uintptr_t)&Application.Vectors;
                __set_MSP(Application.Vectors.MSP_init);
                Application.Vectors.Reset_vector();
            }

// в скрипте линкера:
    .application (NOLOAD):
    {
        Application = .;
    } > APPLICATION



--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 13 2016, 16:28
Сообщение #43


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(scifi @ Apr 13 2016, 13:35) *
Выше было сказано: где гарантия, что компилятор не изменит значение указателя стека перед переходом?

Повторюсь: раз приложение стартует после загрузчика, то все эти требования излишни. Стек и VTOR может поставить и самостоятельно. Реально нужен только переход.
Go to the top of the page
 
+Quote Post
inventor
сообщение Apr 22 2016, 18:59
Сообщение #44


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



В догонку.
все работает, загрузчик загружает, с одним НО...
если в начале кода делаю инициализацию USB - виснет
коментирую USB - запускается.
в чем может быть проблема?
платка дискавери с stm407
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 22 2016, 19:13
Сообщение #45


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(inventor @ Apr 22 2016, 21:59) *
если в начале кода делаю инициализацию USB - виснет
коментирую USB - запускается.

Не помню, говорили вам или нет. Переход на основную программу хорошо делать сразу после сброса. Именно для того, чтобы МК был в состоянии как после сброса. А если прыгаете туда абы как с инициализированными кусками периферии, то сами и разбирайтесь в своём зоопарке.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 14:54
Рейтинг@Mail.ru


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