我有一個x86,linux的盒子。在閱讀關於ARM的各種信息時,我很好奇,現在我正在考慮花費一些時間來學習這種架構。我目前的目標是能夠爲ARM編寫簡單的彙編程序,使用一些彙編程序爲ARM生成目標代碼並能夠在模擬的ARM計算機上運行該程序。首先我下載了ARM體系結構參考手冊。根據here的信息,Keil在Linux上不受支持,因此 請幫我使用我需要的工具(彙編器,模擬器)。在Linux x86平臺上學習ARM所需的工具
回答
GCC的交叉編譯器可用於ARM目標;代碼Sourcery是一個相當常見的,如果你想要一個預建。
對於仿真環境,qemu在模擬ARM方面做得很好。 Google的Android模擬器基於eqmu(並且它們的「NDK」是預構建的ARM交叉編譯器的另一個來源)。
基本上,你需要兩件東西 - 一個工具鏈和一個模擬器。
工具鏈包含您爲ARM體系結構構建應用程序並在目標(在您的情況下爲模擬器)上運行它所需的全部內容。開始的好地方是buildroot或ELDK。這些將爲您提供完整的跨Linux解決方案。如果您只想編譯,而無需使用Linux安裝(以及隨附的rootfs),則只能使用交叉編譯器。一個免費的是CodeSourcery,但也有其他一些(大多數基於GCC)。
模擬器是您將運行代碼的位置,它將表現得像ARM CPU一樣。一個好的開始是QEMU。
跨項目的學習曲線相當陡峭,需要大量的在線搜索來完成任務。很少有詳細的整個過程的分步指南,但有很多指導工作的各個部分。
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的仿真器)。這完全取決於你以後的樣子。
- 1. x86彙編學習平臺
- 2. 想學習ARM平臺上的Linux移植
- 3. 學習Netbeans平臺
- 4. 初學者:跨平臺開發學習哪種語言/ GUI工具包?
- 5. 電子學習平臺
- 6. 哪些工具可以學習在Linux上開發
- 7. arm-linux-gnueabi工具鏈與arm-linux-androideabi工具鏈。
- 8. 學習ARM程序集
- 9. 學習和跨平臺開發(C++)
- 10. 需要一些建議,開始在ARM(與Linux)平臺上編程
- 11. XLWT會在Linux平臺上工作嗎?
- 12. 如何在ARM平臺上用opengl和Qt啓動linux?
- 13. Qt應用程序,在Linux上,ARM平臺切換頁面
- 14. MASM x86彙編程序在Linux平臺上編譯
- 15. SICStus Prolog在x86平臺上的升級
- 16. 哪個學習UNIX/Linux更好的平臺(Kali Linux Vs. Red Hat或其他)
- 17. ARM平臺上的嵌入式Linux的交叉編譯Clio
- 18. PyBox2D在所有平臺上工作(Windows,Linux和Mac)
- 19. 學習NetBeans平臺:annotations vs layer.xml文件
- 20. 在arm平臺上運行qtmobility
- 21. 在x86上執行x86 Android AVD在Linux上的工作?
- 22. 在ARM平臺上運行lighttpd
- 23. $(var.Platform)在x64平臺上給x86?
- 24. ARM在ARM平臺上實現半虛擬化
- 25. Desire2學習外部學習工具的Valence API
- 26. 學習Python/Apache/Linux
- 27. 學習Linux內核
- 28. DEFINE宏在所有平臺上工作?
- 29. 在WPF學習測試工具,WinForms
- 30. 跨平臺C++工具鏈
謝謝Eli,我下載了buildroot,並在README部分提到了基本步驟。成功完成make之後,在我的情況下,目標macine(arm)的工具鏈位於〜/ buildroot-/output/host/usr/bin下。現在,如您所說,我將嘗試在QEMU模擬處理器上運行簡單的ARM機器代碼。再次感謝您的幫助,請讓我知道我是否錯過了一些東西。 –
Amit
2011-06-05 18:25:33