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

 
 
85 страниц V  « < 4 5 6 7 8 > »   
Reply to this topicStart new topic
> свежак KGP win32/arm/avr/mips/m68k, GNU tools chain
AHTOXA
сообщение Nov 12 2008, 19:34
Сообщение #76


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

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



Цитата(klen @ Nov 13 2008, 00:13) *
Код
arm-kgp-elf-objcopy -O elf32-littlearm -S ../../out/image.elf ../../out/image.bin

Так bin получается маленький, но он получается не bin а elf sad.gif

Пока выкрутился так:
Код
$(OBJCOPY) -O binary -j .text -S $(ELF) $(BIN)


Светодиод моргает! smile.gif
Но это конечно не дело...


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Rst7
сообщение Nov 13 2008, 06:49
Сообщение #77


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата(klen @ Nov 11 2008, 20:28) *
Свежак AVR
http://klen.org/Files/DevTools/kgp_avr-bu2...avrlibc1.6.2.7z
компиллер теперь оптимизирует битовые сдвиги на предмен использования кинструкции swap, спасибо aesok


Решил я опять помучать ГЦЦ. Вытащил по ссылке, начал пробовать. Появилась пара вопросов. Первый:

Код
test.c:

typedef unsigned char UREG;
typedef signed char REG;


static void _netw_memcpy(char *d, char *s, UREG l);

void netw_memcpy(void *d, void *s, UREG l)
{
  _netw_memcpy((char*)d,(char*)s,l);
}

static void _netw_memcpy(char *d, char *s, UREG l)
{
  char c;
  if (!l) return;
  do
  {
    c=*s++;
    *d++=c;
  }
  while(--l);
}


после gcc -O9 -S -mmcu=atmega168 test.c

Код
    .file    "test.c"
__SREG__ = 0x3f
__SP_H__ = 0x3e
__SP_L__ = 0x3d
__tmp_reg__ = 0
__zero_reg__ = 1
    .global __do_copy_data
    .global __do_clear_bss
    .text
.global    netw_memcpy
    .type    netw_memcpy, @function
netw_memcpy:
    push r16
    push r17
    push r28
    push r29
/* prologue: function */
/* frame size = 0 */
    tst r20
    breq .L4
    ldi r18,lo8(0)
    ldi r19,hi8(0)
    subi r20,lo8(-(-1))
    mov r16,r20
    ldi r17,lo8(0)
    movw r28,r16
    adiw r28,1
.L3:
    movw r30,r24
    add r30,r18
    adc r31,r19
    movw r26,r22
    add r26,r18
    adc r27,r19
    ld r21,X
    st Z,r21
    subi r18,lo8(-(1))
    sbci r19,hi8(-(1))
    cp r18,r28
    cpc r19,r29
    brne .L3
.L4:
/* epilogue start */
    pop r29
    pop r28
    pop r17
    pop r16
    ret
    .size    netw_memcpy, .-netw_memcpy


Как-то IAR с этим справляется на ура:
Код
        RSEG CODE:CODE:NOROOT(1)
//    8 __x_z void netw_memcpy(void *d, void *s, UREG l)
netw_memcpy:
//    9 {
//   10   _netw_memcpy((char*)d,(char*)s,l);
        REQUIRE _netw_memcpy
       ;               // Fall through to label _netw_memcpy
//   11 }
//   12

        RSEG CODE:CODE:NOROOT(1)
//   13 static __x_z void _netw_memcpy(char *d, char *s, UREG l)
_netw_memcpy:
//   14 {
//   15   char c;
//   16   if (!l) return;
        TST     R16
        BREQ    ??_netw_memcpy_0
//   17   do
//   18   {
//   19     c=*s++;
??_netw_memcpy_1:
        LD      R17, Z+
//   20     *d++=c;
        ST      X+, R17
//   21   }
//   22   while(--l);
        DEC     R16
        BRNE    ??_netw_memcpy_1
??_netw_memcpy_0:
        RET
//   23 }


Вот и вопрос, ничего там в оптимизаторе случайно не сломали? А то что-то совсем мрачно. И вроде не было такого.

Теперь вопрос номер два. Сунул ему более глобальный файл. Получил вот такое
Код
F:\GCC\kgp_avr\avr-kgp-elf\bin>gcc -O9 -S network.c -mmcu=atmega168
network.c: In function 'INT_ETH_PROCESS_PKT2':
network.c:810: error: unable to find a register to spill in class 'POINTER_REGS'
network.c:810: error: this is the insn:
(insn 3268 2214 3269 284 network.c:88 (set (mem/c:QI (plus:HI (reg/f:HI 28 r28)
                (const_int 24 [0x18])) [27 S1 A8])
        (reg:QI 30 r30)) 4 {*movqi} (nil))
network.c:810: internal compiler error: in spill_failure, at reload1.c:2093
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.

F:\GCC\kgp_avr\avr-kgp-elf\bin>


Баг-репорт отправлять прямо туда или Вам?


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
klen
сообщение Nov 13 2008, 09:15
Сообщение #78


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

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



1. чтото мне тож это не нравица, есть о чем подумать
2. -O9 всетаки нет такого уровня оптимизации, поменяйте на 0,1,2,3,s. должен пережевать исходник.
3. ветка 4.4 нестабильная, вылазит гадость, болше чем из стабильных.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Nov 13 2008, 09:22
Сообщение #79


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
-O9 всетаки нет такого уровня оптимизации, поменяйте на 0,1,2,3,s. должен пережевать исходник.


