IC設計工程師該如何學習ARM架構?

先謝謝回答問題的大神。本人在帝都一家SOC設計公司從事驗證工作,新人。在系統級驗證中,常常需要對ARM core進行debug。之前沒有相關經驗,對ARM架構幾乎是零基礎。為此讀了Cortex programer Guide,ACE協議等文檔。並

正開始看ARM V7架構的reference manual。但讀了部分文檔後,感覺主要是介紹指令集方面的內容。工作中遇到的問題還是不知從何入手解決,或者說很難理清思路,比如說:

1,模擬時想查看當前CPSR,PC,SP等寄存器的值,可是不知道它們在RTL的什麼地方。

2,AXI匯流排上抓出的信號和反彙編代碼對不上號,但是又不知如何disable掉cache。

3,SCU,CCI,AEC匯流排之間的關係。

4,各個core之間的通信,以及task在各個core之間的分配等。

5,ARM的編譯器如何工作。

6,MMU和cache之間的連接。

疑惑很多,這裡就不一一列舉了。

那麼問題來了:

我想從近期到遠期依次實現以下幾個目標:

1,對SOC上的ARM core(包括多核)有基本的debug能力。不因為ARM代碼的問題影響其他IP的驗證。

2,較為深入地了解主流的core,能夠承擔SOC CPU的集成和驗證。

3,精通ARM V7V8架構,成為core 方面的專家。(也許不太可能)

各位大神能否指條路子,比如說說大概的方法和步驟,推薦相關的書籍和文檔等(ARM的文檔很多,不知從何下手)。說一說IC工程師該如何學習ARM架構。先謝過!


如果不是特別針對某個模塊設計或者UT,詳細閱讀ARM的manual或者TRM的收益是不大的,特別是arch的manual,對於ST的角度來說,它是用來查詢的,就像牛津詞典一樣。

我如果帶ST的人,會讓他看ARM的各種PPT,這些PPT很多時候通俗易懂而本身也是精華滿滿的。寫這些PPT可不容易,愁的很,要讓領導看明白的,你懂的。然後關鍵是一本書《計算機體系結構》,要求熟讀,直到接近於爛熟於心,然後我提問題,讓他把PPT裡面描述的行為和部件,映射到體系結構上,在然後,就是如你定位問題一樣實戰,但是每次實戰,一樣的要求,把實戰中的每一個行為在體系結構中給出解釋。

題主的問題就在於沒有把事物串起來,線索太單一了,你想關掉cache看CPU動作,可即使這樣,CPU是OOO的(′-ω-`),可能還是對不上彙編哦。

ST要做好,各自部件和行為要竄起來,理解系統的層次位置和功能,然後,就是考驗推理的時候了,很多ST的定位,是依靠某些細小的線索,逐層抽絲剝繭,中途有疑問的地方查閱TRM和manual,根據現象看因果,推理演算,出來的。多看看推理類的小說,多做一些邏輯思維訓練,也很有幫助。

至於ARM CPU的代碼,他是處理過的,就是不讓你好好看懂,注釋全沒了,一些寫法特奇葩,還有|不加括弧我是最深惡痛絕的,而且ARM有三個團隊寫,風格有不同,硬磕是作死。通常的做法是把核的行為和結構分析作為一項工作安排做,輸出一些指導性的文檔,其他人就少走彎路了。此外,對於ARM arch manual,一個規則具體到實現上,也是有多種細微的不同但合理解讀的,這都要注意。

我不是在裝逼啊,長期來看確實是這樣的,我不喜歡什麼二十天從入門到精通之類的說法。

在海思ARM ST領域,我說沒有我定位不出來的ST問題,應該沒有人敢跳出來反駁我,只是近兩年我都不需要出手了……


不是做驗證的,不過你說的問題也遇到過。找到關鍵寄存器的位置還是不難的,就看你有沒有使勁去找了。通常PC和通用寄存器都找到問題就解決一大半了。


請問題主,現在有什麼值得推薦的學習路線嗎?

我現在也開始學習arm soc

集成了


推薦閱讀:

FPGA 工程師的核心競爭力是什麼?
十年前的 ASIC/SoC 設計跟現在的 ASIC/SoC 設計,發生了哪些變化?

TAG:ARM | ARM架構 | SoC | 晶元設計 | 數字IC設計 |