AVR-GCC - Page 3

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Russian to

Threaded View
Re: AVR-GCC
Hello, Alexey!

 AVB>>> Виденные мною компиляторы
 YK>> Какие именно компиляторы ты видел?

 AV> Microchip C18, IAREW18 - точно обнуляют, про хайтек не уверен, но
 AV> кажется тоже.

В Хайтече: persistant  - и уже никто никого не обнуляет.


With best regards, Alex Torres.
2:461/28, E-mail: snipped-for-privacy@yahoo.com
http://altor.sytes.net



AVR-GCC
Hello Alexey.

21 Apr 05 21:22, you wrote to Yuriy K:

 AB>>>> То есть? Ты используешь свой стартап?
 AM>>>     Да.
 YK>> Зачем?
 AB> А как еще угадать, например, причину ресета процессора

У AVR есть регистр, откуда можно прочитать причину ресета.

 AB> и дальнейшие
 AB> действия контроллера, если вся помять очищена и проинициализирована?

Alexey


AVR-GCC
Привет Yuriy!

21 Apr 05 19:28, Yuriy K писал Alex Mogilnikov:

 AB>>> То есть? Ты используешь свой стартап?

 AM>>     Да.

 YK> Зачем?

    Почти всегда мне там требуется инициализировать периферию. Иногда там же
требуется инициализировать ядро ОС.

Всего наилучшего,                                 [Team PCAD 2000]
Алексей М.
... Западно-уральское региональное общество добровольных учредителей.

AVR-GCC
Hello Alex.

22 Apr 05 13:13, you wrote to Yuriy K:

 AB>>>> То есть? Ты используешь свой стартап?
 AM>>>     Да.
 YK>> Зачем?
 AM>     Почти всегда мне там требуется инициализировать периферию. Иногда
 AM> там же требуется инициализировать ядро ОС.

Запихни свою функцию в один из сегментов: .init1/.init3/.init5/.init7/.init8
(только naked её)

Скрипт линкера:
  /* Internal text space or external memory */
  .text :
  {
    *(.vectors)
     __ctors_start = . ;
     *(.ctors)
     __ctors_end = . ;
     __dtors_start = . ;
     *(.dtors)
     __dtors_end = . ;
    *(.progmem.gcc*)
    *(.progmem*)
    . = ALIGN(2);
    *(.init0)  /* Start here after reset.  */
    *(.init1)
    *(.init2)  /* Clear __zero_reg__, set up stack pointer.  */
    *(.init3)
    *(.init4)  /* Initialize data and BSS.  */
    *(.init5)
    *(.init6)  /* C++ constructors.  */
    *(.init7)
    *(.init8)
    *(.init9)  /* Call main().  */
    *(.text)
    . = ALIGN(2);
    *(.text.*)
    . = ALIGN(2);
    *(.fini9)  /* _exit() starts here.  */
    *(.fini8)
    *(.fini7)
    *(.fini6)  /* C++ destructors.  */
    *(.fini5)
    *(.fini4)
    *(.fini3)
    *(.fini2)
    *(.fini1)
    *(.fini0)  /* Infinite loop after program termination.  */
     _etext = . ;
  }  > text


Alexey


AVR-GCC
Привет Alexey!

22 Apr 05 11:55, Alexey Boyko писал Alex Mogilnikov:

 AM>>     Почти всегда мне там требуется инициализировать периферию.
 AM>> Иногда там же требуется инициализировать ядро ОС.

 AB> Запихни свою функцию в один из сегментов:
 AB> .init1/.init3/.init5/.init7/.init8 (только naked её)

    Hа такие кусочки библиотечный стартап стал разбит относительно недавно.
Когда я начинал свои проекты, библиотечный стартап был одной секцией .init и
вставить что-то свое в его середину было невозможно. Это, кстати, по поводу
постоянного зуда что-либо поменять у авторов avr-libc. Если бы я использовал
библиотечный стартап, с новой версией библиотеки проекты перестали бы
собираться, ибо в линкерном скрипте никаких .init1 - .init8 нет, а есть просто
.init. То, что за сравнительно короткое время эта библиотека уже не первый раз
претерпевает реорганизацию с потерей совместимости с предыдущими версиями,
отбивает всякое желание ей пользоватсья. Благо, проекты для avr небольшие. У
меня они типично линкуются с -nostartfiles -nostdlibs.

    Кстати, когда-то давно в этой же эхе мне кто-то говорил, что типичным
является как раз писать свой стартап под свою аппаратную платформу, что я с тех
пор и делаю.

Всего наилучшего,                                 [Team PCAD 2000]
Алексей М.
... Северо-Кавказская межрегиональная ассоциация анонимных соискателей.

AVR-GCC
Hello Alex.

21 Apr 05 08:32, you wrote to me:

 AB>> Чего вы выдумываете?
 AM>     Мы ничего не выдумываем. Вот результат компиляции пустого файла:

А, вот где вы нашли такое.
Сами функции __do_copy_data/__do_clear_bss находятся в библиотеке libgcc.a

вот еще из исходников gcc:
/* Outputs some appropriate text to go at the start of an assembler
   file.  */

static void
avr_file_start (void)
{
  if (avr_asm_only_p)
    error ("MCU `%s' supported for assembler only", avr_mcu_name);

  default_file_start ();

  fprintf (asm_out_file, "\t.arch %s\n", avr_mcu_name);
  fputs ("__SREG__ = 0x3f\n"
         "__SP_H__ = 0x3e\n"
         "__SP_L__ = 0x3d\n", asm_out_file);

  fputs ("__tmp_reg__ = 0\n"
         "__zero_reg__ = 1\n", asm_out_file);

  /* FIXME: output these only if there is anything in the .data / .bss
     sections - some code size could be saved by not linking in the
     initialization code from libgcc if one or both sections are empty.  */
  fputs ("\t.global __do_copy_data\n", asm_out_file);
  fputs ("\t.global __do_clear_bss\n", asm_out_file);

  commands_in_file = 0;
  commands_in_prologues = 0;
  commands_in_epilogues = 0;
}

В общем, я тоже не понял. Ведь код копирования есть в avr-libc-шном стартапе.
Может готовят какую-то модификацию avr-gcc. (В gcc-3.1 - такого не было)

 AB>>  Это просто метки в стартапе (gcrt1.S):
 AM>     Hе знаю. В моих стартапах таких меток нет, а "стандартными" я не
 AM> пользуюсь. Для чего компилятор включает эти объявления в каждый файл,
 AM> для меня загадка.

 AB>> То есть? Ты используешь свой стартап?
 AM>     Да.

А почему?

Alexey


AVR-GCC
Привет Alexey!

22 Apr 05 10:23, Alexey Boyko писал Alex Mogilnikov:

 AB>>> То есть? Ты используешь свой стартап?
 AM>>     Да.

 AB> А почему?

    Конкретно для сабжа? Когда-то делал свой стартап например из-за
особенностей организации внешней памяти (надо было что-то выставить на порт до
начала работы с ОЗУ). Hаверное еще причины были, сейчас не помню. Просто с тех
пор в сопровождаемых мной проектах так "юзерские" стартапы и идут. И вот
"чужие" проекты принимаю - там тоже свои стартапы. Специально не интересовался
почему.

Всего наилучшего,                                 [Team PCAD 2000]
Алексей М.
... Пирожок сырой с сыром.

Site Timeline