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

 
 
85 страниц V  « < 21 22 23 24 25 > »   
Reply to this topicStart new topic
> свежак KGP win32/arm/avr/mips/m68k, GNU tools chain
Genadi Zawidowsk...
сообщение May 19 2010, 08:36
Сообщение #331


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата(klen @ May 10 2010, 22:36) *
свежак:

для ARM
http://klen.org/Files/DevTools/kgp_arm_eabi_20100509.7z
наконецто решена проблема с увеличением кода при использовании операции деления для типа uint64_t (в код прилазила обработка исключений, разматывание стека даже)


Наконец-то в одном месте собрались Jtag-программатор, я и отлажтиваемое устройство...

Получаю от линкера
Код
undefined reference to `__aeabi_llsl'

- в коде в указанном месте сдвиг 64-х битной переменной влево.

Закоментировал.

Часть кода заработала. В целом проект не заработал (прпрывания не запустились, что-ли?).
Go to the top of the page
 
+Quote Post
klen
сообщение May 19 2010, 09:21
Сообщение #332


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

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



Цитата(Genadi Zawidowski @ May 19 2010, 12:36) *
Наконец-то в одном месте собрались Jtag-программатор, я и отлажтиваемое устройство...

Получаю от линкера
Код
undefined reference to `__aeabi_llsl'

- в коде в указанном месте сдвиг 64-х битной переменной влево.

Закоментировал.

Часть кода заработала. В целом проект не заработал (прпрывания не запустились, что-ли?).


че за процессор?
кусок кода который глюк производит с неразрешенной ссыдлкой. посмотрю. я на делениях только проверял.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение May 19 2010, 17:37
Сообщение #333


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



AT91SAM7S64, ARM mode, проект (tc1*.zip) я выкладывал.
Объём (от yagarto) стал меньше процента на 3-4.
Цитата
- в коде в указанном месте сдвиг 64-х битной переменной влево.

Код вот:

Код
void prog_dds1_ftw(const uint_least64_t * value, unsigned char freqpow, unsigned char ddsmult)
{
    uint_least64_t val;
    if (freqpow != 0)
    {
        val = * value << freqpow; // собственно эта строка
        value = & val;
    }


}


А что насчёт прерываний скажете? Похоже на то, что не возвращается или не входит в прерывание. Можете сказать, какие регистры надо сохранять? (у меня ассемблерный кусок обработчика такой):

Код
IRQHandler:

/* Save interrupt context on the stack to allow nesting */
        sub     lr, lr, #4
        stmfd   sp!, {lr}
        mrs     lr, SPSR
        stmfd   sp!, {r0, lr}

