基于S12 MagniV系列的LIN Bootloader設(shè)計(jì)
引言
LIN (Local Interconnect Network)是一種低成本的串行通 訊網(wǎng)絡(luò),用于實(shí)現(xiàn)汽車電子系統(tǒng)的分布式控制。在不需要
CAN總線的應(yīng)用場(chǎng)合,比如智能傳感器和BCM之間的通訊, 使用LIN總線可大大節(jié)省成本。而且在智能傳感器或智能執(zhí)
行器等基于LIN通訊的模塊中,也需要實(shí)現(xiàn)用戶程序的引導(dǎo) 啟動(dòng)和固件自更新的功能。因此,基于LIN總線的
Bootloader 是汽車網(wǎng)絡(luò)節(jié)點(diǎn)的一個(gè)重要功能。
1 S12 Magniv特點(diǎn)
S12 MagniV是面向汽車應(yīng)用的高度集成且易用的混合信 號(hào)微控制器系列,提供單芯片解決方案簡(jiǎn)化了系統(tǒng)設(shè)計(jì)。 S12
MagniV基于成熟的S12技術(shù),整個(gè)產(chǎn)品組合的軟件和工 具均兼容。S12 MagniV系列以優(yōu)化的方式集成了數(shù)字編程能 力
和高精度模擬電路,配有一組可擴(kuò)展的存儲(chǔ)器,并采用基 于革新的LL18UHV技術(shù)的新型單片器件,簡(jiǎn)化了汽車電子 的
設(shè)計(jì)。目前的S12 Magniv系列中,S12VR(圖1)系列可以
圖1 S12VR系列
實(shí)現(xiàn)防夾車窗、防夾天窗等應(yīng)用,S12ZVM系列可以實(shí)現(xiàn)汽
車油泵、水泵、風(fēng)機(jī)等應(yīng)用,S12ZVL系列可以實(shí)現(xiàn)各類LIN 子節(jié)點(diǎn)應(yīng)用。這些系列都集成了LDO和LIN收發(fā)器等模擬電
路,從而可以實(shí)現(xiàn)簡(jiǎn)化系統(tǒng)設(shè)計(jì)!
2 LIN Bootloader軟件設(shè)計(jì)
2.1 LIN Bootloader程序流程及內(nèi)存分配
Bootloader引導(dǎo)程序固化在芯片內(nèi)部, 在芯片上電或 復(fù)位后首先運(yùn)行,以嘗試是否與外部建立通訊。若握手成 功,
接收到特定的數(shù)據(jù)更新用戶程序。 若通訊超時(shí), 則
圖2 LIN Bootloader程序流程
圖3 S12VR 內(nèi)存分配
從 Bootloader 程序直接跳轉(zhuǎn)到用戶程序的啟動(dòng)向量,關(guān)閉 Bootloader 中斷源,初始化 SP并且寫中斷重定向寄存器
為用 戶應(yīng)用程序向量表的起始位置,并進(jìn)入用戶應(yīng)用程序,如圖2所示。
由于S12 Magniv上電或復(fù)位后先運(yùn)行 Bootloader 程序, 因此需要設(shè)定 Bootloader 程序的中斷向量表放在默認(rèn)位置
。 同時(shí)重定向用戶應(yīng)用程序的向量表,避免和Bootloader 程序 的中斷向量表重合。Bootloader 程序執(zhí)行完畢后,跳
轉(zhuǎn)至用 戶應(yīng)用程序運(yùn)行。如圖3所示S12VR的內(nèi)存分配。
圖4 LIN bootloader協(xié)議
圖5 LIN 驅(qū)動(dòng)結(jié)構(gòu)框圖
圖6 LIN 配置流程
2.2 LIN通訊協(xié)議設(shè)計(jì)
為了通過上位機(jī)或者LIN主節(jié)點(diǎn)更新S12 Magniv系列中 的應(yīng)用程序功能,需要制定基于LIN輸線的Bootloader通訊
協(xié)議,使S12 Magniv和主節(jié)點(diǎn)或上位機(jī)進(jìn)行通訊,接受來
自上位機(jī)發(fā)送的更新數(shù)據(jù),同時(shí)發(fā)送一些Bootloader命令, 包括:(1)握手;(2)flash擦除;(3)開始傳輸S19;(4)進(jìn)入 APP;(5)發(fā)送S19數(shù)據(jù);(6)讀取Bootloader狀態(tài)。下圖4為 LIN Bootloader定義。
飛思卡爾提供了符合 LIN2.1、LIN2.0 和 SAE2602 規(guī)范 的軟件包,可以幫助開發(fā)者非常方便快速地開發(fā)出 LIN 通 訊程序。圖 5 為飛思卡爾的 LIN 驅(qū)動(dòng)程序結(jié)構(gòu)圖,LIN2.1
Core API 和 J2602 Core API 可以實(shí)現(xiàn) LIN 的初始化以及應(yīng)用 層與 core 層之間的信號(hào)傳遞功能,LIN2.1 TL層可以供測(cè)試
者發(fā)起診斷請(qǐng)求,Low Level 層處理程序與硬件之間的信號(hào)
交互,比如字節(jié)發(fā)送、接收響應(yīng)、Break 檢測(cè)等。
該軟件包除了驅(qū)動(dòng)程序之外,還提供了方便開發(fā)者使 用的圖形化配置工具 NCF GUI,該工具可以根據(jù) LIN配置 描述文件 LCF 和節(jié)點(diǎn)描述文件 NCF 自動(dòng)生成節(jié)點(diǎn)的配置.c 和.h 文件,將 LIN 代碼配置
文件、 LIN 驅(qū)動(dòng)程序和用戶 應(yīng)用軟件一起編譯, 就可以 生成實(shí)現(xiàn) LIN 通訊的可執(zhí)行 程序,如圖6 所示。從而方便 開發(fā)者將更多的時(shí)間放在應(yīng) 用程序上。
2.3 Flash操作及保護(hù)
Flash 儲(chǔ)存控制器是flash
加速單元,提供 S12 Magniv 內(nèi)核和 16位( S12) 或24位 (S 1 2 Z ) 程 序 F l a s h 之 間 的 接 口 。 程 序 F l a s h 可 擦 除 的 最 小 扇 區(qū) 僅 為 5 1 2 字 節(jié) , 而 且由于flash控制器塊只有一 個(gè)16bit內(nèi)部總線,當(dāng)flash控 制器在對(duì)flash進(jìn)行操作時(shí), 內(nèi)核總線不能訪問此flash模 塊 , 也 就 無 法 運(yùn) 行 存 儲(chǔ) 在 Flash模塊中的程序。所以S12
Magniv在執(zhí)行 Flash操作的代
圖7 flash操作代碼映射及復(fù)制
圖8 P-Flash Protection Function
碼時(shí),需要將代碼復(fù)制到 RAM 中運(yùn)行。應(yīng)到Bootloader工程 時(shí),如圖7,需要對(duì)PRM文件中分配一塊memory SEG用來存 儲(chǔ)自ash操作代碼,同時(shí)將其映射到相應(yīng)的RAM中以便將此代 碼運(yùn)行在RAM中。
在實(shí)際使用過程中,需要保護(hù)Bootloader程序完整,對(duì) Bootloader程序存放的flash區(qū)域添加保護(hù)功能,防止被意外擦 除或?qū)懭?。Flash 模塊中的 FPROT 寄存器可以用來防止Flash 防止被誤寫入和擦除。保護(hù)的區(qū)域分為三部分,如圖8所示。
3 S12 Magniv 平臺(tái)LIN Bootloader實(shí)現(xiàn)
圖9 上位機(jī)程序
3.1 LIN Bootloader平臺(tái)搭建
在開發(fā)LIN Bootloader的過程中, 開發(fā)了基于PCAN- USB PRO LIN適配器的上位機(jī)程序(圖9)用來實(shí)現(xiàn)整個(gè)LIN Bootloader平臺(tái)。設(shè)置波特率為19200bps,選擇好燒錄的S19 文件,然后點(diǎn)擊發(fā)送,上位機(jī)開始發(fā)送握手協(xié)議命令。將 S12VR 上電,與上位機(jī)握手成功,就開始下載用戶運(yùn)用程 序。
3.2 App Code
為了實(shí)現(xiàn)用戶應(yīng)用程序中斷重定向,需要對(duì)應(yīng)用程序 進(jìn)行修改使它能夠滿足設(shè)計(jì)的 LIN Bootloader的要求。需要 修改工程中的 PRM 文件中的“MEMORY”分布和中斷向量 基地址寄存器。
3.3 Bootloader性能
基于S12VR的Bootloader性能如下:
? Bootloader Code size is about 4.5K;
? LIN Baudrate is 19.2K;
? 64k size S19 update can be finished in the 2 minites。
評(píng)論