nRF52810 DFU升級失敗以及Flash空間分配問題分析

        本文主要分析由於Flash空間受限,導致nRF52810無法進行DFU的問題。先看下nRF52810的Flash空間分配:

從圖中可以很清楚地看出,nRF52810的Flash大小爲192KB,其中100KB分配給Software,也就是協議棧。32KB分配給Bootloader,剩下的60KB分配給應用程序。因此,理論上應用程序大小最大可以是60KB。但實際上很多情況下,應用程序大於48KB(有的可能是52KB)時就無法進行DFU了,現象是一進Bootloader就重啓。

        很多開發者因此很困惑。其實,是因爲我們忽略了FDS模塊其實也是要佔用應用程序的空間的。Bootloader爲了不誤擦用戶的FDS數據,在代碼裏設置了一個宏,用於指定被保護的FDS區域的大小。對於這一塊空間,Bootloader是不會去使用的。有關說明,可以參考博主的另一篇文章:https://blog.csdn.net/fun_tion/article/details/88669758

        在跳轉到Bootloader時,程序會檢查空間是否夠滿足本次升級。檢查的方法是看應用程序大小+被保護區域大小是否大於60KB,如果大於則直接退出升級並重啓。假設被保護區域設置的是12KB的話,那應用程序最大也就不能超過48KB了,開發者在使用這款芯片的時候,要格外注意這點。

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