Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Аллокация функции run-time library.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
RCray
Для GNU есть ли возможность указать в какое место положить функции run-time library?

Сейчас, если хочу, чтобы операция выполнялась из "быстрой" памяти, приходиться ручками писать такую же функцию и задавать ей необходимые атрибуты. Проблема в том, что не всегда получается также оптимально написать функцию на C, а в асм лезть не хочу.

Для примера - деление ___udivsi3.
Aaron
Точно не скажу, ибо не знаю, но навскидку я бы пошёл таким путём:
- можно настроить компилятор/линковщик, чтобы содержимое каждого файла было в своей секии (по имени файла)
- настроить линковку проекта так, чтобы нужные файлы/секции располагались в ram
RCray
линкер файл положит, куда вы ему скажете, а используемую при этом функцию run-time library (все равно) положит в .text секцию.



Хотел стандартно, а получилось так:
1. Разбираем библиотеку на отдельные объектники
<toolchain name>-ar.exe -x libgcc.a
2. Копируем все нужные файлы куда вам удобно.
3. Убираем ключ линкера -lgcc, и наоборот добавляем <path to your _new_ runtime library files>/*.o
В случае, если вы их положили просто в папку ко всём остальным объектникам, можно так ./obj/_*.o
т.к. интересующие нас файлы начинаются с подчеркивания.
4. Если, как у меня в примере, нужно жестко задать локацию только одной функции ___udivsi3,
то в описании секций вместо
*(.text)
пишем
*(EXCLUDE_FILE (./obj/_udivsi3.o) .text)
5. А в описании к целевой секции пишем
.<name of section> : ... {
...
./obj/_udivsi3.o
...
} > <name of section>

В исходниках ничего менять не надо. Как и писать свои функции.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.