汽车基础软件AutoSAR自学攻略(四)-AutoSAR CP分层架构(3) (万字长文-配21张彩图)

news2025/1/11 21:20:22

汽车基础软件AutoSAR自学攻略(四)-AutoSAR CP分层架构(3) (万字长文-配21张彩图)

前面的两篇博文简述了AutoSAR CP分层架构的概念,下面我们来具体到每一层的具体内容进行讲解,每一层的每一个功能块力求用一个总览图,外加一个例子的图给大家进行详细的讲解,能够更加透彻的理解AutoSAR CP的精髓,分层即隔离,实现对硬件的解耦。

一、BSW基础软件的功能划分

1.1 按层划分

BSW基础软件层按下面四层进行划分:

image-20250106230914853

(1) 服务层(Services Layer)

服务层是基础软件的顶层,类似于为大厦提供服务的“物业管理系统”。它为应用层的SWC提供标准化的服务,例如操作系统功能(如任务调度)、网络通信服务、ECU管理、内存管理、诊断服务以及逻辑和时序监控等功能。通过这些服务,应用层可以专注于业务逻辑,而不需要直接处理底层硬件。

(2) ECU抽象层(ECU Abstraction Layer)

ECU抽象层的作用类似于将大厦中的电力、电信线路等设备进行抽象,它使得软件与具体的硬件设计无关。通过调用下一层的微控制器抽象层,ECU抽象层将硬件特性(例如电压、电流、频率等)转换为高层可理解的信号(例如开/关信号)。这种抽象设计让应用软件开发者无需了解底层硬件的细节。

(3) 微控制器抽象层(Microcontroller Abstraction Layer,MCAL)

微控制器抽象层可以被比喻为大厦中的“机械室”,它直接与硬件设备相连,控制着最底层的微控制器功能(如ADC、看门狗、计时器等)。MCAL为上层提供统一的接口,无论底层使用什么型号的微控制器,上层软件看到的接口始终保持一致。通过这种抽象,当更换硬件平台时,只需调整MCAL层,而无需修改上层软件逻辑,从而大大提高了系统的移植性和灵活性。

(4) 复杂驱动层(Complex Drivers)

复杂驱动层负责为某些复杂的传感器和执行器提供特殊驱动,可以看作是大厦中为某些特殊设备提供的定制化服务。例如,对于一些复杂的应用模块(如喷油量控制、胎压监测等),由于它们可能对时序有严格要求或者难以抽象,开发者会直接将这些设备的驱动放入复杂驱动层中,使其能够直接访问硬件资源。

image-20250106225250424

1.2 按功能划分

从功能上说,BSW层还可以进行纵向划分,分别为:系统服务(System Services)、存储服务(Memory Services)、加密服务(Crypto Services)、车外通信服务(Off Board Communication Services)、通信服务(Communication Services)、I/O硬件抽象(I/O Hardware Abstraction)和复杂驱动(Complex Drivers)。

在AUTOSAR基础软件(BSW)架构中,软件层划分十分精细,各种服务和模块提供了多种基础功能,支持汽车电子系统的高效运行。根据你要求的分类,下面分别介绍 系统服务存储服务加密服务车外通信服务通信服务I/O硬件抽象复杂驱动模块的功能与作用。

1. 系统服务 (System Services)

系统服务是基础软件中的核心部分,负责为应用层提供一些通用的操作系统支持服务和基础功能。它通常包括操作系统的基础功能、定时器管理等,确保系统能够高效且稳定运行。

主要功能

  • 操作系统管理:管理多任务、调度、时间片分配等。
  • 定时器服务:提供高精度的定时器功能,用于任务调度、超时处理等。
  • 事件管理:支持事件的生成、清除和处理机制,促进任务间的同步与通信。
  • 中断管理:提供对硬件中断的管理和服务,支持中断的处理优先级和调度。

典型模块

  • OSAL (Operating System Abstraction Layer):为上层提供与具体操作系统解耦的接口。
  • RTE (Runtime Environment):为应用软件提供操作系统与硬件平台之间的中间抽象层。
  • SchM (Scheduler Manager):提供任务调度管理,确保任务按优先级和时序执行。

2. 存储服务 (Memory Services)

存储服务模块主要负责对车载系统中各类存储设备的管理和访问。它提供对非易失性存储器(如 Flash、EEPROM)以及其他存储介质(如RAM)的抽象和控制。

主要功能

  • 内存分配与管理:为应用程序提供内存分配和回收的服务,避免内存泄漏和碎片问题。
  • 存储管理:管理车载系统中的永久性存储(如 Flash),进行数据持久化、数据擦除和重写等操作。
  • 数据保护:保证在断电等异常情况下的数据持久性和一致性。

典型模块

  • NvM (Non-volatile memory):管理非易失性存储器(如 Flash、EEPROM)的读写操作。
  • MemIf (Memory Interface):提供内存访问接口,支持不同存储类型的读写操作。
  • Eeprom:处理EEPROM的存储操作,提供更高效的数据持久化方案。

3. 加密服务 (Crypto Services)

加密服务模块为车载系统提供加密、解密、数据完整性校验等安全性服务,保护系统免受外部攻击和数据篡改。

主要功能

  • 数据加密:使用对称或非对称加密算法来保护数据的机密性。
  • 数据完整性校验:确保数据在存储和传输过程中不被篡改,通过哈希算法、签名等方式确保数据的完整性。
  • 身份验证:为车载系统提供身份认证机制,确保不同模块和设备之间的安全通信。

典型模块

  • Crypto:加密算法库,支持常用的加密算法,如 AES、RSA、ECC 等。
  • SHA:安全哈希算法模块,确保数据传输和存储的完整性。
  • PKI (Public Key Infrastructure):基于公钥基础设施的数字证书管理和验证,确保系统的安全。

4. 车外通信服务 (Off Board Communication Services)

车外通信服务模块是为车载系统与外部环境(如云端、服务端等)之间的通信提供支持。它通常处理与外部设备(如智能手机、车载云服务等)的数据交互。

主要功能

  • 远程诊断:支持远程诊断请求,允许服务技术人员通过网络远程诊断车辆故障。
  • 数据同步与上传:支持将车载数据上传至云平台或服务端,进行数据分析和管理。
  • OTA (Over-The-Air):支持通过无线网络进行固件或软件的远程升级。

典型模块

  • UDS (Unified Diagnostic Services):为远程诊断服务提供支持。
  • Telematics:支持车辆与外部云平台的通信,进行数据传输和服务请求。
  • FTP/HTTP:提供文件传输协议和网络请求支持,保证车辆与外部服务间的通信。

5. 通信服务 (Communication Services)

通信服务是确保车载系统内各个模块和设备之间进行高效、可靠数据传输的关键部分。它支持不同类型的通信协议,如 CAN、LIN、FlexRay、Ethernet 等。

