AUTOSAR SOME/IP 转换器规范详解

基于AUTOSAR标准的SOME/IP转换器协议解析与实现指南

目录

  • 1. 介绍与功能概述
  • 2. SOME/IP架构
    • 2.1 SOME/IP转换器架构
    • 2.2 组件解释
    • 2.3 层级说明
  • 3. SOME/IP通信流程
    • 3.1 客户端/服务器通信序列
    • 3.2 通信流程解释
  • 4. SOME/IP消息结构
    • 4.1 消息结构类图
    • 4.2 消息头部
    • 4.3 序列化规则
  • 5. 总结

1. 介绍与功能概述

SOME/IP (Scalable service-Oriented MiddlewarE over IP) 是一种用于汽车电子系统中的通信协议,专为分布式嵌入式系统设计。SOME/IP转换器是AUTOSAR(汽车开放系统架构)标准的重要组成部分,主要负责将应用层数据转换为网络传输所需的SOME/IP格式,并实现服务导向的通信模型。

SOME/IP协议具有以下主要特点:

  • 可扩展性:从小型到大型平台均可适用
  • 面向服务:支持服务导向架构(SOA)模式
  • 兼容性:适用于各种操作系统,包括OSEK和无操作系统的嵌入式设备
  • 高效性:为汽车用例提供所需的所有功能,同时保持高效率
  • 灵活性:支持不同的通信模式,包括客户端/服务器和发送者/接收者通信

2. SOME/IP架构

2.1 SOME/IP转换器架构

在这里插入图片描述

2.2 组件解释

应用软件组件:

  • 功能: 使用SOME/IP服务的应用层软件组件
  • 特点: 通过SOME/IP接口访问网络服务,无需关心底层协议细节

SOME/IP Transformer:

  • 功能: SOME/IP转换器是AUTOSAR中负责数据序列化和反序列化的关键组件
  • 主要职责:
    • 将应用数据结构序列化为标准SOME/IP格式
    • 将接收的SOME/IP数据反序列化为应用可用的格式
    • 处理基本数据类型和复杂结构的转换
    • 支持各种数据类型的序列化,包括基础类型、结构体、数组、字符串等

SOME/IP Stack:

  • 功能: 实现SOME/IP协议的核心功能
  • 主要职责:
    • 管理SOME/IP消息头部
    • 处理服务发现机制
    • 实现请求/响应通信模式
    • 管理客户端/服务器通信流程
    • 处理通知事件和事件订阅

Socket Adapter:

  • 功能: 提供SOME/IP协议栈与TCP/IP协议栈之间的适配层
  • 主要职责:
    • 管理Socket连接
    • 提供传输层接口抽象
    • 处理数据发送和接收

TCP/IP Stack:

  • 功能: 提供标准网络协议实现
  • 主要职责:
    • 实现TCP和UDP协议
    • 提供可靠和不可靠的传输服务
    • 处理网络层和传输层功能

Ethernet Driver:

  • 功能: 处理以太网物理层和数据链路层通信
  • 主要职责:
    • 提供以太网帧的发送和接收功能
    • 管理物理层通信

2.3 层级说明

AUTOSAR应用层:

  • 包含使用SOME/IP服务的应用软件组件
  • 专注于业务逻辑实现,通过标准接口访问网络服务

AUTOSAR中间层:

  • 包含SOME/IP转换器、SOME/IP协议栈和Socket适配器
  • 提供服务导向的通信抽象
  • 实现数据格式转换和协议处理

AUTOSAR底层:

  • 包含TCP/IP协议栈和以太网驱动
  • 提供通用网络通信功能
  • 负责底层数据传输

代码示例 - SOME/IP转换器初始化:

/* SOME/IP转换器配置结构 */
typedef struct {uint16 serviceId;          /* 服务ID (0-0xFFFF) */uint8 majorVersion;        /* 主版本号 */uint8 minorVersion;        /* 次版本号 */uint16 maxResponseSize;    /* 最大响应大小(字节) */uint16 maxQueueSize;       /* 请求队列最大大小 */boolean isBigEndian;       /* 端序标志 */
} SomeIpXf_ConfigType;/* SOME/IP转换器初始化函数 */
Std_ReturnType SomeIpXf_Init(const SomeIpXf_ConfigType* ConfigPtr)
{Std_ReturnType result = E_NOT_OK;if (ConfigPtr == NULL) {return E_NOT_OK;}/* 初始化SOME/IP转换器内部数据结构 */someIpXf_serviceId = ConfigPtr->serviceId;someIpXf_majorVersion = ConfigPtr->majorVersion;someIpXf_minorVersion = ConfigPtr->minorVersion;someIpXf_maxResponseSize = ConfigPtr->maxResponseSize;someIpXf_maxQueueSize = ConfigPtr->maxQueueSize;someIpXf_isBigEndian = ConfigPtr->isBigEndian;/* 初始化内部状态 */someIpXf_state = SOMEIPXF_STATE_INITIALIZED;result = E_OK;return result;
}

