如何走進嵌入式開發[3] -- 燒錄bootloader

 在拿到一塊空白板子時,我們的bootloader如何燒到FLASH上呢? 一個途徑就是通過仿真器,ARM有高級仿真器,高級貨是不錯,不過我們選擇窮人的方式,也是個仿真器,至於是啥,網上一搜一大堆,jlink, openjtag, usb...,東西很多,國內便宜(大家都知道)。按照標準,其實這些叫作適配器,反正就是一接口,連上去就好了,對了,是JTAG接口。

 

以前不懂的時候,以爲接上就能燒了?誰來燒呀?CPU燒?燒什麼呀? 後來看了文檔才知道,這些CPU一般都有個調試模式,在調試模式下,CPU外面多了一層引腳,信號都走這,與JTAG接口通信,我們就可以通過JTAG接口,對CPU進行操作,可讀可寫。

 

如果我們想讀一個寄存器值,我們該發什麼信號給CPU呢?這些都在CPU手冊上有,我要說的不是這個,我想說的是,前輩已經寫了軟件來做這些工作,需要啥信號,我們就不用關心了,需要的只是傳個命令過去,比如 read addr之類的,這類軟件應該很多,我們又選擇了 OpenSource的 OpenOCD, 這個軟件還是不錯了,開發人員很勤奮,maillist天天都有很多郵件。 如果我們的CPU在該軟件的支持的範圍內,那麼我們需要做的事情就是寫寫配置文件,否則就需要寫些CPU支持的 c 代碼了。配置文件,主要部分配置CPU,FLASH BANK(地址寬度很重要)等,讓CPU能操作FLASH,也就是你得告訴CPU如何工作,其實就是設置寄存器。軟件運行起來,需要把CPU掛起,有時候會出現不能掛起的情況(有的是無緣無故,有的是由於reset時的信號不太對,這點一直沒弄清楚,jtag信號),暫停MMU,之後就可以燒啦。看着手冊大家都能燒。

 

bootloader燒好了,就可以啓動了,之後燒內核什麼的,似乎大家都是通過bootloader來做的,我也是。

 

BTW:燒錄FLASH,還有種 socket 方式,這種FLASH可拆卸,取下來,插到專門燒寫器裏,也可以完成燒錄。其他的方法我也沒總結過,也沒用過。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章