EMW5080 BootLoader更新方法
步驟一:劃分ECU系統(tǒng)的存儲(chǔ)空間在進(jìn)行EMW5080 BootLoader的更新之前,需要先對(duì)ECU系統(tǒng)的存儲(chǔ)空間進(jìn)行劃分。這是為了確保BootLoader程序和應(yīng)用程序能夠正確地存儲(chǔ)和運(yùn)行。通過(guò)合理
步驟一:劃分ECU系統(tǒng)的存儲(chǔ)空間
在進(jìn)行EMW5080 BootLoader的更新之前,需要先對(duì)ECU系統(tǒng)的存儲(chǔ)空間進(jìn)行劃分。這是為了確保BootLoader程序和應(yīng)用程序能夠正確地存儲(chǔ)和運(yùn)行。通過(guò)合理劃分存儲(chǔ)空間,可以有效避免沖突和錯(cuò)誤。
步驟二:判斷ECU系統(tǒng)請(qǐng)求類(lèi)型
在進(jìn)行BootLoader更新時(shí),需要判斷ECU系統(tǒng)接收到的是應(yīng)用程序更新請(qǐng)求還是BootLoader更新請(qǐng)求。根據(jù)不同的請(qǐng)求類(lèi)型,采取不同的更新方式。
步驟三:增量更新應(yīng)用程序代碼區(qū)
如果ECU系統(tǒng)接收到的是應(yīng)用程序更新請(qǐng)求,那么需要使用增量更新方式對(duì)應(yīng)用程序代碼區(qū)進(jìn)行更新。增量更新可以減少更新時(shí)間和存儲(chǔ)空間的占用,提高效率。
串口部分代碼說(shuō)明
關(guān)于串口部分代碼,在本文中不做詳細(xì)解釋。請(qǐng)查閱相關(guān)型號(hào)的用戶(hù)手冊(cè)獲取更多信息。需要注意的是,在BootLoader中不能開(kāi)中斷。因此,在串口接收方面,我們采取循環(huán)等待接收的方式,只有在需要接收新數(shù)據(jù)時(shí)才會(huì)接收串口消息。
修改鏈接文件
我們?cè)贗AR的安裝目錄下的STM8config文件夾中找到lnkstm8s003f3.icf文件。然后將其復(fù)制到BootLoader工程目錄下,并以文本方式打開(kāi)該鏈接文件。對(duì)于APP應(yīng)用程序,我們需要將其中的NearFuncCode、FarFuncCode和HugeFuncCode的起始地址均從0x8000修改為0x8400。這樣可以確保BootLoader和應(yīng)用程序之間不會(huì)發(fā)生沖突。
對(duì)于BootLoader程序來(lái)說(shuō),鏈接文件可以不做修改。但是修改鏈接文件的好處是,當(dāng)BootLoader程序大小超過(guò)設(shè)定值時(shí)(例如1KB),IAR在編譯鏈接時(shí)可以檢測(cè)出來(lái)。具體的修改方法請(qǐng)參考下圖示例。
重新編寫(xiě)的EMW5080 BootLoader更新方法及相關(guān)代碼解析