Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: свежак KGP win32/arm/avr/mips/m68k
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26
Genadi Zawidowski
Как я уже говорил, сообщения об ошибках идут только при ключе -flto=8, просто -flto нормально работает.
Права есть, это мой tmp
Да, связное устройство, трансивер называется - с прямой оцифровкой сигнала на приёме, STM32F429/446 работает DSP и контроллером.
Исходники всего в SVN лежат, я ссылки давал.
Цитата
какой компиллер 32 или 64 битный.

64
Viciouspriest
Цитата(klen @ Jun 3 2015, 16:43) *
2_Viciouspriest
еще один среатив - удалось собрать из транка arm-kgp-eabi host i686-kgp-mingw32
www.klen.org//Files/DevTools/i686-kgp-mingw32/arm-kgp-eabi_@_i686-kgp-mingw32_20150603_CETONIA.7z


Собираю с Вашими ключами

CODE
d:/gcc/arm-kgp-eabi_cetonia/bin/../lib/gcc/arm-kgp-eabi/6.0.0/../../../../arm-kgp-eabi/bin/ld.exe: cannot find crtfastmath.o:
No such file or directory
collect2.exe: error: ld returned 1 exit status
make: *** [UPKB_G.elf] Error 1
klen
Цитата(Viciouspriest @ Jun 4 2015, 13:20) *
Собираю с Вашими ключами

CODE
d:/gcc/arm-kgp-eabi_cetonia/bin/../lib/gcc/arm-kgp-eabi/6.0.0/../../../../arm-kgp-eabi/bin/ld.exe: cannot find crtfastmath.o:
No such file or directory
collect2.exe: error: ld returned 1 exit status
make: *** [UPKB_G.elf] Error 1

распакованное нужно положить в корневую директорию сборки., в либы скопируются crtfatsmath.o

www.klen.org/Files/DevTools/arm-kgp-eabi-crtfastmath.tar.bz2
halfdoom
Цитата(klen @ May 13 2015, 14:56) *
еще опыт предлагаю, добавте еще при компилянии и линковке 6.0.0 ключики -Ofast -fomit-frame-pointer -finline-functions -ffunction-sections -fdata-sections -fgraphite -funroll-loops -flto=8 -ffat-lto-objects, давайте сравним результаты, LTO оптимизатор должен еще накинуть скорости.

Раньше не было только -fgraphite -funroll-loops -flto=8 -ffat-lto-objects. В данном случае интересен только размер кода, т.к. быстродействия пока хватает. С -flto не собирается совсем - либо segmentation fault, либо "local frame unavailable (naked function?)" - разные версии компилятора дают разные ошибки. Наверное, это из за весьма навороченных шаблонов. Доля чистого C-кода, который мог бы быть оптимизирован не велика, а все остальное (C++) собирается через policy стиль и успешно оптимизируется как одна единица компиляции. -fgraphite никаких изменений не дает.
demiurg_spb
Цитата(halfdoom @ Jun 6 2015, 18:05) *
собирается через policy стиль
Интересно, что это такое?
halfdoom
Цитата(demiurg_spb @ Jun 7 2015, 11:40) *
Интересно, что это такое?


Это активно пропагандируемый адептами типа Александреску стиль объектно ориентированного программирования с использованием шаблонов, при использовании которого удается избежать потерь на виртуальные функции и ненужных иерархий классов.

Т.е. вместо:
Код
class Interface {
    virtual send() = 0;
    virtual receive() = 0;
};

class SerialInterface : public Interface {
    send();
    receive();
};

class UsbInterface : public Interface {
    send();
    receive();
};

class MySuperRobot
{
    Interface *interface;

    init(Interface *ifp) {
       interface = ifp;
       interface->send() || interface->receive();
    }
};

Предлагается писать:
Код
template<....>
class SerialInterface  {
    send() { blah }
    receive() { vah }
};

template<....>
class UsbInterface {
    send() { blah }
    receive() { vah }
};

template <class Interface>
class MySuperRobot
{
    Interface interface;

    test() { interface.send() || interface.receive(); }
};


Аналогичного эффекта можно добиться с отказом от наследования и использованием ifdef'ов, но с шаблонами получается проще и удобнее.
klen
свежак таргет arm хост linux64

http://klen.org/Files/DevTools/x86_64-kgp-...0623_LUPINUS.7z
kimstik
А можно до кучи к fastmath еще и libc_nano.a ?
klen
свежак таргет arm хост linux64

