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

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

LINB DLL編程指南

flash存儲(chǔ)器在線編程

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

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

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

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

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

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

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

評(píng)論