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

简介
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. 标识实例
编程序列可以通过诊断测试仪启动和控制,诊断测试仪一般通过控制器区域网络(can)连接到lin主机。lin主机充当一个网关,将诊断消息从can总线路由到lin总线。为了方便诊断消息从can路由到lin,模块编程所用的lin命令应符合lin诊断和配置规范(2.0版,2003年9月23日)。
运行aduc703x加载程序
为了实现lin下载,只有当ntrst在复位期间为低电平,并且flash/ee存储器地址0x80014的内容不是0x27011970及页0校验和时,aduc703x才会进入加载程序模式,如图1所示。
图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
● 只能使用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
注意,为了防止从机因为网络损坏而丢失,从机总是通过广播nad 0x7f识别指定nad命令。当发送指定nad命令时,无论从机的实际nad是什么,从机都会识别该命令。然后,内核检查供应商id和功能id,判断该命令是否是针对该从机而发出的。本文以功能id 0x32为例进行说明。
表5. 指定nad请求
响应
从机不响应该请求。
按标识符读取
编程序列中止后,在启动尝试第二次编程之前,诊断测试仪利用按标识符读取请求要求lin从机表明身份。
请求
支持4个标识符(标识符0x0、标识符0x32、标识符0x33和标识符0x34)。
表6. 按标识符读取请求
标识符0x0.
带标识符0x0的按标识符读取请求返回lin产品识别信息。对于aduc703x lin产品,此信息由8字节数据帧响应组成,如表7所示。
表7. 标识符0x0数据帧响应
标识符0x32、标识符0x33和标识符0x34
对这些标识符的响应会返回器件存储器中的用户配置数据。加载程序预期数据字节的内容位于flash/ee存储器的最后一页,如表8所示。
表8. 分配给其他标识符的flash位置
注意,flash/ee存储器最后一页的最后四个字节保留用于校验和。
响应
lin从机的肯定响应如表9所示。
表9. lin从机响应
从机不提供否定响应。
擦除例程
概述
可以一次擦除多页,以及请求下载和传输连续多页的更新数据。选择哪一种更新策略,完全由诊断测试仪决定。然而,1000 lin帧中预计有1帧会发生传输错误,因此建议针对各页独立重复擦除、编程、验证周期。必须考虑以下三条限制:
● 无法对小于从机的一个flash页面,即小于512字节的存储器区域进行编程。
● 页0的编程必须给予特别考虑,必须对其进行初始编程,使得位置0x80014 = 0xffffffff.
● 除了对flash/ee存储器的单个页面进行验证以外,执行ecu复位之前,建议对flash/ee存储器的整个用户区域的校验和进行验证。
●验证最后一页后,必须对0x80014以外的页0区域进行重新编程(不擦除),0x80014用于存储校验和或所需的另一个值。
请求
擦除例程擦除从第p页开始的n个flash页面的内容。每个flash页面包含512个字节。值n = 0保留供将来使用。
表10. 擦除例程请求
字节5和字节6中的索引指的是页起始地址右移9位后的值。例如,flash/ee存储器中第2页的起始地址是0x80400,右移9位后是0x0402,该索引表示为:字节5 = 0x02,字节6 = 0x04.
响应
从机不响应该请求。
下载请求
参见擦除例程概述部分。
请求
表11. 下载请求
请求下载命令定义要编程的存储器区域。随后的数据通过传输数据命令传输,写入从第p页开始的n个页面。
响应
从机不响应该请求。
传输数据
这些请求必须跟随在下载请求之后。
请求
传输数据命令传输flash数据。从机期待n × 512字节的数据,其中n为请求下载命令定义的页数。仅支持完整的4字节字。当lin波特率为19.2 kbps时,刷新一页需要大约512/4 × 10 ms = 1.28秒。
表12. 数据传输请求
响应
从机不响应该请求。
校验例程
请求
校验例程命令计算从第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. 校验例程请求
响应
表14. 校验例程响应
ecu复位
请求
表15. ecu复位请求
ecu复位命令对从机执行复位。aduc703x器件的重新启动程序如图1所示。如果地址0x80014的值与第0页的校验和一致或者等于0x27011970,则将执行应用程序软件。
响应
从机不响应该请求。

兰博基尼利用3D打印生产呼吸机 每周产能达到18台
SIM卡座终端产品可用NANO+TF三选二配套卡托顶针弹出
华为荣耀8:拼配置拼体验!华为新机八核+4+64G,超美双面2.5D手机仅1599
主动降噪蓝牙耳机品牌 时下超热门的五大降噪耳机品牌
对于超声波焊接机焊头我们应该如何正确安装
利用LIN—协议6进行Flash/EE存储器编程要注意什么
量子点还有搞头?看索尼再次进军OLED电视
讯维高清混合矩阵切换器与传统矩阵切换器的区别
人工智能在未来将实现社会包容式发展
两种简单的降压方式
中兴危矣 传统模式难敌互联网思维
芯盾时代正式加入中国网络空间内生安全技术与产业联盟
明基KE920无线键盘评测 在键盘中很巧妙的结合了触控板的功能
Mouser供货TI电机控制解决方案
BoseQC30体验 佩戴体验舒适续航性能良好
4G音柱Ip音柱-反诈宣传4G音柱
Stewart并联机器人的独特优势和应用范围
还在数据中台与传统大数据平台之间傻傻分不清?
带开合闸控制的智慧用电监控装置ARCM310-NK-4G
发光字定时器怎么设置时间