主要功能

  • 协议栈管理:支持多种车辆网络协议栈的实现,如 CAN、LIN、Ethernet 等。
  • 网络管理:确保各通信网络的状态管理、消息调度、错误检测与恢复。
  • 消息路由:为不同的通信协议提供消息路由和数据转发功能。

典型模块

  • CAN:提供控制器局域网络(CAN)协议栈支持,支持不同的通信速率、消息处理等功能。
  • LIN:提供局域互联网络(LIN)协议栈支持,支持低速通信。
  • Ethernet:支持车载以太网通信,提供高速数据传输支持。
  • COM (Communication Manager):管理各种通信协议的传输,确保消息的可靠传递。
  • PDU Router:协议数据单元路由,支持跨多个通信协议的消息传递。

6. I/O硬件抽象 (I/O Hardware Abstraction)

I/O硬件抽象层(IOAL)为上层软件提供与硬件设备的接口。它使得上层应用不需要关心具体硬件细节,可以通过统一接口与硬件交互。

主要功能

  • 硬件设备抽象:为不同类型的硬件设备提供统一的接口,隐藏具体硬件细节。
  • 设备初始化与配置:初始化I/O设备,配置通信参数等。
  • 驱动管理:支持外设的驱动程序管理,确保设备的正常运行。

典型模块

  • GPIO:支持通用输入输出端口的管理,控制数字信号的输入输出。
  • PWM:控制脉冲宽度调制信号,调节输出信号的占空比。
  • ADC/DAC:模拟数字转换器和数字模拟转换器,用于处理模拟信号。
  • CAN Drivers:为 CAN 总线提供硬件抽象层,简化与硬件通信的复杂性。

7. 复杂驱动 (Complex Drivers)

复杂驱动模块通常涉及到更复杂的硬件设备和功能。它们为汽车中高端硬件(如电机控制单元、传感器、执行器等)提供专门的驱动程序。

主要功能

  • 硬件特定驱动:为复杂的硬件设备(如电机控制器、传感器)提供专用驱动。
  • 实时性能要求:支持高性能的实时数据处理,满足复杂硬件的实时响应要求。
  • 资源调度与管理:对硬件资源进行精细管理,确保其高效运行。

典型模块

  • Motor Control:电机控制驱动,管理电机的转速、扭矩等控制参数。
  • Sensor Drivers:处理传感器输入数据,提供统一接口与传感器设备交互。
  • Actuator Drivers:为执行器(如阀门、气缸等)提供驱动支持。

总结

上述模块在AUTOSAR基础软件架构中担负着各自的重要角色,提供了汽车系统中各类硬件抽象、通信协议支持、安全加密、远程通信和高效存储等关键功能。通过这种模块化的设计,AUTOSAR架构能够有效支持不同车型、不同硬件平台以及多种应用需求的灵活组合和扩展。

二、Microcontroller Abstraction Layer微控制器抽象层

AUTOSAR微控制器抽象层(MCAL,Microcontroller Abstraction Layer)是AUTOSAR架构中最底层的部分,直接与微控制器硬件资源交互。它的设计目标是屏蔽硬件差异,为上层软件提供统一、标准化的接口,使得应用开发者无需关注硬件特性,从而实现“硬件无关”的软件开发。

image-20250106225334159


MCAL的核心功能

MCAL的主要功能是对微控制器的所有外设和资源(如I/O引脚、定时器、通信模块等)进行抽象化管理。它将底层的硬件功能封装成标准化的驱动接口,供上层模块(如ECU抽象层、服务层和应用层)调用,主要包括以下功能:

  1. 硬件资源的统一管理
    • 直接操作微控制器硬件资源(如GPIO、定时器、通信总线等)。
    • 提供对硬件外设的标准化访问接口。
  2. 屏蔽硬件差异
    • 支持不同的微控制器型号和厂商。
    • 在不同的硬件平台之间,MCAL通过配置即可实现兼容,而不需要修改上层应用。
  3. 提高可移植性
    • 上层模块无需关心硬件实现,可以方便地在不同平台之间移植。
  4. 实时性和高效性
    • 直接与硬件交互,具有高效的性能和实时响应能力。

MCAL的模块组成

MCAL由多个独立的驱动模块组成,每个模块对应一种硬件外设。以下是MCAL的主要模块及其功能:

image-20250106225039834

1. 数字输入/输出驱动(DIO Driver)
  • 管理和控制微控制器的数字引脚状态。
  • 支持读取数字输入信号和设置数字输出信号。
  • 提供高效的GPIO操作,如读取开关状态或点亮LED灯。
2. 模数转换驱动(ADC Driver)
  • 负责对模拟信号进行采集和数字化。
  • 通常用于传感器数据采集(如温度、电压、压力传感器等)。
  • 支持多通道、多分辨率的ADC操作。
3. 脉宽调制驱动(PWM Driver)
  • 生成脉宽调制(PWM)信号,用于控制执行器。
  • 广泛应用于电机驱动、灯光调节等场景。
4. 定时器驱动(GPT Driver)
  • 提供定时功能,用于触发周期性任务或计时。
  • 支持延时、周期性事件触发等功能。
5. 中断控制驱动(ICU Driver)
  • 管理和处理微控制器的中断事件。
  • 支持外部中断(如传感器信号触发)和内部事件触发。
6. 存储器驱动
  • Flash Driver:提供对片上闪存的访问,包括数据存储和擦写操作。
  • EEPROM Driver:用于操作片上或外部的EEPROM存储器,支持非易失性数据存储。
7. 通信驱动
  • CAN Driver:
    • 用于控制CAN总线通信模块。
    • 提供数据帧的发送和接收功能。
  • LIN Driver:
    • 支持LIN总线通信,常用于低速、经济型的通信场景。
  • SPI Driver:
    • 提供SPI通信功能,常用于与外部设备的高速通信(如传感器或外部存储器)。
  • Ethernet Driver:
    • 用于支持车载以太网通信。
    • 提供高速数据传输的能力。
8. 看门狗驱动(Wdg Driver)
  • 管理微控制器的看门狗功能。
  • 用于检测和恢复系统运行异常,提升系统的可靠性。
9. CRC驱动(CRC Driver)
  • 提供循环冗余校验(CRC)功能,用于数据完整性检查。
  • 常用于通信数据或存储数据的校验。

MCAL与上层模块的协作

MCAL作为底层驱动层,与上层的ECU抽象层(ECU Abstraction Layer)和服务层(Service Layer)协同工作,共同实现对硬件资源的管理和抽象:

  1. 与ECU抽象层
    • ECU抽象层调用MCAL的接口以实现对硬件的高层次管理。
    • 例如,I/O硬件抽象层调用DIO驱动实现GPIO的读写操作。
  2. 与服务层
    • 服务层通过MCAL实现对底层资源的间接访问。
    • 例如,通信服务模块调用CAN驱动完成数据帧的发送和接收。
  3. 直接为应用层服务
    • 在某些情况下,MCAL可以直接为应用层提供接口,尤其是对硬实时性要求较高的场景,如高频PWM信号生成。

