当前位置: 首页 > news >正文

【车载开发系列】了解FlashDriver

【车载开发系列】了解FlashDriver

【车载开发系列】FlashDriver

  • 【车载开发系列】了解FlashDriver
    • 一. 什么是Flash Driver
    • 二. FlashDriver作用
    • 三. 为什么需要刷写驱动文件
      • 1)提供刷写能力
      • 2)适配不同硬件
      • 3)安全与隔离
      • 4)支持大容量特殊操作
    • 四. FlashDriver实现方式
    • 五. FlashDriver的分类
      • 1)PFlash Driver
      • 2)DFlash Driver
    • 六. FlashDriver in AUTOSAR
    • 七. 总结

一. 什么是Flash Driver

它是一种用于访问和管理闪存器件的驱动程序。FlashDriver通过与计算机系统进行交互,提供了对闪存器件的读写、擦除、复制等功能。
闪存器件是一种非易失性的存储介质,用于
它通常作为操作系统或应用程序的一部分,用于处理闪存设备的存储访问请求。

二. FlashDriver作用

一般情况下FlashDriver做成之后就不经常去变它了,对于FlashDriver它有两个主要的作用:

  1. Bootloader升级Application;
  2. 另一个是存储重要信息:如DID、DTC、标定数据、信息安全Public Key等。

将与flash相关的程序单独剥离出bootloader,打包作为flash driver通过上位机下发的方式发送到单片机。
单片机在接收到完整的flash driver包并通过校验后,会将其放入ram段执行调用。
当升级过程中出现异常掉电或完成升级跳转至app程序时,暂存在ram段中的flash driver就不复存在了。

三. 为什么需要刷写驱动文件

Flash Driver的主要功能是对Flash存储器进行操作,包括擦除和写入。如果Flash Driver本身存储在Flash中,那么在更新或擦除Flash时,Flash Driver的代码可能会被擦除或修改,导致系统无法继续运行。
为了安全考虑,会尽可能的避免在代码中固化有对flash进行擦除或写入的操作,主要为了避免在程序跑飞时误调用该部分代码,使软件代码部分受到破坏。具体来说使用刷写驱动文件的理由如下。

1)提供刷写能力

某些ECU的BootLoader(引导程序,是ECU(电子控制单元)里最底层的一个小程序,有些ECU的BootLoader设计得很简单,只能做最基本的通信和控制。其次是不同硬件的Flash操作方式不同,BootLoader没法兼容所有情况,要尽量小巧,方便移植和维护。)本身不具备直接操作Flash的能力,必须先下载一段“刷写驱动”到RAM,由这段代码负责后续Flash的擦除、写入等底层操作。

2)适配不同硬件

不同芯片、不同Flash型号的操作方式不同,刷写驱动可以根据硬件定制,保证刷写流程的通用性和安全性

3)安全与隔离

刷写驱动通常只驻留在RAM,刷写完成后会被清除,避免对正常应用程序的干扰,提高安全性。

4)支持大容量特殊操作

对于大容量Flash或需要特殊操作(如ECC、分区等)的场景,刷写驱动可以实现更复杂的刷写策略。

四. FlashDriver实现方式

可以将flash driver固化在底层flash中,在运行的时候将flash中的flash driver拷贝到ram中来运行,这是比较传统的方式,但是这种方式存在着安全隐患。所以还有一种方式,就是将FlashDriver这段代码保存在PC端或后台,在每次执行升级前,将这段代码先发送给底层。

  • Fls在内存中运行原因:
    在升级过程中,flash driver必须在ram中运行的原因是:在对flash进行读写操作时,flash中对应的应用程序文件将不能运行,所以必须将flash driver拷贝到ram区域,这是flash硬件性能决定的。

五. FlashDriver的分类

Flash Driver,一般分为PFlash Driver和DFlash Driver。

1)PFlash Driver

一般都是在Bootloader刷写Application过程中,由上位机将PFlash Driver的数据下发给ECU,ECU把这段数据下载至RAM中,然后把New Application的数据下载至PFlash中(Code区),刷写完成后,复位,清空RAM中的Flash Driver,保证性能和安全性。

