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

Кто-нибудь использовал TLS для Texas MSP430

Здравствуйте!

Пытаюсь настроить TLS в Dlib Iar. В проекте использую uCOS-III и их пример построения в файле os_tls.c.

Ранее для проекта на LPC4078 все работало.

Нужна TLS для защиты heap, так как вызывается оператор new в разных потоках.

В новом проекте - микроконтроллер MSP430F5437a.

Линкер выдает ошибку:

Error[e46]: Undefined external "__cstart_init_tls" referred in ?errno

Пока не могу понять как отменить инициализацию TLS data segment в Dlib. Для LPC4078 инициализация вроде отключена по умолчанию.

Может кто что подскажет или укажет на какой-то пример для MSP430.

Вторая проблема возникла при определении размера занимаемого кучей с помощью __iar_dlmallinfo().

Также IAR for MSP выдает ошибку:

Error[e46]: Undefined external "__iar_dlmallinfo" referred in CommObjectDef,

хотя для Iar for Arm нет никаких проблем.

Заранее благодарю за помощь.

 

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


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

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

Скопируйте его (файл xcl) в каталог проекта и в опциях укажите что использовать его а не умолчательный который в директории IAR.

Также (возможно) потребуется отредактировать стартап-код. Его исходник лежит в директории IAR.

Прикомпонуйте его копию к проекту.

В нем (возможно, посмотрите сами) есть "подстроечные" #define

--

Могу ошибаться, так что извиняйте если чевой наплел :)))

 

ps

// ************************************************
// XLINK configuration file for MSP430F5438A
// Copyright 1996-2010 IAR Systems AB
// ************************************************
    . . . . . . 
// segment         Usage
// -------         --------------------------
// CSTACK          Runtime stack
// TLS16_I         Thread-local storage for main thread
//                 (require custom runtime library)
    . . . . . .

+ C:\Program Files\IAR Systems\Embedded Workbench 6.0\430\config\template\project\DLib\Normal\dl430xsdnr\ . . . . .

cstartup.s43:
        . . . . . .
        PUBLIC  __cstart_init_tls
        EXTERN  __data16_memcpy

__cstart_init_tls
        MOV.W   #SFB TLS16_I,    CW0
    XMOVROPIADDR SFB TLS16_ID, CW1
        MOV.W   #sizeof TLS16_I, CW2

        XXCALL  __data16_memcpy
        . . . . .

 

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

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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