MCAL的特点与优势
1. 硬件无关性

MCAL屏蔽了不同微控制器的硬件实现差异,开发者可以通过统一的接口访问底层资源,从而实现硬件无关的软件设计。

2. 高度可配置性
  • MCAL模块采用配置工具生成代码(如AUTOSAR的配置工具),允许开发者根据目标硬件平台进行灵活定制。
  • 提供适应不同硬件特性和应用需求的配置选项。
3. 实时性和性能优化
  • MCAL直接与硬件交互,具有极高的执行效率。
  • 实时响应能力强,适用于需要快速响应的汽车电子系统(如发动机控制或主动安全系统)。
4. 可移植性和扩展性
  • 上层应用与MCAL接口分离,应用软件无需因硬件变化而修改。
  • 只需调整MCAL的配置或替换底层驱动,即可适配新的硬件平台。
5. 符合AUTOSAR标准
  • MCAL完全符合AUTOSAR标准,确保模块的规范化和可互操作性。
  • 提供经过标准认证的可靠驱动解决方案。

MCAL的典型应用场景
  1. 发动机管理系统
    • 使用ADC驱动采集传感器数据(如温度、压力)。
    • 使用PWM驱动控制燃油喷射或点火。
    • 使用CAN驱动实现发动机与其他ECU的通信。
  2. 车身控制系统

    • 使用DIO驱动控制车窗、门锁等数字设备。
    • 使用LIN驱动实现与车门模块的低速通信。
  3. 主动安全系统

    • 使用ICU驱动处理外部中断事件(如雷达信号)。
    • 使用SPI驱动与外部传感器进行高速通信。
  4. 高级驾驶辅助系统(ADAS)

    • 使用以太网驱动实现高带宽数据传输。
    • 使用CRC驱动确保传输数据的完整性。

总结

MCAL是AUTOSAR架构中连接硬件与软件的关键层次,通过标准化接口、模块化设计和高效的硬件抽象,大大简化了汽车电子系统的开发和移植过程。它的高度灵活性和实时性支持,使其在现代汽车电子系统中发挥着至关重要的作用,同时也符合AUTOSAR追求的高可靠性和可复用性目标。

2.1 I2C Driver介绍

I2C 驱动程序允许多个节点同时访问一个或多个 I2C 总线。

I²C(内部集成电路)是一种双线串行数据总线,广泛应用于汽车传感器或执行器中。

示例:温度传感器

  • 3 轴加速度传感器
  • 气压传感器
  • EEPROM

image-20250106231100333

image-20250106231111392

2.2 SPIHandlerDriver

SPIHandlerDriver 允许多个客户端同时访问一个或多个 SPI 总线。为了抽象出专门用于片选的 SPI 微控制器引脚的所有特性,这些引脚应直接由 SPIHandlerDriver 处理。这意味着这些引脚在 DIO 驱动程序中不可用。

image-20250106231207755

三、Complex Drivers复杂驱动

复杂驱动层(Complex Drivers Layer)是AUTOSAR架构中的一个特殊层次,位于微控制器抽象层(MCAL)和ECU抽象层之间。它的主要作用是提供对特殊硬件或应用场景的支持,尤其是在这些功能无法通过AUTOSAR标准的模块实现时。

image-20250106231428274


特点与功能
  1. 处理非标准功能
    • 复杂驱动层用于实现一些特殊硬件或特定应用场景的功能,这些功能可能不属于AUTOSAR标准中定义的模块范围。
    • 例如,某些定制的硬件接口或高度专用的外设需要通过复杂驱动层实现。
  2. 实时性支持
    • 由于复杂驱动层可以直接与硬件交互,并且没有AUTOSAR标准模块的分层约束,因此可以实现对实时性要求更高的功能。
  3. 灵活性
    • 复杂驱动层允许开发者实现自定义功能,为AUTOSAR架构提供了扩展和灵活性。
  4. 与标准模块的协作
    • 复杂驱动层可以直接与MCAL交互,也可以与其他AUTOSAR模块协同工作,增强系统的整体功能。

典型应用场景
  1. 专用硬件支持
    • 如某些特殊传感器、执行器或硬件接口的驱动程序。
  2. 特殊通信协议
    • 支持一些AUTOSAR未定义的通信协议,如定制的串口通信或非标准的总线协议。
  3. 高实时性需求
    • 实现对事件响应时间要求极高的功能,如特定安全功能或快速中断处理。
  4. 软件原型开发
    • 在早期开发阶段,为新硬件平台或未成熟的软件模块提供支持。

复杂驱动程序是在基本软件栈内实现非标准化功能的模块。例如,使用特定中断和/或复杂的微控制器外设(如 PCP、TPU)直接访问微控制器来实现复杂的传感器评估和执行器控制。

  • 喷油控制
  • 电动阀控制
  • 增量位置检测

**任务:**满足处理复杂传感器和执行器的特殊功能和时序要求
**特性:**实现:高度依赖微控制器(µC)、电子控制单元(ECU)和应用
与软件组件(SW-Cs)的上层接口:根据 AUTOSAR(AUTOSAR 接口)进行指定和实现
下层接口:对标准化接口的访问受限

image-20250106231442763


复杂驱动层的优点
  • 高灵活性:支持标准外的功能实现,满足特定需求。
  • 实时性能:能够直接控制硬件,实现快速响应。
  • 扩展性:弥补AUTOSAR标准模块覆盖不足的问题,为特殊硬件提供支持。

总结

复杂驱动层是AUTOSAR架构的一个补充层次,用于满足标准化模块难以覆盖的功能需求。它提供了灵活性、实时性和硬件定制支持,是开发者在特定场景下实现独特功能的重要工具。

四、ECU Abstraction ECU抽象层

4.1 ECU抽象层介绍

ECU抽象层(ECU Abstraction)位于汽车电子软件架构的微控制器抽象层(MCAL)之上,是整个AUTOSAR架构中极为重要的一部分。其主要目标是对ECU硬件的特性进行抽象,从而屏蔽硬件细节,向上层软件提供统一且一致的接口。这一层通过对硬件特性和硬件布局的隐藏,使应用层无需直接处理硬件设备的复杂性,从而大幅简化了上层开发工作,并提升了软件的可移植性和复用性。

image-20250109075913060

具体来说,ECU抽象层负责将与ECU相关的输入输出信号的硬件特性(例如电流、电压、频率等)抽象为可以直接被应用层使用的逻辑信号或数据。例如,当I/O Driver(输入输出驱动层)采集到一个开关信号时,I/O硬件抽象层(I/O Hardware Abstraction)会将采集到的高低电平信号转化为逻辑上的“开(on)”或“关(off)”信号,再提供给应用层进行处理。应用层在调用这些信号时,不需要关心信号的具体来源,也无需了解它是通过I/O接口、ADC(模数转换器)采样,还是从外部通信驱动中获得的。这种设计实现了对ECU硬件的完全抽象化,使得应用层代码可以摆脱底层硬件的限制,从而实现了更高的灵活性和模块化。