2)DFlash Driver

对于DFlash的操作,它没有必要放到RAM区域。在AUTOSAR规范中,下电存数据时(NVM存储),会在操作DFlash前,通过检查地址的合法性(是否是配置的DFlash区域)确保DFlash Driver不要操作到非法地址空间即可。一般来说,项目使用DFlash模拟EEPROM,存储的是数据,不涉及Code,所以不必担心Code被擦除。

六. FlashDriver in AUTOSAR

Fls(Flash Driver,闪存驱动) 是AUTOSAR基础软件模块之一,负责为上层软件模块提供对Flash存储设备的访问和控制。Fls模块通过抽象Flash存储设备的具体实现,提供统一的接口来简化Flash操作,提高存储管理的灵活性和可维护性。
Flash Driver一般提供以下基本操作:

  1. 擦除(Erase)
    擦除Flash存储器的指定扇区或块。
  2. 写入(Write)
    将数据写入Flash存储器的指定地址。
  3. 读取(Read)
    从Flash存储器的指定地址读取数据。
  4. 校验(Verify)
    验证写入的数据是否正确。
  5. 空白检查(Blank Check)
    检查指定Flash区域是否为空(未写入数据)。

七. 总结

FlashDriver是用来访问与管理闪存的驱动程序,它可以分类为DFlash和PFlash两种类型,我们经常用来在线刷写的FlashDriver属于PFlash,在真正实施刷写的时候,将这个文件先下载至RAM中。为什么这个文件不放在ECU的内部,而是需要每次刷写的时候先下载至Ram中呢?如果将访问Flash的操作都放到ECU里面,那如果程序跑飞有可能导致异常访问而破坏应用程序。这个闪存驱动一般是Hex格式或者S19格式。
FlashDriver解决了面向不同硬件平台的在线刷写的问题,提高了刷写的安全性。

http://www.dtcms.com/a/392753.html

相关文章:

  • 轻量化 AI 算法:开启边缘智能新时代
  • sward入门到实战(3) - 如何管理文档
  • 贝叶斯优化(Bayesian Optimization)实战:超参数自动搜索的黑科技
  • CSP-S2025 第一轮试题(附答案)
  • python ipynb中运行 报错rpy2 UsageError: Cell magic `%%R` not found.,原因是命令行要用raw的格式
  • 蓝耘智算与DeepSeekR1:低成本高能AI模型
  • Shimmy,超越ollama?
  • LeetCode:36.二叉树的中序遍历
  • python开发环境VSCode中隐藏“__pycache__”目录实践
  • Chrome View渲染机制学习小记
  • C# Protobuf oneof、包装器类型、枚举命名与服务支持
  • 智慧消防:科技赋能,重塑消防安全新生态
  • AI人工智能训练师五级(初级)实操模拟题
  • [数理逻辑] 决定性公理与勒贝格可测性(I) 基础知识
  • Java面向对象之多态
  • 量子计算学习续(第十五周周报)
  • Docker 入门与实践:从零开始掌握容器化技术
  • 个人用户无公网 IP 访问群晖 NAS:神卓 N600 的安全便捷方案(附踩坑经验)
  • Cpolar内网穿透实战:从零搭建远程访问服务
  • 【Python精讲 03】Python核心容器:一篇通关序列(List, Tuple)、映射(Dict)与集合(Set)
  • map_from_arrays和map_from_entries函数
  • 【EE初阶 - 网络原理】网络基本原理
  • 计算机毕设选题+技术栈选择推荐:基于Python的家教预约管理系统设计
  • 密码实现安全:形式化验证技术解析及主流工具实践
  • 并发编程的“造物主“函数——`pthread_create`
  • Python如何开发游戏
  • 新手向 算法 插入排序-yang
  • 2.0、机器学习-数据聚类与分群分析
  • 无痛c到c++
  • QTableWidget 控件入门