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

IAR6.50 и FPC\NEON не едут лыжи

Приветствую.

Решил прикрутить к старому проекту поддержку TTF шрифтов, при помощи либы stb_truetype. Сначала решил проверить на ПК под борланд С (codegear) завпустил все работает. Переношу в ИАР для процессора imx6 с поддержкой FPCv3\NEON

виснет на подобном коде:

points = (stbtt__point *) STBTT_malloc(num_points * sizeof(points[0]), userdata);

выделяется аллокатором 300байт под структуру:

typedef struct 
{
   float x,y;
} stbtt__point;


Затем далее идет вызов функции с присвоением значений:

stbtt__add_point(points, num_points++, x,y);

Собственно функция на которой виснет на первом присвоении намертво, когда points не нулевой, т.е. память выделена:

static void stbtt__add_point(stbtt__point *points, int n, float x, float y)
{
   if (!points) {return;} // during first pass, it's unallocated
   points[n].x = x;
   points[n].y = y;
}

При статическом выделении памяти под структуру - работает (ну не виснет хотя бы), дин. аллокатор рабочий, проверено.

При отключенной опции FPU в конфиге ИАРа работает, как нужно.  В чем прикол? ИАР не умеет работать с подобным при включенном ускорителе плавучки или что еще может быть?

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


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

1 hour ago, mantech said:

дин. аллокатор рабочий, проверено

Выравнивание по границе 64 бит выполняет?

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


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

40 минут назад, aaarrr сказал:

Выравнивание по границе 64 бит выполняет?

Вот это не проверял...  Там выравнивание для каждого конкретного выделения нужно или только адрес начала пула памяти?

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


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

4 минуты назад, aaarrr сказал:

Для каждого.

Смутило в этом деле то, что завис происходил не при выполнении математического действия, а просто пересылке и присвоении...

Хотя с другой стороны, если при отключении fpu работоспособность восстанавливалась, значит и в пересылках он задействуется.

Изменено пользователем mantech

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


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

2 часа назад, mantech сказал:

Хотя с другой стороны,

Вообщем, спасибо за наводку, поправил выравнивание в аллокаторе с 4 на 8 байт, виснуть перестало, символ рисуется, но не так, как на ПК (там контуры красивее), заметил, что запрос на выделение памяти после 3х раз начинает не совпадать с тем, что на ПК. Видимо какие-то проблемы с математическими расчетами, думал, может буфер со шрифтом тоже надо выровнять, на всякий, проверил, он итак кратный 8 байтам...  Вообщем половина работает, но еще копать и копать(((

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


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

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

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

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

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

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

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

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

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

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