S32Kxxx bootloader之LIN bootloader

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

  上一次發佈博文到如今既然已一年有餘, 開始着手寫今天這篇博文, 有着一種久違的感覺。 今天要給大家介紹的是S32K116 的LIN bootloader, 這個LIN bootloader 可以很容易地移植到S32K118,S32K142, S32K146以及S32K148,當然移植到其他硬件平臺也不難,只需花費一些時間替換底層驅動即可。

       Bootloader 是一種用來更新應用程序的軟件。它一般和PC端的host軟件一起協同合作才能完成應用程序的更新。PC端的host軟件我們常稱之爲上位機,Bootloader 亦常被稱爲下位機,今天這個LIN bootloader的上位機是使用C#語言寫的,需要調用USB-2-LIN適配器的驅動程序API. 所以PC端需要安裝USB-2-LIN適配器的驅動。我使用的是我自己開發的USB-2-LIN適配器,這也是我爲什麼一年多了纔有新的bootloader 產品出現。目前所有的開發任務都已經完成,只剩給我的USB-2-LIN配置器找一個漂亮的外殼了。LIN bootloader 已經經過了完整的測試。測試連接圖如下:

         PC端安裝了我的USB-2-LIN適配器的驅動,運行我用C#寫的host程序zFlash, 通過USB口,連接我的USB-2-LIN適配器,USB-2-LIN適配器另一頭通過LIN總線和用戶板相連,用戶板就是我的S32K116 EVB板,上面運行我的LIN bootloader軟件。

        zFlash 的UI界面如下:

          LIN Bootloader 是在NXP  ARM Cortex-M0 32-bit 微控制器上實現的。開發環境如下:

      1. IDE: S32DS for ARM, Version: 2018.R1

      2. Compiler: GCC for ARM,  Version:gcc-6.3-arm32-eabi

      3. SDK: S32DS/S32SDK_S32K1xx_RTM_3.0.0

      LIN bootloader 的上層代碼是手寫的,以下底層Components 代碼都是通過S32DS 的Processor Expert配置後自動生成:

     1, PIN (pin_mux)

     2. Clock (clock manager)

     3. Interrupt (interrupt manager)

     4. LIN stack

     5. Flash (flash driver)

     6. LIN tranceiver Tja1027

     LIN bootloader 實現過程比較順利,只在兩個問題上花費了一些時間去調試,第一個是timing的問題,上位機是LIN Master節點,發送擦除命令後,需要發送LIN frame header 讓LIN Slave節點下位機反饋擦除的狀態,由於預估的時間不準,下位機還在執行中,就把LIN frame header 發送出去,然後一直報no response的錯誤,後來經過調試,才解決了這個timing的問題。第二個問題是跳轉的問題,擦除和燒寫都順利完成,但是跳轉過去,APP死活運行不正常,我將板子裏面的程序讀出來和應用程序的hex文件對比,是一模一樣的,燒寫器單獨燒APP,運行正常,LIN Bootloader跳轉到APP,卻不能正常工作,所以我懷疑是跳轉的問題,我在跳轉前增加了一小段代碼,把所有用到的Peripheral都Deinit, 再試,多次試,都能成功跳轉,並且APP運行正常。

INT_SYS_DisableIRQ(LPTMR0_IRQn);
INT_SYS_DisableIRQGlobal();
LPTMR_DRV_Deinit(INST_LPTMR1);
lin_lld_deinit(LI0);
Jump_To_Application(*((uint32_t*)APP_START_ADDRESS));

      此LIN bootloader 從計劃到實現耗費了我近一年的空閒時間,包含了好幾塊的開發任務,包括上位機zFlash的開發,下位機LIN bootloader的開發, 測試用應用程序的開發,以及USB-2-LIN適配器的開發。USB-2-LIN適配器的開發就佔據了其中一半多的時間,USB-2-CAN 適配器國內國外的公司都有很多的成功產品,有不少資源可以參考,甚至有開源項目可以參考。但是USB-2-LIN適配器能找到的產品就比USB-2-CAN適配器要少很多,推出USB-2-LIN適配器的國外公司不多,國內公司就更少,可以參考的資源也就很少,所以這個USB-2-LIN耗費了我相當多的心血,很多假期都是不休息,不停暴肝,努力不放棄,才最終成功推出這款USB-2-LIN適配器。

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