LM3S之boot loader學習筆記-1
彭會鋒
( 首先聲明,此系列文章編寫參考了很多資料,其中一些內容是原版內容的引用和整理,并加入了一些自己的見解,我已經盡量標明引用部分,如有未全部標注部分,還望見諒! )
? ? ? 最近項目需要能夠對光伏系統監控器和dsp代碼進行在線升級,為此特意學習了下lm3s的bootloader 編寫,程序已經編寫調試完畢,特寫一下相關的知識點總結,也供各位進行相關參考!
參考網址:
http://wapapp.baidu.com/wh2152/item/2e9ee419bb416a3bb93180ec? LM4F232的bootloader過程
http://blog.sina.com.cn/s/blog_5f18cbd10100da5t.html ?揭開BOOT?LOAD升級過程的神秘面紗
http://wenku.baidu.com/view/e610a30fba1aa8114431d9cc.html ?BootLoader應用說明
?
后面這兩組是為了加深對存儲器映射的理解的文章:
http://blog.sina.com.cn/s/blog_5f18cbd10100da6f.html ?如何讓靜態局部和全局變量或數組存在指定地址的Flash
http://blog.sina.com.cn/s/blog_5f18cbd10100d4xr.html ?Keil平臺中如何讓程序在RAM中跑起來?
bootloader作用
? ? ? " BootLoader是 位于Flash起始地址處的一小段代碼 ,占據空間大小依據Boot所實現的功能而不同。如果沒有BootLoader,硬件啟動成功后,將直接運行用戶應用程序(Application)。反之,BootLoader的啟動代碼(Start-up Code)將先被執行,進行一系列的初始化操作后,根據預先設定的條件,選擇執行用戶應用程序(Application)或升級控制程序(Updater)。
? ? ??系統在實際應用過程中,如果需要更新軟件功能,那么為了避免重新拆裝設備,可以借助“在線升級”方式。目前,在線升級是很多系統都必需的一個功能,對于LM3S系列微控制器來說,利用Flash控制器接口即可實現系統在線升級。Boot程序接收新的代碼編譯文件,然后調用Flash操作函數將新的代碼編程到Flash 扇區中,即可實現系統的在線升級。 依照我查找的資料來看, 嵌入式中很大部分編寫bootloader是為了升級程序之用的。" ( 參考“LM3S 系列單片機遠程升級應用筆記” )
? ? ? 首先介紹bootloader程序的編寫, lm3s系列bootloader編寫可以采用兩種方法:
? ? ? 1 rom中自帶bootloader
? ? ? lm3s系列芯片中在ROM中固化了很多的程序,其中就包括bootloader,可以通過rom中的bootloader通過串口(UART)\SSI\I2C\ETHERNET控制程序傳輸,然后使用flash讀寫函數將程序寫入flash中,從而實現程序燒寫升級
? ? ?2 flash燒寫自己編寫的bootloader
? ? ?bootloader也可以用戶自行編寫,其實bootloader也是一段程序而已,用戶完全可以自己編寫,這樣的靈活性更大,可以針對自己的設計進行有針對性的更改,我這次的設計也是自行編寫,其實寫完了回頭再看就是基于我以前程序的縮減版!
? ? ?為了能夠對bootloader能夠首先從整體上有一個認識,我先給出bootloader、應用程序以及其他一些東西在芯片flash中的一些分布,以期能夠從整體上對bootloader有個完整的認知:
? ??
? ? ? 由上圖可知,從flash空間占用來說,bootloader位于flash的起始位置,然后才是應用程序flash占用,所以程序上電也是先運行bootloader程序,然后在bootloader跳轉程序控制下決定是運行bootloader引導程序還是用戶應用程序!
? ? ?為了實現bootloader升級程序的功能,我們就需要自己編寫bootloader控制邏輯,下面是我的bootloader的控制邏輯流程圖 (其實看完流程圖,你大概就知道bootloader的功能和具體實現有了初步了解) :
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
