簡介
ADuC703x系列器件的一個主要特性是能夠將代碼在線下載至片內Flash/EE存儲器,這種在線代碼下載通過LIN通信總線執行。
本應用筆記描述ADuC703x器件使用協議6實現的下載協議,以便用戶能夠開發自己的LIN編程工具來進行串行生產編程或應用更新。
在本應用筆記中,主機指的是用來下載數據至ADuC703x的主機(微控制器、DSP或其他機器),加載程序特指ADuC703x中固化的串行下載固件。
注意,本應用筆記僅描述協議6.協議6遵從UDS(ISO/DIS 14229-1.2,道路車輛統一診斷服務)規定的一般程序。然而,由于可用代碼空間有限,僅限于實際最低需求的服務。
應用筆記AN-881("通過LIN-協議4進行Flash/EE存儲器編程")描述協議4。
器件標識的第3行顯示所用協議。A60表示協議6的發行版本,A40則表示協議4.
表1. 標識實例
編程序列可以通過診斷測試儀啟動和控制,診斷測試儀一般通過控制器區域網絡(CAN)連接到LIN主機。LIN主機充當一個網關,將診斷消息從CAN總線路由到LIN總線。為了方便診斷消息從CAN路由到LIN,模塊編程所用的LIN命令應符合"LIN診斷和配置規范"(2.0版,2003年9月23日)。
運行ADuC703x加載程序
為了實現LIN下載,只有當NTRST在復位期間為低電平,并且Flash/EE存儲器地址0x80014的內容不是0x27011970及頁0校驗和時,ADuC703x才會進入加載程序模式,如圖1所示。
圖1. 進入下載模式
一般情況下,NTRST保持低電平,進入下載模式與否由Flash地址0x80014的內容決定。通常而言,Flash地址0x80014的值不是0xFFFFFFFF,因此,用戶代碼必須具有一個內置機制來毀壞位置0x80014或擦除頁0(Flash地址0x0至Flash地址0x200),并且復位器件。這種機制支持進入下載模式,以便對器件重新編程。理想情況下,Flash地址0x80014的值應最后編程,以便在電源發生故障時,或者在對程序主體進行編程期間發生錯誤時,能夠重新進入下載模式。
頁0的校驗和指頁0中的所有半字之和,不包括地址0x80014的兩個半字。該校驗和必須存儲在地址0x80014.
分組結構
LIN與加載程序的通信必須遵守"LIN診斷和配置規范"(2.0版,2003年9月23日)的下列一般要求:
● 內核必須為每個LIN診斷幀(主機請求幀和從機響應幀)實現一個時隙。
● LIN主機的請求必須遵從表2所示的分組數據單元(PDU)格式。
表2. 幀標識符0x3C
● 響應必須遵從表3所示的PDU格式。
表3. 幀標識符0x3D
● 只能使用PCI型單幀(SF)。不支持首幀(FF)和連續幀(CF)。
● 所有幀均使用傳統校驗和。
● 忽略無法識別的命令。
● 忽略任何有錯誤(如通信錯誤等)的幀,因此,錯誤的擦除例程幀會被忽略。忽略錯誤的請求下載幀,因此,不會識別后續的傳輸數據幀,也不會進行編程。任何錯誤的傳輸數據幀都會終止識別傳輸數據幀。事實上,任何具有正確NAD且PCI ≠ 0x05或SID ≠ 0x36的幀,或者任何具有錯誤校驗和的幀,都會終止識別傳輸數據幀。
● 在"片內加載程序中實現的命令"部分,表5至表7和表9至表15的"值"欄所示的地址是硬編碼值,不是示例。
片內加載程序中實現的命令
本部分描述協議6實現的7個命令。
●指定NAD
● 按標識符讀取
● 擦除例程
● 下載請求
●傳輸數據
● 校驗例程
● ECU復位
指定NAD
該命令是必需的,用于給從機指定一個新NAD,因為不同的網絡系統需要將不同的NAD用于其相應的邏輯從機節點。
請求
LIN協會將供應商ID 0x003A分配給ADI公司。協議6的功能ID如表4所列。
表4. 功能ID
注意,為了防止從機因為網絡損壞而丟失,從機總是通過廣播NAD 0x7F識別"指定NAD"命令。當發送"指定NAD"命令時,無論從機的實際NAD是什么,從機都會識別該命令。然后,內核檢查供應商ID和功能ID,判斷該命令是否是針對該從機而發出的。本文以功能ID 0x32為例進行說明。
表5. 指定NAD請求
響應
從機不響應該請求。
按標識符讀取
編程序列中止后,在啟動嘗試第二次編程之前,診斷測試儀利用"按標識符讀取"請求要求LIN從機表明身份。
請求
支持4個標識符(標識符0x0、標識符0x32、標識符0x33和標識符0x34)。
表6. 按標識符讀取請求
標識符0x0.
帶標識符0x0的按標識符讀取請求返回LIN產品識別信息。對于ADuC703x LIN產品,此信息由8字節數據幀響應組成,如表7所示。
表7. 標識符0x0數據幀響應
標識符0x32、標識符0x33和標識符0x34
對這些標識符的響應會返回器件存儲器中的用戶配置數據。加載程序預期數據字節的內容位于Flash/EE存儲器的最后一頁,如表8所示。
表8. 分配給其他標識符的Flash位置
注意,Flash/EE存儲器最后一頁的最后四個字節保留用于校驗和。
響應
LIN從機的肯定響應如表9所示。
表9. LIN從機響應
從機不提供否定響應。
擦除例程
概述
可以一次擦除多頁,以及請求下載和傳輸連續多頁的更新數據。選擇哪一種更新策略,完全由診斷測試儀決定。然而,1000 LIN幀中預計有1幀會發生傳輸錯誤,因此建議針對各頁獨立重復擦除、編程、驗證周期。必須考慮以下三條限制:
● 無法對小于從機的一個Flash頁面,即小于512字節的存儲器區域進行編程。
● 頁0的編程必須給予特別考慮,必須對其進行初始編程,使得位置0x80014 = 0xFFFFFFFF.
● 除了對Flash/EE存儲器的單個頁面進行驗證以外,執行ECU復位之前,建議對Flash/EE存儲器的整個用戶區域的校驗和進行驗證。
●驗證最后一頁后,必須對0x80014以外的頁0區域進行重新編程(不擦除),0x80014用于存儲校驗和或所需的另一個值。
請求
擦除例程擦除從第P頁開始的N個Flash頁面的內容。每個Flash頁面包含512個字節。值N = 0保留供將來使用。
表10. 擦除例程請求
字節5和字節6中的索引指的是頁起始地址右移9位后的值。例如,Flash/EE存儲器中第2頁的起始地址是0x80400,右移9位后是0x0402,該索引表示為:字節5 = 0x02,字節6 = 0x04.
響應
從機不響應該請求。
下載請求
參見擦除例程概述部分。
請求
表11. 下載請求
請求下載命令定義要編程的存儲器區域。隨后的數據通過傳輸數據命令傳輸,寫入從第P頁開始的N個頁面。
響應
從機不響應該請求。
傳輸數據
這些請求必須跟隨在下載請求之后。
請求
傳輸數據命令傳輸Flash數據。從機期待N × 512字節的數據,其中N為請求下載命令定義的頁數。僅支持完整的4字節字。當LIN波特率為19.2 kbps時,刷新一頁需要大約512/4 × 10 ms = 1.28秒。
表12. 數據傳輸請求
響應
從機不響應該請求。
校驗例程
請求
校驗例程命令計算從第P頁到第P + N -1頁的存儲器區域的校驗和。N = 0的響應未定義。此命令不僅應對每一頁執行,而且應在所有編程完成后執行,因為擦除或下載命令中的錯誤可能影響目標頁面之外的其他頁面。診斷測試儀比較從LIN從機接收到的校驗和與Flash數據容器中提供的參考校驗和。如果二者不符,則重復執行編程程序。校驗和等于從第P頁的第一個16位字到第P + N -1頁的最后一個16位字的所有16位值之和,校驗和 = (Σ 16位字)模32.對于單個頁面,從機接收到校驗例程請求之后,計算校驗和需要500 μs.這里不使用循環冗余校驗(CRC)算法,原因如下:
●CRC校驗和計算所需的時間大約是這里的簡單校驗和計算所需時間的8倍。
●ADI公司采用誤差模型假設,認為校驗區域中的所有半字或位并不是全部按照要求進行編程。這樣的頁面總是會顯示較少的0,使得校驗和較高。另一方面,對未擦除的頁面進行編程總是會顯示較多的0,使得校驗和較低。第三種可能性是單個半字或位錯誤。無論使用CRC校驗和還是簡單校驗和,檢測到此類錯誤的概率均相同。
表13. 校驗例程請求
響應
表14. 校驗例程響應
ECU復位
請求
表15. ECU復位請求
ECU復位命令對從機執行復位。ADuC703x器件的重新啟動程序如圖1所示。如果地址0x80014的值與第0頁的校驗和一致或者等于0x27011970,則將執行應用程序軟件。
響應
從機不響應該請求。
-
微控制器
+關注
關注
48文章
7564瀏覽量
151558 -
dsp
+關注
關注
553文章
8014瀏覽量
349196 -
FlaSh
+關注
關注
10文章
1637瀏覽量
148146 -
存儲器
+關注
關注
38文章
7502瀏覽量
163939
發布評論請先 登錄
相關推薦
評論