ECU抽象层的功能不仅局限于输入输出信号的转换,它还包括了对多种硬件资源的抽象管理。具体而言,ECU抽象层由以下主要模块组成:

  1. I/O硬件抽象(I/O Hardware Abstraction)
    该模块负责对与I/O设备相关的硬件信号进行抽象和处理。例如,将物理层的高低电平信号转化为应用层可理解的逻辑信号或数值。
  2. 通信硬件抽象(Communication Hardware Abstraction)
    该模块负责屏蔽与通信相关的底层硬件差异,统一处理ECU间通信信号,例如CAN、LIN、FlexRay等总线通信。
  3. 无线通信硬件抽象(Wireless Communication Hardware Abstraction)
    随着车联网技术的发展,无线通信硬件抽象模块应运而生,用于对无线通信协议(如Wi-Fi、蓝牙、5G等)的硬件接口进行封装,为上层提供统一的接口。
  4. 加密硬件抽象(Crypto Hardware Abstraction)
    该模块用于抽象和管理硬件层的加密功能,例如硬件加密模块(HSM)提供的加密、解密、密钥管理等服务,为数据传输的安全性提供支持。
  5. 存储器硬件抽象(Memory Hardware Abstraction)
    负责对不同类型的存储设备(如EEPROM、Flash存储器、RAM等)进行抽象管理,为上层提供一致的存储访问接口。
  6. 板载设备抽象(Onboard Device Abstraction)
    对特定的板载设备(如传感器、执行器等)进行抽象和封装,使应用层可以通过统一的接口访问这些设备,而无需考虑设备类型或具体z实现。

通过这些模块的协同工作,ECU抽象层有效地实现了硬件的标准化接口,显著提高了汽车电子系统的开发效率。此外,这种分层设计还使得软件与硬件的解耦成为可能,从而支持在不修改上层逻辑的情况下更换或升级底层硬件。这对快速迭代和模块化开发的需求尤为重要,也符合汽车行业对可靠性和灵活性的高标准要求。

4.2 I/O Hardware Abstraction I/O驱动的抽象

I/O驱动抽象是AUTOSAR架构中ECU抽象层的一部分,其目的是将底层硬件相关的I/O操作进行抽象化和统一管理,从而为上层应用提供与硬件无关的访问方式。这一模块对底层硬件的电学特性和具体实现进行屏蔽,使得上层应用能够以逻辑信号的形式访问I/O设备,而无需关心其具体物理特性。

image-20250109080012600

I/O驱动抽象的功能和特点
  1. 硬件抽象
    I/O硬件抽象模块将底层的I/O驱动进行了标准化处理,通过统一的接口向上层提供抽象化的信号访问。应用层所访问的不是信号的电学特性(如电压、电流),而是信号所代表的抽象含义,例如开关状态、传感器测量值或执行器命令。
  2. 支持多种底层驱动
    I/O硬件抽象层覆盖了多种类型的底层硬件驱动,包括:
    • DIO Drivers(数字输入输出驱动):用于数字信号的输入和输出。
    • ADC Drivers(模数转换驱动):用于采集模拟信号并将其转换为数字信号。
    • SPI Hardware Drivers(SPI硬件驱动):用于与外部设备通过SPI总线进行通信。
    • 外部驱动(External Drivers):针对与外部器件(如扩展I/O芯片或特定传感器/执行器)相关的驱动。
  3. 抽象信号接口(I/O Signal Interface)
    在I/O硬件抽象层中,I/O Signal Interface 是一个关键组件。它将底层I/O设备的信号抽象为逻辑信号变量,向上层应用提供与硬件无关的访问接口。例如,上层应用可以通过逻辑信号变量来直接访问开关的开/关状态或传感器的测量值,而无需关心这些信号在硬件层的具体实现方式。

image-20250110004116430

I/O硬件抽象的结构

在AUTOSAR CP架构中,I/O硬件抽象的位置如图3.37所示,其内部结构如图所示。整体结构由以下几部分组成:

  1. I/O硬件抽象层
    • 信号抽象:将底层硬件信号抽象为逻辑信号变量。
    • 信号管理:对信号的输入、输出以及状态变化进行统一管理。
  2. 底层驱动
    I/O硬件抽象层的下层依赖于MCAL(Microcontroller Abstraction Layer)的多种驱动模块,包括:
    • DIO驱动(DIO Drivers):负责数字输入/输出的基本操作,如读取数字输入信号的状态或设置数字输出信号的电平。
    • ADC驱动(ADC Drivers):负责采集模拟信号(如电压信号)并将其转换为数字信号,供上层应用使用。
    • SPI硬件驱动(SPI Hardware Drivers):用于访问通过SPI总线连接的外部设备,例如扩展I/O芯片或复杂的传感器模块。
  3. 外部驱动支持
    I/O硬件抽象层中还包括一些针对特定外部设备的驱动程序。这些驱动由于与具体的外部芯片相关,无法直接归类到MCAL中,因此被归入ECU抽象层。例如,某些专用传感器或扩展模块的驱动程序可能需要通过I/O硬件抽象层来实现访问。
I/O硬件抽象的优点
  1. 硬件无关性
    I/O硬件抽象屏蔽了底层硬件设备的电学特性和通信协议,使得上层应用只需与逻辑信号交互即可,极大地提高了软件的移植性和复用性。
  2. 统一的信号管理
    通过抽象接口对I/O信号进行集中管理,可以在复杂系统中实现更高效的信号处理逻辑,简化应用层开发。
  3. 支持多种硬件扩展
    无论是单片机内部的I/O设备,还是通过SPI、I2C等总线扩展的外部设备,I/O硬件抽象都能够以一致的方式进行管理和访问。
  4. 简化应用层开发
    上层应用无需关心底层驱动的实现细节,只需通过逻辑信号接口调用即可完成对I/O设备的操作。
典型应用场景
  1. 数字信号处理
    • 如读取按钮的开/关状态、控制LED的开闭。
    • 通过逻辑信号访问这些设备,可以屏蔽底层硬件差异,便于开发。
  2. 模拟信号采集
    • 如获取温度传感器的电压信号并将其转换为温度值。
    • I/O硬件抽象层通过ADC驱动完成采集,并以逻辑信号形式提供给上层。
  3. 外部设备控制
    • 如通过SPI访问扩展I/O芯片,读取或控制外部输入/输出信号。
    • 上层无需关心SPI通信的具体细节,通信由SPI硬件驱动完成。
  4. 复杂设备管理
    • 如读取外部传感器的数据,或通过扩展模块控制多个执行器。
    • 外部驱动与MCAL驱动协同工作,确保外设的高效访问。
总结

I/O硬件抽象模块是AUTOSAR架构中实现硬件无关性和信号抽象化的关键部分。通过统一的I/O Signal Interface和对底层驱动的灵活支持,I/O硬件抽象简化了复杂车载系统中I/O设备的管理,提高了系统的扩展性、开发效率和可维护性。这一模块为数字、模拟和外部设备的统一管理提供了强大的技术基础,同时通过屏蔽硬件细节,为开发者带来了更高的便利性和灵活性。

