S32Kxxx bootloader之CAN FD UDS bootloader

  瞭解更多關於bootloader 的C語言實現,請加我Q扣: 1273623966 (驗證信息請填 bootloader),歡迎諮詢或定製bootloader(在線升級程序)。

  六年前, 汽車內ECU CAN 網絡 還有低速CAN 網絡, 速度是250kbps,不用接終端電阻就可以組網。但是很快ECU CAN網絡都轉爲高速CAN 網絡,速度爲500kbps或th上. 最近2年,ECU CAN 網絡越來越多的採用CAN FD。ECU 越來越多,交互數據也越來越多,所以再過2,3年,估計ECU 高速CAN 網絡也不多見,絕大多數都會轉爲CAN FD網絡。通過CAN FD 總線藉口bootloader升級ECU應用程序也會越來越常見,今天想給大家介紹的就是最近剛完成的S32K1xxx系列的CAN FD UDS bootloader。

       CAN FD bootloader 燒寫到ECU 的主芯片後,後續ECU 的應用程序需要升級,通過CAN FD 總線即可實現升級,不需要把ECU 拆出來,也不需要燒寫口,只需一臺電腦通過CAN FD bus和ECU相連,即可給汽車內的ECU 完成應用程序更新。

        

       此UDS bootloader 是基於NXP芯片S32K116的CAN FD總線接口bootloader. 軟件架構如下圖:

            CAN FD UDS bootloader 是放置在芯片S32K116 pflash 的0x00000000 ~ 0x0000EFFF,memory map 如圖:

        ECU 上電後運行進入bootloader程序,判斷是否有更新請求,沒有更新請求且應用程序有效則跳轉到應用程序,有更新請求或應用程序無效則停留在bootloader,  flash driver 可以由上位機下載到RAM, Erase 和Program pflash的動作是通過調用RAM中的flash driver API 完成的。 flash driver 也可以固化在ROM中,此時,Erase 和Program pflash的動作是通過調用ROM中的flash driver API 完成的。上電流程如下圖:

  CAN FD UDS Bootloader 升級應用程序的整個流程主要使用了ISO 14229-1 標準中定義的以下UDS Services:

       上位機是我使用C#開發GUI host 程序zFlash, 使用zFlash時有一個地方需要注意,比特率的選擇,如果選擇405002,代表CAN FD 盒子主芯片工作時鐘頻率40M,仲裁段比特率500K,數據段比特率2M。如果選擇4010002,代表CAN FD 盒子主芯片工作時鐘頻率40M,仲裁段比特率1000K,數據段比特率2M。目前只支持這兩種選擇,後續會增加更多的選擇項。

  此CAN FD bootloader 遵從UDS 協議,比起之前我做的自定義協議的CAN bootloader 效率要高很多,更新應用程序花的時間要少一半多。更新應用程序的log 如下截圖。

 

 

 

 

      

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章