CAN 报文字节排列顺序(Intel、Motorola_LSB、Motorola_MSB) 获取链接 Facebook X Pinterest 电子邮件 其他应用 五月 06, 2024 CAN 报文字节排列顺序(Intel、Motorola_LSB、Motorola_MSB)https://blog.csdn.net/qq_41256212/article/details/95477467https://blog.csdn.net/xieyihua1994/article/details/135072644 获取链接 Facebook X Pinterest 电子邮件 其他应用 评论
ISO 14229-1-2020 八月 18, 2024 ISO 14229-1-2020 服务流程 service request primitive(服务请求) - 确认 模式/ 未确认 模式 service request-confirmation primitive(服务请求发送成功) - 确认 模式/ 未确认 模式 service indication primitive(服务请求接收成功) - 确认 模式/ 未确认 模式 service response primitive(服务应答) - 确认 模式 service response-confirmation primitive(服务应答发送成功) - 确认 模式 service confirmation primitive(服务应答接收成功) - 确认 模式 A_Mtype(诊断服务应用层数据格式) diagnostics - A_SA , A_TA 寻址 remote diagnostics - A_SA , A_TA 及 额外 信息寻址 secure diagnostics - A_SA , A_TA 寻址 安全 服务器 secure remote diagnostics - A_SA , A_TA 及 额外 信息寻址 安全 服务器 接口描述 service_name.type ( parameter ... Read more »
AUTOSAR_SWS_CANDriver 九月 23, 2024 AUTOSAR_SWS_ CAN Driver 简介和功能概述 该规范指定了 AUTOSAR 基础软件模块 CAN 驱动程序(在本文档中称为“Can 模块”)的功能、 API 和配置。 CAN 模块属于最低层,执行硬件访问并向上层提供独立于 硬件 的 API 。 唯一可以访问 CAN 模块的上层是 Can If 模块(另请参阅 SRS _ SPAL _12092)。 CAN 模块提供启动传输的服务,并调用 Can If 模块的回调函数来通知 事件 ,独立于 硬件 。 此外,它还提供控制属于同一 CAN 硬件 单元的 CAN 控制器 的行为和状态的 服务 。 只要属于同一个 CAN 硬件 单元, 多 个 CAN 控制器 就可以由单个 CAN 模块控制。 有关 CAN 控制器 和 CAN 硬件 单元的详细描述,请参见首字母缩略词和缩写章节以及[5]中的图表。 首字母缩略词和缩写 优先级反转 如果只使用单个传输 缓冲区 ,则可能会发生内部 优先级 反转。 由于 优先级 较低,存储在 缓冲区 中的 消息 会等待,直到“总线上的流量平静下来”。 在等待期间,此 消息 可能会阻止同一微控制器生成通过总线传输的更高 优先级 的 消息 。 外部 优先级 反转问题可能出现在某些 CAN 实现中。 假设 CAN 节点希望传输一组具有高 优先级 的连续 消息 ,这些 消息 存储在不同的 消息 缓冲区 中。如果 CAN 网络上这些 消息 之间的 帧间空间 大于 CAN 标准定义的 最小 空间,则第 二 个节点能够开始传输较低 优先级 的 消息 。 最小 帧间空间 由 间歇字段 确定,该字段由 3 个隐性 bit 组成。 之前由于另一条 消息 的传输而处于待处理阶段的 消息 ,将在总线空闲期间开始被传输,最快可紧随 间歇字段 之后,从 间歇字 段 之后的第 一 个 bit 开始。 例外情况是,具有待传输的 消息 的节点会将 间歇字段 的第三个 bit 解释为显性 bit ,并以此 bit 作为帧的起始位,开始传输帧的第一个标识符位,而无需先传输 SOF 位。 CAN 模块的内部处理时间必须足够 短 ,以发送具有最小 帧间空间 的连续 消息 ,以避免在上述所有情况下出现外部 优先... Read more »
EB - MCAL 九月 05, 2024 EB - MCAL Index - Port - Mcu (logging...) - Dio - ADC (logging...) - PWM - ICU Read more »
Linux Driver Char Device 笔记 五月 16, 2024 1.打開設備 设备节点 本质上和文件节点相同,为操作驱动的基本单位 文件节点 只用来做文件操作 打开设备文件的步骤: chrdev_open完成的主要工作是:首先根据设备号找到添加在内核中代表字符设备的cdev (cdev是放在cdev_map散列表中的,驱动加载时会构造相应的cdev并添加到这个散列表中,并且在构造这个cdev时还实现了一个操作方法集合,由cdev的ops成员指向它),找到对应的cdev对象后,用cdev关联的操作方法集合替代之前构造的file结构中的操作方法集合,然后调用cdev所关联的操作方法集合中的打开函数,完成设备真正的打开操作,这也标志着do_filp_open函数基本结束。 使用的时候是先用inode找到对应的cdev,然后cdev对象包含对应的操作集file_operations。 并且在以下情况时,驱动程序会根据入口函数 static int cdev_open ( struct inode* inodp, struct file* filp ) 将 和具体设备 相关的 驱动数据 与 file 结构建立关联: 打开代表设备的inode 初始化要作为file来操作的设备 这样 file 结构就包含对驱动操作的 操作集 及 与具体设备挂钩的 驱动私有数据 了,这样就能对 file 进行操作进而 控制相关设备 了。 打开一个 cdev 的步骤: 打开对应 inode 通过 indoe 找到对应 cdev 将与 cdev 相关的 设备数据 及 驱动操作集 与 要作为文件操作的代表驱动的 file 结构 相挂钩 2.IOCTL ioctl 命令编码规则 31 30 ----------(2 Byte) 00 00 - 命令不带参数 00 01 - 向驱动传递参数,写入 01 00 - 从 驱动获取数据,读出 01 01 ... Read more »
AUTOSAR_SWS_PWMDriver 九月 16, 2024 AUTOSAR_SWS_ PWM Driver 简介和功能概述 该规范指定了 AUTOSAR 基础软件模块 PWM 驱动程序的功能、 API 和配置。 每个 PWM 通道都链接到微控制器的硬件 PWM 。 PWM 信号的类型(例如居中对齐、左对齐等)未在本规范中定义,而由实现决定。 驱动程序提供微控制器内部 PWM 层(脉冲宽度调制)的初始化和控制功能。 PWM 模块生成具有可变脉冲宽度的脉冲。它允许选择 占空比 和信号 周期 时间。 首字母缩略词和缩写 具有本地范围的首字母缩略词和缩写词不包含在 AUTOSAR 词汇表中。这些必须出现在本地词汇表中。 约束和假设 限制 [ SWS _ Pwm _00001] [ SRS _ Pwm _12386] PWM SWS 不涵盖通用 I/O 上的 PWM 仿真。 仅当 MCAL 驱动程序拥有完整的底层硬件外设(即,其他 MCAL 模块无法访问硬件外设)时,才可实现电源状态控制 API 。 对其他模块的依赖 PWM 依赖于系统 时钟 。因此,系统 时钟 的变化(例如 PLL 开启 -> PLL 关闭)也会影响 PWM 硬件的 时钟 设置。 PWM 驱动器依赖于以下模块: Port 驱动程序: 设置端口 引脚 功能。(PWM141) MCU 驱动程序: 设置预分频器、系统 时钟 和 PLL 。(PWM142) DET : 开发模式下的默认 错误 跟踪器。(PWM 143) 文档 087_ AUTOSAR _ ECU _ Configuration 包含第4.6章 时钟 树配置,其中详细介绍了向外围设备传送参考 时钟 信号的机制。 代码文件结构 [ SWS _ Pwm _00065] [SRS _ BSW _00346] [SRS _ BSW _00314] PWM SWS 不应定义代码文件结构。 头文件结构 [ SWS _ Pwm _50075] [ ] Pwm . c 应包括 Pwm . h 、 Det . h 和 。 [ SWS _ Pwm _70075] [ ] Pwm _ Irq . c 应包括 Pwm . h 。 需求可追溯性 功能规格 一般行为 [ SWS _ Pwm _0008... Read more »
AUTOSAR_SWS_PortDriver 九月 14, 2024 AUTOSAR_SWS_ Port Driver 简介和功能概述 本规范规定了 AUTOSAR 基础软件模块 Port 驱动程序的: 功能 API 配置 本驱动程序规范适用于片上: 端口 端口 引脚 该模块应提供 初始化 微控制器整个 Port 结构的服务。 许多 端口 和端口 引脚 可分配给各种 功能 ,例如: General purpose I/O ADC SPI SCI PWM CAN LIN 其他 因此,应对 端口 结构进行 整体 配置和初始化。 这些端口 引脚 的 配置 和 模式 取决于微控制器和 ECU 。 应尽可能高效地将 端口 初始化数据写入每个 端口 。 Port 驱动程序模块应完成在 Dio 驱动程序模块中使用的 端口 结构的整体配置和初始化。 因此, Dio 驱动程序在由 Port 驱动程序配置的 引脚 和 端口 上工作。 在使用 Dio 功能之前,应初始化 Port 驱动程序。 否则, Dio 功能将表现出 未 定义的行为。 下图标识了 Port 驱动程序功能以及 MCAL 软件层中的 Port 驱动程序和 Dio 驱动程序的结构 [1]。 首字母缩略词和缩写 下表总结了 Port 驱动程序中使用的表达式。 约束和假设 Port 驱动程序的限制如下: 用户有责任确保同一系统中的 不 同实体 不 会并行访问同 一 端口 /端口 引脚 ,例如: 两 个任务配置同 一 端口 。 两 个任务配置同 一 引脚。 两 个任务配置同 一 端口 上的 不 同 引脚 。 对其他模块的依赖 其他驱动程序模块可能依赖于 Port 驱动程序,具体取决于 MCU 上各个端口 引脚 的可用功能。例如, MCU 引脚 可能可配置为 Dio 或 SPI 引脚 。因此, Dio 和/或 SPI 驱动程序模块可能依赖于 Port 模块来配置 引脚 以实现所... Read more »
AUTOSAR_SWS_ECUStateManager 十月 14, 2024 Specification of ECU State Manager 简介和功能概述 Ecu M 模块(如本文档中所述)是一个基本软件模块(参见 AUTOSAR _ TR _ BSW ModuleList.pdf),用于管理 ECU 状态 的常见方面。具体来说, ECU 管理器 模块: 初始化和取消初始化 OS 、 Sch M 和 Bsw M 以及一些基本软件驱动模块 根据请求将 ECU 配置为 休眠 和 关机 管理 ECU 上的所有 唤醒 事件 ECU 管理器模块提供 唤醒 验证协议来区分 “ 真实 ” 唤醒 事件 “ 不稳定 ” 唤醒 事件 此外: 部分 或 快速 启动 其中 ECU 以有限的功能 启动 。 然后根据应用程序的决定,继续逐步 启动 。 交错 启动 ECU 以最低限度 启动 ,然后 启动 RTE 以尽快执行 软件 组件 中的功能。 然后它继续 启动 其他 BSW 和 软件 组件 ,从而交错 BSW 和应用程序功能。 多个 运行 状态 其中 ECU 具有多个 运行 状态。 除其他外,这改进了从 休眠 状态到 运行 状态的频谱概念。 现在可以有一系列 运行 状态,从 经典 运行 (完全 运行 )到 最深 的 休眠 (处理器 停止 )。 多核 ECU 启动 、 关机 、 休眠 和 唤醒 在 ECU 的所有核心上协调。 灵活的 ECU 管理采用以下模块提供的通用模式管理设施: RTE 和 BSW 的调度模块(参见 AUTOSAR _ SWS _ RTE .pdf)现在合并为一个模块: 该模块支持自由配置的 BSW 和应用程序模式以及切换模式功能。 BSW 模式管理器模块(参见 AUTOSAR _ SWS _ BSW ModeManager.pdf): 该模块实现可配置规则和操作列表,以评估切换 ECU 模式的条件并实施必要的操作。 因此,通过灵活的 ECU 管理 ,大多数 ECU 状态 不再在 ECU 管理器 模块中被实现。通常,只有当通用模式 管理 设施在以下情况下不可用时, ECU 管理器 模块才会接管控制... Read more »
EB - MCAL - MCU 九月 09, 2024 EB - MCAL MCU MCU (微控制器单元)模块的 配置 。 General 此选项卡为 MCU 模块的 通用 配置 。 Config Variant : VariantPreCompile: 仅 预编译 时配置参数。 只有 一 组参数。 VariantPostBuild: 预编译 和 构建 后 时间配置 参数的混合。 只有 一 组参数。 VariantPostBuildSelectable: 预编译 和 构建 后 时间配置 参数的混合。 更多组参数。 General - McuGeneralConfiguration MCU 通用 配置 的 容器。 DevErrorDetect: 预处理器 开关,用于启用默认 错误 检测并向 Det 报告。 开关 DevErrorDetect 将打开或关闭默认 错误 跟踪器 ( Det ) 检测和通知。 默认 错误 的检测可在 预编译 时配置 (ON/OFF)。 #define MCU_DEV_ERROR_DETECT (STD_ON)/(STD_OFF) 将在 Mcu_Cfg .h 文件中生成。 MultiCoreSupport: 此参数全局使能了支持 多核 的可能性。 如果启用此参数,则至少需要定义一个 EcucPartition (在所有变体中)。 McuGetRamStateAPI: 预处理器 开关用于启用/禁用 API Mcu_GetRamState 。 #define MCU_GET_RAM_STATE_API (STD_ON)/(STD_OFF) 将在 Mcu_Cfg .h 文件中生成。 McuInitClockAPI: 如果将此参数设置为 FALSE ,则必须从 MCU 驱动程序禁用 时钟 初始化。 此概念适用于存在一些 一次性 写入 时钟 寄存器且存在 引导加载 程序的情况。 如果将此参数设置为 TRUE ,则 MCU 驱动程序负责 时钟 初始化。 #define MCU_INIT_CLOCK (STD_ON)/(STD_OFF) 将在 Mcu_Cfg .h 文件中生成。 McuNoPLL: 如果 H/W 没有 PLL 或 PLL 电路在开机后无需 S/W 干预即可启用,则此参数应设置为 True 。 在这种情... Read more »
AUTOSAR_SWS_ICUDriver 九月 17, 2024 AUTOSAR_SWS_ ICU Driver 简介和功能概述 本规范规定了 AUTOSAR 基础软件模块 ICU 驱动程序的功能、 API 和配置。 ICU 驱动程序是一个使用输入捕获单元 ( ICU ) 来解调 PWM 信号、计数脉冲、测量频率和占空比、生成简单中断以及唤醒中断的模块。 ICU 驱动程序提供的服务: 信号 边缘 通知 控制唤醒中断 周期 性信号时间测量 边缘 时间戳,可用于获取非 周期 性信号 边缘 计数 首字母缩略词和缩写 对其他模块的依赖 模块 DET (默认 错误 追踪器) 检测到的 错误 的详细描述可以在第 7.2 章和第 8 章中找到。 模块 MCU ICU 驱动程序依赖于系统 时钟 、预分频器和 PLL 。因此, ICU 定时器刻度的长度取决于模块 MCU 中的 时钟 设置。 ICU 驱动程序不会负责在其 Init 函数中设置配置全局 时钟 、全局 预分频 器和 PLL 的寄存器。这必须由 MCU 模块完成。 ICU 驱动程序仅配置本地( ICU 外设特定的)时钟、 预分频 器等。 OS (操作系统) ICU 驱动程序使用 中断 ,因此依赖于配置 中断 源的操作系统。它仅提供回调函数。 ICU 驱动程序不会在其 Init 函数中设置 中断 关联的寄存器。 中断 系统的整体分配和激活由操作系统完成。 模块 Port Port 驱动程序负责配置 ICU 用作输入的端口 引脚 。因此,在使用 ICU 功能之前必须初始化 Port 驱动程序。否则 ICU 功能将表现出未定义的行为。 模块 EcuM [ SWS _ Icu _00244] [ ] ICU 驱动程序将向 EcuM 报告唤醒中断。 需求可追溯性 功能规格 背景与理由 为了确保数据一致性,应提供可重入代码。 需求 [ SWS _ Icu _00050] [ ] 不同通道号的 ICU 模块功能应可重入,但以下情况除外: Icu _ Init () Icu _ De Init () Icu _Set Mode () Icu _Get Version Info () [ SWS _ Icu _00149] [ ] 如果在运行时在 不 同的任务或 ISR 中使用了对同一 ICU... Read more »
EB - MCAL - PWM 九月 11, 2024 EB - MCAL PWM PWM (脉冲宽度调制)模块的配置。 General 此选项卡为 PWM (脉冲宽度调制)模块的 通用 配置 。 Config Variant: VariantPreCompile:仅 预编译 时配置参数。只有一组参数。 VariantPostBuild:混合 预编译 和 构建后 配置参数。只有一组参数。 General - PwmConfigurationOfOptApiServices PwmConfigurationOfOptApiServices 容器用于存储所有可选 API 的配置。 PwmDeInitApi: 从代码中添加/删除服务 Pwm_DeInit ()。 PwmGetOutputState: 从代码中添加/删除服务 Pwm_GetOutputState ()。 PwmSetDutyCycle: 从代码中添加/删除服务 Pwm_SetDutyCycle ()。 PwmSetOutputToIdle: 从代码中添加/删除服务 Pwm_SetOutputToIdle ()。 PwmSetPeriodAndDuty: 从代码中添加/删除服务 Pwm_SetPeriodAndDuty ()。 PwmVersionInfoApi: 勾选以指示支持 Pwm_GetVersionInfo 。 PwmGetChannelStateApi: 勾选以指示支持 Pwm_GetChannelState 。 PwmEnableTriggerOut: 从代码中添加/删除服务: Pwm_EnableTriggerOut () Pwm_EnableTriggerOut () General - PwmGeneral PwmGeneral 容器用于存储 PWM 的通用配置。 Pwm Multi-Core Enable: 切换启用/禁用 多核 功能。 启用该功能时,需要在 PwmChannelEcucPartitionRef 容器中配置至少一个 ECUC 分区,并且 PwmChannel 容器中的每个 PWM 通道也需要配置至少 一 个 ECUC 分区。 PwmDev... Read more »
评论
发表评论