image-20250109080216922

4.3 Communication Hardware Abstraction 通信硬件抽象

通信硬件抽象模块是AUTOSAR架构中ECU抽象层的重要组成部分,其核心目的是对车载总线通信功能进行统一的抽象管理,为不同类型的通信总线(如LIN、CAN、以太网等)提供一致的访问机制,屏蔽底层硬件的差异性,从而简化上层应用的开发工作并提高系统的可移植性和扩展性。

通信硬件抽象的功能与特点

通信硬件抽象模块实现了对内部和外部通信控制器的统一抽象。例如,无论LIN或CAN总线的控制器是位于单片机内部,还是通过SPI、I2C等方式与外部扩展通信模块交互,在通信硬件抽象模块的接口层次上,这些差异都被隐藏,上层应用只需通过标准化接口进行调用即可。

image-20250109080440548

统一的通道抽象

在通信硬件抽象模块之上,所有的通信通道在逻辑上都是一致的:

  • 对于CAN总线:无论通信控制器是内部模块还是外部扩展模块,通过通信硬件抽象的接口(CAN Interface),都可以被视为统一的CAN通道。
  • 对于LIN总线:所有LIN通信通道也都表现为一致的接口,屏蔽了硬件实现的复杂性。

这种抽象机制大大降低了上层服务层(Service Layer)开发时对底层硬件差异性的依赖,提高了软件的模块化和可复用性。

通信硬件抽象的结构

通信硬件抽象模块在AUTOSAR经典平台(Classic Platform, CP)架构中的位置如图3.39所示,其内部主要包含以下几个部分:

1. CAN模块示例(如下图所示)

图3.40展示了通信硬件抽象中CAN模块的架构示意图,体现了该模块的层次化设计:

  • CAN接口(CAN Interface)
    这是提供给上层服务层(如PDU路由模块、通信栈模块等)的接口。在这一层,上层服务无需关注具体CAN控制器的物理实现或其功能特性,所有访问均通过标准化接口进行调用。
  • 外部器件驱动
    通信硬件抽象中还包含了对外部通信相关器件的驱动程序,例如:
    • CAN收发器驱动(CAN Transceiver Driver):负责控制外部CAN收发器的工作状态(如正常模式、待机模式等)。
    • 外部CAN控制器的驱动(Drivers for external CAN ASIC):用于支持外部CAN控制器(如通过SPI或其他总线扩展的CAN控制器)。

image-20250109080546951

2. LIN和其他通信模块

除了CAN模块,通信硬件抽象还可以扩展到LIN、以太网等其他通信总线协议,为它们提供类似的抽象机制。例如:

  • LIN接口(LIN Interface):提供给上层服务的标准化LIN通道访问接口。
  • 外部LIN控制器的驱动:针对外部扩展的LIN控制器硬件实现的驱动程序。
通信硬件抽象与MCAL的协作

通信硬件抽象模块与下层MCAL模块紧密配合,共同实现对底层通信硬件的访问。具体来说:

  • CAN Driver
    在MCAL中,CAN Driver用于驱动单片机内部的CAN控制器,负责实现底层CAN通信的收发功能。
  • SPI Handler Driver
    如果需要通过SPI访问外部通信硬件(如外部CAN控制器),则需要使用SPI Handler Driver进行通信。这种设计使得通信硬件抽象模块可以无缝集成内部和外部的CAN通信功能。
  • DIO Driver
    在需要通过数字I/O接口(DIO)来控制外部CAN收发器状态(如启用、禁用或进入待机模式)时,DIO Driver负责对收发器的状态进行直接控制。
通信硬件抽象的优点
  • 硬件无关性:屏蔽底层通信硬件的具体实现,上层开发人员无需关心通信控制器的内部或外部位置。
  • 统一的接口设计:为不同总线协议(如CAN、LIN)提供一致的接口,简化了上层服务层的开发工作。
  • 可扩展性:支持内部和外部通信硬件的无缝集成,可以方便地扩展支持新的总线协议或硬件模块。
  • 增强的移植性:在更换硬件平台或通信硬件时,只需调整MCAL或通信硬件抽象模块的配置,而无需修改上层应用逻辑。
典型应用场景
  • CAN通信
    在复杂的车载网络中,CAN总线被广泛用于控制器之间的通信。通过通信硬件抽象模块,无论CAN控制器位于单片机内部还是外部扩展硬件,都可以以相同的方式被访问。
  • LIN通信
    对于成本敏感的应用场景(如车门模块、车窗控制),LIN总线提供了一种经济高效的通信解决方案,而通信硬件抽象模块确保了对不同LIN硬件的统一管理。
  • 混合总线通信
    在现代汽车中,多个通信协议(如CAN、LIN、以太网)常常共存,通信硬件抽象模块通过统一的接口屏蔽了不同总线硬件之间的差异,为上层通信栈提供了一种一致的访问方式。

通过通信硬件抽象模块,AUTOSAR实现了对复杂车载通信系统的高效管理,不仅增强了系统的灵活性和扩展性,也降低了开发和维护的复杂度。

4.4 Memory Hardware Abstraction

在汽车电子领域的开发中,存储器是核心且不可或缺的部件,其作用包括数据存储、代码存储以及非易失性数据管理。根据物理位置的不同,存储器可以分为单片机内部的片上存储器(如Flash、EEPROM)和单片机外部的板载存储器(如通过SPI通信的外部EEPROM或其他存储芯片)。在AUTOSAR架构中,这两类存储器采用不同的管理方式,但为了方便上层应用的开发,AUTOSAR通过存储器硬件抽象层(Memory Hardware Abstraction, MHA)提供了一种统一的机制,将各种类型的存储器抽象为一致的接口。

image-20250109224652911

存储器硬件抽象层的作用与设计

存储器硬件抽象层是ECU抽象层的一部分,旨在对存储设备进行统一的抽象和管理。它的主要作用包括:

  1. 屏蔽存储设备差异
    • 无论存储器是片上存储器还是片外存储器,MHA都通过统一的抽象接口屏蔽底层硬件的差异性。
    • 服务层和应用层可以通过标准化接口一致地访问存储器,而无需关心具体的硬件实现或通信协议。
  2. 提升系统的移植性与扩展性
    • 在不同硬件平台之间,只需更换或调整MCAL驱动层和MHA配置,而无需修改上层逻辑。
    • 增强了系统对不同存储器类型的兼容性。
  3. 支持非易失性存储功能
    • MHA支持对非易失性数据的可靠存储和管理,包括对Flash、EEPROM等存储设备的抽象和操作。
    • 提供对Flash模拟EEPROM(Flash EEPROM Emulation)的支持,解决某些硬件平台中缺少独立EEPROM的问题。

MHA的核心模块

