2012-11-09 57 views
3

我正在尋找一些關於ARM設備編程的信息,以特定的非特定方式[1]。假設我正在爲ARM處理器編寫代碼,該處理器使用類似於Apple II/Atari「XL/Commodore 64/DOS-PC」的機器,或者甚至是運行多任務操作系統(如VMS或SUNO)的機器。進一步假定任何外設/操作系統特定的東西已經被抽象爲子程序。這種類型編程的例子可能是:基於文本/詛咒的遊戲,如流氓或莫里亞;一個基於curses的文字處理器(或者更確切地說,基於類似圖書館之類的詛咒);或調制解調器/終端程序。針對新手的ARM開發環境

我正在尋找兩件事。有助於學習ARM編程的資料,儘管ARM系統開發者指南可能已經足夠,但其他資源將會有所幫助我特別關注解釋各代處理器軟件(以及相關硬件即寄存器)差異的內容。

我正在尋找的另一件事是一個開發環境,包括inculdes,仿真,一個體面的宏彙編程序和一個調試器。與其他任何東西一起,將幫助我瞭解我的程序內正在發生的事情。

[1]好的。對不起,我無法抗拒那個特殊的雙關語。

+0

http://beagleboard.org/是一個很好的arm硬件平臺,包含多種軟件開發選項。 我還發現史蒂夫·弗伯的書「ARM片上系統架構」在它出來時非常好,但現在已經有點老了...... –

回答

2

您可以選擇使用ARM Cortex M或A系列。如果您打算開發高端應用程序,例如在智能手機/平板電腦上運行的應用程序,那麼瞭解ARM A是您的選擇。如果您要強調硬件/低層次的東西,比如控制器,那麼您應該選擇ARM Cortex-M。如果你進入實時應用程序(我懷疑你的情況,他們使用R系列)。

這些新一代ARM的大部分都基於ARMv7架構和ISA,因此閱讀手冊可幫助您入門。最近,已經宣佈了一種新的ARMv8架構和ISA,它支持64位處理。

從ARM站點下載參考手冊和技術手冊以瞭解硬件/外圍設備。

我會買一板auslen的建議,你可以用它有一個ARM-M4F處理器TI的Stellaris發射臺走走(支持浮點和SIMD),它的售價爲$ 12.99 http://www.ti.com/ww/en/launchpad/stellaris_head.html?DCMP=stellaris-launchpad&HQS=stellaris-launchpad-b

或你可以搭配ST的發現板(基於與上述相同的處理器),但在板上有音頻,加速度計和USB。它的售價爲14.99 $ http://www.st.com/internet/evalboard/product/252419.jsp 或STM F3板(10.99 $) http://www.st.com/internet/evalboard/product/254044.jsp

在任何情況下,你需要檢查它來與板,沒有這些你哪兒都不能去輕易的例子。董事會帶有自己的驅動程序,都是以某種方式抽象出來的,所以你可以從那裏開始!

至於OS,如果你的興趣是一個實時操作系統,ARM提供CMSIS RTOS爲它的M系列處理器 http://www.arm.com/products/processors/cortex-m/cortex-microcontroller-software-interface-standard.php

這本書提供了一個介紹了ARM處理器的後代。然後專注於皮質M3。它涵蓋了很多彙編代碼的ISA。這也解決了內置外設,以及如何啓動與C http://www.amazon.ca/Definitive-Guide-ARM-Cortex-M3/dp/185617963X/ref=sr_1_1?ie=UTF8&qid=1352506616&sr=8-1

好運

2

infocenter.arm。並查看各種ARM ARM(體系結構參考手冊)和TRM(技術參考手冊)的各種體系結構和內核。這些手冊比其他大多數公司的文件都要好。除了新的64位內容之外,就指令集而言,從一種架構到下一種架構的差異是微妙的。主要的區別與外設有關,mmu是一個緩慢變化的事情,中斷管理器已經採取了很大的步驟,並且如果不是兩次批發,至少已經更換了一次fpu(如果你甚至有一個fpu,這種例外情況並非如此規則,它消耗了巨大的房地產回報)。

我很困惑你的問題。我認爲在學習體系結構/指令集和學習操作系統調用之間劃清界線非常重要,這是兩件不同的事情。你很少需要操作系統的東西來看看源代碼(C/C++),而有限的asm則用於手動調整的C庫或boostrap代碼,以及中斷包裝器。同樣的,與外圍設備(arm的核心通常只有極少的外設,大部分都在供應商特定的東西中)相比,架構,寄存器,指令等等,我將它們作爲單獨的學習曲線分開,與asm沒有多大關係,該指令集與在任何其他平臺上學習外設沒有什麼不同,只是您讀取和寫入的一些地址。

如果您正在尋找非操作系統裸機,stm32f0發現是$ 10,我強烈推薦它。看起來ti有一個stellaris啓動板(等待我的到來,所以我不能談論太多關於它們,並且運輸是免費的,所以成本基本上與stm32板相同)stm32f4發現約爲20美元我幾乎不會將cortex-m4所具有的所有功能都叫做微控制器。

向上移動到linux能力或設計爲Linux系統有樹莓派,beaglebone和open-rd和up(pandaboard)。同樣,儘管你只是編寫另一個Linux C/C++程序,所以在那裏沒有多少興奮(與特定平臺有關,娛樂對於所有平臺都是一樣的),並且只需要很少的手臂知識。與基於ARM的微控制器相比,使用任何這些裸機編程平臺都可以非常容易地爲您提供賽車般的性能。

我有一個你可能不感興趣的拇指模擬器gdb有armulator,它是當天公司的基石。 skyeye或類似的東西,它有一個arm指令集模擬器和qemu一樣,除了gdb可以提供的東西外,它們都不會給你很大的可見性。 opencores的琥珀項目是一個armv2的克隆,你可以看到與armv4的密切關係,並且更新的是,如果沒有滿滿的現金,你將找不到rtl。憑藉我的手臂和芯片經驗(不,我不爲胳膊工作)我確實發現了值得關注的琥珀項目,但許多人不知道該如何處理它,並且真的對這種可見度水平不感興趣。 (這是指令兼容,一個好的設計,但不認爲你正在看臂設計,沒有祕密)。你可以從中學習基本的arm架構,然後轉向硬件,例如...

由於微控制器是基於cortex-m的,你可能會發現老式的微控制器是更好的踏腳石到上端臂的核心。基於ARM7tdmi的東西,如sam7和其他nxp,st,atmel等等,你仍然可以在sparkfun和微控制器專業人員和其他地方找到類似價格的arduino。