3. SOME/IP通信流程

3.1 客户端/服务器通信序列

在这里插入图片描述

3.2 通信流程解释

请求处理流程:

  1. 客户端应用 → SOME/IP转换器(客户端):

    • 客户端应用调用服务API
    • 传递应用数据结构和服务请求信息
  2. SOME/IP转换器(客户端) → SOME/IP转换器(客户端):

    • 序列化应用数据结构为SOME/IP格式
    • 应用数据类型转换规则和序列化算法
  3. SOME/IP转换器(客户端) → SOME/IP协议栈(客户端):

    • 传递序列化后的SOME/IP消息负载
    • 包含服务调用相关信息
  4. SOME/IP协议栈(客户端) → SOME/IP协议栈(客户端):

    • 添加SOME/IP头部信息
    • 设置消息ID、请求ID、消息类型等字段
    • 配置协议版本和接口版本信息
  5. SOME/IP协议栈(客户端) → TCP/IP协议栈(客户端):

    • 发送完整的SOME/IP消息
    • 通过Socket接口传递数据
  6. TCP/IP协议栈(客户端) → TCP/IP协议栈(服务端):

    • 通过网络传输SOME/IP消息
    • 使用TCP或UDP协议进行通信
  7. TCP/IP协议栈(服务端) → SOME/IP协议栈(服务端):

    • 接收网络传输的SOME/IP消息
    • 验证消息完整性
  8. SOME/IP协议栈(服务端) → SOME/IP协议栈(服务端):

    • 解析SOME/IP头部信息
    • 识别服务ID、方法ID等字段
    • 验证协议版本和接口版本
  9. SOME/IP协议栈(服务端) → SOME/IP转换器(服务端):

    • 传递消息负载数据
    • 进行服务分发
  10. SOME/IP转换器(服务端) → SOME/IP转换器(服务端):

    • 反序列化SOME/IP数据为应用数据结构
    • 应用反序列化规则和类型转换
  11. SOME/IP转换器(服务端) → 服务端应用:

    • 传递反序列化后的应用数据
    • 触发服务实现处理请求
  12. 服务端应用 → 服务端应用:

    • 处理接收到的服务请求
    • 执行业务逻辑

响应处理流程:

  1. 服务端应用 → SOME/IP转换器(服务端):

    • 返回处理结果数据
    • 传递响应状态信息
  2. SOME/IP转换器(服务端) → SOME/IP转换器(服务端):

    • 序列化响应数据为SOME/IP格式
    • 应用数据类型转换规则
  3. SOME/IP转换器(服务端) → SOME/IP协议栈(服务端):

    • 传递序列化后的响应数据
    • 包含请求处理结果信息
  4. SOME/IP协议栈(服务端) → SOME/IP协议栈(服务端):

    • 添加SOME/IP响应头部
    • 设置消息类型为响应类型
    • 设置返回码表示处理状态
    • 维护与请求相同的请求ID
  5. SOME/IP协议栈(服务端) → TCP/IP协议栈(服务端):

    • 发送SOME/IP响应消息
    • 通过Socket接口传递数据
  6. TCP/IP协议栈(服务端) → TCP/IP协议栈(客户端):

    • 通过网络传输响应消息
    • 使用TCP或UDP协议
  7. TCP/IP协议栈(客户端) → SOME/IP协议栈(客户端):

    • 接收网络传输的响应消息
    • 验证消息完整性
  8. SOME/IP协议栈(客户端) → SOME/IP协议栈(客户端):

    • 解析SOME/IP头部信息
    • 验证请求ID匹配,确保响应与请求对应
    • 检查返回码,确认处理状态
  9. SOME/IP协议栈(客户端) → SOME/IP转换器(客户端):

    • 传递响应负载数据
    • 进行响应分发
  10. SOME/IP转换器(客户端) → SOME/IP转换器(客户端):

    • 反序列化响应数据为应用数据结构
    • 应用反序列化规则
  11. SOME/IP转换器(客户端) → 客户端应用:

    • 返回处理结果给应用
    • 完成服务调用流程

