baralgin 0 2 февраля, 2013 Опубликовано 2 февраля, 2013 · Жалоба Извиняюсь, немного по другой теме наблюдение. Касательно программной эмуляции плавучки (у меня cortex-m3) заметил "баг" в newlib::sqrtf: sqrtf тянет за собой несколько функций double-арифметики (ddiv и тд). Следы приводят сюда: http://sourceware.org/cgi-bin/cvsweb.cgi/s...amp;cvsroot=src #ifdef _IEEE_LIBM return __ieee754_sqrtf(x); #else float z; struct exception exc; z = __ieee754_sqrtf(x); if(_LIB_VERSION == _IEEE_ || isnan(x)) return z; if(x<(float)0.0) { /* sqrtf(negative) */ exc.type = DOMAIN; exc.name = "sqrtf"; exc.err = 0; exc.arg1 = exc.arg2 = (double)x; if (_LIB_VERSION == _SVID_) exc.retval = 0.0; else exc.retval = 0.0/0.0; if (_LIB_VERSION == _POSIX_) errno = EDOM; else if (!matherr(&exc)) { errno = EDOM; } if (exc.err != 0) errno = exc.err; return (float)exc.retval; } else return z; #endif Реализация корня __ieee754_sqrt(f) обвёрнута в какой-то ужас :) - мне он не нужен, поэтому я просто заменил <math.h> на свой "mysqrt.h" (другой математики я не использую): #ifndef GUARD_MYSQRT_H #define GUARD_MYSQRT_H #ifndef USE_IEEE_SQRT #include <math.h> #else // to call __ieee754_sqrt(f) directly from newlib extern "C" double __ieee754_sqrt(double x); extern "C" float __ieee754_sqrtf(float x); static inline double sqrt(double x) { return __ieee754_sqrt(x); } static inline float sqrtf(float x) { return __ieee754_sqrtf(x); } #endif #endif При использовании только float-математики размер проекта снизился на 2-3Кб (точнее уже не помню). Проверялось на самых последних свежаках kgp и последнем yagarto. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Terminator 0 15 февраля, 2013 Опубликовано 15 февраля, 2013 · Жалоба После масштабной доработки проекта, прошивка перестала запускаться. Виснет на этапе вызовов конструкторов. Добавил болтливости в отладочный UART и вот что получил: 0: Constr_Task started! 0: start 0x1323cc, end 0x1323dc 0: Constr: 0x11ab4d 0: Constr: 0x11cd85 0: Constr: 0x11f5d5 0: Constr: 0x125c05 0: Starting 0x11ab4d Как видно, адреса почему-то не выровнены, как так могло случиться? :cranky: Контроллер sam7x, gcc из последнего свежака. Никаких сторонних либ. Стартап полностью свой. Куда копать? :smile3046: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 15 февраля, 2013 Опубликовано 15 февраля, 2013 · Жалоба Куда копать?В сторону .map. А код, небось, в thumb-режиме? Младший бит используется как индикатор thumb, по нему команда BX переключает режимы. Так что я не вижу тут криминала, если только конструкторы вызываются через BX, а не через MOV в PC. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Terminator 0 16 февраля, 2013 Опубликовано 16 февраля, 2013 · Жалоба Действительно. Позор мне :twak: Спасибо за разъяснения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Terminator 0 17 марта, 2013 Опубликовано 17 марта, 2013 (изменено) · Жалоба неа... нифига оно не чисто: log10 всякую мутату из newlib. так всегда бывает.... нафига ему у __impure_ptr ? чтоб сообщить о коде ошибки или еще чтото а оно нам нужно? ... Теперь log10 не требует errno. Спасибо. ... Это было для lpc1768, там помогло. Щас проект на атмеловском sam7x. Возникла острая необходимость освободить как можно больше ОЗУ. Опять всплыла тема errno для log10 :( Больше 1к в трубу. Кусок map файла: /usr/local/arm/bin/../lib/gcc/arm-kgp-eabi/4.8.0/../../../../arm-kgp-eabi/lib/thumb/libm.a(lib_a-sf_round.o) obj/common/OS/common.o (roundf) /usr/local/arm/bin/../lib/gcc/arm-kgp-eabi/4.8.0/../../../../arm-kgp-eabi/lib/thumb/libm.a(lib_a-wf_log10.o) obj/cpu/param.o (log10f) /usr/local/arm/bin/../lib/gcc/arm-kgp-eabi/4.8.0/../../../../arm-kgp-eabi/lib/thumb/libm.a(lib_a-ef_log10.o) /usr/local/arm/bin/../lib/gcc/arm-kgp-eabi/4.8.0/../../../../arm-kgp-eabi/lib/thumb/libm.a(lib_a-wf_log10.o) (__ieee754_log10f) /usr/local/arm/bin/../lib/gcc/arm-kgp-eabi/4.8.0/../../../../arm-kgp-eabi/lib/thumb/libm.a(lib_a-ef_log.o) /usr/local/arm/bin/../lib/gcc/arm-kgp-eabi/4.8.0/../../../../arm-kgp-eabi/lib/thumb/libm.a(lib_a-ef_log10.o) (__ieee754_logf) ... /usr/local/arm/bin/../lib/gcc/arm-kgp-eabi/4.8.0/../../../../arm-kgp-eabi/lib/thumb/libc.a(lib_a-errno.o) /usr/local/arm/bin/../lib/gcc/arm-kgp-eabi/4.8.0/../../../../arm-kgp-eabi/lib/thumb/libm.a(lib_a-wf_log10.o) (__errno) /usr/local/arm/bin/../lib/gcc/arm-kgp-eabi/4.8.0/../../../../arm-kgp-eabi/lib/thumb/libc.a(lib_a-impure.o) /usr/local/arm/bin/../lib/gcc/arm-kgp-eabi/4.8.0/../../../../arm-kgp-eabi/lib/thumb/libc.a(lib_a-errno.o) (_impure_ptr) Изменено 17 марта, 2013 пользователем Terminator Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 23 июня, 2013 Опубликовано 23 июня, 2013 · Жалоба после долгого залегания на дне всплываем! свежак для ARM . хост linux x86_64 http://klen.org/Files/DevTools/linux-x86_6..._64-20130623.7z сильно вштырило от прочтения судового дневника Федора Конюхова (http://www.konyukhov.ru/) который Он вел при одиночной кругосветке в Северном море - Antarctica Cup Race Track 2008 . Оказывается один человек может по неделе и более не спать! практически не есть! управлятся с 30 метровой океанской яхтой имеющей 750м2 парусного вооружения. в это трудно поверить но это факт. Данной сборке я дал имя этого отважного человеа , что можно увидеть по ключикам -v. теперь компиллер будет иметь ветку 4.9 транка некоторые соображения ипредложения: после расковыривания проекта отладчика BlackMagic, переделки прошивки и изготовленя тестовых платок отладчика полностью перешел на новый отладчик (на фотке отладчик слева , справа таргет) мне понравилось 1. Хорошо написанный GDB сервер который крутится на микроконтролере отладчика. причем писал граматный чел - все канонично без костыликов. 2. реализован интерфейс по SWD и JTAG. с момента его изготовления пробывал для проверки JTAG, с тех пор пользуюсь только SWD 3. осцылограф и отладка отладчика :) показали что скорость заливки в флеш таргета определяестя исключительно скоростью флеша таргета. на осцилограмме видно скорость SWD на порядки выше скорост прошивания. 4. По субъективным ощушениям в связи с высокой скоростью стало лучше отлаживатся - отладчик за "более сложные" точки останова в состоянии зацепится. после связки openocd + gdb это сильно ощушается. 5. имеется уже реализованный UART - можно обеспечит вывод через него отладочную инфу с таргета. я не использую эту возможность потому что делаю сразу USB композит на девайсе и через USB организую консоль. если случится девайс без вывода USB (что трудно представить) но эта фича будет незаменима. 6. ну и главное - поскольку проект открыйтый - можно порезвится :) а) добавил штырьки на отладчик и две команды - включить/выключить питание USB_VBUS и +3,3v. это позволит питать маленькие девайсы от самого отладчика (gdb) target extended-remote /dev/ttyACM0 Remote debugging using /dev/ttyACM0 (gdb) mon help General commands: version -- Display firmware version info help -- Display help for monitor commands jtag_scan -- Scan JTAG chain for devices swdp_scan -- Scan SW-DP for devices targets -- Display list of available targets morse -- Display morse error message connect_srst -- Configure connect under SRST: (enable|disable) ldo -- Power 3.3v output: (enable|disable) usb_vbus -- Power USB_VBUS(5v) output: (enable|disable) traceswo -- Start trace capture б) добавил на плату 4 вывода для заводки на отладчик аналоговых сигналов на АЦП + вывода сигналов с ЦАП + 8 линий GPIO(на фотке виден ряд из 8 PLC2.54 штырьков) последний пункт - хочется сделать не просто отладчик а более умное устрйство. в USB композит отладчика доюавить интерфейс аналогового и цифрового обмена с таргетом. на стороне хоста по мимо собсно отладки через отладчик еще писать и читать в этот интерфейс. с помощью программы на хосте эмулировать например объект управления отлаживаемого устойства. К примеру Вы пишете прошивку для контроллера серво привода - но сервопривод на полигоне, размером с грузовик .... а отлаживатся хочется дома или в шезлонге на берегу речки. в таком случае необходимо будет только на хосте написть прогу реализующую динамическою модель сервопривода и замкнуть входы и выходы цепи обратной связи через отладчик ( GPIO/ЦАП/АЦП.UART ). Я планирую на стороне хоста сделать микрофреймворк который позволит на Lua быстро создавать эмуляторы того к чему девайс будет подключен в реальности. в связи описанным забил на OpenOCD Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 23 июня, 2013 Опубликовано 23 июня, 2013 (изменено) · Жалоба если случится девайс без вывода USB (что трудно представить) но эта фича будет незаменима. Отчего? GSM - модем, например. Вешалка, конечно, но в особо извращенных случаях... всё, молчу. :) Изменено 23 июня, 2013 пользователем _Pasha Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 24 июня, 2013 Опубликовано 24 июня, 2013 · Жалоба Отчего? GSM - модем, например. Вешалка, конечно, но в особо извращенных случаях... всё, молчу. :) я имел ввиду мои таргеты, ну если GSM то конечно UART пригодится. но у всех их уже USB в комплекте тоже. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 28 июля, 2013 Опубликовано 28 июля, 2013 · Жалоба свежак для arm хост x86_64 http://klen.org/Files/DevTools/linux-x86_6...30728-ARCHIM.7z Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 6 октября, 2013 Опубликовано 6 октября, 2013 · Жалоба свежак для arm хост x86_64 www.klen.org/Files/DevTools/linux-x86_64/arm-kgp-eabi-linux-x86_64-20131006-АНГКАЯНРАНАЙ.7z а ваще ктонибудь использует? мож сизисов труд? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 6 октября, 2013 Опубликовано 6 октября, 2013 · Жалоба Я в основном переключился на gcc-arm-embedded, но часто использую kgp как проверочный вариант. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 6 октября, 2013 Опубликовано 6 октября, 2013 · Жалоба Я в основном переключился на gcc-arm-embedded, но часто использую kgp как проверочный вариант. в чем профицит? интересно для сравнения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Terminator 0 7 октября, 2013 Опубликовано 7 октября, 2013 · Жалоба я пользуюсь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 7 октября, 2013 Опубликовано 7 октября, 2013 · Жалоба в чем профицит? интересно для сравнения. Основное соображение такое: более широкая база пользователей => есть надежда на лучшую протестированность. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 7 октября, 2013 Опубликовано 7 октября, 2013 · Жалоба Основное соображение такое: более широкая база пользователей => есть надежда на лучшую протестированность. на выходе различия существенны, их характер? интересно, потому что я только свежаком проекты собираю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться