首页 > 其他分享 >S32Kxxx bootloader 之 LIN UDS bootloader

S32Kxxx bootloader 之 LIN UDS bootloader

时间:2023-10-03 14:55:24浏览次数:35  
标签:ORIGIN UDS S32Kxxx ____ LENGTH bootloader LIN

了解更多关于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 盒子。见图:

 

标签:ORIGIN,UDS,S32Kxxx,____,LENGTH,bootloader,LIN
From: https://www.cnblogs.com/geekygeek/p/s32k_lin_uds_bootloader.html

相关文章

  • UDS
     统一诊断服务(UnifiedDiagnosticServices)ISO14229 一、概念是一种 通用的诊断服务标准 ,用于汽车电子控制单元(ECU)的诊断和调试。UDS是ISO14229标准定义的一种通信协议,可以在CAN、LIN等多种总线上进行通信。UDS协议定义了一套标准的诊断服务,包括会话控制、诊断请求......
  • [IJCAI 2023]Fighting against Organized Fraudsters Using Risk Diffusion-based Par
    [IJCAI2023]FightingagainstOrganizedFraudstersUsingRiskDiffusion-basedParallelGraphNeuralNetwork文章设计了一种基于社区的医疗保险欺诈行为检测。模型为了提高精度,模型设计了一组异构图模型和一组同构图模型。输入的异构图是保险受益人-医疗服务提供者的图,......
  • UDS之时间参数总结篇
    UDS:(UnifiedDiagnosticService)统一诊断服务协议。之所以称为统一诊断服务,则是因为该协议是建立在各种传输方式之上的应用层协议,与底层所采用的通信介质都没有关系,该协议内容在ISO14229-1中定义,目前该协议版本已更新至2020版。 AddressingMode(AM)在发送诊断指令的过程......
  • UDS服务基础篇之85服务
    定义:诊断服务85服务主要用于开启或者停止DTC状态位的更新功能,这个功能在主机厂规定的诊断服务规范当中都会有实际的功能及作用。 应用场景一般而言,对于85诊断服务,主要应用场景为以下场合:用于在诊断刷写的过程中关闭DTC记录,因为在刷写的过程中往往是针对某个ECU节点单独进......
  • UDS诊断服务基础篇之27
    定义:诊断服务27应用场合主要是用于Server数据上传或者下载,重要信息传递,功能安全等实施的过程中,比如如果对于重要数据的上传或者下载过程不做任何限制,很有可能会对整车的行车安全造成极大的威胁,特别是针对底盘域的控制器更是要在这方面做好全方位的安全防护措施,此时27服务便应运而......
  • UDS服务基础篇之31服务
    定义:31服务主要用于实现针对某类测试场景,非正常工况下的程序活动以及其他擦除内存等连续性操作步骤的集合。在某些情况下2F服务的基本功能也是能够通过31服务来实现,可以理解2F实现的功能31服务均可以实现,不过如果能够用2F实现的功能来用31服务,未免有些大材小用,因此31服务则是用......
  • UDS诊断服务基础篇之22
      应用场景:读取当前ECU的序列号,版本号等;标定成功后读取内部标定结果等;读取当前ECU所处在的Session,内部状态,SnapshotData等;其他需要读取内部相关参数的场合;服务请求:服务请求是Client发送给到Server的诊断服务指令。其中Client可以理解为Tester,Server可以理解......
  • UDS服务基础篇之2F
    定义:2F服务作为输入输出控制服务,其全称为InputOutControlByIdentifier。该服务是用于client主动请求server去对相关输入输出信号进行控制。所谓的输入输出控制简而言之就是屏蔽实际的输入输出信号值,取而代之的是client主动以某种特定的控制方式去设置这些信号值。 使用:2F服......
  • bootparams从bootloader到内核
    setup中的header在header.S结构中定义了一个使用汇编语言定义的hdr结构,这个结构是bootloader和内核setup代码之间通过boot协议约定的:在哪个位置是什么字段,字段是什么意义都是bootloader和内核达成共识的,我们甚至可以认为:这个协议类似于tcp/ip的报文格式:特定偏移的特定变量具有特......
  • Bootloader之uBoot简介
    一、Bootloader的引入从前面的硬件实验可以知道,系统上电之后,需要一段程序来进行初始化:关闭WATCHDOG、改变系统时钟、初始化存储控制器、将更多的代码复制到内存中等等。如果它能将操作系统内核(无论从本地,比如Flash;还是从远端,比如通过网络)复制到内存中运行,就称这段程序为Bootloa......