代码示例 - 客户端请求发送:

/* SOME/IP客户端请求发送函数 */
Std_ReturnType SomeIpXf_SendRequest(uint16 clientId, uint16 serviceId, uint16 methodId, const void* requestData, uint32 requestDataLength)
{Std_ReturnType result = E_NOT_OK;uint32 messageId = 0;uint32 requestId = 0;if (requestData == NULL && requestDataLength > 0) {return E_NOT_OK;}/* 构造消息ID: 服务ID + 方法ID */messageId = ((uint32)serviceId << 16) | methodId;/* 构造请求ID: 客户端ID + 会话ID */requestId = ((uint32)clientId << 16) | someIpXf_nextSessionId++;/* 序列化请求数据 */uint8 serializedData[SOMEIPXF_MAX_BUFFER_SIZE];uint32 serializedLength = 0;result = SomeIpXf_Serialize(requestData, requestDataLength, serializedData, &serializedLength);if (result != E_OK) {return result;}/* 构建SOME/IP消息 */result = SomeIp_SendMessage(messageId, requestId, SOMEIP_MESSAGE_TYPE_REQUEST, SOMEIP_RETURN_CODE_OK, serializedData, serializedLength);return result;
}

4. SOME/IP消息结构

4.1 消息结构类图

在这里插入图片描述

4.2 消息头部

SOME/IP头部结构:

  • 消息ID [32位]:

    • 描述: 唯一标识SOME/IP服务和方法
    • 组成:
      • 服务ID [16位]: 标识服务实例
      • 方法ID [16位]: 标识服务中的方法
    • 范围: 0x00000000 - 0xFFFFFFFF
  • 长度 [32位]:

    • 描述: 表示消息负载的字节长度
    • 计算: 整个消息长度减去头部长度(8字节)
    • 范围: 0x00000000 - 0xFFFFFFFF
  • 请求ID [32位]:

    • 描述: 用于匹配请求和响应
    • 组成:
      • 客户端ID [16位]: 标识发出请求的客户端
      • 会话ID [16位]: 标识特定请求会话
    • 范围: 0x00000000 - 0xFFFFFFFF
  • 协议版本 [8位]:

    • 描述: SOME/IP协议的版本号
    • 当前值: 0x01
    • 范围: 0x00 - 0xFF
  • 接口版本 [8位]:

    • 描述: 服务接口的版本号
    • 范围: 0x00 - 0xFF
  • 消息类型 [8位]:

    • 描述: 标识消息的类型
    • 值:
      • REQUEST (0x00): 请求消息
      • REQUEST_NO_RETURN (0x01): 无响应请求
      • NOTIFICATION (0x02): 通知消息
      • RESPONSE (0x80): 响应消息
      • ERROR (0x81): 错误响应
  • 返回码 [8位]:

    • 描述: 表示处理结果
    • 值:
      • E_OK (0x00): 成功
      • E_NOT_OK (0x01): 一般错误
      • E_UNKNOWN_SERVICE (0x02): 未知服务
      • E_UNKNOWN_METHOD (0x03): 未知方法
      • E_NOT_READY (0x04): 服务未就绪
      • E_NOT_REACHABLE (0x05): 服务不可达
      • E_TIMEOUT (0x06): 超时错误
      • E_WRONG_PROTOCOL_VERSION (0x07): 协议版本错误
      • E_WRONG_INTERFACE_VERSION (0x08): 接口版本错误
      • E_MALFORMED_MESSAGE (0x09): 消息格式错误
      • E_WRONG_MESSAGE_TYPE (0x0A): 消息类型错误

代码示例 - SOME/IP头部定义:

