S32Kxxx bootloader 之 LIN UDS bootloader

来源:https://www.cnblogs.com/geekygeek/archive/2023/10/03/s32k_lin_uds_bootloader.html
-Advertisement-
Play Games

此LIN UDS bootloader的上位機是zFlash, LIN盒子是自己開發的,更新應用程式時bootloader和上位機zFlash間通訊採用UDS協議 ...


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

  LIN 匯流排是汽車ECU使用比較多的一種匯流排, 車燈, 車門, 汽車空調控制面板等等ECU都有在使用. 而這些ECU離線升級時, 就需要使用到LIN bootloader, OEM廠商都會要求升級ECU應用程式必須遵循UDS協議,也就是需要LIN UDS bootloader. 今天要介紹的就是一款基於NXP ARM Coretex-M0 的32-bit MCU S32K116 的LIN UDS bootloader. 此款LIN UDS bootloader 採用三層軟體架構,代碼容易理解,移植也很方便。

       LIN UDS bootloader 是獨立於應用程式的一個放置在PFLASH頭部的一個程式。Memory map 如下:

        按照以上memory map放置LIN UDS bootloader, LIN UDS bootloader程式的linker script 需要做如下修改(註意,應用程式的linker script 也同樣需要修改,這裡就不列出來):

/* Specify the memory areas */
MEMORY
{
  /* Flash */
  m_interrupts          (RX)  : ORIGIN = 0x00000000, LENGTH = 0x000000C0
  m_flash_config        (RX)  : ORIGIN = 0x00000400, LENGTH = 0x00000010
  m_text                (RX)  : ORIGIN = 0x00000410, LENGTH = 0x0000EBF0 
  APP_Info_text         (RX)  : ORIGIN = 0x0000F000, LENGTH = 0x00000200 
  APP_text              (RX)  : ORIGIN = 0x0000F200, LENGTH = 0x00010E00 /*0x0001FBF0*/
  
  /* SRAM_L */
  m_custom              (RW)  : ORIGIN = 0x1FFFFC00, LENGTH = 0x00000400
  
  /* SRAM_U */
  m_data                (RW)  : ORIGIN = 0x20000000, LENGTH = 0x000020C0
  m_data_2              (RW)  : ORIGIN = 0x200020C0, LENGTH = 0x00000F30
  flash_driver          (RW)  : ORIGIN = 0x20002FF0, LENGTH = 0x00000800 /*2kB flash driver*/
  exchange_info         (RW)  : ORIGIN = 0x200037F0, LENGTH = 0x00000010 /*exchange information*/
}

  ECU 上電後運行進入LIN UDS bootloader程式,判斷是否有更新請求,沒有更新請求且應用程式有效則跳轉到應用程式,有更新請求或應用程式無效則停留在bootloader, 上電流程如下圖:

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

   LIN UDS bootloader 工作在ECU端,是UDS server端,上位機工作在PC端,是UDS client端。上位機請求以上UDS service (發送請求Frame), LIN UDS bootloader 接收到請求作出正響應或負響應 (發送響應Frame)。不管是請求Frame 還是響應Frame, 都需要遵循ISO-17987. 分為單幀或多幀,格式如下:

                /* package single frame */
                /* ____________________________________________ */
                /* | NAD | PCI | SID | D1 | D2 | D3 | D4 | D5 | */
                /* |_____|_____|_____|____|____|____|____|____| */


                /* package first frame */
                /* ____________________________________________ */
                /* | NAD | PCI | LEN |SID | D2 | D3 | D4 | D5 | */
                /* |_____|_____|_____|____|____|____|____|____| */


                /* package consecutive frame */
                /* ___________________________________________ */
                /* | NAD | PCI | D1 | D2 | D3 | D4 | D5 | D6 | */
                /* |_____|_____|____|____|____|____|____|____| */

   上位機是我用Visual Studio 和 C# 開發的PC端軟體, 界面如下:

           LIN UDS bootloader 升級應用程式使用的LIN 盒子是我們開發的Z-Box LIN, 非常漂亮,非常好用的一款LIN 盒子。見圖:

~!!~!!~!!~!!~!!~WELCOME TO MY HOME: WWW.CNBLOGS.COM/GEEKYGEEK~!!~!!~!!~!!~!!~
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 以下內容來源網上 經過整合而成 一、一般介紹 STL(Standard Template Library),即標準模板庫,是一個具有工業強度的,高效的C++程式庫。它被容納於C++標準程式庫(C++ Standard Library)中,是ANSI/ISO C++標準中最新的也是極具革命性的一部分。 ...
  • 本篇為[用go設計開發一個自己的輕量級登錄庫/框架吧 - 秋玻 - 博客園 (cnblogs.com)]的二級認證業務篇,會講講二級認證業務的實現,給庫/框架增加新的功能。 源碼:https://github.com/weloe/token-go ...
  • Stream 簡介 Spring Cloud Stream 是用於構建消息驅動的微服務應用程式的框架,提供了多種中間件的合理配置 Spring Cloud Stream 包含以下核心概念: Destination Binders:目標綁定器,目標指的是 Kafka 或者 RabbitMQ,綁定器就是 ...
  • 我們前面完成了Dart語言基礎特性的學習,包括基礎語法概覽、迭代集合、非同步編程、Mixin高級特性和變數等。今天我們來學習Dart的庫相關知識,包括如何導入庫、指定庫首碼、導入部分或者排除部分庫、延遲導入庫等,最後看下Dart中67個關鍵字作為標識符的一些約束…… ...
  • 需求:輸入錯誤的手機號,會有提示語,正確的手機號碼會有正確的圖標 效果: 思路: (1)排版(不細講),使用input 、button、span等標簽,排版裡面一個主要的小點是,需要寫出兩個span ,通過v-show先進行隱藏,等後面判斷手機號碼的正確錯誤再進行顯示與隱藏 (2)接著,就需要在in ...
  • Java 21中除了推出JEP 445:Unnamed Classes and Instance Main Methods之外,還有另外一個預覽功能:未命名模式和變數(Unnamed Patterns and Variables)。該新特性的目的是提高代碼的可讀性和可維護性。 下麵通過一個例子來理解 ...
  • Windows 線程同步是指多個線程一同訪問共用資源時,為了避免資源的併發訪問導致數據的不一致或程式崩潰等問題,需要對線程的訪問進行協同和控制,以保證程式的正確性和穩定性。Windows提供了多種線程同步機制,以適應不同的併發編程場景。以上同步機制各有優缺點和適用場景,開發者應根據具體應用場景進行選... ...
  • 很多想學Java的人不知道怎樣選教程,本文對Java自學網站進行評測。 本文不帶主觀傾向,只客觀分析各個網站的區別。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...