www.klen.org/Files/DevTools/x86_64-kgp-linux-gnu/arm-kgp-eabi_@_x86_64-kgp-linux-gnu_20150701_PATHENOCISSUS.7z

fastmath доприкручн.

newlibc-nano.. я пробывал - ненашел различий в разрезе кортексиков. мож не нашел. дособеру выложу.
klen
... выше выложенным свежаком дособрана newlib-nano-2
kimstik
libc.a надо ручками переименовать в libc_nano.a исходя из nano.specs ?
и размер нулевой у libc.a ...
klen
2_kimstik
>> libc.a надо ручками переименовать в libc_nano.a исходя из nano.specs ?
все зависит о Вас - какие ключи пропихиваются компиллеру и линкеру. если не переименовывать тупо будеть линковатся libc

>> и размер нулевой у libc.a ...
не должно быть проблем ибо libc и libg это близнецы и обе ликуются по умолчанию, но всеровно эффект интересный - должны быть идентичны.

klen
наладил сквозную сборку по хостам
свеки таргет arm

хост x86_64 linux
http://klen.org/Files/DevTools/x86_64-kgp-..._CONVOLVULUS.7z

хост x86_64 win
http://klen.org/Files/DevTools/x86_64-kgp-..._CONVOLVULUS.7z

хост i686 win
http://klen.org/Files/DevTools/i686-kgp-mi..._CONVOLVULUS.7z
Шаманъ
Цитата(klen @ Jul 26 2015, 21:23) *
наладил сквозную сборку по хостам
свеки таргет arm

хост x86_64 win
http://klen.org/Files/DevTools/x86_64-kgp-..._CONVOLVULUS.7z

У меня проблема с компоновщиком - неправильно считает адреса.

Вот кусочек из ld скрипта:
Код
  .data  : AT ( _etext )
    {
        . = ALIGN(4);
        /* This is used by the startup in order to initialize the .data section */
        _data_start = .;
        _data_start_flash = _etext;

        *(.data)
        *(.data.*)

        . = ALIGN(4);
        /* This is used by the startup in order to initialize the .data section */
        _data_end = .;
    } >RAM
    
    
    .settings  : AT ( _etext + _data_end - _data_start)
    {
        . = ALIGN(4);
        /* This is used by the startup in order to initialize the .settings section */
        _settings_start = .;
        _settings_start_flash = _etext + _data_end - _data_start;

        *(.settings)
        *(.settings.*)

        . = ALIGN(4);
        /* This is used by the startup in order to initialize the .settings section */
        _settings_end = .;
    } >RAM


А вот что в map-файле:
Цитата

...............................................................................

0x0000000008016b74 _etext = .

...............................................................................

0x0000000020000000 _data_start = .

...............................................................................

0x0000000020000058 _data_end = .

...............................................................................

.settings 0x0000000020000058 0xd0 load address 0x0000000048016bcc
0x0000000020000058 . = ALIGN (0x4)
0x0000000020000058 _settings_start = .
0x0000000048016bcc _settings_start_flash = ((_etext + _data_end) - _data_start)


Собственно вот - компилируется и линкуется нормально, но прошить с такими адресами естественно не получается. Такое впечатление, что вместо вычитания делается сложение 1111493779.gif И еще немного информации - этf проблема не только в версии 6.00, аналогичная проблема была в 4.9.3 (не Вашей сборки). А вот CodeSourcery старый 4.4.1 работает нормально.

Если нужны ld скрипт и map файлы могу выложить.
klen
Цитата(Шаманъ @ Aug 26 2015, 21:21) *
У меня проблема с компоновщиком - неправильно считает адреса.

давайте скрипт линкера, я его проверю. думаю в нем косяг.
либо ... ну и как обычно... под винду все работант через жЁпу... классика....
Шаманъ
Цитата(klen @ Aug 26 2015, 23:26) *
давайте скрипт линкера, я его проверю. думаю в нем косяг.
либо ... ну и как обычно... под винду все работант через жЁпу... классика....

Косяк явно не в нем, ибо нашел вчера лекарство от этой баги. Итак, исходное выражение вот такого вида:

Код
_settings_start_flash = _etext + _data_end - _data_start;


Считается не правильно, но если его переписать так:

Код
_settings_start_flash = _etext + (_data_end - _data_start);


