S32Kxxx bootloader 之 LIN UDS bootloader

这篇具有很好参考价值的文章主要介绍了S32Kxxx bootloader 之 LIN UDS bootloader。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

了解更多关于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 采用三层软件架构,代码容易理解,移植也很方便。

S32Kxxx bootloader 之 LIN UDS bootloader

       LIN UDS bootloader 是独立于应用程序的一个放置在PFLASH头部的一个程序。Memory map 如下:

S32Kxxx bootloader 之 LIN UDS bootloader

        按照以上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, 上电流程如下图:

S32Kxxx bootloader 之 LIN UDS bootloader

        LIN UDS Bootloader 升级应用程序的整个流程主要使用了ISO 14229-1 标准中定义的以下UDS Services:

S32Kxxx bootloader 之 LIN UDS bootloader

   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端软件, 界面如下:

S32Kxxx bootloader 之 LIN UDS bootloader

           LIN UDS bootloader 升级应用程序使用的LIN 盒子是我们开发的Z-Box LIN, 非常漂亮,非常好用的一款LIN 盒子。见图:

S32Kxxx bootloader 之 LIN UDS bootloader文章来源地址https://www.toymoban.com/news/detail-710347.html

到了这里,关于S32Kxxx bootloader 之 LIN UDS bootloader的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32 UDS Bootloader开发-需求篇

    最近断断续续的在做基于STM32F103的UDS Bootloader,没有项目驱动,只是自己感兴趣。目前基本已经可以实现功能了,在此对做的东西进行一下总结,希望可以帮助到有需要的人。 本次使用的单片机为STM32F103RCT6,flash大小256k,一个扇区2k,SRAM:48KB flash起始地址为 0x8000000 ,大小为0x

    2024年02月06日
    浏览(48)
  • STM32 UDS Bootloader开发-下位机篇-App软件

    在之前的文章中,介绍了STM32 UDS Bootloader开发需求和bootloader软件开发的修改点。本文继续介绍APP软件关于UDS的部分。APP主要实现预编程阶段的部分内容。 此处按需求定义APP_INFO的flash区域为起始地址0x0800D800,大小0x800。 RW_IRAM2区域定义 UNINIT ,保证在APP跳boot复位后,对应ram区

    2024年02月11日
    浏览(48)
  • STM32 usart bootloader 源代码 STM32 usart bootloader 源代码 STM32 usart bootloader 原代源码

    STM32 usart bootloader 源代码   STM32 usart bootloader 源代码  STM32 usart bootloader 原代源码,上位机C#,下位机c。 简单修改可以支持stm32全系列芯片。 支持串口升级 该版本为优化过的版本, 1.支持代码段保护; 2.支持烧写失败重置; 3.兼容我公司生产的配套wifi模块和w5500模块远程更新

    2024年01月23日
    浏览(44)
  • STM32duino-bootloader:STM32的开源Bootloader深入解析

    STM32微控制器广泛应用于各种嵌入式系统。一个常见的需求是能够远程更新固件,而这通常是通过Bootloader来实现的。在本文中,我们将深入解析一个叫做STM32duino-bootloader的开源项目,它为STM32微控制器提供了一个USB DFU (Device Firmware Upgrade) bootloader。 STM32duino-bootloader简介 STM32d

    2024年02月11日
    浏览(42)
  • STM32 简易Bootloader

    目录 前言: 一、flash分配 二、起始地址设置方法 三、设置app生成bin文件 四、下载程序  五、合并hex         主要实现bootloader串口读取app程序 ,将app程序拷贝到对应运行的flash区域,跳转到对应的区域执行代码。本文没有复杂的显示,app只点亮一个灯做测试用。        

    2024年02月13日
    浏览(31)
  • STM32 ——bootloader IAP

    本文使用单片机型号:STM32F104xx IAP(In Application Programming) 是用户自己的程序在运行过程中对 User Flash 的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。为了实现 IAP 功能,系统将分为 bootloader 和 app 两部分。bo

    2023年04月09日
    浏览(32)
  • STM32 Bootloader开发记录

    编写一个基础的Bootloader,记录一下开发过程及遇到的问题。 1、基本思路 作为一个Bootloader,它首先需要具备跳转功能,能够跳转到我们的APP地址空间中运行APP。 其次,它还需要有能够读写FLASH的能力。除了启动APP,另外还有对APP进行升级的操作,这个功能需要用到读写FLAS

    2024年02月08日
    浏览(40)
  • 【STM32】制作一个bootloader

    工作环境:STM32CubeMX+Keil 相关环境准备这里就不介绍了。 bootloader是什么 bootloader就是单片机启动时候运行的一段小程序,这段程序负责单片机固件的更新,也就是单片机选择性的自己给自己下载程序。可以更新,可以不更新,更新的话,boot loader更新完程序后,跳转到新程序

    2024年02月08日
    浏览(55)
  • stm32 Bootloader设计(YModem协议)

    原文链接:https://blog.csdn.net/qinrenzhi/article/details/82771527 相信很多人都希望,不开盖就可以对固件进行升级吧,就像手机那些。下文中的bootload就来实现这样的功能。 前段时间有项目关于Bootload设计。所以就仔细的去了研究了一翻。以前都是用的stm32官方的,没有去深入了解。这

    2024年02月03日
    浏览(38)
  • STM32 APP跳转到Bootloader

    stm32 app跳转到bootloade 【STM32】串口IAP功能的实现,BootLoader与App相互跳转 STM32 从APP跳入BootLoader问题

    2024年02月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包