/* SOME/IP消息头部结构定义 */
typedef struct {uint32 messageId;      /* 消息ID: 服务ID(16位) + 方法ID(16位) */uint32 length;         /* 负载长度 */uint32 requestId;      /* 请求ID: 客户端ID(16位) + 会话ID(16位) */uint8 protocolVersion; /* 协议版本 */uint8 interfaceVersion; /* 接口版本 */uint8 messageType;     /* 消息类型 */uint8 returnCode;      /* 返回码 */
} SomeIp_HeaderType;/* 消息类型定义 */
#define SOMEIP_MESSAGE_TYPE_REQUEST          0x00u
#define SOMEIP_MESSAGE_TYPE_REQUEST_NO_RETURN 0x01u
#define SOMEIP_MESSAGE_TYPE_NOTIFICATION     0x02u
#define SOMEIP_MESSAGE_TYPE_RESPONSE         0x80u
#define SOMEIP_MESSAGE_TYPE_ERROR            0x81u/* 返回码定义 */
#define SOMEIP_RETURN_CODE_OK                  0x00u
#define SOMEIP_RETURN_CODE_NOT_OK              0x01u
#define SOMEIP_RETURN_CODE_UNKNOWN_SERVICE     0x02u
#define SOMEIP_RETURN_CODE_UNKNOWN_METHOD      0x03u
#define SOMEIP_RETURN_CODE_NOT_READY           0x04u
#define SOMEIP_RETURN_CODE_NOT_REACHABLE       0x05u
#define SOMEIP_RETURN_CODE_TIMEOUT             0x06u
#define SOMEIP_RETURN_CODE_WRONG_PROTO_VER     0x07u
#define SOMEIP_RETURN_CODE_WRONG_INTERFACE_VER 0x08u
#define SOMEIP_RETURN_CODE_MALFORMED_MESSAGE   0x09u
#define SOMEIP_RETURN_CODE_WRONG_MESSAGE_TYPE  0x0Au/* SOME/IP消息结构 */
typedef struct {SomeIp_HeaderType header;  /* 消息头部 */uint8* payload;            /* 消息负载 */
} SomeIp_MessageType;

4.3 序列化规则

基础数据类型序列化:

  • uint8, int8: 直接序列化为1字节
  • uint16, int16: 序列化为2字节,遵循大端或小端字节序
  • uint32, int32, float32: 序列化为4字节,遵循大端或小端字节序
  • uint64, int64, float64: 序列化为8字节,遵循大端或小端字节序
  • boolean: 序列化为1字节,0表示false,1表示true

复杂数据类型序列化:

  • 结构体(Struct):

    • 按字段顺序依次序列化各个字段
    • 可能需要考虑字节对齐要求
  • 数组(Array):

    • 固定长度数组: 直接序列化所有元素
    • 动态长度数组: 先序列化长度字段(可配置大小),然后序列化元素
  • 字符串(String):

    • 序列化格式: 长度字段 + 字符序列
    • 长度字段大小可配置(1, 2或4字节)
    • UTF-8编码支持
  • 联合体/变体(Union/Variant):

    • 序列化格式: 类型标识符 + 数据
    • 类型标识符用于识别实际存储的类型

代码示例 - 基础类型序列化:

/* 基础类型序列化函数 *//* uint32序列化 */
Std_ReturnType SomeIpXf_SerializeUint32(uint32 value, uint8* buffer, uint32 bufferSize, uint32* bytesCopied)
{if (buffer == NULL || bytesCopied == NULL || bufferSize < 4) {return E_NOT_OK;}if (someIpXf_isBigEndian) {/* 大端序序列化 */buffer[0] = (uint8)((value >> 24) & 0xFF);buffer[1] = (uint8)((value >> 16) & 0xFF);buffer[2] = (uint8)((value >> 8) & 0xFF);buffer[3] = (uint8)(value & 0xFF);} else {/* 小端序序列化 */buffer[0] = (uint8)(value & 0xFF);buffer[1] = (uint8)((value >> 8) & 0xFF);buffer[2] = (uint8)((value >> 16) & 0xFF);buffer[3] = (uint8)((value >> 24) & 0xFF);}*bytesCopied = 4;return E_OK;
}/* 字符串序列化 */
Std_ReturnType SomeIpXf_SerializeString(const uint8* str, uint32 strLength, uint8* buffer, uint32 bufferSize, uint32* bytesCopied)
{if (str == NULL || buffer == NULL || bytesCopied == NULL) {return E_NOT_OK;}/* 需要的总大小: 长度字段(4字节) + 字符串数据 */uint32 totalSize = 4 + strLength;if (bufferSize < totalSize) {return E_NOT_OK;}/* 序列化长度字段 */SomeIpXf_SerializeUint32(strLength, buffer, bufferSize, bytesCopied);/* 复制字符串数据 */memcpy(buffer + *bytesCopied, str, strLength);*bytesCopied += strLength;return E_OK;
}

