91视频免费?看_蜜芽MY188精品TV在线观看_国产免费无遮挡在线观看视频_深夜国产_亚洲精品欧洲精品_欧美黑人粗暴多交

微軟公司宣布不再支持你正在使用的 IE瀏覽器,這會嚴重影響瀏覽網頁,請使用微軟最新的Edge瀏覽器
廠商專區
產品/技術
應用分類

新手必看 達人分析ARM9的啟動過程

2016-05-26 09:43 來源:電源網綜合 編輯:鈴鐺

ARM是單片機學習過程中必然需要接觸的,很多朋友在對ARM的啟動過程中遇到了這樣或者那樣的問題。雖然大部分問題都能通過查閱資料或者求助于有經驗的人來得到答案,但這樣的方式其實并不利于對ARM系列整體的理解與把握,問題始終還會出現,因此了解ARM的啟動流程便非常必要。本文將對ARM9的啟動流程進行介紹,感興趣的朋友快來隨小編一起看一看吧。

AT91SAM系列的ARM內置了一片bootrom,如果選擇了合適的BMS電平(高電平),那么芯片啟動后會將bootrom映射到0x0地址。啟動bootrom后會從外面的的NVM(dataflash,nandflash..)中去尋找是否存在"合法"的固件程序。如果存在,就將這個固件拷貝到內部SRAM中來運行。而此固件程序一般放置的就是bootstrap。再由它去完成u-boot和kernel等等的搬移。

順序如下:bootrom(ROM)->bootstrap(SRAM)->u-boot(SDRAM)->kernel(SDRAM)。

對于dataflash和nandflash的NVM,ATMEL很巧妙的將第6個向量處放置的內容當做Bootstrap的大小。但是打開AT91bootstrap的源碼時,可以發現第6個向量處有2種寫法:

1、B.(或弄一個標號,跳轉本身)

2、.word_edata

第一種是直接放了一跳ARM跳轉本身的指令在此位置,轉換為機器碼之后是一個非常大的數,遠遠超出了SRAM的大小。第二種是用了匯編器的一個預留關鍵字_edata,它指向數據段的結尾。按道理應該是和編譯出來的bin同樣大小才正確。但是通過將bin文件打開查看第6個向量確不相等,才會發現是由于基地址并不是0x0導致。

由于bootstrap最終是在SRAM里運行,以SAM9260為例,SRAM基地址是0x20000。所以是_edata=0x20000+程序大小,還是無法滿足要求。這兩種方式都不正確,那BOOTROM是怎么知道要拷貝多大的長度呢?這里有人猜測是不是超過最大的長度就OK了,即SRAM大小減去BOOTROM程序本身所需的堆棧,這是一個合理的解釋,不過實際操作會浪費很多時間。

而真相是:原來SAM-BA軟件中有一個sendbootfile的操作,這個操作暗地里讀取文件大小將其寫入第六個向量再寫入0地址,所以bootstrap必須用SAM-BA的sendbootfile的方式燒寫,如果自己從0地址sendfile是啟動不了的,大家可以做實驗驗證。

通過以上的介紹,可以看到ARM9的啟動流程可以分為4種,只要對這四種流程進行一定程度的了解,就能應對大多數在ARM9流程當中所遇到的問題。此外,本文對于BOOTROM拷貝的長度也作出了通俗易懂的解釋,這就方便了初學者對于ARM9的理解。其實很多時候問題的發生都是因為不夠了解導致的,在學習一款器件或知識點之前進行充分的理解,才能避免一些錯誤的發生。

標簽: ARM ARM9

聲明:本內容為作者獨立觀點,不代表電源網。本網站原創內容,如需轉載,請注明出處;本網站轉載的內容(文章、圖片、視頻)等資料版權歸原作者所有。如我們采用了您不宜公開的文章或圖片,未能及時和您確認,避免給雙方造成不必要的經濟損失,請電郵聯系我們,以便迅速采取適當處理措施;歡迎投稿,郵箱∶editor@netbroad.com。

相關閱讀

微信關注
技術專題 更多>>
技術專題之EMC
技術專題之PCB

頭條推薦

電子行業原創技術內容推薦
客服熱線
服務時間:周一至周五9:00-18:00
微信關注
獲取一手干貨分享
免費技術研討會
editor@netbroad.com
400-003-2006
主站蜘蛛池模板: 舒兰市| 宜良县| 招远市| 呼玛县| 贵德县| 剑河县| 四子王旗| 奈曼旗| 溆浦县| 云南省| 昭平县| 南郑县| 柳江县| 焉耆| 正定县| 杭锦后旗| 乌鲁木齐市| 蒙阴县| 新建县| 阿荣旗| 上饶市| 瓦房店市| 延吉市| 青阳县| 津南区| 莒南县| 正定县| 民乐县| 余干县| 高邮市| 常熟市| 荥阳市| 连城县| 阿拉尔市| 乡城县| 兰考县| 大庆市| 吴堡县| 宝兴县| 伊宁市| 赤峰市|