0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用LIN—协议6进行Flash/EE存储器编程要注意什么

电子设计 作者:电子设计 2018-09-03 08:58 次阅读

简介

ADuC703x系列器件的一个主要特性是能够将代码在线下载至片内Flash/EE存储器,这种在线代码下载通过LIN通信总线执行。

本应用笔记描述ADuC703x器件使用协议6实现的下载协议,以便用户能够开发自己的LIN编程工具来进行串行生产编程或应用更新。

在本应用笔记中,主机指的是用来下载数据至ADuC703x的主机(微控制器DSP或其他机器),加载程序特指ADuC703x中固化的串行下载固件。

注意,本应用笔记仅描述协议6.协议6遵从UDS(ISO/DIS 14229-1.2,道路车辆统一诊断服务)规定的一般程序。然而,由于可用代码空间有限,仅限于实际最低需求的服务。

应用笔记AN-881("通过LIN-协议4进行Flash/EE存储器编程")描述协议4。

器件标识的第3行显示所用协议。A60表示协议6的发行版本,A40则表示协议4.

表1. 标识实例

如何利用LIN—协议6进行Flash/EE存储器编程,有哪些注意事项?

编程序列可以通过诊断测试仪启动和控制,诊断测试仪一般通过控制器区域网络CAN)连接到LIN主机。LIN主机充当一个网关,将诊断消息从CAN总线路由到LIN总线。为了方便诊断消息从CAN路由到LIN,模块编程所用的LIN命令应符合"LIN诊断和配置规范"(2.0版,2003年9月23日)。

运行ADuC703x加载程序

为了实现LIN下载,只有当NTRST在复位期间为低电平,并且Flash/EE存储器地址0x80014的内容不是0x27011970及页0校验和时,ADuC703x才会进入加载程序模式,如图1所示。

如何利用LIN—协议6进行Flash/EE存储器编程,有哪些注意事项?

图1. 进入下载模式

一般情况下,NTRST保持低电平,进入下载模式与否由Flash地址0x80014的内容决定。通常而言,Flash地址0x80014的值不是0xFFFFFFFF,因此,用户代码必须具有一个内置机制来毁坏位置0x80014或擦除页0(Flash地址0x0至Flash地址0x200),并且复位器件。这种机制支持进入下载模式,以便对器件重新编程。理想情况下,Flash地址0x80014的值应最后编程,以便在电源发生故障时,或者在对程序主体进行编程期间发生错误时,能够重新进入下载模式。

页0的校验和指页0中的所有半字之和,不包括地址0x80014的两个半字。该校验和必须存储在地址0x80014.

分组结构

LIN与加载程序的通信必须遵守"LIN诊断和配置规范"(2.0版,2003年9月23日)的下列一般要求:

● 内核必须为每个LIN诊断帧(主机请求帧和从机响应帧)实现一个时隙。

● LIN主机的请求必须遵从表2所示的分组数据单元(PDU)格式。

表2. 帧标识符0x3C

● 响应必须遵从表3所示的PDU格式。

表3. 帧标识符0x3D

如何利用LIN—协议6进行Flash/EE存储器编程,有哪些注意事项?

● 只能使用PCI型单帧(SF)。不支持首帧(FF)和连续帧(CF)。

● 所有帧均使用传统校验和。

● 忽略无法识别的命令。

● 忽略任何有错误(如通信错误等)的帧,因此,错误的擦除例程帧会被忽略。忽略错误的请求下载帧,因此,不会识别后续的传输数据帧,也不会进行编程。任何错误的传输数据帧都会终止识别传输数据帧。事实上,任何具有正确NAD且PCI ≠ 0x05或SID ≠ 0x36的帧,或者任何具有错误校验和的帧,都会终止识别传输数据帧。

● 在"片内加载程序中实现的命令"部分,表5至表7和表9至表15的"值"栏所示的地址是硬编码值,不是示例。

片内加载程序中实现的命令