5. 总结

SOME/IP作为一种面向服务的中间件通信协议,为AUTOSAR架构提供了灵活而强大的通信机制。通过本文的详细解析,我们了解了SOME/IP的架构设计、通信流程和消息结构等关键内容。

SOME/IP的主要优势包括:

  • 统一的通信框架:提供一致的客户端/服务器通信模型和发送者/接收者通信模型
  • 灵活的数据序列化:支持多种数据类型和复杂结构的序列化
  • 可扩展性:适用于从小型嵌入式设备到复杂ECU的各种平台
  • 标准化的头部格式:提供统一的消息头部结构,便于消息的识别和处理
  • 错误处理机制:提供标准化的错误码和处理流程

SOME/IP转换器作为AUTOSAR架构中的关键组件,不仅实现了数据序列化/反序列化功能,还提供了标准的服务接口,使应用层组件能够便捷地使用网络通信服务,而无需关心底层协议细节,为汽车电子系统的分布式通信提供了强大支持。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 机器学习核心入门与实战进阶 Day 5 - 模型调参与交叉验证技巧(GridSearchCV、KFold)

✅ 今日目标 理解模型调参的重要性&#xff08;避免欠拟合/过拟合&#xff09;掌握 GridSearchCV 的使用方法学习 K 折交叉验证的基本流程与意义对比不同参数组合的表现使用 Pipeline 简化流程&#xff08;进阶&#xff09;&#x1f4d8; 一、调参思路方法描述Grid Search穷举所…

Python打卡:Day47

复习日 浙大疏锦行

ACE-Step:AI音乐生成基础模型

ACE-Step是什么 ACE-Step 是 ACE Studio 和 StepFun 联合推出的一款开源音乐生成基础模型&#xff0c;专为高效、连贯、可控的音乐创作而设计。它融合了扩散模型、深度压缩自编码器&#xff08;DCAE&#xff09;和轻量级线性变换器&#xff0c;生成速度比传统大模型快约 15 倍…

Web前端: :is(通用选择器)

:is(通用选择器)CSS中的 :is() 选择器是⼀个功能强⼤的伪类选择器&#xff0c;它⽤于简化复杂的选择器&#xff0c;特别是在处理多个相似的选择器时。:is() 选择器接受 ⼀个选择器列表作为参数&#xff0c;然后匹配列表中任何⼀个选择器所选中的元素。:is() 选择器核心概念基本…

【学习笔记】网络设备(华为交换机)基础知识 24 —— 以太网子接口基础知识

**总结&#xff1a;分享华为交换机以太网子接口基础知识&#xff1a;包含子接口的简介、功能、分类以及二层以太网子接口配置终结子接口、三层以太网子接口配置终结子接口和检查配置结果的相关命令 ** 一、子接口的概念 1、子接口的简介以太网子接口&#xff1a;‌是通过协议和…

在Docker中安装nexus3(作为maven私服)

1. 为什么我不推荐安装nexus2&#xff1f; 有两个原因&#xff1a;&#xff08;1&#xff09;nexus2安装麻烦&#xff0c;nexus3安装更方便 &#xff08;2&#xff09;Nexus 3相对于Nexus 2进行了一些重要的改进和增强。它引入了新的存储引擎、更多的仓库类型支持、改进的权限…

一、MySQL 8.0 之《EXPLAIN ANALYZE 执行计划》

文章目录一、MySQL EXPLAIN ANALYZE 执行计划指南主要功能实际执行性能分析详细的执行统计性能瓶颈识别与普通 EXPLAIN 的区别使用场景查询优化问题诊断总结二、EXPLAIN ANALYZE 执行计划样例分析执行顺序解读逐行详细解释第 7 行 (最内层)第 6 行第 5 行第 4 行第 3 行第 2 行…

Google I/O Extended :2025 Flutter 的现状与未来

大家好&#xff0c;我是 Flutter GDE 郭树煜&#xff0c;Github GSY 项目的维护人&#xff0c;今天主要分享的内容是「Flutter 的现状与未来」&#xff0c;可能今天更多会是信息科普类型的内容&#xff0c;主要是分享关于 Flutter 的现状与未来 现状 其实 Flutter 从开源到现在…

