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

 
 
> Порт Cortex-R4, Попытка реализации
Legath
сообщение Jan 19 2017, 15:22
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 30-12-10
Из: Рязань
Пользователь №: 61 958



Всем доброго дня.
Пытаюсь сделать порт для Cortex R4F (чип RM46L852). Компилятор gcc 5.4.1.

Использую схему с программным прерыванием. Но возникает проблема в реализации функции os_start
По примеру порта ARM7
сделал ассемблерный файл со следующий содержимым (подсматривал в других ОСРВ)

Код
        .set SYS_MODE,    0x1f
        .set SVC_MODE,    0x13
        .set IRQ_MODE,    0x12
        .set STUB,    0x00


        .global context_restore

context_restore:     // os_start() passes New_SP in R0
    CPS        #SYS_MODE
    LDR        R1, [R0]
    LDR        SP, [R1]



    /* Restore the floating point context, if any. */
    POPNE     {R0}
    VPOPNE    {D0-D15}
    VMSRNE  FPSCR, R0


    /* Restore all system mode registers other than the SP (which is already
    being used). */
    POP        {R0-R12, R14}

    /* Return to the task code, loading CPSR on the way. */
    RFEIA    sp!


в отладчике штатно дохожу до строки
Код
LDR        R1, [R0]

и при ее выполнении процессор улетает в dabort handler. Это означает что инструкция обратилась к данным с которыми проблема.
Подскажите пожалуйста в какую сторону начать поиски. у меня подозрение что я что то неверно делаю с заготовкой стека.


Код
void TBaseProcess::init_stack_frame( stack_item_t * Stack
                                   , void (*exec)()
                                #if scmRTOS_DEBUG_ENABLE == 1
                                   , stack_item_t * StackBegin
                                #endif
                                   )
{
        *Stack = ( stack_item_t ) NULL;
        Stack--;
        *Stack = ( stack_item_t ) NULL;
        Stack--;
        *Stack = ( stack_item_t ) NULL;
        Stack--;
        *Stack = ( stack_item_t ) 0x1f;;

        if((uintptr_t)exec & (0x01UL))  {
               *Stack = *Stack | 0x20;
           }
        Stack--;
        *Stack = reinterpret_cast<stack_item_t>(exec);;
        Stack--;
        *Stack = ( stack_item_t ) 0;    /* R14 */
        Stack--;
        *Stack = ( stack_item_t ) 0; /* R12 */
        Stack--;
        *Stack = ( stack_item_t ) 0; /* R11 */
        Stack--;
        *Stack = ( stack_item_t ) 0; /* R10 */
        Stack--;
        *Stack = ( stack_item_t ) 0; /* R9 */
        Stack--;
        *Stack = ( stack_item_t ) 0; /* R8 */
        Stack--;
        *Stack = ( stack_item_t ) 0; /* R7 */
        Stack--;
        *Stack = ( stack_item_t ) 0; /* R6 */
        Stack--;
        *Stack = ( stack_item_t ) 0; /* R5 */
        Stack--;
        *Stack = ( stack_item_t ) 0; /* R4 */
        Stack--;
        *Stack = ( stack_item_t ) 0; /* R3 */
        Stack--;
        *Stack = ( stack_item_t ) 0; /* R2 */
        Stack--;
        *Stack = ( stack_item_t ) 0; /* R1 */
        Stack--;
        *Stack = ( stack_item_t ) 0; /* R0 */
        Stack--;
        *Stack = ( uint32_t ) 0;
        Stack--;
        *Stack = ( stack_item_t ) 0;

}


Это точно не MPU, я его отключал.


ADD:

в этот момент в R0 содержится значение 0xea006068 , память по этому адресу просмотреть нельзя.

Прошу сильно не пинать. Процессор для меня новый.

Сообщение отредактировал Legath - Jan 19 2017, 16:32
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Legath   Порт Cortex-R4   Jan 19 2017, 15:22
- - Сергей Борщ   QUOTE (Legath @ Jan 19 2017, 17:22) Пытаю...   Jan 20 2017, 06:18
|- - Legath   Цитата(Сергей Борщ @ Jan 20 2017, 09:18) ...   Jan 20 2017, 08:49
|- - Сергей Борщ   QUOTE (Legath @ Jan 20 2017, 10:49) corte...   Jan 20 2017, 09:21
- - Legath   Цитата(Сергей Борщ @ Jan 20 2017, 12:21) ...   Jan 20 2017, 11:30
|- - Сергей Борщ   QUOTE (Legath @ Jan 20 2017, 13:30) Подоз...   Jan 20 2017, 11:45
|- - Сергей Борщ   QUOTE (Legath @ Jan 20 2017, 13:30) тесто...   Jan 20 2017, 18:24
|- - Legath   Цитата(Сергей Борщ @ Jan 20 2017, 21:24) ...   Jan 20 2017, 20:55
|- - Сергей Борщ   QUOTE (Legath @ Jan 20 2017, 22:55) -O0 ,...   Jan 20 2017, 21:37
- - Legath   Добавил в линковку Код /* The program code and o...   Jan 20 2017, 16:55
|- - AHTOXA   Цитата(Legath @ Jan 20 2017, 21:55) и пер...   Jan 20 2017, 18:56
|- - dxp   QUOTE (Legath @ Jan 20 2017, 23:55) и пер...   Jan 22 2017, 08:08
|- - Legath   Цитата(dxp @ Jan 22 2017, 11:08) В gcc...   Jan 22 2017, 22:29
|- - dxp   QUOTE (Legath @ Jan 23 2017, 05:29) Да та...   Jan 23 2017, 05:20
|- - AHTOXA   Цитата(Legath @ Jan 23 2017, 03:29) Да та...   Jan 23 2017, 06:15
- - Сергей Борщ   да, точно. У меня-то они объявлены как CODEextern ...   Jan 20 2017, 20:42
- - Legath   Файлы ccs7 архивировал. код инициализации я вставл...   Jan 20 2017, 21:44
- - Legath   Все оказалось намного проще. порт arm7 полность по...   Mar 16 2017, 17:17


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

 


RSS Текстовая версия Сейчас: 27th April 2024 - 12:50
Рейтинг@Mail.ru


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