Stm32 Bootloader整理
一.基本概念
1.IAP
IAP是In Application Programming的首字母縮寫,IAP是用戶自己的程序在運行過程中對User Flash的部分區(qū)域進行燒寫,目的是為了在產(chǎn)品發(fā)布后可以方便地通過預(yù)留的通信口對產(chǎn)品中的固件程序進行更新升級。
通常在用戶需要實現(xiàn)IAP功能時,即用戶程序運行中作自身的更新操作,需要在設(shè)計固件程序時編寫兩個項目代碼,第一個項目程序不執(zhí)行正常的功能操作,而只是通過某種通信管道(如USB、USART)接收程序或數(shù)據(jù),執(zhí)行對第二部分代碼的更新;第二個項目代碼才是真正的功能代碼。
2.Bootloader
在上述IAP的概念中,bootloader就是其第一個項目程序。bootloader主要實現(xiàn)的功能:從串口、USB等媒介接收數(shù)據(jù);存儲和搬運數(shù)據(jù);程序跳轉(zhuǎn)等功能。
3.App程序
對IAP概念中,對第二個項目代碼的一種稱呼。
4.Ymodem
YModem協(xié)議是由XModem協(xié)議演變而來的,每包數(shù)據(jù)可以達到1024字節(jié),是一個非常高效的文件傳輸協(xié)議。
Ymodem一幀數(shù)據(jù)的結(jié)構(gòu)
第一字節(jié)
第二字節(jié)
第三字節(jié)
Data[0..128]/
Data[0..1027]
倒數(shù)第二字節(jié)
最后一個字節(jié)
SOH/STX
編號
編號反碼
有效數(shù)據(jù)區(qū)
CRC校驗高位
CRC校驗低位
圖1. Ymodem一幀數(shù)據(jù)的結(jié)構(gòu)
解釋:
第一字節(jié):1.為SOH,有效數(shù)據(jù)包大小為128字節(jié);
2.為STX,有效數(shù)據(jù)包大小為1024字節(jié)。
第二字節(jié):數(shù)據(jù)包的編號,第一幀數(shù)據(jù),編號為00。
第三字節(jié):數(shù)據(jù)包編號的反碼,第一幀數(shù)據(jù),為FF。
有效數(shù)據(jù)區(qū):根據(jù)第一個字節(jié)的內(nèi)容,有效數(shù)據(jù)區(qū)大小為128字節(jié)或1024字節(jié)。
倒數(shù)第二個字節(jié):CRC校驗高位。
最后一個字節(jié):CRC校驗低位。
注:參加CRC校驗的只有有效數(shù)據(jù)區(qū)。
第一幀數(shù)據(jù)結(jié)構(gòu):
SOH 00 FF Foo.cNUL[123] CRC(high) CRC(low)
其中:Foo.c為傳輸文件的文件名;有效數(shù)據(jù)區(qū)的剩余字節(jié)用0補足。(就是’