本部分描述协议6实现的7个命令。

●指定NAD

● 按标识符读取

● 擦除例程

● 下载请求

●传输数据

● 校验例程

● ECU复位

指定NAD

该命令是必需的,用于给从机指定一个新NAD,因为不同的网络系统需要将不同的NAD用于其相应的逻辑从机节点。

请求

LIN协会将供应商ID 0x003A分配给ADI公司。协议6的功能ID如表4所列。

表4. 功能ID

如何利用LIN—协议6进行Flash/EE存储器编程,有哪些注意事项?

注意,为了防止从机因为网络损坏而丢失,从机总是通过广播NAD 0x7F识别"指定NAD"命令。当发送"指定NAD"命令时,无论从机的实际NAD是什么,从机都会识别该命令。然后,内核检查供应商ID和功能ID,判断该命令是否是针对该从机而发出的。本文以功能ID 0x32为例进行说明。

表5. 指定NAD请求

如何利用LIN—协议6进行Flash/EE存储器编程,有哪些注意事项?

响应

从机不响应该请求。

按标识符读取

编程序列中止后,在启动尝试第二次编程之前,诊断测试仪利用"按标识符读取"请求要求LIN从机表明身份。

请求

支持4个标识符(标识符0x0、标识符0x32、标识符0x33和标识符0x34)。

表6. 按标识符读取请求

如何利用LIN—协议6进行Flash/EE存储器编程,有哪些注意事项?

标识符0x0.

带标识符0x0的按标识符读取请求返回LIN产品识别信息。对于ADuC703x LIN产品,此信息由8字节数据帧响应组成,如表7所示。

表7. 标识符0x0数据帧响应

如何利用LIN—协议6进行Flash/EE存储器编程,有哪些注意事项?

标识符0x32、标识符0x33和标识符0x34

对这些标识符的响应会返回器件存储器中的用户配置数据。加载程序预期数据字节的内容位于Flash/EE存储器的最后一页,如表8所示。

表8. 分配给其他标识符的Flash位置

如何利用LIN—协议6进行Flash/EE存储器编程,有哪些注意事项?

注意,Flash/EE存储器最后一页的最后四个字节保留用于校验和。

响应

LIN从机的肯定响应如表9所示。

表9. LIN从机响应

如何利用LIN—协议6进行Flash/EE存储器编程,有哪些注意事项?

从机不提供否定响应。

擦除例程

概述

可以一次擦除多页,以及请求下载和传输连续多页的更新数据。选择哪一种更新策略,完全由诊断测试仪决定。然而,1000 LIN帧中预计有1帧会发生传输错误,因此建议针对各页独立重复擦除、编程、验证周期。必须考虑以下三条限制:

● 无法对小于从机的一个Flash页面,即小于512字节的存储器区域进行编程。

● 页0的编程必须给予特别考虑,必须对其进行初始编程,使得位置0x80014 = 0xFFFFFFFF.

● 除了对Flash/EE存储器的单个页面进行验证以外,执行ECU复位之前,建议对Flash/EE存储器的整个用户区域的校验和进行验证。

●验证最后一页后,必须对0x80014以外的页0区域进行重新编程(不擦除),0x80014用于存储校验和或所需的另一个值。

请求

擦除例程擦除从第P页开始的N个Flash页面的内容。每个Flash页面包含512个字节。值N = 0保留供将来使用。

表10. 擦除例程请求

如何利用LIN—协议6进行Flash/EE存储器编程,有哪些注意事项?

字节5和字节6中的索引指的是页起始地址右移9位后的值。例如,Flash/EE存储器中第2页的起始地址是0x80400,右移9位后是0x0402,该索引表示为:字节5 = 0x02,字节6 = 0x04.

响应

从机不响应该请求。

下载请求

参见擦除例程概述部分。

请求

表11. 下载请求

如何利用LIN—协议6进行Flash/EE存储器编程,有哪些注意事项?

