2013-08-05 80 views
2

我一直在關注atmelsam7s256(微控制器)的小程序atmel的j lynch教程。我做了一些修補,並且使用了arm-none-eabi而不是arm-elf(舊的)。默認情況下,我發現gcc編譯時假設-march = armv4t,即使沒有提及芯片的任何內容。如果我使用-mcpu = arm7tdmi,會有多大差異?arm-none-eabi-gcc:-march選項v/s -mcpu選項

即使搜索了很多關於谷歌我無法找到一個詳細的教程將解釋所有可能的命令類似的選項,包括單獨的連接選項,彙編器和類似-MAP等objcopy把選項

你能提供任何這樣的材料,其中所有可能性都解釋了?

回答

1

提供關於特定處理器的信息,爲編譯器提供了額外的信息,用於選擇最有效的指令組合,以及調度這些指令的最有效方式。它很大程度上取決於特定處理器明確指定-mcpu所帶來的性能差異。沒有任何區別 - 知道的唯一方法就是衡量。

但一般情況下 - 如果您正在爲特定設備構建特定圖像,則應儘可能向編譯器提供儘可能多的信息。

注:你的gcc的當前實例彙編假設-march = ARMV4T - 這肯定不是一個普遍的擔保所有ARM GCC工具鏈。

+0

你可以提供一些教程或手動鏈接,我可以在詳細信息中獲取所有必要的信息,因爲arm-gcc optionss我發現很少分佈在不同的網站上,幾乎沒有解釋。 此外,我幾乎可以找到關於鏈接器特定的命令行選項和格式的詳細信息。彙編器和objdump也是如此。你能給我鏈接的gcc;鏈接器(LD)彙編器objcopy objdump的命令行選項的完整信息.. – arka7304