存储器硬件抽象层的设计采用模块化架构,主要包括以下核心部分:

1. Memory Abstraction Interface(存储器抽象接口)
  • 这是MHA的顶层模块,向服务层(如NVRAM Manager和FEE)提供标准化的存储访问接口。
  • 上层服务通过该接口访问存储器,无需了解存储设备的具体类型或硬件实现方式。
2. EEPROM Abstraction(EEPROM抽象模块)
  • 抽象和管理片上或片外的EEPROM设备,支持标准化的读写和擦除操作。
  • 无论EEPROM是片内设备还是通过SPI通信的外部芯片,都通过统一的方式进行操作。
3. Flash EEPROM Emulation(Flash的EEPROM模拟模块)
  • 在某些没有独立EEPROM的硬件平台上,通过片内Flash模拟EEPROM功能。
  • 解决了Flash设备擦写周期限制的问题,提供可靠的数据存储服务。
4. 外部存储器驱动支持(External Memory Drivers)
  • 通过SPI或I2C等通信协议访问外部存储器芯片(如扩展EEPROM或NVRAM)。
  • 提供对外部存储设备的标准化管理和抽象支持。

MHA与MCAL的关系

MHA与下层的MCAL(Microcontroller Abstraction Layer,微控制器抽象层)紧密协作,共同完成对存储器的管理和访问。MCAL直接与硬件交互,为MHA提供驱动支持:

  1. 内部存储器支持
    • Internal Flash Driver(内部Flash驱动):提供对片内Flash的操作支持,包括读写和擦除功能。
    • EEPROM Driver(内部EEPROM驱动):管理片内EEPROM的存储操作。
  2. 外部存储器支持
    • SPI Handler Driver(SPI通信驱动):用于访问通过SPI接口连接的外部存储器(如外部EEPROM)。
    • DIO Driver(数字I/O驱动):控制外部存储设备的状态(如启用或禁用)。

通过这种分层设计,MHA屏蔽了存储器的物理位置差异,使得片上存储器(如Flash、EEPROM)和片外存储器(如SPI外部EEPROM)的操作方式对上层模块完全一致。


在MCAL(Microcontroller Abstraction Layer,微控制器抽象层)中,片上存储器通过 Memory Drivers 进行访问,例如内部Flash驱动和内部EEPROM驱动;而对于片外存储器,由于其通常需要通过通信协议(如SPI)来访问,因此通过 Communication Drivers(通信驱动模块)实现,例如SPI处理驱动(SPI Handler Driver)。然而,无论存储器是片上还是片外,存储器硬件抽象层(Memory Hardware Abstraction Layer)将这些硬件统一抽象成标准化接口,屏蔽了底层实现的差异性。

在存储器硬件抽象层中,最上层模块是 Memory Abstraction Interface(存储器抽象接口),它向服务层提供标准化的存储器访问接口。该模块涵盖了对片内存储器(如Flash、模拟EEPROM)的访问,也支持片外存储器(如通过SPI通信的EEPROM)的访问。通过这一层,服务层无需关心底层硬件的具体实现方式,例如访问的是单片机内部的Flash模拟EEPROM,还是通过SPI通信访问的外部EEPROM,都可以以一致的方式进行操作。

存储器硬件抽象层的另一项重要功能是支持 Flash EEPROM Emulation(Flash的EEPROM模拟功能)。这对于一些仅提供Flash存储而无独立EEPROM的微控制器尤为重要,通过该功能可以模拟EEPROM的特性,以满足应用对非易失性存储的需求。因此,在存储器硬件抽象层中,还包括了 EEPROM Abstraction(EEPROM抽象模块)和 Flash EEPROM Emulation(Flash模拟EEPROM模块)等子模块。

在存储器硬件抽象层之下,是MCAL层的具体实现。对于片上存储器,MCAL层中包括诸如 Internal Flash Driver(内部Flash驱动)、EEPROM Driver(内部EEPROM驱动)等模块,这些驱动直接与单片机内部的存储器硬件(如Flash或EEPROM)交互。而对于片外存储器,由于需要通过通信外设(如SPI模块)访问MCU外部的存储芯片,因此MCAL中的 SPI Handler Driver(SPI处理驱动)承担了这一角色。这一驱动与单片机的SPI外设硬件交互,从而实现对外部存储器的访问。

如下图所示,AUTOSAR将存储器访问分为多个抽象层次,从底层硬件到MCAL,再到存储器硬件抽象层,每一层都通过模块化设计简化了上层应用的开发复杂度,同时增强了系统的移植性和可扩展性。这种设计使得开发人员无需关注存储器物理位置的差异性,可以通过统一接口便捷地操作各种存储器资源。

image-20250109224705280

工作原理
  1. 上层服务模块(如NVRAM Manager)通过Memory Abstraction Interface发起存储器操作请求。
  2. MHA根据请求的存储设备类型(片上或片外)调用对应的抽象模块(如EEPROM Abstraction或Flash Emulation)。
  3. 如果需要操作底层硬件,MHA调用MCAL的存储器驱动模块(如Flash Driver或SPI Handler Driver)完成具体的读写、擦除操作。
  4. 操作完成后,统一返回结果给上层服务模块。
MHA的典型应用场景
  1. 非易失性数据存储
    • 管理系统中的关键数据(如用户配置参数、诊断信息)的存储,确保在断电情况下数据不丢失。
    • 提供可靠的读写和擦除操作。
  2. EEPROM模拟
    • 在缺少独立EEPROM的硬件平台中,通过Flash模拟EEPROM功能,为非易失性数据存储提供支持。
    • 解决了Flash存储寿命管理和数据擦写的技术难题。
  3. 外部存储扩展
    • 通过SPI接口访问外部存储器芯片(如扩展EEPROM或NVRAM),为系统提供更大的存储容量。

MHA的优点
  1. 硬件无关性
    • 屏蔽存储器物理位置和实现方式的差异,上层应用可通过统一接口访问存储器。
  2. 高扩展性
    • 支持片上和片外存储器的无缝集成,可适配多种硬件平台和存储设备。
  3. 可靠性
    • 通过EEPROM模拟和存储器抽象,提供稳定、高效的数据存储解决方案。
    • 支持对存储器寿命管理和错误处理。
  4. 模块化设计
    • 通过分层架构简化了开发和维护,提高了系统的可移植性和开发效率。

总结

AUTOSAR中的存储器硬件抽象层(MHA)是存储管理的核心组件。它通过屏蔽底层存储器硬件的差异,为上层应用和服务提供统一、标准化的接口。无论是内部存储器(如Flash、EEPROM)还是外部存储设备(如SPI外部EEPROM),都能通过MHA实现一致的操作。同时,MHA支持Flash EEPROM Emulation等高级功能,进一步提升了系统的灵活性、可靠性和扩展能力。这种分层设计简化了复杂汽车电子系统中存储设备的管理,极大地提高了开发效率和系统适应性。

4.5 Onboard Device Abstraction 板载设备抽象

