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

Это прекрасно!

Теперь avr-gcc ничем окромя даблов не уступает коммерческим компиляторам.

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


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

Ну уступает/не уступает — тема холивароопасная, но то, что сам GCC как таковой повернулся лицом к мелко-контроллерам с их нюансами — несомненно. Что и дало возможность для avr это реализовать.

Ещё бы fixed point из новых предложений к С допилили.

А то в расширениях gcc целочисленный _Complex давно работает, но я пока не знаю, куда прикрутить :-) А встроенная fixed-point арифметика была бы очень кстати.

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


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

Так вроде как fixed-point арифметика уже имеется. Я точно с чем-то подобным сталкивался с год назад или даже ранее.

Глянул: из хелпа, идущего с avr-gcc 4.5.1

А патч для зараждающейся поддержки Fixed-Point в avr-gcc идёт ИМХО со времён avr-gcc 4.4.3, возможно и ещё раньше.

6.14 Fixed-Point Types

As an extension, the GNU C compiler supports fixed-point types as defined in the N1169 draft of ISO/IEC DTR 18037.
Support for fixed-point types in GCC will evolve as the draft technical report changes.
Calling conventions for any target might also change. Not all targets support fixed-point types.

The fixed-point types are 
short _Fract, _Fract, long _Fract, long long _Fract, unsigned short _Fract, unsigned _Fract,
unsigned long _Fract, unsigned long long _Fract, _Sat short _Fract, _Sat _Fract, _Sat
long _Fract, _Sat long long _Fract, _Sat unsigned short _Fract, _Sat
unsigned _Fract, _Sat unsigned long _Fract, _Sat unsigned long long _Fract,
short _Accum, _Accum, long _Accum, long long _Accum, unsigned short _Accum,
unsigned _Accum, unsigned long _Accum, unsigned long long _Accum, _Sat short _Accum,
_Sat _Accum, _Sat long _Accum, _Sat long long _Accum, _Sat unsigned short _Accum,
_Sat unsigned _Accum, _Sat unsigned long _Accum, _Sat unsigned long long _Accum.

Fixed-point data values contain fractional and optional integral parts.
The format of fixed-point data varies and depends on the target machine.

Support for fixed-point types includes:

prefix and postfix increment and decrement operators (++, --)
unary arithmetic operators (+, -, !)
binary arithmetic operators (+, -, *, /)
binary shift operators (<<, >>)
relational operators (<, <=, >=, >)
equality operators (==, !=)
assignment operators (+=, -=, *=, /=, <<=, >>=)
conversions to and from integer, floating-point, or fixed-point types
Use a suffix in a fixed-point literal constant:

‘hr’ or ‘HR’ for short _Fract and _Sat short _Fract
‘r’ or ‘R’ for _Fract and _Sat _Fract
‘lr’ or ‘LR’ for long _Fract and _Sat long _Fract
‘llr’ or ‘LLR’ for long long _Fract and _Sat long long _Fract
‘uhr’ or ‘UHR’ for unsigned short _Fract and _Sat unsigned short _Fract
‘ur’ or ‘UR’ for unsigned _Fract and _Sat unsigned _Fract
‘ulr’ or ‘ULR’ for unsigned long _Fract and _Sat unsigned long _Fract
‘ullr’ or ‘ULLR’ for unsigned long long _Fract and _Sat unsigned long long _Fract
‘hk’ or ‘HK’ for short _Accum and _Sat short _Accum
‘k’ or ‘K’ for _Accum and _Sat _Accum
‘lk’ or ‘LK’ for long _Accum and _Sat long _Accum
‘llk’ or ‘LLK’ for long long _Accum and _Sat long long _Accum
‘uhk’ or ‘UHK’ for unsigned short _Accum and _Sat unsigned short _Accum
‘uk’ or ‘UK’ for unsigned _Accum and _Sat unsigned _Accum
‘ulk’ or ‘ULK’ for unsigned long _Accum and _Sat unsigned long _Accum
‘ullk’ or ‘ULLK’ for unsigned long long _Accum and _Sat unsigned long long _Accum
GCC support of fixed-point types as specified by the draft technical report is incomplete:

