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

通過LIN協(xié)議6進(jìn)行Flash EE存儲器編程

LINB DLL編程指南

flash存儲器在線編程

flash存儲器的讀寫原理及次數(shù)
使用CPLD產(chǎn)品實現(xiàn)大容量FLASH存儲器的接口設(shè)計

Flash存儲器在MCS-51系統(tǒng)中的應(yīng)用

AN-946: 通過LIN—協(xié)議6進(jìn)行Flash/EE存儲器編程

EE-213:通過Blackfin?處理器的異步存儲器接口進(jìn)行主機通信

EE-213:Blackfin處理器通過異步存儲器接口進(jìn)行主機通信

EE-302:ADSP-BF53x Blackfin處理器與NAND FLASH存儲器的接口

AN-881: 通過LIN—協(xié)議4進(jìn)行Flash/EE存儲器編程

評論