车载设备抽象层包含了 ECU 车载设备的驱动程序,这些设备不能被视为传感器或执行器,例如内部或外部看门狗。这些驱动程序通过微控制器抽象层访问 ECU 车载设备。

在AutoSAR架构中,板载设备抽象(On-board Device Abstraction)在CP(Classic Platform)架构中的位置如下图所示。该模块的主要功能是实现对除传感器、执行器、通信模块和存储器之外的其他板载设备的抽象,典型例子包括外部看门狗等设备。为了提高系统的通用性和简化上层服务的调用,板载设备抽象层提供了统一的接口,将不同类型的硬件设备抽象为一致的访问方式。

具体来说,板载设备抽象层将看门狗设备分为单片机内部的看门狗(Internal Watchdog)和单片机外部的看门狗(External Watchdog),但无论是内部看门狗还是外部看门狗,抽象层都统一将其封装成相同的接口。这样,服务层在访问这些看门狗时,不需要关心是访问内部看门狗还是外部看门狗,从而减少了复杂性并提高了系统的可维护性。

image-20250109230718556

如下图所示,与之前描述的BSW(Basic Software)架构类似,在板载设备抽象模块中,包含了两个关键组件:看门狗接口(Watchdog Interface)和外部看门狗驱动(External Watchdog Driver)。其中,单片机内部的看门狗可以直接利用单片机内部的硬件资源,因此只需要调用MCAL(Microcontroller Abstraction Layer)中Microcontroller Drivers下的Internal Watchdog Driver来驱动底层硬件。与此不同,外部看门狗需要通过SPI(Serial Peripheral Interface)进行通信,因此MCAL中的Communication Drivers提供了SPI Handler Driver来处理与底层硬件的交互。该SPI Handler Driver通过SPI总线与外部看门狗进行数据交换,从而完成看门狗的操作。

通过这种方式,AutoSAR的板载设备抽象模块不仅确保了对不同硬件设备的统一管理,还通过硬件抽象层(如MCAL)将硬件依赖性与上层软件解耦,提升了系统的灵活性和可移植性。

image-20250109232757657

4.6 Crypto Hardware Abstraction 硬件加密抽象

加密硬件抽象是一组模块,它从加密原语(内部或外部硬件或基于软件)的位置中抽象出来。

Crypto Hardware Abstraction的主要作用是为上层软件(例如密码服务模块、通信安全模块)提供统一的加密操作接口,而不需要关心底层硬件加密模块(如HSM、TPM或专用加密协处理器)的具体实现。这种抽象屏蔽了不同硬件厂商在加密模块设计上的差异,使得系统具有更高的可移植性和硬件无关性。

通过Crypto Hardware Abstraction,上层软件可以调用标准化接口完成以下功能:

  • 对称加密/解密(如AES)
  • 非对称加密/解密(如RSA、ECC)
  • 哈希计算(如SHA系列算法)
  • 数字签名生成与验证
  • 密钥管理(如密钥生成、存储、销毁)

image-20250109234009471

在AUTOSAR架构中,硬件加密抽象(Crypto Hardware Abstraction)的具体组成如下图所示,它是ECU抽象层的重要部分,用于屏蔽底层加密硬件的差异性,为上层提供统一的加密操作接口,从而简化开发过程并增强系统的可移植性和扩展性。

硬件加密抽象的核心功能是对底层硬件加密模块的抽象与统一管理。在具体实现上,不同类型的加密模块通过不同的方式被访问和控制:

1. 内部硬件加密模块

对于位于单片机内部的加密模块,例如:

  • 安全硬件扩展(Secure Hardware Extension,SHE)
  • 硬件安全模块(Hardware Security Module,HSM)

这些模块通过MCAL(Microcontroller Abstraction Layer)的Crypto Drivers直接驱动。这些驱动程序负责与片上加密硬件交互,并完成具体的加密任务。通过这种设计,片上硬件的加密功能可以高效地被利用,并且上层应用无需关心这些硬件的具体实现细节。

2. 外部硬件加密模块

对于基于单片机外部的硬件加密模块(如外部加密芯片),由于其通常通过SPI通信接口访问,因此需要MCAL中的SPI Handler Driver来负责与外部硬件的通信。SPI Handler Driver通过SPI接口与外部加密模块交互,并驱动External Crypto Driver(外部加密驱动),将外部加密硬件的功能整合到ECU抽象层的硬件加密抽象中。这种方式使得外部硬件加密模块的使用与内部硬件模块一样简单和一致。

3. 基于软件的加密模块

硬件加密抽象中的另一部分是基于软件的加密驱动(Crypto Driver - SW-based)。这一驱动实现了在没有专用加密硬件时的加密功能,完全通过软件算法完成。例如,AES加密、RSA签名或SHA哈希等操作都可以由这一模块通过纯软件实现。这是硬件加密抽象相比于其他功能的一个显著不同点,因为它提供了硬件和软件两种实现方式的灵活选择。

4. 统一接口的提供

无论底层使用的是内部硬件加密模块、外部硬件加密模块,还是基于软件的加密模块,这些功能最终都通过Crypto Interface向上层提供标准化的接口。Crypto Interface屏蔽了底层加密模块的实现差异,使得上层服务(例如密码服务模块、通信安全模块)能够以统一的方式调用加密功能,而无需关注这些功能是由片上硬件、片外硬件还是纯软件实现的。

image-20250110002500261

工作原理总结
  1. 上层服务模块(如Crypto Service Manager)通过Crypto Interface发起加密操作请求。
  2. 硬件加密抽象模块判断任务类型,并通过Crypto Job Manager对请求进行调度。
  3. 根据加密任务的需求和硬件资源分配情况,选择合适的驱动:
    • 如果使用内部硬件模块,则调用MCAL的Crypto Drivers。
    • 如果使用外部硬件模块,则通过SPI Handler Driver与外部硬件交互。
    • 如果没有专用加密硬件,则调用基于软件的加密驱动。
  4. 加密操作完成后,结果通过Crypto Interface返回给上层模块。
优点和意义

硬件加密抽象模块的设计实现了以下目标:

  • 硬件无关性:屏蔽硬件实现差异,上层无需关心加密功能的实现方式。
  • 灵活性:支持内部硬件、外部硬件和纯软件的多种加密实现方式,满足不同系统的需求。
  • 可移植性:即使硬件平台发生变化,只需调整驱动层配置,无需更改上层代码。
  • 性能优化:优先利用硬件加速资源,在没有硬件支持时提供软件备选方案。
典型应用场景
  • 安全通信:如CAN/CAN-FD的消息加密和认证。
  • 软件更新保护:确保OTA更新的完整性和真实性。
  • 数据保护:对敏感信息进行加密存储。
  • 身份认证:通过数字签名验证系统组件的合法性。

通过整合内部硬件、外部硬件以及软件实现的加密功能,硬件加密抽象模块为AUTOSAR架构的安全应用提供了灵活、高效和统一的支持。

五、总结