Pragmas to control overflow and rounding behaviors are not implemented.
Fixed-point types are supported by the DWARF2 debug information format.

Я не пробовал это использовать. Лишь глазом зацепился.

Про сравнения... Я только по функциональным возможностям сравнил - не более.

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


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

mstrict-X

По-правильному, так она вообще выключаться не должна, эта фичебага :) Этож додуматься: правильное распределение регистровых пар надо включить!

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


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

Так вроде как fixed-point арифметика уже имеется. Я точно с чем-то подобным сталкивался с год назад или даже ранее.

...

Я не пробовал это использовать. Лишь глазом зацепился.

Хм, надо глянуть опять. Я тогда попробовал что-то запустить, оно выругалось и я отстал.

 

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


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

я попробую собрать для авэрок..

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


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

Для win32 есть в теме на AVRfreaks по ссылке из моего сообщения

http://www.avrfreaks.net/index.php?name=PN...p=909086#909086

доберусь до win — попробую.

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


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

свежий OpenOCD собраный с поддержкой STLink-v1/2

win64:

http://klen.org/Files/DevTools/x86_64-kgp-...0120217.tar.bz2

 

linux64

http://klen.org/Files/DevTools/linux-x86_6...0120217.tar.bz2

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


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

То ли лыжи не едут... Распаковал линуксовый openocd в папку kgp, где у меня всё остальное, с сохранением структуры папок (bin, lib, share).

Пытаюсь запустить:

openocd -f interface/stlink-v1.cfg

ругается:

Can't find interface/stlink-v1.cfg

(kgp/bin - в PATH).

Ну, думаю, сейчас победю. Ставлю openocd из репозитория, и перезаписываю все файлы свежаком. Всё равно не находит! Что я делаю не так? (И как правильно?)

 

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


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

Ага, кажется понял, в чём дело. Пути поиска жёстко зашиты:

Debug: 12 1 configuration.c:45 add_script_search_dir(): adding /home/anton/.openocd
Debug: 13 1 configuration.c:45 add_script_search_dir(): adding /opt/arm-kgp-eabi/share/openocd/site
Debug: 14 1 configuration.c:45 add_script_search_dir(): adding /opt/arm-kgp-eabi/share/openocd/scripts

Перенёс скрипты в ~/.openocd, вроде полегчало, скрипты находятся. Но работать -- пока не работает.

Выдаёт попеременно то просто

Error: open failed

, то

libusb couldn't open USB device /dev/bus/usb/005/005: Permission denied.
libusb requires write access to USB device nodes.
Error: open failed

Правила для openocd в /etc/udev/rules.d я скопировал.

Пока застрял:)

 

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


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

Правила для openocd в /etc/udev/rules.d я скопировал.

Пока застрял:)

Судя по соообщениям - UDEV не дал шару на устройства. Мож он не запушен вовсе? Можно тупо проверить кто виновать - попробуте запустить openocd под рутом, если получится - c UDEV нада разобратся. если нет - то openocd (но у мея то отлаживаестя и жгет флеш.... :laughing: )

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


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

Под рутом не ругается, но всё равно не работает:)

Нашёл вот такую штуку: https://github.com/texane/stlink. Это gdb-сервер, умеющий работать с st-link v1 и st-link v2. Попробовал. Сервер вроде цепляется за отладчик, радостно рапортует о том, что программа загружена в память. Но при попытке продолжить выполнение ничего не происходит. Потом становится видно, что и не прошилось ничего. Видимо не зря на форумах пишут, что нормально она работает только с v2.

Зато имеющаяся в комплекте отдельная утилита программирования - таки работает! (Прошивает только bin-файлы, на остальных вариантах спотыкается)

Мне этого вполне достаточно:)

 

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


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

Там обещают __pgm, __pgmx и -mstrict-X (да и -maccumulate-args неплохо).
что-то я не понял: обещают или уже сделано? пробую сам - не выходит каменный цветок :( или я чего-то не понимаю?

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


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

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

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

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

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

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

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

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

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

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