/* Write in the IVR to support Protect Mode */
        ldr     lr, =AT91C_BASE_AIC
        ldr     r0, [r14, #AIC_IVR]
        str     lr, [r14, #AIC_IVR]

/* Branch to interrupt handler in Supervisor mode */
        msr     CPSR_c, #ARM_MODE_SVC
        stmfd   sp!, {r1-r3, r4, r12, lr}
        mov     lr, pc
        bx      r0
        ldmia   sp!, {r1-r3, r4, r12, lr}
        msr     CPSR_c, #ARM_MODE_IRQ | I_BIT

/* Acknowledge interrupt */
        ldr     lr, =AT91C_BASE_AIC
        str     lr, [r14, #AIC_EOICR]

/* Restore interrupt context and branch back to calling code */
        ldmia   sp!, {r0, lr}
        msr     SPSR_cxsf, lr
        ldmia   sp!, {pc}^


Сообщение отредактировал Genadi Zawidowski - May 19 2010, 17:42
Go to the top of the page
 
+Quote Post
oll
сообщение May 21 2010, 06:42
Сообщение #334


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

Группа: Участник
Сообщений: 163
Регистрация: 10-10-05
Пользователь №: 9 463



2 klen а GCC для STM8 планов нет?
Go to the top of the page
 
+Quote Post
klen
сообщение May 21 2010, 09:51
Сообщение #335


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

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



2_Genadi Zawidowski

Код
void prog_dds1_ftw(const uint_least64_t * value, unsigned char freqpow, unsigned char ddsmult)
{
    uint_least64_t val;
    if (freqpow != 0)
    {
        val = * value << freqpow; // собственно эта строка
        value = & val;
    }


}


я проверил сдвиг на lpc2103 - сдвиг работает, и __aeabi_llsl не использует, покажите ключи компиллера котрыми исходник компиляте
c прерываниями разбирайтесь сами - компиллер тут не причем.
смотрим в вашу функцию
value = & val;
вы присваиваете константному указателю адресс локальной переменной размещенной на стеке, котрая скорее всего херится при выходе из функции.
по моему разумению это сразу две ошибки в одной строчеке

2_oll
да пока такая перспектива не просматриватся. а нада оно вообще? нужен ли вообще stm8?
Go to the top of the page
 
+Quote Post
oll
сообщение May 21 2010, 19:03
Сообщение #336


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

Группа: Участник
Сообщений: 163
Регистрация: 10-10-05
Пользователь №: 9 463



да пока такая перспектива не просматриватся. а нада оно вообще? нужен ли вообще stm8?
Извиняюсь что не в тему - поясню.
У нас тут такая бодяга с AVR - цены, например mega48 возросли в 3 раза ~2.75$. Ищу альтернативу. Мое мнение - STM8 подходящая замена AVRам (для 5-ти вольтовых устройств).
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение May 21 2010, 20:56
Сообщение #337


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



klen, я привёл кусок функции. Естественно, никаких возвратов указателей из функции не происходит.
Ключи компилятора в том проекте, что Вы уже один раз исследовали.

На всякий случай выделяю минимальный код:


Код
unsigned long long v;
unsigned char n;

int main(void)
{


        v <<= n;
        v >>= n;

        return 0;
}


Ключевм моментом являетмся неконстантный счётчик сдвигов.

Цитата
arm-kgp-eabi-gcc -x assembler-with-cpp -c -mcpu=arm7tdmi -g -gdwarf-2 crt_sam7s.s -o crt_sam7s.o
arm-kgp-eabi-gcc -c -mcpu=arm7tdmi -Os -gdwarf-2 -fomit-frame-pointer -Wall -Wstrict-prototypes -DNDEBUG=1 -MD -MP -MF .dep/main.o.d -I . -I.. main.c -o main.o
arm-kgp-eabi-gcc ./crt_sam7s.o ./main.o -mcpu=arm7tdmi -nostartfiles -T./sam7x64_rom.ld -Wl,-Map=tc1_rom.map,--cref,--no-warn-mismatch -lm -o tc1_rom.elf
./main.o: In function `main':
C:\user\test/main.c:9: undefined reference to `__aeabi_llsl'
C:\user\test/main.c:10: undefined reference to `__aeabi_llsr'
collect2: ld returned 1 exit status
make.EXE: *** [tc1_rom.elf] Error 1


Код
вы присваиваете константному указателю

Вобще-то указатель не константный, а указатель на константу...

Разница вот:

const char * cp;
и
char * const pc;

Сообщение отредактировал Genadi Zawidowski - May 21 2010, 21:28
Go to the top of the page
 
+Quote Post
klen
сообщение May 22 2010, 18:36
Сообщение #338


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

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



2_Genadi Zawidowski
я посмотрю в чем дело.
Go to the top of the page
 
+Quote Post
klen
сообщение May 24 2010, 09:19
Сообщение #339


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

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



Цитата(klen @ May 22 2010, 22:36) *
2_Genadi Zawidowski
я посмотрю в чем дело.

посмотрел, действительно ... наверно это я накосячил когда libgcc для ликвидации unwind. буду рыть. я троху изменил метод сборки libgcc скорее всего сдвиги копилятся но изза ошибки в скрипте они забылись прилинковатся к libgcc
Go to the top of the page
 
+Quote Post
Vasen
сообщение May 24 2010, 10:38
Сообщение #340


Участник
*

Группа: Участник
Сообщений: 74
Регистрация: 30-03-06
Пользователь №: 15 624



klen, спасибо Вам за сборку для arm.
А не имеется ли оной для Ubuntu?
Go to the top of the page
 
+Quote Post
klen
сообщение May 24 2010, 13:28
Сообщение #341


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

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



Цитата(Vasen @ May 24 2010, 14:38) *
klen, спасибо Вам за сборку для arm.
А не имеется ли оной для Ubuntu?

имеется
Go to the top of the page
 
+Quote Post
Vasen
сообщение May 24 2010, 17:57
Сообщение #342


Участник
*

Группа: Участник
Сообщений: 74
Регистрация: 30-03-06
Пользователь №: 15 624



Буду благодарен за ссылку на архив.
Спасибо.
Go to the top of the page
 
+Quote Post
klen
сообщение May 25 2010, 22:14
Сообщение #343


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

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



свежак для arm, я полагаю окончательно решен вопрос с ликвидацие unwind кода при делении uint64_t, и вообще с uint64_t, все должно быть хорошо.
http://klen.org/Files/DevTools/kgp_arm_eabi_20100525.7z

свежак для мипсов
http://klen.org/Files/DevTools/kgp_mips_elf_20100525.7z

свежак для авыэров
http://klen.org/Files/DevTools/kgp_avr_20100525.7z

свежак для mingw32
http://klen.org/Files/DevTools/kgp_mingw32_20100525.7z
суда помимо самого компиллера, runtime lib и win32 api lib я собрал и положил:
libglew32 - пригодится для программирования трехмерной графики на OpenGL
libelf - работа с ELF бинарниками
libpthreads - POSIX потоки лоя масдая
libftd2xx - работа с USB-моcтами FT2232/FT485/....
libexpat - работа с XML
libiconv,libcharset - i18
QT-4.7 не положил - зело жирная, не влезет smile.gif

2_Genadi Zawidowski
косяки которые Вы обраружили повидимуму ликвидировал, Ваш примерчик собирается, я его для опыта немного модифицировал - добавил деление
запускал на lpc2103 и stm32f103rbt6 - вычисления без ошибок
Код
volatile unsigned long long v;
volatile unsigned char n;

int main(void)
{
  v <<= n;
  v >>= n;
  v /= n;
  return 0;
}

вот выход:
Код
arm-kgp-eabi-gcc -x assembler-with-cpp -c -mcpu=arm7tdmi -g -gdwarf-2   crt_sam7s.s -o crt_sam7s.o
arm-kgp-eabi-gcc -c -mcpu=arm7tdmi -Os -gdwarf-2 -fomit-frame-pointer -Wall -Wstrict-prototypes  -DNDEBUG=1 -fdata-sections -ffunction-sections -MD -MP -MF .dep/main.o.d -I . -I.. main.c -o main.o
arm-kgp-eabi-gcc ./crt_sam7s.o ./main.o -mcpu=arm7tdmi -nostartfiles -T./sam7x64_rom.ld -Wl,-Map=tc1_rom.map,--cref,--no-warn-mismatch  -Wl,-gc-sections -lm  -o tc1_rom.elf
d:/kgp/kgp_arm_eabi/bin/../lib/gcc/arm-kgp-eabi/4.6.0/../../../../arm-kgp-eabi/bin/ld.exe: tc1_rom.elf: warning: allocated section `.data' not in segment
arm-kgp-eabi-size tc1_rom.elf
   text    data     bss     dec     hex filename
   1968      76    2224    4268    10ac tc1_rom.elf
arm-kgp-eabi-objcopy -O ihex  tc1_rom.elf tc1_rom.hex

а в чем прикол засовывания стеков в bss?


2_Vasen
сборка arm на x86_64-linux-gnu
компиллер http://klen.org/Files/DevTools/ubuntu64/kg...m_eabi.tar.lzma
архив с библами котрые потребуются компиллеру http://klen.org/Files/DevTools/ubuntu64/lib.tar.lzma
это както криво - пока я пакеты делать не собираюсь
Go to the top of the page
 
+Quote Post
ARV
сообщение May 26 2010, 11:46
Сообщение #344


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



я дико извиняюсь, уважаемый klen, но ваша сборка для AVR чем отличается от WinAVR-20100110 ? просто я никогда не следил за развитием версий и т.п., но раз все хвалят ваши сборки - хочется и мне попробовать smile.gif


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
klen
сообщение May 26 2010, 16:18
Сообщение #345


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

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



Цитата(ARV @ May 26 2010, 15:46) *
я дико извиняюсь, уважаемый klen, но ваша сборка для AVR чем отличается от WinAVR-20100110 ? просто я никогда не следил за развитием версий и т.п., но раз все хвалят ваши сборки - хочется и мне попробовать smile.gif


я дико извиняюсь, уважаемый ARV, но просто я никогда не следил за развитием WinAVR и т.п.
если бе3 шуток то наверно не лучше и не хуже, а ИНАЯ.
1. всегда собирается из SVN транк-ветки. я называю свою сборку 'свежак' потому что свежее trunk нет ничего по определению ( в эту свежесть входять естественно и самые свежие косяки )
2. собираю со всеми доступными фичами короые получается собрать и запустить( также если получается в проблемных случаях найти ошибки поравить/доделать). Ну например имеет ли winAVR поддержку оптимизаторов Graphite и LTO? в моих сброках они работают (ответ на вопрос о их полезности и умении ими воспользоватся для AVR неочевиден - нада пробывать, для армов видно покрайней мере что код изменяется при их применении )
3, avr-libc тоже самая свежая + мои собственные правки, обычно добавки новых устройств. Правильнее былобы напрямую добавлять свое творчество в репозиторий avr-libc.... но все как всегда откладывается на завтра...
4, при сборке я эксперементирую с ключами компиляции libgcc libc и тд в попытке выжать максимум из текущей реализации компиллера
5. может и хвалят мои сборки для армов, но про avr это Вам представляется подтвердить.

и так, я лично охарактирезовал это все так; WinAVR прочие - более стабильные, моя более интересная. Если вы дружите с асмом, хотите повыжимать из компиллера байты и проценты скорости, интересуетесь не только результатом но и процессом - моя сборка для ВАС, если вам нужен скомпилированный результат то наверно надо проверить какой подойдет. Лично мои проекты ессесено собраны моими сборками - работют в железе и не жужжат, оди такой вотовот пдымется в воздух на аппарате тежелее воздуха wink.gif железяка будет стоять в критическом месте, так что я как сапер в этом случае wink.gif.

ну и последнее - найдете косяг в кодогенерации и кому взывать о помощи? будите в багзилу писать.... или Эрику, через полгода может вселенная услышит. а в нашем ыварианте будем разбиратся - на форуме людей много умных, Толик Соколов aka aesok опятже в наших рядах(правда этот паразит кудато пропал и шифруетсоwink.gif мож женился? )

ну вот примерно как то татк
Go to the top of the page
 
+Quote Post

85 страниц V  « < 21 22 23 24 25 > » 
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


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


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