2011-06-05 61 views
10

我有一個x86,linux的盒子。在閱讀關於ARM的各種信息時,我很好奇,現在我正在考慮花費一些時間來學習這種架構。我目前的目標是能夠爲ARM編寫簡單的彙編程序,使用一些彙編程序爲ARM生成目標代碼並能夠在模擬的ARM計算機上運行該程序。首先我下載了​​ARM體系結構參考手冊。根據here的信息,Keil在Linux上不受支持,因此 請幫我使用我需要的工具(彙編器,模擬器)。在Linux x86平臺上學習ARM所需的工具

回答

0

GCC的交叉編譯器可用於ARM目標;代碼Sourcery是一個相當常見的,如果你想要一個預建。

對於仿真環境,qemu在模擬ARM方面做得很好。 Google的Android模擬器基於eqmu(並且它們的「NDK」是預構建的ARM交叉編譯器的另一個來源)。

9

基本上,你需要兩件東西 - 一個工具鏈和一個模擬器。

工具鏈包含您爲ARM體系結構構建應用程序並在目標(在您的情況下爲模擬器)上運行它所需的全部內容。開始的好地方是buildrootELDK。這些將爲您提供完整的跨Linux解決方案。如果您只想編譯,而無需使用Linux安裝(以及隨附的rootfs),則只能使用交叉編譯器。一個免費的是CodeSourcery,但也有其他一些(大多數基於GCC)。

模擬器是您將運行代碼的位置,它將表現得像ARM CPU一樣。一個好的開始是QEMU

跨項目的學習曲線相當陡峭,需要大量的在線搜索來完成任務。很少有詳細的整個過程的分步指南,但有很多指導工作的各個部分。

+0

謝謝Eli,我下載了buildroot,並在README部分提到了基本步驟。成功完成make之後,在我的情況下,目標macine(arm)的工具鏈位於〜/ buildroot- /output/host/usr/bin下。現在,如您所說,我將嘗試在QEMU模擬處理器上運行簡單的ARM機器代碼。再次感謝您的幫助,請讓我知道我是否錯過了一些東西。 – Amit 2011-06-05 18:25:33

3

codesourcery幾乎是gcc的arm工具鏈。你可以建立你自己的gcc,當然也可以有其他的(devkitarm,yagarto,emdebian等),但是codesourcery是前沿的,只是工作。 llvm也是一個很好的編譯器,不需要交叉編譯,它支持單個安裝的多個目標。對於我使用binutils(codeourcery的一部分,我建立一個使用llvm)。使用newlib構建版本變得越來越困難,如果我記得這些說明正確的話,這些說明可以工作http://www.cowlark.com/2009-07-04-building-gcc/。 Newlib非常容易移植到任何目標。

我有一個拇指模擬器,縮小臂指令集。在github上搜索thumbulator。如果這是你以後的事情,那麼它比qemu提供更高的可視性,但只限於使用異常表和啓動等cortex-m3。爲了構建一個基於arm的linux系統,並運行它,肯定會使用qemu。 gdb內置了armulator(ARM的仿真器)。這完全取決於你以後的樣子。