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

 
 
> Кто-нибудь использовал TLS для Texas MSP430
SMRM
сообщение Aug 15 2016, 16:24
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 26-06-09
Пользователь №: 50 667



Здравствуйте!
Пытаюсь настроить 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 нет никаких проблем.
Заранее благодарю за помощь.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
k155la3
сообщение Aug 19 2016, 08:36
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Если Вы используете файл линкера по умолчанию, то возможно он потребует коррекции для TLS.
Скопируйте его (файл xcl) в каталог проекта и в опциях укажите что использовать его а не умолчательный который в директории IAR.
Также (возможно) потребуется отредактировать стартап-код. Его исходник лежит в директории IAR.
Прикомпонуйте его копию к проекту.
В нем (возможно, посмотрите сами) есть "подстроечные" #define
--
Могу ошибаться, так что извиняйте если чевой наплел sm.gif))

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 - Aug 19 2016, 08:49
Go to the top of the page
 
+Quote Post



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

 


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


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