软考(软件设计师)数据库原理:事务管理,备份恢复,并发控制

数据库事务管理与备份恢复 事务&#xff08;Transaction&#xff09; 是数据库管理系统中执行的一个不可分割的工作单元&#xff0c;它包含一组 SQL 操作&#xff0c;这些操作要么全部成功执行&#xff0c;要么全部不执行。 事务的四大特性&#xff08;ACID&#xff09;&…

【牛客刷题】相遇

文章目录 一、题目介绍1.1 题目描述1.2 输入描述1.3 输出描述1.4 示例二、解题思路2.1 核心算法设计2.2 性能优化关键2.3 算法流程图三、解法实现3.1 解法一:基础实现3.1.1 初级版本分析3.2 解法二:优化版本(推荐)3.2.1 优化版本分析一、题目介绍 1.1 题目描述 街道可以看…

uni-app 下拉搜索多选 支持自己创建数据

组件 /components/selectmul.vue <template><view class="multi-select-container"><view class="input-dropdown-container"><view class="" v-if="selectlist&&selectlist[0]"><text class=&qu…

nmon使用方法

安装方法 方法1&#xff1a; 最简单方法&#xff1a; #dnf install nom 验证 执行命令&#xff1a; #nmon 方法2&#xff1a; 下载安装包安装&#xff0c;下载地址 官网&#xff1a;nmon and njmon | Site / Download 或者&#xff1a;https://sourceforge.net/project…

Google AI 刚刚开源 MCP 数据库工具箱,让 AI 代理安全高效地查询数据库

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

数学建模的一般步骤

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 青春由磨砺而出彩&#xff0c;人生因奋…

【web安全】SQLMap 参数深度解析:--risk 与 --level 详解

目录 简介 一、--risk 参数&#xff1a;测试风险控制 1. 基本定义 2. 各级别详细对比 risk1 (默认) risk2 risk3 3. 使用建议 二、--level 参数&#xff1a;测试深度控制 1. 基本定义 2. 各级别详细对比 level1 (默认) level2 level3 level4 level5 3. 技术实…

YOLO在自动驾驶交通标志识别中的应用与优化【附代码】

文章目录YOLO在自动驾驶交通标志识别中的应用与优化引言1. YOLO算法概述1.1 YOLO的核心思想1.2 YOLO的演进2. 交通标志识别的挑战2.1 数据集特性2.2 性能指标要求3. YOLO模型优化策略3.1 数据增强改进3.2 注意力机制集成3.3 针对小目标的改进4. 完整实现示例4.1 模型训练代码4.…

开源鸿蒙(OpenHarmony)桌面版全面解析:架构适配、设备支持与开发实战

摘要:深度剖析OpenHarmony 4.0+桌面版的技术演进,揭秘其在X86/国产芯片设备的落地实践,附源码获取与开发板实战指南 一、OpenHarmony桌面版架构突破 1.1 跨平台内核适配 开源鸿蒙通过 多内核混合架构 实现全场景覆盖: X86架构:集成Linux内核适配层(kernel/linux),支持…

【WEB】Polar靶场 11-15题 详细笔记

目录 十一.爆破 PHP的基本语法 变量与常量 数据类型 流程控制 函数 文件操作 数据库交互 1.substr() 函数 2. intval() 函数 十二.XFF X-Forwarded-For&#xff08;简称XFF&#xff09; 十三.rce1 shell 命令分隔符 isset()函数 preg_match_all()函数 ${IFS}…

导诊系统的科室和症状词库如何扩展?

要扩展导诊系统的科室和症状词库&#xff0c;可以通过以下几种方式实现&#xff1a;1. 直接扩展科室定义&#xff08;推荐&#xff09;在初始化代码中直接添加新的科室及对应症状&#xff1a;# 扩展后的科室定义 depts [Department("内科", ["发热", &quo…

通过Prompt生成互动式网页HTML案例探索(二)

之前提到了一些【通过Claude 生成图片的prompt集锦&#xff08;一&#xff09;】&#xff0c;本篇沿着试着用prompt生成互动式网页 文章目录 1 什么是互动式网页&#xff1f;1.1 一个&#x1f330;1.1 核心能力列举1.3 部署方式 2 猜测秘塔AI搜索生成HTML的Prompt3 mozi大佬&am…