至此,ECU抽象层的内容到这里就结束了,下篇文章我们继续讲解AutoSAR CP分层架构,服务层Services Layer。

往期文章

汽车基础软件AutoSAR自学攻略(一)-低成本AutoSAR环境搭建

汽车基础软件AutoSAR自学攻略(二)-AutoSAR CP分层架构(1)

汽车基础软件AutoSAR自学攻略(三)-AutoSAR CP分层架构(2)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2275123.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

科研绘图系列:R语言绘制Y轴截断分组柱状图(y-axis break bar plot)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍特点意义加载R包数据下载导入数据数据预处理画图输出总结系统信息介绍 Y轴截断分组柱状图是一种特殊的柱状图,其特点是Y轴的刻度被截断,即在某个范围内省略了部分刻度。这种图表…

慧集通(DataLinkX)iPaaS集成平台-数据流程之流程透明化调试功能简介

在线运行流程 查看运行状态 流程第一次执行状态显示 流程第二次执行状态显示(由于订单已同步到七星ERP中,由于还是这些订单所以第二次同步时就报错了) 点击查看节点组件的详细入参与出参信息 U8C销售订单读取组件执行时详情 入参-查询条件…

PostgreSQL技术内幕22:vacuum full 和 vacuum

文章目录 0.简介1.概念及使用方式2.工作原理2.1 主要功能2.2 清理流程2.3 防止事务id环绕说明 3.使用建议 0.简介 在之前介绍MVCC文章中介绍过常见的MVCC实现的两种方式,一种是将旧数据放到回滚段,一种是直接生成一条新数据(对于删除是不删除…

kubernetes第七天

1.影响pod调度的因素 nodeName 节点名 resources 资源限制 hostNetwork 宿主机网络 污点 污点容忍 Pod亲和性 Pod反亲和性 节点亲和性 2.污点 通常是作用于worker节点上,其可以影响pod的调度 语法:key[value]:effect effect:[ɪˈfek…

【CSS】HTML页面定位CSS - position 属性 relative 、absolute、fixed 、sticky

目录 relative 相对定位 absolute 绝对定位 fixed 固定定位 sticky 粘性定位 position:relative 、absolute、fixed 、sticky (四选一) top:距离上面的像素 bottom:距离底部的像素 left:距离左边的像素…

Redis数据库——Redis快的原因

本文详细介绍redis为什么这么快的原因,这里是本系列文章的总结篇(后面会补充一些内容,或者在原文上进行更新迭代),将从各方面出发解释为什么redis快,受欢迎的原因。 文章目录 内存内存数据库预分配内存 数据…

排序:插入、选择、交换、归并排序

排序 :所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性 :假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,…

RocketMQ 和 Kafka 有什么区别?

目录 RocketMQ 是什么? RocketMQ 和 Kafka 的区别 在架构上做减法 简化协调节点 简化分区 Kafka 的底层存储 RocketMQ 的底层存储 简化备份模型 在功能上做加法 消息过滤 支持事务 加入延时队列 加入死信队列 消息回溯 总结 来源:面试官:RocketMQ 和 Kafka 有…

赛车微型配件订销管理系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 赛车微型配件行业通常具有产品多样性、需求不确定性、市场竞争激烈等特点。配件供应商需要根据市场需求及时调整产品结构和库存,同时要把握好供应链管理和销售渠道。传统的赛车微型配件订销管理往往依赖于人工经验和简单的数据分析,效率低下且容易…

公众号如何通过openid获取unionid

通过接口 https://api.weixin.qq.com/cgi-bin/user/info?access_tokenxxxxxxx&langzh_CN 返回的数据如下: 前提是必须绑定 微信开放平台 token如何获取呢 代码如下: String tokenUrl "https://api.weixin.qq.com/cgi-bin/token"; …

半导体数据分析: 玩转WM-811K Wafermap 数据集(二) AI 机器学习

一、数据集回顾 前面我们已经基本了解了WM-811K Wafermap 数据集,并通过几段代码,熟悉了这个数据集的数据结构,这里为了方便各位连续理解,让我们再回顾一下: WM-811K Wafermap 数据集是一个在半导体制造领域广泛使用…

协同过滤算法私人诊所系统|Java|SpringBoot|VUE|

【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SpringBoot、Mybatis-Plus、VUE、jquery,html 5⃣️…

Python基于YOLOv8和OpenCV实现车道线和车辆检测

使用YOLOv8(You Only Look Once)和OpenCV实现车道线和车辆检测,目标是创建一个可以检测道路上的车道并识别车辆的系统,并估计它们与摄像头的距离。该项目结合了计算机视觉技术和深度学习物体检测。 1、系统主要功能 车道检测&am…

nexus搭建maven私服

说到maven私服每个公司都有,比如我上一篇文章介绍的自定义日志starter,就可以上传到maven私服供大家使用,每次更新只需deploy一下就行,以下就是本人搭建私服的步骤 使用docker安装nexus #拉取镜像 docker pull sonatype/nexus3:…

MiniMind - 从0训练语言模型

文章目录 一、关于 MiniMind 📌项目包含 二、📌 Environment三、📌 Quick Start Test四、📌 Quick Start Train0、克隆项目代码1、环境安装2、如果你需要自己训练3、测试模型推理效果 五、📌 Data sources1、分词器&am…

Postman接口测试基本操作

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 Postman-获取验证码 需求:使用Postman访问验证码接口,并查看响应结果。 地址:http://kdtx-test.itheima.net/api/captchaIm…

基于Python实现的通用小规模搜索引擎

基于Python实现的通用小规模搜索引擎 1.项目简介 1.1背景 《信息内容安全》网络信息内容获取技术课程项目设计 一个至少能支持10个以上网站的爬虫程序,且支持增量式数据采集;并至少采集10000个实际网页;针对采集回来的网页内容, 能够实现网页文本的分…

查找路由器的管理后台ip【通用找IP】

需求: 刚刚搞了个【小米】路由器,我想进路由的管理后台,提示:安装xx的路由管家,我不想安装 但是无法找到这个管理后台。 而且我是用这个路由作为中继,那么这个路由的ip就会经常更换 尝试通过网上搜索引擎来…

混合专家模型 (MoE)笔记摘要

ref: https://huggingface.co/blog/zh/moe#%E4%BB%80%E4%B9%88%E6%98%AF%E6%B7%B7%E5%90%88%E4%B8%93%E5%AE%B6%E6%A8%A1%E5%9E%8B 简短总结 混合专家模型 (MoEs): 与稠密模型相比, 预训练速度更快 与具有相同参数数量的模型相比,具有更快的…

01 Oracle自学环境搭建

1 Oracle12C安装 1.1 下载 官网地址:https://www.oracle.com/ 解压安装包 运行安装程序 1.2 安装 配置安全更新 软件更新 安装选项 系统类 Oracle主目录用户选择 使用现有windows用户:如果选择该项,则需要指定没有管理权限的用户。 创建新Wi…