SMRM 0 15 августа, 2016 Опубликовано 15 августа, 2016 · Жалоба Здравствуйте! Пытаюсь настроить 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 нет никаких проблем. Заранее благодарю за помощь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 19 августа, 2016 Опубликовано 19 августа, 2016 (изменено) · Жалоба Если Вы используете файл линкера по умолчанию, то возможно он потребует коррекции для 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 . . . . . Изменено 19 августа, 2016 пользователем k155la3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться