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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Порт Cortex-R4, Попытка реализации
dxp
сообщение Jan 23 2017, 05:20
Сообщение #16


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



QUOTE (Legath @ Jan 23 2017, 05:29) *
Да там это все safety проверки.


Не помню там таких проверок. Код функции:
CODE

/*
* Copyright © 2004 CodeSourcery, LLC
*
* Permission to use, copy, modify, and distribute this file
* for any purpose is hereby granted without fee, provided that
* the above copyright notice and this notice appears in all
* copies.
*
* This file is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/

/* Handle ELF .{pre_init,init,fini}_array sections. */
#include <sys/types.h>

#ifdef HAVE_INITFINI_ARRAY

/* These magic symbols are provided by the linker. */
extern void (*__preinit_array_start []) (void) __attribute__((weak));
extern void (*__preinit_array_end []) (void) __attribute__((weak));
extern void (*__init_array_start []) (void) __attribute__((weak));
extern void (*__init_array_end []) (void) __attribute__((weak));

extern void _init (void);

/* Iterate over all the init routines. */
void
__libc_init_array (void)
{
size_t count;
size_t i;

count = __preinit_array_end - __preinit_array_start;
for (i = 0; i < count; i++)
__preinit_array_start[i] ();

_init ();

count = __init_array_end - __init_array_start;
for (i = 0; i < count; i++)
__init_array_start[i] ();
}
#endif


QUOTE (Legath @ Jan 23 2017, 05:29) *
На данном этапе проекта если их все закомментировать ничего не изменится. Попробую ___libc_init_array ибо ни один из бряков в конструкторах не сработал снова.

А если отладчиком это место по шагам пройти и посмотреть, вызываются ли конструкторы? И если нет, то почему. Если в линкерном скрипте символы (секций) указаны правильно, то не работать, вроде, нечему.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jan 23 2017, 06:15
Сообщение #17


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Legath @ Jan 23 2017, 03:29) *
Да там это все safety проверки. На данном этапе проекта если их все закомментировать ничего не изменится. Попробую ___libc_init_array ибо ни один из бряков в конструкторах не сработал снова.

По-моему, у вас снова неправильно.
Было
Код
        extern uint32 __ctors_start, __ctors_end;

, потом вы исправили на
Код
    extern void(* const __ctors_start)();
    extern void(* const __ctors_end)();

От этого ничего не поменялось.
Либо берите адрес, как я советовал, либо объявите их как массивы, как это сделано у Сергея.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Legath
сообщение Mar 16 2017, 17:17
Сообщение #18


Участник
*

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



Все оказалось намного проще. порт arm7 полность подходит для cortex-r4 , за исключение плавучки, но это решается дефайнами.
Работает. Но есть одна неприятность, работает только первый процесс , при попытке передачи управления процессу 2 возникает ошибка как в самом начале, sp для второго процесса указывает далеко.
сейчас занимаюсь с этим.

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

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

 


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


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