最近在csdn學習arm裸板的啟動代碼,以s3c2440為例,MDK自帶的S3C2440.s代碼與2440INIT.s代碼都有分析的介紹文章,這就把我搞蒙了,都是啟動代碼,差別怎么這么大,有沒有哪個大神能幫忙解惑一下的,萬分感謝!
uj5u.com熱心網友回復:
你看下代碼,看看他們在干嘛不就清楚了我沒看過,不過猜測是分層初始化的,比如先對硬體的一些暫存器進行初始化,然后對RAM空間進行初始化
uj5u.com熱心網友回復:
1)不同廠商或型號ARM架構的芯片,甚至就連同樣的一塊芯片,啟動代碼也會隨具體的目標系統和開發系統而有所區別。因為ARM架構是一個較復雜的片上系統,實際的芯片會有各種外設上的差異,而這些多數硬體模塊都是可配置的,而啟動代碼就是根據現場需要來設定這些模塊的作業狀態,因此會有區別。2)另外,你看到的啟動代碼,無論源代碼如何組織實作,最終都是通過配置相應的暫存器來實作的。又因為同為ARM架構,因此啟動代碼的流程算是大同小異。在ARM系統上電復位后,通常就是按設定中斷向量表、初始化各模式堆疊、設定系統時鐘頻率、初始化中斷暫存器、以及進入C應用程式等。
3)以一個堆疊的初始化為例,你有兩種方法:第一種方法是結合開發套件中的分散加載檔案來定義堆疊。第二種方法是最簡單也是最常用的一種就是直接進入對應的處理器模式,為SP暫存器指定相應的值。實際上兩種方法是一樣的,只是配置暫存器方法不同而已
uj5u.com熱心網友回復:
樓主很用心吶,會關注很多人不愿意關注的重點。希望你能學成歸來吧
uj5u.com熱心網友回復:
再補充一點吧,當前嵌入式系統的發展迅猛,啟動代碼的撰寫已經成為嵌入式系統開發人員應該具備的能力。而一個優秀的啟動代碼能夠給應用程式的開發提供良好的開發平臺。
在學習理解啟動代碼內涵和撰寫出適合自己的啟動代碼時,需要注意的是,有的暫存器可以在后續的業務程式中靈活配置,而有的暫存器(比如CPSR)則只能在啟動代碼中配置,因為一旦處理器切換到用戶模式后,用戶就沒有權限修改暫存器了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/94243.html
標籤:單片機/工控
下一篇:求這個編碼器的型號代表什么意思?