请求下载命令定义要编程的存储器区域。随后的数据通过传输数据命令传输,写入从第P页开始的N个页面。

响应

从机不响应该请求。

传输数据

这些请求必须跟随在下载请求之后。

请求

传输数据命令传输Flash数据。从机期待N × 512字节的数据,其中N为请求下载命令定义的页数。仅支持完整的4字节字。当LIN波特率为19.2 kbps时,刷新一页需要大约512/4 × 10 ms = 1.28秒。

表12. 数据传输请求

如何利用LIN—协议6进行Flash/EE存储器编程,有哪些注意事项?

响应

从机不响应该请求。

校验例程

请求

校验例程命令计算从第P页到第P + N -1页的存储器区域的校验和。N = 0的响应未定义。此命令不仅应对每一页执行,而且应在所有编程完成后执行,因为擦除或下载命令中的错误可能影响目标页面之外的其他页面。诊断测试仪比较从LIN从机接收到的校验和与Flash数据容器中提供的参考校验和。如果二者不符,则重复执行编程程序。校验和等于从第P页的第一个16位字到第P + N -1页的最后一个16位字的所有16位值之和,校验和 = (Σ 16位字)模32.对于单个页面,从机接收到校验例程请求之后,计算校验和需要500 μs.这里不使用循环冗余校验(CRC)算法,原因如下:

●CRC校验和计算所需的时间大约是这里的简单校验和计算所需时间的8倍。

●ADI公司采用误差模型假设,认为校验区域中的所有半字或位并不是全部按照要求进行编程。这样的页面总是会显示较少的0,使得校验和较高。另一方面,对未擦除的页面进行编程总是会显示较多的0,使得校验和较低。第三种可能性是单个半字或位错误。无论使用CRC校验和还是简单校验和,检测到此类错误的概率均相同。

表13. 校验例程请求

如何利用LIN—协议6进行Flash/EE存储器编程,有哪些注意事项?

响应

表14. 校验例程响应

如何利用LIN—协议6进行Flash/EE存储器编程,有哪些注意事项?

ECU复位

请求

表15. ECU复位请求

如何利用LIN—协议6进行Flash/EE存储器编程,有哪些注意事项?

ECU复位命令对从机执行复位。ADuC703x器件的重新启动程序如图1所示。如果地址0x80014的值与第0页的校验和一致或者等于0x27011970,则将执行应用程序软件。

响应

从机不响应该请求。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6808

    浏览量

    147612
  • dsp
    dsp
    +关注

    关注

    544

    文章

    7681

    浏览量

    344340
  • FlaSh
    +关注

    关注

    10

    文章

    1549

    浏览量

    146643
  • 存储器
    +关注

    关注

    38

    文章

    7146

    浏览量

    161978
