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