2013-08-05 4 views
2

Я читал учебник j lynch от atmel для разработки небольших программ для at91sam7s256 (микроконтроллер). Я немного потрудился и использовал руку-не-эби вместо эльфийского (старый). По умолчанию я обнаружил, что gcc компилирует, предполагая -march = armv4t, даже если ничего не упоминает о чипе. Какая разница, если я использую -mcpu = arm7tdmi?arm-none-eabi-gcc: -march option v/s -mcpu option

Даже поиск много на Google я не мог найти подробный учебник, который бы объяснить все возможные команды, как варианты, включая отдельные опции компоновщика, ассемблере и objcopy варианты, как -MAP и т.д.

Можете ли вы предоставить любые материалы, где объясняются все возможности?

ответ

1

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

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

Примечание:текущий экземпляр НКУ компилирует предполагая -march = armv4t - это, конечно, не является универсальной гарантией для всех вооружить Gcc компилированные инструменты.

+0

Вы можете предоставить мне какую-нибудь учебную или ручную ссылку, в которой я мог бы получить всю необходимую информацию в деталях, потому что параметры arm-gcc, которые я нашел, очень редко распространялись на разных сайтах с небольшим объяснением. Кроме того, я не мог найти почти никаких подробностей о параметре и формате компоновщика конкретных ссылок. То же самое касается ассемблера и objdump. Можете ли вы дать мне ссылку для получения полной информации о параметрах командной строки для gcc; linker (ld) ассемблер objcopy objdump .. – arka7304

Смежные вопросы