收藏 人收藏

    评论

    相关推荐

    如何通过DAP协议访问内部存储器

    我想使用 DAP 协议对 TC38x 系列 MCU 的 pFlash/DFlash 进行编程。 是否有任何记录了 DAP 协议详细信息的相关文档? 如何通过 DAP
    发表于 01-23 07:51

    求助 数据存储器 FLASH程序存储器 FLASH数据存储器的区别

    数据存储器 FLASH程序存储器 FLASH数据存储器 片内RAM数据存储器16M字节外部数据
    发表于 11-29 09:50

    STM32学习笔记-Flash做为存储器储存数据

    过程中(BSY位为1时),任何读写闪存的操作都会使CPU暂停,直到此次闪存编程结束。 建议使用如下步骤对主存储进行编: 1.检查FLASH_SR寄存
    发表于 10-07 15:55

    探究:SPI Flash存储器的复用编程方法的实现

    ,FPGA将CSO_B选择信号置为低,并且开始通过FPGA的CCLK引脚对SPI Flash存储器进行时钟控制。接着发出8位读命令后跟24位起始地址0x000000和目标命令集的适量虚拟字节。FPGA从
    发表于 05-02 07:00

    Flash存储器的故障特征

    单元的下一次编程不起作用,从而无法得到正确的操作结果。 上面几种类型的干扰故障一般发生在Flash 存储器同一行或者同一列的单元之间,利用内存Fla
    发表于 11-16 14:33

    怎样利用宏来控制AVR外部存储器的访问?有哪些应用示例?

    AVR单片机的外部RAM扩展是什么样的?怎样利用宏来控制AVR外部存储器的访问?有哪些应用示例?利用宏去控制外部存储器的访问时需要注意哪些事
    发表于 07-07 07:19

    Flash存储器的相关资料推荐

    最近工作上需要对英飞凌XC886这款单片机的Flash进行读写,以下为简要的几点总结:一、Flash存储器结构:XC886共有32KFlash,地址映射如下图所示:共三块P-
    发表于 01-26 06:46

    非易失性存储器Flash和EEPROM之间的差异与优缺点

    和用于读取,写入和擦除数据的操作略有不同。而EEPROM指的是电可擦可编程只读存储器是一种存储器,可以在字节级别读取,写入和擦除数据。另一方面Flash是EEPROM的一种,在结构上以块的形式排列,在块中
    发表于 04-07 16:42

    单板硬件设计:存储器( NAND FLASH)

    停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。 1.1 存储器ROM介绍 rom最初不能编程,出厂什么内容就永远什么内容,不灵活。后来出现了
    发表于 05-19 15:59

    Flash存储器概述

      Flash 存储器的简介   在众多的单片机中都集成了 Flash 存储器系统,该存储器系统可用作代码和数据
    发表于 11-11 18:25 4628次阅读
    <b class='flag-5'>Flash</b><b class='flag-5'>存储器</b>概述

    通过LIN协议6进行Flash EE存储器编程

    ADuC703x系列器件的一个主要特性是能够将代码在线下载至片内Flash/EE存储器,这种在线代码下载通过LIN通信总线执行。 本应用笔记描述ADuC703x器件使用
    发表于 10-09 17:48 34次下载
    通过<b class='flag-5'>LIN</b><b class='flag-5'>协议</b>6<b class='flag-5'>进行</b><b class='flag-5'>Flash</b> <b class='flag-5'>EE</b><b class='flag-5'>存储器</b><b class='flag-5'>编程</b>

    flash存储器在线编程

    Flash存储器技术趋于成熟,应用广泛,它结合了OTP存储器的成本优势和EEPROM的可再编程性能,是目前比较理想的存储器
    发表于 10-11 18:57 3805次阅读
    <b class='flag-5'>flash</b><b class='flag-5'>存储器</b>在线<b class='flag-5'>编程</b>

    使用CPLD产品实现大容量FLASH存储器的接口设计

    FLASH存储器FLASH Memory)是非易失存储器,即使在供电电源关闭后仍然能保留信 息, 可以对存储器单元块
    的头像 发表于 08-09 08:00 2792次阅读
    使用CPLD产品实现大容量<b class='flag-5'>FLASH</b><b class='flag-5'>存储器</b>的接口设计

    Flash存储器在MCS-51系统中的应用

    介绍了 Flash 存储器的特性和应用场合 ,在16 位地址总线中扩展大容量存储的一般方法。讨论了 MCS-51 系列单片机与 Flash 存储器
    发表于 03-18 09:50 7次下载
    <b class='flag-5'>Flash</b><b class='flag-5'>存储器</b>在MCS-51系统中的应用

    AN-946: 通过LIN协议6进行Flash/EE存储器编程

    AN-946: 通过LIN协议6进行Flash/EE存储器
    发表于 03-18 22:57 9次下载
    AN-946: 通过<b class='flag-5'>LIN</b>—<b class='flag-5'>协议</b>6<b class='flag-5'>进行</b><b class='flag-5'>Flash</b>/<b class='flag-5'>EE</b><b class='flag-5'>存储器</b><b class='flag-5'>编程</b>