-O3 тоже фаталити. То с девяткой я погорячился (пользуюсь то IAR'ом)


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
klen
сообщение Nov 13 2008, 09:46
Сообщение #80


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

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



Цитата(Rst7 @ Nov 13 2008, 12:22) *
-O3 тоже фаталити. То с девяткой я погорячился (пользуюсь то IAR'ом)

кусок кода который роняет компиллер можете дать?
Go to the top of the page
 
+Quote Post
Rst7
сообщение Nov 13 2008, 10:02
Сообщение #81


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Там почти что одна огромная функция. Набитая циклами, кейсами, goto и прочим. В личку могу дать.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
klen
сообщение Nov 13 2008, 10:03
Сообщение #82


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

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



Цитата(Rst7 @ Nov 13 2008, 13:02) *
Там почти что одна огромная функция. Набитая циклами, кейсами, goto и прочим. В личку могу дать.

давайте
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 13 2008, 10:09
Сообщение #83


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

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



А мне что-нить подскажете? smile.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Nov 13 2008, 11:38
Сообщение #84


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(klen @ Nov 13 2008, 12:15) *
1. чтото мне тож это не нравица, есть о чем подумать
Да и раньше было не сахар (я тут писал об оптимизации скорости вывода на дисплей).
Таким макаром циклы реализовывать это надо уметь.
Самое обидное, что ничего в этом направлении не меняется уже давно...


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Rst7
сообщение Nov 13 2008, 11:51
Сообщение #85


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
давайте


Могу, кстати, еще в досыл дать иаровский листинг, дабы было видно, куда стремиться wink.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 13 2008, 19:44
Сообщение #86


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

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



Цитата(AHTOXA @ Nov 13 2008, 16:09) *
А мне что-нить подскажете? smile.gif


В общем, сделал пока так. Сравнил elf-ы, производимые arm-kgp-elf- и arm-none-eabi-, нашёл, что в arm-kgp-elf- есть "лишняя" секция .eh_frame. И скомандовал objcopy выкинуть эту секцию при формировании bin-файла. bin стал получаться нормального размера, светодиод мигает.
(Напомню, я пытаюсь работать с arm-kgp-elf- и stm32)
Я правильно сделал?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Petka
сообщение Nov 13 2008, 22:59
Сообщение #87


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

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(klen @ Nov 6 2008, 16:12) *
кто нибудь использует bigendian, если да то где и в чем.

XScale IXP4xx
Go to the top of the page
 
+Quote Post
klen
сообщение Nov 14 2008, 06:52
Сообщение #88


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

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



Цитата(AHTOXA @ Nov 13 2008, 22:44) *
В общем, сделал пока так. Сравнил elf-ы, производимые arm-kgp-elf- и arm-none-eabi-, нашёл, что в arm-kgp-elf- есть "лишняя" секция .eh_frame. И скомандовал objcopy выкинуть эту секцию при формировании bin-файла. bin стал получаться нормального размера, светодиод мигает.
(Напомню, я пытаюсь работать с arm-kgp-elf- и stm32)
Я правильно сделал?


я также делаю, тока по другому
.eh_frame - секция исполняемого кода, содержит код относящийся к механизму обработки исключений, при компиляции языка С механизм исключения отсутствует, поэтому этот код ессесено не нужен. Текущее состояние компиллера таково что без разбора сует эту секцию всегда независимо от языка с которого компиляется исходник. Я использую С для армов, соответственно код этой мертвой секции тока бесполезна использует флеш. можно удалить ее как Вы предлагаете strip --remove-section=".eh_frame" , но проще ее просто не пропустить на выход линкера прописав в скрипте линкера :

SECTIONS
{
.......................
.......................

/DISCARD/ : /*секцию исключений ф топку*/
{
*(.eh_frame)
}

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

}

Если вы умудряетесь использовать C++ (я это делал тока для тестирования, кстата вшивалось в lpc2103? шмешно, правдв?) и возможно используете исключения то эту секцию удалять нельзя. Я даже боюсь предположить что будет если кинуть ексепшен smile.gif если соберется проект.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 14 2008, 19:44
Сообщение #89


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

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



Цитата(klen @ Nov 14 2008, 12:52) *
я также делаю, тока по другому
.eh_frame - секция исполняемого кода, содержит код относящийся к механизму обработки исключений
Теперь стало понятнее. Указал линкеру, что эту секцию надо поместить в ROM:
Код
...
    *(.text)        /* Program code */
    *(.eh_frame)    /* exceptions */
    *(.rodata)      /* Read only data */
    } >rom

, всё стало нормально без выкидывания. Пусть будет, cpp я использовать собираюсь (scmRtos), правда, без exceptions наверное smile.gif
Цитата
Если вы умудряетесь использовать C++ (я это делал тока для тестирования, кстата вшивалось в lpc2103? шмешно, правдв?)

Тут люди в AVR-ках его используют, и ничего, нормуль:-)
Цитата
если соберется проект.

А что, есть сомнения? Вообще, что посоветуете использовать для cortex-m3, arm-kgp-elf- или arm-none-eabi- из Sourcery G++ ?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
klen
сообщение Nov 15 2008, 08:03
Сообщение #90


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

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



>А что, есть сомнения?

есть сомнения в целесообразности

>Вообще, что посоветуете использовать для cortex-m3, arm-kgp-elf- или arm-none-eabi- из Sourcery G+

выбери то что меньше глючить и дает лучший код
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 10:55
Рейтинг@Mail.ru


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