我們在使用智能設備的時候,過一段時間就會有官方推送的軟件更新,大緻的意思是升級到哪個版本,版本修複了哪些bug或者新增了哪些功能。大到我們的電腦、小到我們用的智能手機、智能手環等等。
用戶需求和功能之間的關聯從未中斷,亦從未結束,這是一條無盡的道路。那麼這篇文章就為大家介紹在線升級需要考慮的東西以及如何去部署我們的升級,文筆拙略,但求能解剖出其中的關鍵點和命脈。
一、升級流程準備
1、flash和ram大小需要考慮
在實際的項目中應用軟件一般都不小,首先需要考慮到flash存放代碼夠不夠,一般需要一個扇區存放bootloader程序,兩個較大的扇區存放app應用程序。ram區看個人,如果使用數據校驗功能,有時候ram也要滿足一定的大小,否則無法從flash提取出來,當然也可以直接對flash數據進行校驗。
2、鏡像備份
在升級過程中,難免有升級失敗的可能,當然在産品成熟之後不會有太大的問題,但是俗話說得好,不怕一萬就怕萬一,有備無患。
3、升級流程
文件傳輸的過程可以一次性(如果ram足夠大),也可以分包下發。殼子制定自己的私有協議,隻要保證數據傳輸完整就可以。
二、單片機為例,準備升級文件
在此之前先給大家介紹需要用到的軟件Jflash,這個軟件功能很強大,可以對單片機下載程序、可以合成代碼、可以生成不同格式的文件。
1、bin文件
打開工程文件,在Run後面輸入指令:fromelf--bin--output.\output\obj\EDFA_Project.bin .\Output\Project.axf然後重新編譯整個工程,就會在\keil_project\output\obj文件夾下生成所需要的bin文件。還有另一種生成bin文件的方法,就是使用jflash打開app.Hex文件,直接另保存為bin文件即可。
2、bootloader程序
在keil軟件裡面建立好工程,并配置好環境,環境配置主要如下圖,因為程序是在0x8000000這個地方開始的,所以引導程序必須是這個地址開始,大小是整個flash的大小,右邊是ram的存儲區。
bootloader詳細邏輯代碼在boot程序裡面體現,大體邏輯如下:
①、先從flash裡面獲取更新标志位,如果标志位為1,則啟動升級判斷
②、從flash裡面取出升級到哪個區0代表app1區,1代表app2區
③、boot剛開始從默認的1區啟動
3、app應用程序
建立工程文件,跟一般的app文件差不多,隻需要改變偏移量,具體如下:
在程序開始的地方設置偏移量,0x20000表示相對0x8000000偏移,也就是說這個app程序将會在0x8020000這個地方開始運行。這裡普及一個小知識點,flash默認或者擦寫的時候,内部的值都是FF,所以看到判斷為0xff,就應該知道程序一燒寫的時候,默認值就是0xff,默認從app1啟動程序。
4、下載文件合成
前面bootloader程序和app應用程序生成的HEX文件,用jflash合成所需要的下載代碼,這裡注意,如果單獨燒寫其中一個文件程序是起不來的。如下圖EDFA_down.hex就是通過前面兩個程序合成的。
生成的hex文件
制作過程如下:
①首先用到軟件jflash,先打開軟件JFlash.exe選擇芯片
新建工程
選擇芯片
選擇下載模式
選擇菜單欄File/Open data file 選擇bootloader或者app其中一個hex文件,再點擊File/Merge data file 選擇另一個hex文件,然後保存為下載文件即可
②、jflash下載使用
設置一下,點擊 Options,選擇 Project settings,選擇 Production,勾選圖中選項,點擊 OK 就可以了。
在菜單欄 Target 中點擊 connect,連接軟件和芯片,連接好後在底下出現連接成功,接下來就是把文件下載到芯片,選擇 Target,選擇 production programming,或者直 接按 F7 就可以下載,等待下載成功,就可以正常運行。
至此,在線升級的全過程以及文件的制作給大家分享完了,有不理解的朋友歡迎交流。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!