Перейти к содержанию
    

Konqere

Участник
  • Постов

    17
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Konqere


  1. Сергей Вам говорит не о "инициализации регистров процессора", а о инициализации "С, С++ контекста" - это совершенно разные понятия.

     

    C++ контекст в моем случае не используется, С контекст - будем прописывать сами. Как я уже говорил, этот дополнительный код компилятора может вызвать необрабатываемое прерывание, поэтому он мне не нужен. Насколько я понял, он берется из файла "crt0.o". Как запретить компилятору или линкеру его использовать? К сожелению, вышеуказанный способ избавления от секций ("-R ._init -R .fini", например) у меня почему-то не работает.

     

    P.S. Компилятор mips-kgp-elf, спасибо Klen-у

  2. Подход оригинальный, но ненаказуемый. И все же хотелось бы услышать, чем плоха стандартная инициализация переменных? Как минимум два ее плюса я знаю - она занимает минимальное место в памяти программ и выполняется достаточно быстро (быстрее разве что пересылка DMA). А вот недостатки?

     

    В данном случае речь идет об инициализации регистров процессорра mips. И любой лишний код может вызвать исключение и прекращение работы процессора, что нехорошо :smile3009:

     

  3. Делаем умозрительное заключение, что -R означает удалить секцию.

     

    Спасибо, будем пробывать.

     

    Удалить-то можно, но будет ли программа после этого работать? .init - скорее всего используется стартап-кодом.

    Инициализация жестко прописана в моем коде, поэтому я не уверен, что .init, созданный компилятором не будет нарушать работу программы.

  4. Гм, вопрос по секциям elfa. Есть в исполняемом файле след секции:

    .text
    .init
    .fini
    .text.__do_global_dtors_aux
    .text.frame_dummy
    .text.__do_global_ctors_aux

     

    Из них только первая является моим кодом, остальное компилятор сам создает. Можно ли удалить эти секции из исполняемого файла и как это сделать?

  5. Зарезервировать области памяти можно примерно так:

     

    Вот :rolleyes: Спасибо, не знал. Хотя вчера добился задачи другим способом: каждую функцию в отдельный файл, далее линковку:

    .text:
    {
           foo1.o(.text)
           . = . +300;
           foo2.o(.text)
    }

  6. Как сделать так, чтобы мипсовская программа запускалась с некоторого адреса таким кодом:

    void foo(void) __attribute__((section(".foo")))
    asm("bal main"::);
    asm("nop"::);

    Затем должно идти на данный момент пустое пространство(в дальнейшем здесь будет находится переход на обработку прерывания), равное 300 байтам, затем след. код:

    void main()
    foo_1();
    foo_2();

     

    Я знаю, как указать начало входа программы, но как добиться перехода на строго определенный другой адрес, чтобы зарезервированные адреса не перекрывались ничем другим, не могу вкурить. Буду рад вашей помощи.

  7. информации не достаточно.

    вам что нужно - заглушки или реализации.

    Компилятор выдаёт ошибку undefined reference по 7 функциям, я нашёл syscalls у codesourcery lite, но они используют переменные, которые неопределены в коде, а если эти переменные определить либо убрать, то появляется новая ошибка по тем же 7 функциям: multiply reference.

  8. Вы не уточнили чьей сборкой gcc вы пользуетесь, но у CodeSourcery есть в поставке Sourcery G++ Lite 4.4-191 for MIPS ELF утилита mips-sde-elf-run для запуска программы в симуляторе, или внутри gdb можно, указав "target sim". В Getting Started про это написано.

     

    Именно CodeSourceryLite и пользуюсь в качестве компилятора. К сожалению, я не смог запустить mips-sde-elf-run по GettingStarted, поэому вопрос мой остаётся в силе. Надеюсь на вашу помощь. :help:

  9. Доброго времени суток. Вопрос сверхначального уровня. До сих пор изучаю Eclipse Galileo в связке с gcc. Как запустить С-программу, написанную под MIPS-архитектуру, внутри Eclipse без ошибок ("running failing"); по сути говоря, чтобы нажал на "Run" и пошло. Я молчу пока про Debug :05:

  10. вот сборка для мипса под масдай

     

    http://klen.org/Files/DevTools/kgp_mips_elf_20100419.7z

    размер файла - 15 мб

    я ее не тестил, неначем. нада всетаки взять ченить на pic32 соорудить

     

    Также имеются ошибка: сс1.exe требует libiconv-2.dll, при этом она находится в папке bin. Прошу помощи :unsure:

  11. вот сборка для мипса под масдай

     

    http://klen.org/Files/DevTools/kgp_mips_elf_20100419.7z

    размер файла - 15 мб

    я ее не тестил, неначем. нада всетаки взять ченить на pic32 соорудить

     

    Спасибо, будем опробывать. :smile3046:

  12. Самое простое и гибкое - создать Other toolchain->makefile project. А уже в makefile руками указывайте какой угодно gcc.

     

    Пожалуйста, поподробнее. И, если можно, ссылки по работе с Eclipse и созданию makefile. Для меня всё это пока тёмный лес.

  13. Только начал изучать DXD EE2007.5. Появилась проблема - после некоторого момента не отображаются имена создаваемых цепей. Т.е. создал цепь, присвоил имя - на схеме отображается; после закрытия-открытия DXD уже на схеме не отображается, хотя в свойствах имя цепи есть(но при этом галочка свойства имени не убирается). Как исправить ситуацию? :crying:

×
×
  • Создать...