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

 
 
85 страниц V  « < 57 58 59 60 61 > »   
Reply to this topicStart new topic
> свежак KGP win32/arm/avr/mips/m68k, GNU tools chain
baralgin
сообщение Feb 2 2013, 13:12
Сообщение #871


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 23-12-08
Из: Кишинёв
Пользователь №: 42 680



Извиняюсь, немного по другой теме наблюдение.
Касательно программной эмуляции плавучки (у меня cortex-m3) заметил "баг" в newlib::sqrtf:

sqrtf тянет за собой несколько функций double-арифметики (ddiv и тд). Следы приводят сюда:
http://sourceware.org/cgi-bin/cvsweb.cgi/s...amp;cvsroot=src
CODE
#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) обвёрнута в какой-то ужас sm.gif - мне он не нужен, поэтому я просто заменил <math.h> на свой "mysqrt.h" (другой математики я не использую):
CODE
#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.
Go to the top of the page
 
+Quote Post
Terminator
сообщение Feb 15 2013, 12:27
Сообщение #872


Местный
***

Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382



После масштабной доработки проекта, прошивка перестала запускаться. Виснет на этапе вызовов конструкторов.
Добавил болтливости в отладочный 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.gif

Контроллер sam7x, gcc из последнего свежака. Никаких сторонних либ. Стартап полностью свой.

Куда копать? smile3046.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 15 2013, 13:10
Сообщение #873


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Terminator @ Feb 15 2013, 14:27) *
Куда копать?
В сторону .map. А код, небось, в thumb-режиме? Младший бит используется как индикатор thumb, по нему команда BX переключает режимы. Так что я не вижу тут криминала, если только конструкторы вызываются через BX, а не через MOV в PC.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Terminator
сообщение Feb 16 2013, 09:56
Сообщение #874


Местный
***

Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382



Действительно. Позор мне twak.gif

Спасибо за разъяснения.
Go to the top of the page
 
+Quote Post
Terminator
сообщение Mar 17 2013, 05:14
Сообщение #875


Местный
***

Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382



Цитата(klen @ Dec 9 2012, 22:58) *
неа... нифига оно не чисто: log10 всякую мутату из newlib. так всегда бывает.... нафига ему у __impure_ptr ? чтоб сообщить о коде ошибки или еще чтото а оно нам нужно?
...

Цитата(Terminator @ Dec 10 2012, 18:02) *
Теперь log10 не требует errno. Спасибо.
...


Это было для lpc1768, там помогло.

Щас проект на атмеловском sam7x.
Возникла острая необходимость освободить как можно больше ОЗУ. Опять всплыла тема errno для log10 sad.gif
Больше 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)



Сообщение отредактировал Terminator - Mar 17 2013, 05:15
Go to the top of the page
 
+Quote Post
klen
сообщение Jun 23 2013, 04:01
Сообщение #876


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



после долгого залегания на дне всплываем!

свежак для 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. осцылограф и отладка отладчика sm.gif показали что скорость заливки в флеш таргета определяестя исключительно скоростью флеша таргета. на осцилограмме видно скорость SWD на порядки выше скорост прошивания.
4. По субъективным ощушениям в связи с высокой скоростью стало лучше отлаживатся - отладчик за "более сложные" точки останова в состоянии зацепится. после связки openocd + gdb это сильно ощушается.
5. имеется уже реализованный UART - можно обеспечит вывод через него отладочную инфу с таргета. я не использую эту возможность потому что делаю сразу USB композит на девайсе и через USB организую консоль. если случится девайс без вывода USB (что трудно представить) но эта фича будет незаменима.
6. ну и главное - поскольку проект открыйтый - можно порезвится sm.gif
а) добавил штырьки на отладчик и две команды - включить/выключить питание 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
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jun 23 2013, 21:13
Сообщение #877


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(klen @ Jun 23 2013, 07:01) *
если случится девайс без вывода USB (что трудно представить) но эта фича будет незаменима.

Отчего? GSM - модем, например. Вешалка, конечно, но в особо извращенных случаях... всё, молчу. sm.gif

Сообщение отредактировал _Pasha - Jun 23 2013, 21:42
Go to the top of the page
 
+Quote Post
klen
сообщение Jun 24 2013, 04:09
Сообщение #878


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Цитата(_Pasha @ Jun 24 2013, 01:13) *
Отчего? GSM - модем, например. Вешалка, конечно, но в особо извращенных случаях... всё, молчу. sm.gif

я имел ввиду мои таргеты, ну если GSM то конечно UART пригодится. но у всех их уже USB в комплекте тоже.
Go to the top of the page
 
+Quote Post
klen
сообщение Jul 28 2013, 15:32
Сообщение #879


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



свежак для arm хост x86_64
http://klen.org/Files/DevTools/linux-x86_6...30728-ARCHIM.7z

Go to the top of the page
 
+Quote Post
klen
сообщение Oct 6 2013, 17:48
Сообщение #880


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



свежак для arm хост x86_64
www.klen.org/Files/DevTools/linux-x86_64/arm-kgp-eabi-linux-x86_64-20131006-АНГКАЯНРАНАЙ.7z

а ваще ктонибудь использует? мож сизисов труд?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Oct 6 2013, 19:07
Сообщение #881


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Я в основном переключился на gcc-arm-embedded, но часто использую kgp как проверочный вариант.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
klen
сообщение Oct 6 2013, 20:25
Сообщение #882


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Цитата(AHTOXA @ Oct 6 2013, 23:07) *
Я в основном переключился на gcc-arm-embedded, но часто использую kgp как проверочный вариант.

в чем профицит? интересно для сравнения.
Go to the top of the page
 
+Quote Post
Terminator
сообщение Oct 7 2013, 03:44
Сообщение #883


Местный
***

Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382



я пользуюсь
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Oct 7 2013, 04:38
Сообщение #884


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(klen @ Oct 7 2013, 02:25) *
в чем профицит? интересно для сравнения.

Основное соображение такое: более широкая база пользователей => есть надежда на лучшую протестированность.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
klen
сообщение Oct 7 2013, 05:40
Сообщение #885


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Цитата(AHTOXA @ Oct 7 2013, 08:38) *
Основное соображение такое: более широкая база пользователей => есть надежда на лучшую протестированность.

на выходе различия существенны, их характер?
интересно, потому что я только свежаком проекты собираю.
Go to the top of the page
 
+Quote Post

85 страниц V  « < 57 58 59 60 61 > » 
Reply to this topicStart new topic
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th June 2025 - 17:05
Рейтинг@Mail.ru


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