то все считается верно 1111493779.gif То же самое происходит с последней версией с launchpad.net . В древнем CodeSourcery (gcc4.4) все работает нормально. Скрипт приложил (в варианте со скобками и без sm.gif), также как и два .map файла (один без скобок,с багом, второй со скобками).

Со скобками вчера все нормально слинковалось и работает sm.gif Код получился на 1.5% меньше, чем в версии 4.4, по быстродействию не смотрел.
klen
Цитата(Шаманъ @ Aug 27 2015, 07:38) *
Код
_settings_start_flash = _etext + _data_end - _data_start;

Считается не правильно, но если его переписать так:
Код
_settings_start_flash = _etext + (_data_end - _data_start);

то все считается верно

странно, нада перчитать свежую доку по ld. наверняка чтото про такое написано, например пропорядок вычислений в скрипте и тд. но всеравно странно, у меня в скриптах никаких скобок и довольно сложне вычисления адресов - мой SDK построен так что скрипт генерится при каждой сборке по параметрам спускаймым сверху препроцессором m4, он генерит все выражения для вычисления алресов размещения и линкер потом все правильно раскладывает.... но я долго трахался чтоб этот механизм работал ка часы.
Genadi Zawidowski
пока только ощущения: типизацию в ld-script добавили? Или она возникла неожиданно...
В скрипте от arm.com используются такие выражения (мой сделан на основе их образца):



__etext = .;

.data : AT (__etext)
{
__data_start__ = .;
*(vtable)
*(.data*)
...
__data_end__ = .;

} > DTCM

PROVIDE(__icm_start__ = ORIGIN(ITCM));
PROVIDE(__icm_end__ = ORIGIN(ITCM) + LENGTH(ITCM));

PROVIDE(__dtm_start__ = ORIGIN(DTCM));
PROVIDE(__dtm_end__ = ORIGIN(DTCM) + LENGTH(DTCM));
Сергей Борщ
Цитата(Шаманъ @ Aug 27 2015, 07:38) *
Считается не правильно, но если его переписать так:
Вот охота вам вручную все это суммировать...
Код
.data  :
    {
..............
    } >RAM > AT ROM

    .settings  :
    {
..............
    } >RAM

Шаманъ
Цитата(klen @ Aug 27 2015, 10:43) *
странно, нада перчитать свежую доку по ld. наверняка чтото про такое написано, например пропорядок вычислений в скрипте и тд. но всеравно странно...

Как по мне, то введение порядка вычислений который приводит к такому результату это какое-то очень странное извращение rolleyes.gif Про доки - не знаю насколько свежие я читал, но это было первое, что я вчера сделал - порядок вычислений, как в вычислениях выражений в С (что весьма логично).

Цитата(Genadi Zawidowski @ Aug 27 2015, 10:50) *
В скрипте от arm.com используются такие выражения (мой сделан на основе их образца):

Когда складываете-вычитаете только два адреса, то все ок. У Вас их как раз два (да и в 99.99% скриптов наверное тоже так).

Цитата(Сергей Борщ @ Aug 27 2015, 11:02) *
Вот охота вам вручную все это суммировать...

Можно было и примерно так сделать, а потом через LOADADDR() определить адреса загрузки, но вопрос собственно был не в этом, да и не всегда так сделать выйдет.
klen
некоторе время урлы на сборки будут посылать в 404
работы на хранилище....
klen
Цитата(klen @ Aug 30 2015, 16:21) *
некоторе время урлы на сборки будут посылать в 404
работы на хранилище....


все востановлено. архив работает.

свежак хост x86_64 linux
www.klen.org/Files/DevTools/x86_64-kgp-linux-gnu/arm-kgp-eabi_@_x86_64-kgp-linux-gnu_20151023_MENTHA.7z
klen
свежак хост x86_64 linux
www.klen.org/Files/DevTools/x86_64-kgp-linux-gnu/arm-kgp-eabi_@_x86_64-kgp-linux-gnu_20151030_ELYTRIGIA.7z
_3m
собираю проект на chibios (stable 2.6.x) под чип LPC11U68 (cortex-m0).
проект собирается и работает пока не используется деление.
Целочисленное деление улетает в hard fault.
код где падает:
Код
0000222c <____aeabi_uidiv_from_thumb>:
    222c:    4778          bx    pc
    222e:    46c0          nop    ; (mov r8, r8)
    2230:    eaffffa6     b    20d0 <__aeabi_uidiv>   <<<--------- здесь возникает hard fault


отладчик тоже не понимает команду b 20d0
Код
          ____aeabi_uidiv_from_thumb:
0000222c:   bx pc
0000222e:   nop; (mov r8, r8)
00002230:  ; <UNDEFINED> instruction: 0xffa6eaff


компилятор
gcc version 6.0.0 20150726 (experimental) (Klen's GNU package (KGP) for x86_64-kgp-linux-gnu platform. << CONVOLVULUS >>)

ключи компиляции
/opt/kgp-arm/bin/arm-kgp-eabi-gcc -c -mcpu=cortex-m0 -O1 -ggdb -fomit-frame-pointer -mfloat-abi=soft -mlittle-endian -mtune=cortex-m0plus -Wall -Wextra -Wstrict-prototypes -Wa,-alms=build/lst/hal_lld.lst -DLPC11U68 -D__NEWLIB__ -DCORE_M0PLUS -DCORTEX_USE_FPU=FALSE -DTHUMB_PRESENT -mno-thumb-interwork -DTHUMB_NO_INTERWORKING -MD -MP -MF .dep/hal_lld.o.d -mthumb -DTHUMB

если использовать компилятор devkitARM gcc version 4.9.2 (devkitARM release 44) результат такой же.


===============
провел сравнение разных компиляторов (исходники и makrfile без изменений):
devkitARM_r41 (gcc-4.7.1) - работает с -mcpu=cortex-m0 , не поддерживает cortex-m0plus
devkitARM_r42 (gcc-4.8.2) - работает с -mcpu=cortex-m0 , не работает c -mcpu=cortex-m0plus

devkitARM_r43 (gcc-4.9.2) - не работает c -mcpu=cortex-m0 , не работает c -mcpu=cortex-m0plus
devkitARM_r44 (gcc-4.9.2) - не работает c -mcpu=cortex-m0 , не работает c -mcpu=cortex-m0plus
arm-kgp-eabi-gcc (gcc-6.0.0) - не работает c -mcpu=cortex-m0 , не работает c -mcpu=cortex-m0plus

-mtune=cortex-m0plus влияния не оказывает

проверить просто: если в дизассемблерном листинге появляется ересь вида
Код
000023c0 <____aeabi_idiv0_from_arm>:
    23c0:    e59fc000     ldr    ip, [pc]; 23c8 <____aeabi_idiv0_from_arm+0x8>
    23c4:    e12fff1c     bx    ip
    23c8:    000022f1     .word    0x000022f1

000023cc <____aeabi_uidiv_from_thumb>:
    23cc:    4778          bx    pc
    23ce:    46c0          nop        ; (mov r8, r8)
    23d0:    eaffff7e     b    21d0 <__aeabi_uidiv>
    ...

работать не будет
klen
это все интересно и с этим нужно разобратся.
я как раз допилил свой сдк еще и под М0, первая примитивная прграмка завелась на STM32F030
деление не втыкал, теперь посмотрю.

появилась в моей голове идея отдельные libgcc-таргеты в крмпиллере завести под нулевку и отельный под нуль с плюсом..... в них будет лежать эмуляция арифм. инструкций которые в проце нереализованы. впринципе все уже в транке gcc сделано... я расколю либы , посмотрим что получится.
klen
подтверждаю косяг. есть идеи как поправить - буду пробывать.
klen
починил. добавил таргет специально для m0, штатном варианте из транка компиллер знает что у процесора набор команд tрumb2, но линкеру передает либы с таргетам в которм инструкции tрumb1, что как мы убедились приводит к выташниваю декодера команд ЦПУ.... его реакция ожидаема - "моя твоя команды непонимать"...

использовались для теста значимые по ключики для нашего сдучая
-std=c++14 -D__CORTEX_M0__ -D__STM32F030F4P6__ -DSTM32F030x6 -D__STM32F0XX__ -DARM_MATH_CM0 -mcpu=cortex-m0 -mfloat-abi=soft -mthumb -Ofast -fomit-frame-pointer -finline-functions -ffunction-sections -fdata-sections -fgraphite -funroll-loops -flto=8 -ffat-lto-objects ...... и так дале проектоспецефичное
исходник для теста
CODE
#include "appdefs.h"

volatile int8_t a8 = 8;
volatile int8_t b8 = 3;

volatile int16_t a16 = 8;
volatile int16_t b16 = 3;

volatile int32_t a32 = 8;
volatile int32_t b32 = 3;

volatile int64_t a64 = 4000000000;
volatile int64_t b64 = 3;


int main(void)
{

while (1)
{
NOP();
NOP();
a8 = (a8 * b8) / ( a8 - b8 );
NOP();
a16 = (a16 * b16) / ( a16 - b16 );
NOP();
a32 = (a32 * b8) / ( a32 - b32 );
NOP();
a64 = (a64 * b64) / ( a64 - b64 );
NOP();
}
}

код из под компилятора кому интересно
CODE
int main(void)
{

while (1)
{
NOP();
8000366: 1c00 adds r0, r0, #0
NOP();
8000368: 1c00 adds r0, r0, #0
a8 = (a8 * b8) / ( a8 - b8 );
800036a: 465e mov r6, fp
800036c: 4a41 ldr r2, [pc, #260]; (8000474 <ResetHandler+0x3b4>)
800036e: 4c41 ldr r4, [pc, #260]; (8000474 <ResetHandler+0x3b4>)
8000370: 7830 ldrb r0, [r6, #0]
8000372: 7813 ldrb r3, [r2, #0]
8000374: 7837 ldrb r7, [r6, #0]
8000376: 7826 ldrb r6, [r4, #0]
8000378: b241 sxtb r1, r0
800037a: b27a sxtb r2, r7
800037c: b258 sxtb r0, r3
800037e: b273 sxtb r3, r6
8000380: 4348 muls r0, r1
8000382: 1ad1 subs r1, r2, r3
8000384: f000 f9e2 bl 800074c <__aeabi_idiv>
8000388: 465d mov r5, fp
800038a: b2c0 uxtb r0, r0
800038c: 7028 strb r0, [r5, #0]
NOP();
800038e: 1c00 adds r0, r0, #0
a16 = (a16 * b16) / ( a16 - b16 );
8000390: 4f39 ldr r7, [pc, #228]; (8000478 <ResetHandler+0x3b8>)
8000392: 4e3a ldr r6, [pc, #232]; (800047c <ResetHandler+0x3bc>)
8000394: 4938 ldr r1, [pc, #224]; (8000478 <ResetHandler+0x3b8>)
8000396: 4a39 ldr r2, [pc, #228]; (800047c <ResetHandler+0x3bc>)
8000398: 883c ldrh r4, [r7, #0]
800039a: 8833 ldrh r3, [r6, #0]
800039c: 880d ldrh r5, [r1, #0]
800039e: 8817 ldrh r7, [r2, #0]
80003a0: b224 sxth r4, r4
80003a2: b218 sxth r0, r3
80003a4: b22e sxth r6, r5
80003a6: b23b sxth r3, r7
80003a8: 1af1 subs r1, r6, r3
80003aa: 4360 muls r0, r4
80003ac: f000 f9ce bl 800074c <__aeabi_idiv>
80003b0: 4931 ldr r1, [pc, #196]; (8000478 <ResetHandler+0x3b8>)
80003b2: b280 uxth r0, r0
80003b4: 8008 strh r0, [r1, #0]
NOP();
80003b6: 1c00 adds r0, r0, #0
a32 = (a32 * b8) / ( a32 - b32 );
80003b8: 4642 mov r2, r8
80003ba: 4d2e ldr r5, [pc, #184]; (8000474 <ResetHandler+0x3b4>)
80003bc: 4e30 ldr r6, [pc, #192]; (8000480 <ResetHandler+0x3c0>)
80003be: 782f ldrb r7, [r5, #0]
80003c0: 6810 ldr r0, [r2, #0]
80003c2: 6814 ldr r4, [r2, #0]
80003c4: 6831 ldr r1, [r6, #0]
80003c6: b27b sxtb r3, r7
80003c8: 4358 muls r0, r3
80003ca: 1a61 subs r1, r4, r1
80003cc: f000 f9be bl 800074c <__aeabi_idiv>
80003d0: 4645 mov r5, r8
80003d2: 6028 str r0, [r5, #0]
NOP();
80003d4: 1c00 adds r0, r0, #0
a64 = (a64 * b64) / ( a64 - b64 );
80003d6: 4657 mov r7, sl
80003d8: 4648 mov r0, r9
80003da: 464c mov r4, r9
80003dc: 6841 ldr r1, [r0, #4]
80003de: 6800 ldr r0, [r0, #0]
80003e0: 683a ldr r2, [r7, #0]
80003e2: 687b ldr r3, [r7, #4]
80003e4: f000 fa38 bl 8000858 <__aeabi_lmul>
80003e8: 6826 ldr r6, [r4, #0]
80003ea: 6867 ldr r7, [r4, #4]
80003ec: 4655 mov r5, sl
80003ee: 0032 movs r2, r6
80003f0: 682c ldr r4, [r5, #0]
80003f2: 686d ldr r5, [r5, #4]
80003f4: 003b movs r3, r7
80003f6: 1b12 subs r2, r2, r4
80003f8: 41ab sbcs r3, r5
80003fa: f000 fa09 bl 8000810 <__aeabi_ldivmod>
80003fe: 464a mov r2, r9
8000400: 6010 str r0, [r2, #0]
8000402: 6051 str r1, [r2, #4]
NOP();
8000404: 1c00 adds r0, r0, #0
8000406: e03d b.n 8000484 <ResetHandler+0x3c4>


вот свежак с добавленным отдельным таргеом сортех-m0.
http://www.klen.org/Files/DevTools/x86_64-...03_CAMPANULA.7z
!!! ИСПРАВЛЕНО: архив похерен с связи с более свежей сборкой под темже именем, смотри следующее сообщение !!

есть еще возможность сделать отдельно еще для
cortex-m0.small-multiply
cortex-m0plus
cortex-m0plus.small-multiply

m0plus jn m0 по командам ничем не отличается - поэтому можно кормить также . отдельно заведено в связи с тем что разный конвеер и оптимизатор по разному планирует поток инструкций выжимая из онвеера скорость. код совместимый.

по ядрам cortex-m0.small-multiply и cortex-m0plus.small-multiply . это про то что есть модификация с вырезанным модулем умножения. цитата:
Цитата
Some configurations of the Cortex-M0 and Cortex-M1 come with a high latency
multiplier. Small multiplier means using add/sub/shift instructions to replace the mul
instruction for the MCU that has no fast multiplier.


под это ну уж совсем говноЦПУ я добавлю в сборку поддерку в следующий раз.
внимание!!! если собрать текущей сборкрй с ключиками cortex-m0 то нагенерятся умножения которых в цпу cortex-m0.small-multiply нет, и будет как облом. нада подождать до следующей сборки или отнести на помойку микросхемку.

to _3m
попробуье свежак с ключем -mcpu=cortex-m0, должно звзлететь. как сказал выше cortex-m0здгы протяну пожже.

решил отныне собирать компиллер с поддержкой русского языка, у кого линукс с русской локалью - будет матом ругатся а не по аглицки! это мои ответные НАТО санкции sm.gif
klen
раз уж пошла такая пьянка - разом решил протянуть и cortex-m0plus.
в предыдущем свежачке возможно есть траблы с GDB, архив отправлен в треш. актуален нижеприведенный урл.



http://klen.org/Files/DevTools/x86_64-kgp-...04_CAMPANULA.7z

стандартная просьба - те кто юзает мою сборку отпишитесь что все нормально со свеже добавленными m0 и m0plus. и не испорчено все остальное...

для сборка cortex-m0 и cortex-m0plus кода, необходимо воткнуть ключики -mcpu=cortex-m0 или -mcpu=cortex-m0plus соответственно, будет генерится специфичный для оных конвейеров код( набор команд один но конвейер в первом случае 3-ступенчатый во втром 2 ступенчатый, поэтому есть различия на выходе ) и притянутся правильные либы.

таргеты
cortex-m0.small-multiply
cortex-m0plus.small-multiply
протяну в следующий раз если будут сообщения что с cortex-m0/m0plus все сложилось хорошо.

извращенцы котрые кодят кортексики под масдаем есть? собирать для венды64 сборку?
Croman13n3c
Извращенцы есть, за билд для win64
adnega
Цитата(Croman13n3c @ Dec 7 2015, 08:26) *
Извращенцы есть, за билд для win64

+1
Все не получается переползти на линь.
demiurg_spb
Цитата(adnega @ Dec 7 2015, 10:37) *
+1

klen
свежак.

итак, нынче и далее протянуты следующие сорта таргетов для кортексиков
m0
m0plus
m1
m1.small-myltiply
m3
m4sf
m7sf
m7df

крайний в списке это m7 с FPU двдойной точности.

дл якаждого по отдельности все собрано отдельно
сорт таргет либы ( libgcc, libsupc++, libstdc++, libc, libm ) будут при линкове правильно выбиратся по результатам воткнутых ключей - Вам ничего делать не надо.
особо любопытным смотреть в
/arm-kgp-eabi/arm-kgp-eabi/lib/thumb/
/opt/arm-kgp-eabi/lib/gcc/arm-kgp-eabi/6.0.0/thumb/
там все видно как сложено по кучкам

например ключики -mthumb -mcpu=cortex-m0plus приведут к линковке либ для m0plus
а -mthumb -mcpu=cortex-m7 -mfpu=fpv5-sp-d16 -mfloat-abi=hard к линковке из папок ../m7sf собранных для cm7 c fpu одинарной точности
все автоматично и безгиморно... так мной задумано во всяком случае

www.klen.org/Files/DevTools/x86_64-kgp-linux-gnu/arm-kgp-eabi_@_x86_64-kgp-linux-gnu_20151209_HYPERICUM.7z

для ведроида соберу на днях и тоже выложу под этим номером и названием сборки.

Вопрос к коллегам. чето вштырило мне от PIC32MZ - это 200 мегагерцовый МИПС с ФПУ, собираюсь для него тоже сделать свежак с пристастием. есть москвичи с демоплатой на погонять с возвратом?
перед выкладыванием хоца потестить на всякий случай....
klen
все тоже самое для 64 битного масдая

http://www.klen.org/Files/DevTools/x86_64-...10_HYPERICUM.7z

просьба проверить и отпистся по результатам - мне неначем проверить.

продолжаем опрос, изварщенцы в квадрате есть? нужна сборка для 32 битного масдая?
demiurg_spb
Цитата(klen @ Dec 11 2015, 10:50) *
просьба проверить и отпистся по результатам - мне неначем проверить.

Чисто сишный проект для cm3 собрался нормально (-Os):
4.9.3 - 10356 байт
6.0.0 - 9716 байт

В железе пока не проверял.
Спасибо!

Может и для AVR под винду соберёте свежачёк?
А то новее 4.9.2 в сети нет готовых сборок...
Genadi Zawidowski
http://sourceforge.net/projects/mobileches...hots%20(Win32)/
avr-gcc-5.2.1_2015-08-18_mingw32
Применяю, работает.
demiurg_spb
Цитата(Genadi Zawidowski @ Dec 11 2015, 22:56) *
avr-gcc-5.2.1_2015-08-18_mingw32
Применяю, работает.
О! Я пропустил эту сборочку.
Спасибо! Протестируем...
RabidRabbit
Цитата(klen @ Dec 9 2015, 22:29) *
свежак. www.klen.org/Files/DevTools/x86_64-kgp-linux-gnu/arm-kgp-eabi_@_x86_64-kgp-linux-gnu_20151209_HYPERICUM.7z


Небольшой проект под ATSAMD21 собирается и работает. (ARM Cortex-M0+ r0p1).
ключи по рекомендациям -mcpu=cortex-m0plus -mfloat-abi=soft -mthumb -O2 -fomit-frame-pointer -finline-functions -ffunction-sections -fdata-sections -fgraphite -funroll-loops -flto=8 -ffat-lto-objects

Спасибо!
nanorobot
Цитата(klen @ Dec 11 2015, 12:50) *
все тоже самое для 64 битного масдая

http://www.klen.org/Files/DevTools/x86_64-...10_HYPERICUM.7z

просьба проверить и отпистся по результатам - мне неначем проверить.

продолжаем опрос, изварщенцы в квадрате есть? нужна сборка для 32 битного масдая?


Для 32 битовой Ubuntu существует сборка?
klen
Цитата(nanorobot @ Dec 25 2015, 23:16) *
Для 32 битовой Ubuntu существует сборка?

В жизни всякое бывает... А где такой нужно? Просто интересно.
Расскажите - соберу sm.gif
nanorobot
Цитата(klen @ Dec 29 2015, 21:18) *
В жизни всякое бывает... А где такой нужно? Просто интересно.
Расскажите - соберу sm.gif


первопричина данного желания рассосалась. тем не менее , благодарю
sherr
Цитата(klen @ Dec 29 2015, 19:18) *
В жизни всякое бывает... А где такой нужно? Просто интересно.
Расскажите - соберу sm.gif

Такой - в смысле 32-битный Убунту ? У меня вон дома 32-битный Дебиан 6 Squeeze, и я неоднократно спрашивал в теме, будут ли сборки под 32-бит Линукс (ARM & AVR)...
RabidRabbit
www.klen.org/Files/DevTools/x86_64-kgp-linux-gnu/arm-kgp-eabi_@_x86_64-kgp-linux-gnu_20151209_HYPERICUM.7z

таки не собирает кое-что:

CODE
vzaytsev@vzdeb8:~/work/autometer$ arm-kgp-eabi-g++ -Wall -fno-exceptions -fno-rtti -mcpu=cortex-m0plus -mfloat-abi=soft -mthumb -O2 -c trunk/src/ntc_def.cpp
trunk/src/ntc_def.cpp:19:3: internal compiler error: Недопустимая инструкция
{R2ADC(398.3700), -55}
^

Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.


кусок выхлопа cpp:
CODE
#pragma pack(push,1)
typedef struct
{

uint16_t valueADC;

int16_t valueT;
} STermistorRange;
#pragma pack(pop)





const STermistorRange g_tempRange[] =
{
{((uint16_t)(398.3700*4096.0/(398.3700 +(10.478)))), -55}
, {((uint16_t)(371.7150*4096.0/(371.7150 +(10.478)))), -54}
, {((uint16_t)(347.0050*4096.0/(347.0050 +(10.478)))), -53}
, {((uint16_t)(324.0850*4096.0/(324.0850 +(10.478)))), -52}



штатный (debian jessie) arm-none-eabi-gcc (4.8.4-1+11-1) 4.8.4 20141219 (release) компилирует без вопросов...
klen
свежак
www.klen.org/Files/DevTools/x86_64-kgp-linux-gnu/arm-kgp-eabi_@_x86_64-kgp-linux-gnu_20160109_NUPHAR.7z
RabidRabbit
с новым свежаком те же яйца (см. сообщение #1092 http://electronix.ru/forum/index.php?showt...&p=1394285)
klen
Цитата(RabidRabbit @ Jan 9 2016, 14:56) *
с новым свежаком те же яйца (см. сообщение #1092 http://electronix.ru/forum/index.php?showt...&p=1394285)


завтра соберу крайнюю релизную сборку, там должно все пережевывыть. проверим как раз.
klen
2_RabidRabbit

собрал релиз 5.3.0
есть мнение что эта мясорубка прокрутит мясо в фарш даже с костями! пробуйте

www.klen.org/Files/DevTools/x86_64-kgp-linux-gnu/arm-kgp-eabi_@_x86_64-kgp-linux-gnu_5.3.0_CARUM.7z
RabidRabbit
arm-kgp-eabi-g++ (Klen's GNU package (KGP) for x86_64-kgp-linux-gnu platform. << CARUM >>) 5.3.0

кости крутит, а вот будку с цепью не жуёт...

там же недопустимая инструкция и шлёт в bugs.html...

видимо, у меня код какой-то неправильный...
RabidRabbit
фигня какая-то.
взял binutils-2.25.tar.bz2 gcc-5.3.0.tar.bz2 newlib-2.2.0.tar.gz
кое-как собрал для --target=arm-none-eabi
хотя чё-то там в итоге make install не срослось, но arm-none-eabi-g++ в bin получился
vzaytsev@vzdeb8:~/x64/build/gcc-5.3.0$ arm-none-eabi-g++ --version
arm-none-eabi-g++ (GCC) 5.3.0

и оно собирает мои исходники sm.gif
klen
Цитата(RabidRabbit @ Jan 10 2016, 21:58) *
фигня какая-то.
взял binutils-2.25.tar.bz2 gcc-5.3.0.tar.bz2 newlib-2.2.0.tar.gz
кое-как собрал для --target=arm-none-eabi
хотя чё-то там в итоге make install не срослось, но arm-none-eabi-g++ в bin получился
vzaytsev@vzdeb8:~/x64/build/gcc-5.3.0$ arm-none-eabi-g++ --version
arm-none-eabi-g++ (GCC) 5.3.0

и оно собирает мои исходники sm.gif


Вы молодец. дело в том как собирать и компилятор и проект. я собираю компилятор с всяческими извещениями на тему выжать все по скорости.
выпадение компиллера и линкера в осадок очень сильно может зависеть от опция с которыми собирается проект и их соотношения с тем как собирались либы.
на счет будки с цепью. В чем проблема - не компилируется исходник или не линкуется?
если возможно попробуйте отделить косячный код и дать мне.
мне уже интересна причина, хочу поковыряться и понять.
RabidRabbit
короче я сам шляпа - дома Atom N2800 и падает, а на работе Core-i3 - и всё зашибизь. Видимо у Вас в бинарники какое-то последнее sse вкралось, которого нет в убогом атоме sm.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.