自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(130)
  • 收藏
  • 关注

原创 API Specification:API 规范

本文档定义了AUTOSAR OS对外提供的标准化API接口规范,包含常量、宏、数据类型和核心函数等。重点内容包括:多核环境专属常量(DONOTCARE、TotalNumberOfCores)和错误码;内存访问权限判断宏;应用管理、任务/ISR内存检查等核心函数;调度表控制与计数器操作;多核专属函数(StartCore、ShutdownAllCores)和自旋锁操作;以及外设访问与中断控制函数。该规范为上层软件提供统一的调用接口,确保不同模块与OS交互时语法、功能和参数约束的一致性。

2025-11-20 13:15:00 1473

原创 ARTI Hook Macros:ARTI 钩子宏-AUTOSAR CP OS

ARTI 钩子宏是操作系统预置的标准化追踪接口,采用低侵入性设计,在关键代码路径嵌入预留宏。这些宏遵循统一模板(ARTI_TRACE(_contextName,_className,...)),包含上下文、类名、实例等固定参数,可展开为工具专用函数。宏分为核心类(如AR_CP_OS_TASK任务追踪)和增强类(AR_CP_OSARTI_TASK),覆盖应用生命周期、任务状态变迁等关键场景。当追踪未启用时宏展开为空,确保零性能损耗。该机制使工具能捕获OS运行时事件(如任务激活、中断触发)而无需修改内核代码..

2025-11-20 08:45:00 539

原创 ARTI Debug Information:ARTI 调试信息-AUTOSAR_CP_OS

ARTI是AUTOSAR定义的标准化运行时调试接口,通过生成统一的模块描述文件,解决传统调试中工具兼容性差和数据解析复杂的问题。该标准要求OS创建包含静态对象属性、动态数据访问公式和状态映射关系的描述文件(SWS_Os_00858),并兼容所有ORTI容器(SWS_Os_00829)。ARTI采用公式化方式访问运行时数据(如任务状态=控制块地址+偏移量),将数值映射为可读文本,支持9类核心调试对象(任务、核心、中断等)。这种规范化的调试接口显著提升了工具适配效率,使调试工具只需解析标准化文件即可获取

2025-11-19 13:15:00 1509

原创 Error Classification:错误分类-AUTOSAR_CP_OS

AUTOSAR OS采用独特的错误处理机制,不直接向Det/Dem报告错误,而是通过ErrorHook通知用户。该机制避免了OS核心组件与外部模块的循环依赖问题。OS错误码包括OSEK标准错误和14种新增错误类型,覆盖内存保护、多核调度、自旋锁等AUTOSAR扩展功能场景。新增错误码由各OS供应商自行定义数值,但遵循统一的类型定义。错误处理流程与BSW模块不同,用户需在ErrorHook中自行实现错误上报逻辑。这种设计既确保了OS的独立性,又提供了完整的错误分类体系,支持复杂安全关键系统的错误管理需求。

2025-11-19 09:00:00 1445

原创 Interrupt Source API:中断源 API-AUTOSAR_CP_OS

Interrupt Source API 是 AUTOSAR OS 为解决中断控制矛盾而设计的专用接口。它允许 BSW 模块/CDD 通过标准 API(Disable/EnableInterruptSource、ClearPendingInterrupt)安全管控 Category 2 ISR,同时保持 OS 对中断控制器的独占管理。API 支持两种场景:短期屏蔽(保留挂起请求)和长期忽略(清除挂起标志),并通过强制错误处理(E_OS_ID/E_OS_CALLEVEL+ErrorHook)、禁止嵌套

2025-11-18 13:15:00 562

原创 Hardware Peripheral Access:硬件外设访问-AUTOSAR_CP_OS

AUTOSAR OS通过特权代理API机制解决非可信应用访问外设寄存器的安全矛盾。核心提供Read/Write/ModifyPeripheralX三类API,运行时需满足地址范围合法、外设区域有效、调用者授权三个条件(SWS_Os_00806)。错误时返回状态码并触发ErrorHook(SWS_Os_00807),成功返回E_OK。关键要求包括:ECU阶段精确配置外设地址范围,实施最小权限原则,Modify操作保证原子性。该方案既避免非特权访问引发的内存违规,又确保外设操作的安全可控性。(149字)

2025-11-18 09:00:00 1480

原创 Hook Functions:(钩子函数)-AUTOSAR_CP_OS

AUTOSAR OS中的钩子函数采用"系统级+应用级"双层设计,实现灵活的系统控制和故障隔离。系统级钩子作用于整个ECU,拥有特权权限,负责全局处理;应用级钩子仅作用于特定OS应用,使用对应权限。两类钩子遵循严格的调用顺序:启动时系统级优先,关机时应用级优先,错误处理时系统级优先。钩子函数在OS上下文中执行,不可阻塞,且通过标准错误宏获取上下文信息。这种设计既保留了OSEK兼容性,又满足了AUTOSAR多核/多应用场景的需求,实现全局控制与局部隔离的平衡。

2025-11-17 13:15:00 1911

原创 System Scalability:系统可扩展性-AUTOSAR_CP_OS

AUTOSAR OS的系统可扩展性采用模块化分级设计,包含4个等级:SC1(基础功能)、SC2(实时增强)、SC3(安全基础)和SC4(全功能安全)。低等级适配简单ECU,仅需核心功能;高等级需硬件支持(如MPU、定时器),增强实时性和安全性。设计遵循轻量化、安全增强和向下兼容原则,各等级功能可扩展但不可裁剪,确保接口兼容性。SC3/4强制使用扩展状态,支持详细错误处理。该方案实现从车身控制到自动驾驶的全场景覆盖,平衡性能与安全需求。

2025-11-17 08:15:00 884

原创 IOC(Inter-OS-Application Communicator,跨 OS 应用通信器)-AUTOSAR_CP_OS

IOC(Inter-OS-Application Communicator)是AUTOSAR OS的核心组件,负责跨OS应用/跨核心的安全高效通信。它作为OS原生组件,封装了硬件差异,保障数据原子性和顺序性,填补了AUTOSAR通信体系中跨OS应用的空白。IOC支持非排队(Last-is-Best)和排队(FIFO)两种语义,并可选通知机制。其接口特点是生成特定而非通用API,为每个通信操作生成唯一接口函数。IOC提供多种生成模式(Default/OS/IOC模式)以适应不同集群需求,但所有实例必须基于同一

2025-11-16 11:45:00 1862

原创 AUTOSAR_CP_OS-Operating System for Multi-Core:多核操作系统

本文介绍了AUTOSAR多核操作系统的设计与实现要点。该系统在单核AUTOSAR OS基础上扩展,核心特性包括:共享配置但独立运行各核心实例、静态绑定任务到特定核心、独立调度机制。关键新增功能包含跨核互斥的自旋锁、跨核通信的IOC机制,以及主从式启动同步。系统设计遵循ID跨核唯一、静态绑定、无动态核心激活等约束条件,通过OS应用实现任务核心绑定。多核启动采用主从模式,需完成两个关键同步点;关闭支持同步和独立两种方式。该架构通过共享代码和本地化部署平衡性能与内存占用,为汽车电子的多核处理器提供标准化支持。

2025-11-16 10:30:00 948

原创 AUTOSAR_CP_OS-Protection Error Handling:保护错误处理

AUTOSAR OS的Protection Error Handling是保护机制的核心环节,负责在检测到内存访问违规、时序故障或非法服务调用等错误时,通过用户配置的ProtectionHook执行预设处理逻辑(如终止任务、重启应用或关闭系统)。与监控机制不同,保护错误处理具有极低延迟,仅针对OS管理的对象生效。ProtectionHook运行在内核上下文,需确保安全可靠。根据错误类型和严重程度,可返回五种处理选项,其中PRO_IGNORE仅适用于任务提前激活场景,其他错误若忽略将强制关闭系统。此外

2025-11-15 18:00:00 809

原创 AUTOSAR_CP_OS-Protection Facilities:保护机制

AUTOSAR OS保护机制提供内存、时序和服务三重防护。内存保护基于硬件MPU,隔离代码段、数据段和栈段,防止非可信应用越权访问;时序保护监控任务/ISR的执行时间、到达间隔和资源锁定时长,避免系统过载;服务保护通过参数校验和上下文检查,限制非法OS调用。三类保护均通过ProtectionHook处理违规,确保系统安全性和完整性。可信应用可放宽权限,但需谨慎配置。

2025-11-15 10:00:00 1148

原创 AUTOSAR_CP_OS-OS-Application:OS 应用

AUTOSAR OS应用(OS-Application)是封装功能相关操作系统对象的逻辑单元,用于实现多源软件组件的故障隔离与权限管控。OS应用分为可信(Trusted)和非可信(Non-Trusted)两类,具有不同的权限范围和保护机制。OS应用包含任务、ISR、Alarm等对象,其访问规则和状态(可访问、重启中、已终止)由操作系统严格管理。关键接口包括状态查询(GetApplicationState)、对象归属检查(CheckObjectOwnership)、应用终止(TerminateAppli

2025-11-14 13:00:00 1451

原创 AUTOSAR_CP_OS-Stack Monitoring Facilities:栈监控功能

AUTOSAR OS的栈监控功能用于检测任务和2类ISR的栈溢出风险,在上下文切换时通过比较栈指针与边界值来判断栈使用量是否超出配置阈值。该功能在无MPU的低端处理器上尤为重要,但其存在检测延迟、定位困难等局限。当检测到栈故障时,若有ProtectionHook则调用该钩子函数处理,否则直接调用ShutdownOS关闭系统。栈监控是AUTOSAR的强制功能,但具体实现精度由厂商决定。1类ISR不受此机制监控,栈下溢检测需依赖其他机制。

2025-11-14 08:00:00 1217

原创 AUTOSAR_CP_OS-ScheduleTable Synchronization:调度表同步

本文介绍了AUTOSAR OS中调度表同步的两种机制。隐式同步通过硬件计数器直接实现调度表与外部时基对齐,要求调度表周期等于计数器模值且仅支持绝对启动。显式同步通过软件调整实现同步,支持同步启动和异步启动两种方式,需使用SyncScheduleTable服务进行偏差计算和到期点调整,并包含等待同步的状态转换。两种同步方式分别适用于不同场景,隐式同步更简单但限制较多,显式同步更灵活但需要额外处理同步信号和偏差调整。

2025-11-13 13:15:00 834

原创 AUTOSAR_CP_OS-ScheduleTables:调度表

调度表(ScheduleTable)是AUTOSAR OS中封装静态到期点的时序控制单元,用于简化多任务时序控制。其核心设计解决了传统多Alarm同步难题,通过统一封装一组按偏移量排序的到期点(含任务激活/事件置位操作),由单一计数器驱动实现批量时序控制。调度表需满足以下结构要求:至少一个到期点、每个到期点至少一个操作、偏移量唯一、延迟和初始偏移量符合计数器范围。处理规则包括按偏移量递增触发、支持多表并发、单一计数器驱动、节拍同步等。提供单次/重复执行模式,以及启动、停止、切换和状态查询等控制接口。系

2025-11-13 08:00:00 916

原创 AUTOSAR_CP_OS-软件自由运行定时器(SWFRT)

软件自由运行定时器(SWFRT)是AUTOSAR OS中管理非GPT驱动定时器的模块,通过软件方式扩展硬件定时器能力,满足汽车ECU时序控制需求。SWFRT负责OS直接使用定时器的全生命周期管理,包括初始化配置(时钟源、频率等),并支持时序测量功能,提供GetCounterValue和GetElapsedValue等API计算时间差。为确保准确性,SWFRT需调整硬件定时器值,保证计数连续性(0至模值循环)。该方案有效解决了硬件定时器资源不足问题,实现了定时器复用和精确时序测量。

2025-11-12 13:15:00 611

原创 AUTOSAR_CP_OS-AUTOSAR核心操作系统

AUTOSAR Core OS是经典平台的核心操作系统模块,基于OSEK/VDX标准设计,专为高实时性汽车ECU优化。它在保持OSEK兼容性的同时进行了功能改进:限制低效特性(如Alarm Callback)、完善未定义行为、新增中断控制等4项扩展功能,并禁用冗余模块(OSEK COM)。Core OS通过"兼容+限制+扩展"策略,既确保数百万OSEK应用的平滑迁移,又满足AUTOSAR复杂场景需求,成为汽车嵌入式系统的重要技术基础。其设计平衡了实时性、兼容性与功能扩展性。

2025-11-12 08:00:00 904

原创 CAN-FIFO 确认处理(FIFO Acknowledge Handling)

本文解析M_CAN控制器中FIFO确认处理机制,该机制仅适用于Rx FIFO 0/1和Tx Event FIFO。通过写入确认索引寄存器(AckIdx)触发读指针(Get Index)和填充量(Fill Level)同步更新,实现主机对已读数据的显式确认。支持单元素顺序确认与多元素批量确认,提升效率。风险提示:乱序读取后写确认索引会导致数据丢失,必须严格按读指针顺序操作。应用层需确保AckIdx合法性,避免指针异常。该机制精准控制FIFO状态,平衡灵活性与可靠性。

2025-10-03 13:45:00 716

原创 CAN-发送处理(Tx Handling)

M_CAN的Tx Handling模块负责协调消息存储与CAN总线传输,支持传统CAN和CAN FD两种模式。其核心机制包括: Tx扫描机制:通过优先级管理确保高优先级消息优先传输,但需注意扫描时间可能导致的优先级反转问题; 传输暂停功能:通过设置2个位时间的等待间隔,缓解高优先级消息的连续传输导致的低优先级消息延迟; 专用发送缓冲区:为关键消息提供直接控制通道。系统支持最多32个发送缓冲区,可灵活配置为专用缓冲区、FIFO或队列模式,并通过寄存器控制实现不同的传输模式组合。

2025-10-03 08:45:00 1266

原创 CAN-接收处理(Rx Handling)

M_CAN接收处理机制摘要 本文基于Bosch手册详细解析了M_CAN的接收处理(Rx Handling)机制。Rx Handler作为接收链路核心控制器,主要包含四大功能模块:验收滤波、Rx FIFOs、专用接收缓冲区和调试消息支持。其中验收滤波通过硬件滤波器筛选有用帧,支持范围/特定ID/位掩码三种滤波模式,并可按优先级顺序匹配。滤波后的数据将被路由至Rx FIFO或专用缓冲区,通过索引管理确保有序存取。系统还提供全局滤波配置寄存器和匹配后动作控制,支持存储转发、中断触发等多种处理方式...

2025-10-02 14:30:00 2005

原创 CAN-超时计数器(Timeout Counter)

M_CAN 超时计数器是控制器区域网络中的关键硬件监测机制,主要用于实时监测 Rx FIFO 0/1 和 Tx Event FIFO 的数据处理状态。该16位递减计数器通过TOCC寄存器配置,支持连续模式和FIFO控制模式,在数据长时间未处理时触发中断(IR.TOO)。其工作受CAN位时间影响,在CAN FD速率切换时会产生计数偏差,需通过TSCC.TCP预分频器统一时间单位。该机制有效减少了软件轮询开销,保障了FIFO数据处理的实时性。

2025-10-02 09:45:00 648

原创 CAN-时间戳生成(Timestamp Generation)

本文介绍了CAN总线时间戳的两种生成机制。内部时间戳基于16位环绕计数器,通过预分频器控制计数频率,在SOF时刻捕获时间戳并存储于收发缓存区。外部时间戳则通过TSU单元实现,支持32位精度,在EOF时刻捕获时间戳,需配置Sync消息过滤规则。两种方式分别适用于相对时间记录和精确总线延迟分析,为CAN系统提供灵活的时间同步解决方案。

2025-10-01 14:00:00 1036

原创 CAN-工作模式(Operating Modes)

M_CAN工作模式概述 本文基于Bosch手册详细介绍了M_CAN控制器的多种工作模式。核心内容包括: 软件初始化:触发条件包括软件主动、硬件复位等,需设置CCCR.INIT和CCCR.CCE位来配置寄存器,建议初始化消息RAM以避免错误中断。 正常工作模式:支持消息收发,通过验收滤波后将消息存入接收缓冲区/FIFO,发送则通过专用缓冲区/FIFO/队列完成,但不支持远程帧自动触发发送。 CAN FD模式:支持无速率切换和带速率切换两种帧格式,通过FDF、BRS位控制,DLC字段扩展支持更大数据量...

2025-10-01 10:15:00 920

原创 C语言结构体与函数指针的进阶应用-嵌入式多客户端通信架构

C语言结构体与函数指针在嵌入式通信架构中的应用 本文介绍了一种基于C语言结构体和函数指针的嵌入式通信架构设计方法,用于解决多协议(Modbus/MQTT)和多数据格式(寄存器/JSON)的复杂通信需求。传统if-else方式存在高耦合、扩展性差等缺点,本文提出的解耦架构将协议处理与数据格式化分离,通过结构体嵌套、函数指针等技术实现模块化设计。关键实现包括:使用enum定义协议和格式标识;结构体封装通信数据包和设备数据;函数指针实现处理函数注册和回调;结构体嵌套构建注册中心。

2025-07-26 08:00:00 766

原创 修改 Git 提交父节点指南:树哈希提取、提交重建与 Gerrit 常见问题解决

Git提交父节点修改指南 本指南详细介绍如何修改Git提交的父节点,适用于需要调整提交历史并同步到Gerrit的场景。主要内容包括: 提取原提交的树哈希和包含Change-Id的提交信息 使用git commit-tree命令基于新父节点重建提交 常见问题解决方法: 命令参数错误的排查与修正 Gerrit要求的Change-Id格式问题处理 验证新提交的正确性并推送到Gerrit 特别强调树哈希有效性检查和Change-Id格式规范,确保修改后的提交能被Gerrit正确识别。文档提供了完整的操作流程和问题排

2025-07-26 01:15:00 537

原创 Keil MDK‑5 中使用 GNU ARM GCC 的 -Wno-* 选项屏蔽编译警告

在项目编译过程中,我们常常会遇到许多警告提示;而在有些情况下,当我们已经了解这些警告的原因时,可以选择忽略它们,从而减少干扰,集中精力修复其他更重要的问题。

2025-04-20 10:30:00 526

原创 Git 使用指南:从设置用户信息到项目提交的全流程教程

设置 Git 用户信息:全局设置:使用 git config --global 命令设置用户名和电子邮件,适用于所有 Git 仓库。当前仓库设置:仅为当前项目设置用户名和电子邮件。验证设置:通过 git config --global --list 命令验证全局配置。获取项目到本地:建立分支:在项目主页点击 fork 以创建自己的分支。下载项目:使用 git clone 命令下载自己分支的代码到本地,并用 dir 命令查看下载的目录和文件。本地修改:克隆后可以在本地对项目进行修改。...

2025-03-23 09:15:00 2067

原创 美信Maxim Integrated-MAX96752通信及寄存器配置

OpenLDI (oLDI) 是一种高带宽数字视频接口,使用低压差分信号传输(LVDS)以在不进行数字-模拟转换或复杂解码协议的情况下传输数字视频。GMSL2 oLDI 解串器将单链路或双链路 GMSL2 输入转换为单个或双个 oLDI 视频输出,具有灵活的输出选项。oLDI 输出配置:•单端口(4 或 8 条通道)或双端口(2x4 条通道)• 1x4、2x4 或 1x8 oLDI 输出通道配置 每个端口支持高达 150MHz 的像素时钟频率(双端口模式下为 300MHz)。

2024-12-16 10:08:51 4182

原创 瑞萨程序烧录-仿真器和串口方式-RL78为例

一、使用E2仿真器1.开关拨到3,选择烧录对象为RL782.RL78时E2内部电路3.连接示意图二、使用串口烧录1.主要管脚示意2.调试功能列表3.连接方式示意4.通信模式及具体电路要求串口调试硬件连接参考下图,USB转串口的RxD –> TOOL0TxD(MCU),TxD ->TOOL0RxD,DTR(或者RTS) -> RESET#,TxD ->(2kΩ)-> TOOL0,VDD,GND。另外,DTR接1kΩ上拉到VDD。5。

2024-12-16 09:33:17 2995 2

原创 Buildroot构建Qt根文件系统-思维导图-学习笔记-基于正点原子阿尔法开发板

介绍了如何使用Buildroot构建支持Qt的根文件系统。首先,下载并解压Buildroot源码,接着安装必要的库以支持图形配置菜单。通过"make menuconfig"命令打开配置菜单,或者编辑IMX6ULL Qt配置文件,设置ARM架构、工具链、Qt5模块、系统属性、文件系统和网络配置。使用更新后的镜像源提高下载速度,之后运行"make -j 16"命令构建根文件系统。完成后,将生成的rootfs.tar文件烧写到TF卡的rootfs分区,并在开发板上测试启动。启动成功后,登录系统并验证触摸功能...

2024-08-26 20:05:14 2328 6

原创 嵌入式Qt移植之编译Qt项目-思维导图-学习笔记-基于正点原子阿尔法开发板

介绍了嵌入式Qt移植中编译Qt项目的过程。首先,需要安装交叉编译器,可以参考给出的链接。接着,使用交叉编译好的qmake编译Qt项目,需要将交叉编译工具链的路径添加到环境变量PATH中。然后,通过查找qmake位置,进入Qt项目,使用qmake生成Makefile,再通过make命令编译生成可执行文件。最后,将生成的可执行文件拷贝到开发板文件系统下即可使用。如果使用Busybox根文件系统,需要手动打开网络,包括启动网络服务、获取IP、设置用户密码等步骤。

2024-08-26 14:16:05 540

原创 嵌入式Qt移植之Qt部署到Busybox根文件系统-思维导图-学习笔记-基于正点原子阿尔法开发板

将编译好的Qt部署到Busybox根文件系统中的具体步骤。首先,将配置好的TF卡插入Ubuntu系统,并将qt-everywhere-src-5.12.9目录下的arm-qt-imx6ull拷贝至/usr/lib目录。然后,将TF卡插入开发板启动,编辑/etc/profile文件以配置Qt的环境变量,确保更改生效。为了支持Qt程序显示中文,需将Windows系统下的中文字库复制到Linux系统中的/usr/share/fonts目录,注意仅限于个人学习用途。最后,通过重启设备并运行编译好的Qt示例程序...

2024-08-25 19:11:47 952

原创 嵌入式Qt移植之tslib部署到Busybox根文件-思维导图-学习笔记-基于正点原子阿尔法开发板

介绍了如何在嵌入式Qt移植过程中,将tslib部署到Busybox根文件系统。首先,通过Ubuntu虚拟机将TF卡挂载,删除出厂文件系统,并将Busybox根文件系统解压到TF卡的rootfs分区,确保开发板能从SD卡启动。接着,将编译好的tslib拷贝到Busybox根文件系统的/usr/lib目录。为了避免与已存在的tslib冲突,需要重新配置tslib的环境变量。配置过程中,需要注意电阻屏和电容屏的不同需求,尤其是对于电容屏的校准文件要慎重处理。最后,通过重启开发板并运行ts_test,确......

2024-08-25 15:56:13 747

原创 编译 ARM 平台 Qt5.12.9 源码-思维导图-学习笔记-基于正点原子阿尔法开发板

编译ARM平台的Qt5.12.9源码分为几个主要步骤。首先,下载合适的平台源码,其中Windows平台生成.dll库文件,Linux平台生成.so库文件,这些动态库在运行时被加载到应用程序中。下载源码可通过Qt官方网站或使用wget指令完成。在下载和解压过程中,用户需要特别注意路径和文件名的准确性。接下来,编辑qmake.conf文件以配置相关编译器及路径。为避免手动输入错误,正确配置文件已上传至gitee,用户可直接下载并编辑,确保配置路径准确。配置编译选项时,使用./configure -help...

2024-08-24 13:45:00 1282

原创 嵌入式Qt移植之tslib编译-思维导图-学习笔记-基于正点原子阿尔法开发板

Tslib是一个用于处理触摸屏事件的开源库,作为驱动层与应用层之间的适配层,能够将触摸屏的坐标信息传递给Qt进行处理。下载Tslib源码可以通过git地址(https://github.com/kergoth/tslib)或者从开发板光盘路径中获取。在Ubuntu中,将下载的压缩包解压并进入相应目录。编译Tslib源码需要先安装autoconf、automake、libtool和pkg-config等软件,然后执行autogen.sh生成Makefile。接下来,使用特定的配置命令`./configure

2024-08-24 09:00:00 673

原创 嵌入式Qt移植前期准备-思维导图-学习笔记-基于正点原子阿尔法开发板

Qt移植是为了在自制系统或资源受限的嵌入式系统上运行Qt应用,或者使用特定Qt版本。可以通过编译Qt源码或使用开源构建框架如Buildroot和Yocto来移植。编译Qt源码需要从官网获取源码并编译,生成.so库文件;Buildroot方便构建,Yocto则相对复杂且庞大。准备嵌入式Qt移植需要安装通用型交叉编译器,特别是针对ARM架构的交叉编译器,如Linaro GCC编译工具链。下载并解压Linaro GCC编译器到Ubuntu系统的指定目录,修改环境变量并重启系统即可完成交叉编译器的安装和验证..

2024-08-23 17:10:30 801

原创 Qt串口编程Serial Port-思维导图-学习笔记-基于正点原子阿尔法开发板

正点原子的 I.MX6U 开发板出厂系统已预配置两路串口,其中UART1用于调试,UART3可编程。在Qt串口编程中,需在项目文件中添加串口模块支持,并在mainwindow.h中声明相关变量和方法。mainwindow.cpp中实现了界面布局初始化、串口扫描、波特率和数据位等参数的初始化,以及串口打开、关闭和数据发送接收的功能。通过垂直和网格布局,用户界面支持全屏显示,并可根据系统可用串口动态更新选项。编程时,由于UART1已被占用,开发者需使用UART3进行串口通信。

2024-08-22 09:45:00 1276

原创 Qt使用开发板上的按键-思维导图-学习笔记-基于正点原子阿尔法开发板

如何使用 Qt 在 I.MX6U 开发板上监测按键并显示按键状态。首先,出厂内核设备树在路径 arch/arm/boot/dts/imx6ull-14x14-evk.dts 中已将 KEY0 按键注册为 gpio-keys 类型设备,键值为 114,对应 Qt 的 Key_VolumeDown 键值。该按键在普通键盘上找不到,但某些笔记本电脑可以通过 FN + F6 等组合键模拟。在 Windows/Ubuntu 上使用 Key_Down 进行测试,而在开发板上则使用 KEY0 按键。为了监测 KEY0..

2024-08-21 14:45:00 968

原创 Qt点亮开发板的一个LED-思维导图-学习笔记-基于正点原子阿尔法开发板

使用 Qt 在开发板上控制一个 LED。首先,界面初始化设置在嵌入式系统中根据屏幕大小进行全屏显示,按钮居中显示。由于出厂系统中 LED 的触发方式为心跳方式,为方便控制,需要通过 system() 函数将其触发方式改为 none。接着,描述了设置 LED 的方法,包括写入“0”或“1”来分别关闭和开启 LED,在写入之前先读取其当前状态以防止其他设置冲突。获取 LED 状态的代码负责读取 LED 的当前状态,并显示在按钮上。最后,设置 LED 状态的方法是一个槽函数,由按钮点击触发,负责切换 LED 状态

2024-08-21 09:15:00 829

M-CAN-超时计数器(Timeout Counter)

超时计数器是 M_CAN(控制器区域网络)中一项关键的硬件监测机制,专门用于实时监测 Rx FIFO 0、Rx FIFO 1 和 Tx Event FIFO 这三类存储结构的数据流处理状态。其核心功能是在 FIFO 中的数据长时间未被主机读取(Rx FIFO)或事件未被响应(Tx Event FIFO)时,通过硬件级触发提醒,确保数据处理的实时性,同时减少软件轮询带来的系统开销。

2025-09-29

M-CAN-时间戳生成(Timestamp Generation)

阐述了 CAN 帧时间戳的两种生成机制,解决 CAN 总线多帧收发时序对齐、帧延迟分析等需求。时间戳作为 CAN 帧的 “时间标记”,能够精准记录帧的发送或接收时刻。首先介绍了 M_CAN 内部时间戳生成方式,包括 16 位环绕计数器的工作原理、计数频率控制、时间戳的捕获与存储,以及如何通过中断处理计数器环绕带来的歧义问题;随后讲解了基于外部 TSU(Time Stamping Unit)的时间戳生成机制,涵盖外部 TSU 的启用条件、Sync 消息过滤配置、时间戳捕获时机与控制信号,以及时间戳存储位置的反馈机制。

2025-09-29

工作模式(Operating Modes)

涵盖了从软件初始化到各类功能模式(如正常工作、CAN FD、发送器延迟补偿等)、受限及特殊模式(如总线监听、禁止自动重发、掉电、测试模式)的核心特性、配置规则、操作流程及应用场景。这些模式针对不同的通信需求、硬件环境和功能目标设计,明确了各模式下的寄存器操作、信号处理、错误管理等关键细节。

2025-09-29

UART-思维导图-MX6U嵌入式linux裸机开发学习笔记基于正点原子阿尔法开发板

UART-思维导图-MX6U嵌入式linux裸机开发学习笔记基于正点原子阿尔法开发板

2025-01-27

字符设备驱动模版-中断

字符设备驱动模版-中断

2025-01-27

美信Maxim Integrated-MAX96752通信及寄存器配置

max96752数据表

2024-12-16

瑞萨程序烧录-仿真器和串口方式-RL78为例

瑞萨程序烧录-仿真器和串口方式-RL78为例

2024-12-16

Buildroot构建Qt根文件系统-思维导图-学习笔记-基于正点原子阿尔法开发板

介绍了如何使用Buildroot构建支持Qt的根文件系统。首先,下载并解压Buildroot源码,接着安装必要的库以支持图形配置菜单。通过"make menuconfig"命令打开配置菜单,或者编辑IMX6ULL Qt配置文件,设置ARM架构、工具链、Qt5模块、系统属性、文件系统和网络配置。使用更新后的镜像源提高下载速度,之后运行"make -j 16"命令构建根文件系统。完成后,将生成的rootfs.tar文件烧写到TF卡的rootfs分区,并在开发板上测试启动。启动成功后,登录系统并验证触摸功能,通过测试tslib和配置Qt的环境变量确保触摸和显示功能正常。最后,通过运行Qt示例和交叉编译Qt项目验证Qt环境配置的有效性。

2024-08-26

嵌入式Qt移植之编译Qt项目-思维导图-学习笔记-基于正点原子阿尔法开发板

介绍了嵌入式Qt移植中编译Qt项目的过程。首先,需要安装交叉编译器,可以参考给出的链接。接着,使用交叉编译好的qmake编译Qt项目,需要将交叉编译工具链的路径添加到环境变量PATH中。然后,通过查找qmake位置,进入Qt项目,使用qmake生成Makefile,再通过make命令编译生成可执行文件。最后,将生成的可执行文件拷贝到开发板文件系统下即可使用。如果使用Busybox根文件系统,需要手动打开网络,包括启动网络服务、获取IP、设置用户密码等步骤。

2024-08-26

嵌入式Qt移植之Qt部署到Busybox根文件系统-思维导图-学习笔记-基于正点原子阿尔法开发板

将编译好的Qt部署到Busybox根文件系统中的具体步骤。首先,将配置好的TF卡插入Ubuntu系统,并将qt-everywhere-src-5.12.9目录下的arm-qt-imx6ull拷贝至/usr/lib目录。然后,将TF卡插入开发板启动,编辑/etc/profile文件以配置Qt的环境变量,确保更改生效。为了支持Qt程序显示中文,需将Windows系统下的中文字库复制到Linux系统中的/usr/share/fonts目录,注意仅限于个人学习用途。最后,通过重启设备并运行编译好的Qt示例程序,测试其运行情况和触摸功能。

2024-08-25

嵌入式Qt移植之tslib部署到Busybox根文件-思维导图-学习笔记-基于正点原子阿尔法开发板

介绍了如何在嵌入式Qt移植过程中,将tslib部署到Busybox根文件系统。首先,通过Ubuntu虚拟机将TF卡挂载,删除出厂文件系统,并将Busybox根文件系统解压到TF卡的rootfs分区,确保开发板能从SD卡启动。接着,将编译好的tslib拷贝到Busybox根文件系统的/usr/lib目录。为了避免与已存在的tslib冲突,需要重新配置tslib的环境变量。配置过程中,需要注意电阻屏和电容屏的不同需求,尤其是对于电容屏的校准文件要慎重处理。最后,通过重启开发板并运行ts_test,确认tslib配置是否正常,确保触摸屏能够准确响应。

2024-08-25

编译 ARM 平台 Qt5.12.9 源码-思维导图-学习笔记-基于正点原子阿尔法开发板

编译ARM平台的Qt5.12.9源码分为几个主要步骤。首先,下载合适的平台源码,其中Windows平台生成.dll库文件,Linux平台生成.so库文件,这些动态库在运行时被加载到应用程序中。下载源码可通过Qt官方网站或使用wget指令完成。在下载和解压过程中,用户需要特别注意路径和文件名的准确性。接下来,编辑qmake.conf文件以配置相关编译器及路径。为避免手动输入错误,正确配置文件已上传至gitee,用户可直接下载并编辑,确保配置路径准确。配置编译选项时,使用./configure -help查看可配置选项。正点原子提供了简化配置过程的脚本autoconfigure.sh,下载并修改路径后,赋予脚本执行权限并执行脚本进行配置。在此之前需确保已安装g++编译器。配置成功后,继续安装Python环境并执行make -j 16进行并行编译,最后通过make install完成安装并检查安装结果。

2024-08-23

嵌入式Qt移植之tslib编译-思维导图-学习笔记-基于正点原子阿尔法开发板

Tslib是一个用于处理触摸屏事件的开源库,作为驱动层与应用层之间的适配层,能够将触摸屏的坐标信息传递给Qt进行处理。下载Tslib源码可以通过git地址(https://github.com/kergoth/tslib)或者从开发板光盘路径中获取。在Ubuntu中,将下载的压缩包解压并进入相应目录。编译Tslib源码需要先安装autoconf、automake、libtool和pkg-config等软件,然后执行autogen.sh生成Makefile。接下来,使用特定的配置命令`./configure --host=arm-linux-gnueabihf等进行配置,并执行make和make install`完成编译和安装。编译完成后,生成的arm-tslib-imx6ull目录下应包含ARM格式的tslib文件,否则需要重新配置交叉编译器环境并重新编译。

2024-08-23

嵌入式Qt移植前期准备-思维导图-学习笔记-基于正点原子阿尔法开发板

Qt移植是为了在自制系统或资源受限的嵌入式系统上运行Qt应用,或者使用特定Qt版本。可以通过编译Qt源码或使用开源构建框架如Buildroot和Yocto来移植。编译Qt源码需要从官网获取源码并编译,生成.so库文件;Buildroot方便构建,Yocto则相对复杂且庞大。 准备嵌入式Qt移植需要安装通用型交叉编译器,特别是针对ARM架构的交叉编译器,如Linaro GCC编译工具链。下载并解压Linaro GCC编译器到Ubuntu系统的指定目录,修改环境变量并重启系统即可完成交叉编译器的安装和验证。根文件系统的准备对于驱动开发也同样重要。

2024-08-23

Qt串口编程Serial Port-思维导图-学习笔记-基于正点原子阿尔法开发板

正点原子的 I.MX6U 开发板出厂系统已预配置两路串口,其中UART1用于调试,UART3可编程。在Qt串口编程中,需在项目文件中添加串口模块支持,并在mainwindow.h中声明相关变量和方法。mainwindow.cpp中实现了界面布局初始化、串口扫描、波特率和数据位等参数的初始化,以及串口打开、关闭和数据发送接收的功能。通过垂直和网格布局,用户界面支持全屏显示,并可根据系统可用串口动态更新选项。编程时,由于UART1已被占用,开发者需使用UART3进行串口通信。

2024-08-21

Qt使用开发板上的按键-思维导图-学习笔记-基于正点原子阿尔法开发板

如何使用 Qt 在 I.MX6U 开发板上监测按键并显示按键状态。首先,出厂内核设备树在路径 arch/arm/boot/dts/imx6ull-14x14-evk.dts 中已将 KEY0 按键注册为 gpio-keys 类型设备,键值为 114,对应 Qt 的 Key_VolumeDown 键值。该按键在普通键盘上找不到,但某些笔记本电脑可以通过 FN + F6 等组合键模拟。在 Windows/Ubuntu 上使用 Key_Down 进行测试,而在开发板上则使用 KEY0 按键。为了监测 KEY0,开发者可以使用 C 语言创建线程,或重写键盘事件来检测按键的按下和松开。代码实现中,通过 QGuiApplication::screens() 获取屏幕分辨率,设置界面全屏显示,并居中显示按钮。重写 keyPressEvent 和 keyReleaseEvent 方法,通过判断 event->key() 来识别按键状态,并更改标签文本以反映按键的按下或松开状态。

2024-08-19

Qt点亮开发板的一个LED-思维导图-学习笔记-基于正点原子阿尔法开发板

使用 Qt 在开发板上控制一个 LED。首先,界面初始化设置在嵌入式系统中根据屏幕大小进行全屏显示,按钮居中显示。由于出厂系统中 LED 的触发方式为心跳方式,为方便控制,需要通过 system() 函数将其触发方式改为 none。接着,描述了设置 LED 的方法,包括写入“0”或“1”来分别关闭和开启 LED,在写入之前先读取其当前状态以防止其他设置冲突。获取 LED 状态的代码负责读取 LED 的当前状态,并显示在按钮上。最后,设置 LED 状态的方法是一个槽函数,由按钮点击触发,负责切换 LED 状态。本文强调 Qt 本身不直接控制硬件,而是通过驱动层提供的接口进行交互,应用开发人员需理解这些接口以有效控制硬件。驱动开发人员则需确保接口的稳定性和高效性,满足应用层需求。

2024-08-19

I.MX6U交叉编译Qt项目-思维导图-学习笔记-基于正点原子阿尔法开发板

在I.MX6U平台上交叉编译Qt项目需要几个步骤。首先,将交叉编译工具fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh拷贝至Ubuntu系统并修改其权限,然后运行脚本安装工具,默认目录为/opt/fsl-imx-x11/4.1.15-2.1.0。使用前需启用环境变量source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi。进入Qt项目目录,用qmake生成项目文件,随后用make命令编译生成可执行文件。将编译好的程序拷贝到开发板,禁用Qt桌面启动,方法包括使用killall /opt/QDesktop或修改/etc/rc.local文件。最后,直接执行拷贝的可执行文件,若需开机自启动,则编辑/etc/rc.local文件

2024-08-19

UDP 通信-Qt-思维导图-学习笔记

UDP(用户数据报协议)是一种轻量级、无连接且不可靠的协议,适用于需要快速响应的场景,如文字聊天和音视频通信。其优点是资源消耗小、处理速度快,但缺点是数据传输不可靠,可能会丢包。QUdpSocket类提供了通过UDP进行数据报发送和接收的功能,常用方法包括bind()、writeDatagram()和readDatagram()。UDP通信有三种模式:单播、广播和组播。单播是端对端通信,广播将消息发送到同一局域网内的所有主机,而组播则是将消息发送到特定的主机组。组播使用D类IP地址范围(224.0.0.0至239.255.255.255)。在实际应用中,绑定端口、加入组播组、发送和接收消息是基本操作。在同一台主机上运行多个实例时,不同实例不能绑定同一端口,但在局域网内的不同主机上可以绑定相同的端口。组播消息会被发送主机自己也接收,局域网内其他主机运行此程序并加入组播组后也能收发消息。

2024-08-18

TCP 通信-Qt-思维导图-学习笔记

TCP通信的基本概念和实现方法,包括服务端和客户端的操作步骤。TCP是一种面向连接、可靠且基于字节流的传输层通信协议。建立TCP连接需要服务端监听特定的端口并等待客户端连接,客户端通过指定的IP地址和端口号连接服务端,成功连接后即可进行数据的发送和接收。本文还详细讲述了在Qt框架中如何实现TCP通信,服务端通过QTcpServer监听连接请求,并通过QTcpSocket进行数据的读写;客户端使用QTcpSocket连接服务端并进行通信。实际应用中,需要选择正确的IP地址和未被占用的高端口号进行监听和连接。示例程序选择本地环回IP地址127.0.0.1进行测试,并提供了详细的代码说明和注释。通过本文,读者可以学习如何在Qt中实现TCP通信,并在不同的网络环境中进行测试和应用。

2024-08-18

API Specification:API 规范

本文档定义了AUTOSAR OS对外提供的标准化API接口规范,包含常量、宏、数据类型和核心函数等。重点内容包括:多核环境专属常量(DONOTCARE、TotalNumberOfCores)和错误码;内存访问权限判断宏;应用管理、任务/ISR内存检查等核心函数;调度表控制与计数器操作;多核专属函数(StartCore、ShutdownAllCores)和自旋锁操作;以及外设访问与中断控制函数。该规范为上层软件提供统一的调用接口,确保不同模块与OS交互时语法、功能和参数约束的一致性。

2025-11-18

ARTI Hook Macros:ARTI 钩子宏-AUTOSAR CP OS

ARTI 钩子宏是操作系统预置的标准化追踪接口,采用低侵入性设计,在关键代码路径嵌入预留宏。这些宏遵循统一模板(ARTI_TRACE(_contextName,_className,...)),包含上下文、类名、实例等固定参数,可展开为工具专用函数。宏分为核心类(如AR_CP_OS_TASK任务追踪)和增强类(AR_CP_OSARTI_TASK),覆盖应用生命周期、任务状态变迁等关键场景。当追踪未启用时宏展开为空,确保零性能损耗。该机制使工具能捕获OS运行时事件(如任务激活、中断触发)而无需修改内核代码...

2025-11-18

ARTI Debug Information:ARTI 调试信息-AUTOSAR-CP-OS

ARTI是AUTOSAR定义的标准化运行时调试接口,通过生成统一的模块描述文件,解决传统调试中工具兼容性差和数据解析复杂的问题。该标准要求OS创建包含静态对象属性、动态数据访问公式和状态映射关系的描述文件(SWS_Os_00858),并兼容所有ORTI容器(SWS_Os_00829)。ARTI采用公式化方式访问运行时数据(如任务状态=控制块地址+偏移量),将数值映射为可读文本,支持9类核心调试对象(任务、核心、中断等)。这种规范化的调试接口显著提升了工具适配效率,使调试工具只需解析标准化文件即可获取

2025-11-13

Error Classification:错误分类-AUTOSAR-CP-OS

AUTOSAR OS采用独特的错误处理机制,不直接向Det/Dem报告错误,而是通过ErrorHook通知用户。该机制避免了OS核心组件与外部模块的循环依赖问题。OS错误码包括OSEK标准错误和14种新增错误类型,覆盖内存保护、多核调度、自旋锁等AUTOSAR扩展功能场景。新增错误码由各OS供应商自行定义数值,但遵循统一的类型定义。错误处理流程与BSW模块不同,用户需在ErrorHook中自行实现错误上报逻辑。这种设计既确保了OS的独立性,又提供了完整的错误分类体系,支持复杂安全关键系统的错误管理需求。

2025-11-13

Hardware Peripheral Access:硬件外设访问-AUTOSAR-CP-OS

AUTOSAR OS通过特权代理API机制解决非可信应用访问外设寄存器的安全矛盾。核心提供Read/Write/ModifyPeripheralX三类API,运行时需满足地址范围合法、外设区域有效、调用者授权三个条件(SWS_Os_00806)。错误时返回状态码并触发ErrorHook(SWS_Os_00807),成功返回E_OK。关键要求包括:ECU阶段精确配置外设地址范围,实施最小权限原则,Modify操作保证原子性。该方案既避免非特权访问引发的内存违规,又确保外设操作的安全可控性。(149字)

2025-11-12

Interrupt Source API:中断源 API-AUTOSAR-CP-OS

Interrupt Source API 是 AUTOSAR OS 为解决中断控制矛盾而设计的专用接口。它允许 BSW 模块/CDD 通过标准 API(Disable/EnableInterruptSource、ClearPendingInterrupt)安全管控 Category 2 ISR,同时保持 OS 对中断控制器的独占管理。API 支持两种场景:短期屏蔽(保留挂起请求)和长期忽略(清除挂起标志),并通过强制错误处理(E_OS_ID/E_OS_CALLEVEL+ErrorHook)、禁止嵌套

2025-11-12

Hook Functions:(钩子函数)-AUTOSAR-CP-OS

AUTOSAR OS中的钩子函数采用"系统级+应用级"双层设计,实现灵活的系统控制和故障隔离。系统级钩子作用于整个ECU,拥有特权权限,负责全局处理;应用级钩子仅作用于特定OS应用,使用对应权限。两类钩子遵循严格的调用顺序:启动时系统级优先,关机时应用级优先,错误处理时系统级优先。钩子函数在OS上下文中执行,不可阻塞,且通过标准错误宏获取上下文信息。这种设计既保留了OSEK兼容性,又满足了AUTOSAR多核/多应用场景的需求,实现全局控制与局部隔离的平衡。

2025-11-12

System Scalability:系统可扩展性-AUTOSAR-CP-OS

AUTOSAR OS的系统可扩展性采用模块化分级设计,包含4个等级:SC1(基础功能)、SC2(实时增强)、SC3(安全基础)和SC4(全功能安全)。低等级适配简单ECU,仅需核心功能;高等级需硬件支持(如MPU、定时器),增强实时性和安全性。设计遵循轻量化、安全增强和向下兼容原则,各等级功能可扩展但不可裁剪,确保接口兼容性。SC3/4强制使用扩展状态,支持详细错误处理。该方案实现从车身控制到自动驾驶的全场景覆盖,平衡性能与安全需求。

2025-11-12

IOC(Inter-OS-Application Communicator,跨 OS 应用通信器)-AUTOSAR-CP-OS

IOC(Inter-OS-Application Communicator)是AUTOSAR OS的核心组件,负责跨OS应用/跨核心的安全高效通信。它作为OS原生组件,封装了硬件差异,保障数据原子性和顺序性,填补了AUTOSAR通信体系中跨OS应用的空白。IOC支持非排队(Last-is-Best)和排队(FIFO)两种语义,并可选通知机制。其接口特点是生成特定而非通用API,为每个通信操作生成唯一接口函数。IOC提供多种生成模式(Default/OS/IOC模式)以适应不同集群需求,但所有实例必须基于同一

2025-11-12

AUTOSAR-CP-OS-Operating System for Multi-Core:多核操作系统

本文介绍了AUTOSAR多核操作系统的设计与实现要点。该系统在单核AUTOSAR OS基础上扩展,核心特性包括:共享配置但独立运行各核心实例、静态绑定任务到特定核心、独立调度机制。关键新增功能包含跨核互斥的自旋锁、跨核通信的IOC机制,以及主从式启动同步。系统设计遵循ID跨核唯一、静态绑定、无动态核心激活等约束条件,通过OS应用实现任务核心绑定。多核启动采用主从模式,需完成两个关键同步点;关闭支持同步和独立两种方式。该架构通过共享代码和本地化部署平衡性能与内存占用,为汽车电子的多核处理器提供标准化支持。

2025-11-11

AUTOSAR-CP-OS-Protection Error Handling:保护错误处理

AUTOSAR OS的Protection Error Handling是保护机制的核心环节,负责在检测到内存访问违规、时序故障或非法服务调用等错误时,通过用户配置的ProtectionHook执行预设处理逻辑(如终止任务、重启应用或关闭系统)。与监控机制不同,保护错误处理具有极低延迟,仅针对OS管理的对象生效。ProtectionHook运行在内核上下文,需确保安全可靠。根据错误类型和严重程度,可返回五种处理选项,其中PRO_IGNORE仅适用于任务提前激活场景,其他错误若忽略将强制关闭系统。此外

2025-11-11

AUTOSAR-CP-OS-Protection Facilities:保护机制

AUTOSAR OS保护机制提供内存、时序和服务三重防护。内存保护基于硬件MPU,隔离代码段、数据段和栈段,防止非可信应用越权访问;时序保护监控任务/ISR的执行时间、到达间隔和资源锁定时长,避免系统过载;服务保护通过参数校验和上下文检查,限制非法OS调用。三类保护均通过ProtectionHook处理违规,确保系统安全性和完整性。可信应用可放宽权限,但需谨慎配置。

2025-11-11

AUTOSAR-CP-OS-OS-Application:OS 应用

AUTOSAR OS应用(OS-Application)是封装功能相关操作系统对象的逻辑单元,用于实现多源软件组件的故障隔离与权限管控。OS应用分为可信(Trusted)和非可信(Non-Trusted)两类,具有不同的权限范围和保护机制。OS应用包含任务、ISR、Alarm等对象,其访问规则和状态(可访问、重启中、已终止)由操作系统严格管理。关键接口包括状态查询(GetApplicationState)、对象归属检查(CheckObjectOwnership)、应用终止(TerminateAppli

2025-11-11

AUTOSAR-CP-OS-Stack Monitoring Facilities:栈监控功能

AUTOSAR OS的栈监控功能用于检测任务和2类ISR的栈溢出风险,在上下文切换时通过比较栈指针与边界值来判断栈使用量是否超出配置阈值。该功能在无MPU的低端处理器上尤为重要,但其存在检测延迟、定位困难等局限。当检测到栈故障时,若有ProtectionHook则调用该钩子函数处理,否则直接调用ShutdownOS关闭系统。栈监控是AUTOSAR的强制功能,但具体实现精度由厂商决定。1类ISR不受此机制监控,栈下溢检测需依赖其他机制。

2025-11-11

AUTOSAR-CP-OS-ScheduleTables:调度表

调度表(ScheduleTable)是AUTOSAR OS中封装静态到期点的时序控制单元,用于简化多任务时序控制。其核心设计解决了传统多Alarm同步难题,通过统一封装一组按偏移量排序的到期点(含任务激活/事件置位操作),由单一计数器驱动实现批量时序控制。调度表需满足以下结构要求:至少一个到期点、每个到期点至少一个操作、偏移量唯一、延迟和初始偏移量符合计数器范围。处理规则包括按偏移量递增触发、支持多表并发、单一计数器驱动、节拍同步等。提供单次/重复执行模式,以及启动、停止、切换和状态查询等控制接口...

2025-11-11

AUTOSAR-CP-OS-ScheduleTable Synchronization:调度表同步

本文介绍了AUTOSAR OS中调度表同步的两种机制。隐式同步通过硬件计数器直接实现调度表与外部时基对齐,要求调度表周期等于计数器模值且仅支持绝对启动。显式同步通过软件调整实现同步,支持同步启动和异步启动两种方式,需使用SyncScheduleTable服务进行偏差计算和到期点调整,并包含等待同步的状态转换。两种同步方式分别适用于不同场景,隐式同步更简单但限制较多,显式同步更灵活但需要额外处理同步信号和偏差调整。

2025-11-11

AUTOSAR-CP-OS-软件自由运行定时器(SWFRT)

软件自由运行定时器(SWFRT)是AUTOSAR OS中管理非GPT驱动定时器的模块,通过软件方式扩展硬件定时器能力,满足汽车ECU时序控制需求。SWFRT负责OS直接使用定时器的全生命周期管理,包括初始化配置(时钟源、频率等),并支持时序测量功能,提供GetCounterValue和GetElapsedValue等API计算时间差。为确保准确性,SWFRT需调整硬件定时器值,保证计数连续性(0至模值循环)。该方案有效解决了硬件定时器资源不足问题,实现了定时器复用和精确时序测量。

2025-11-10

CAN-FIFO 确认处理(FIFO Acknowledge Handling)

围绕 M_CAN 中 FIFO 确认处理机制展开,明确该机制仅适用于 Rx FIFO 0、Rx FIFO 1 和 Tx Event FIFO 这三类 FIFO,其核心是通过主机向确认索引寄存器写入值(AckIdx),触发读指针(Get Index)和填充量(Fill Level)的同步更新,以此实现主机对已读取元素的显式确认,避免因读指针自动更新导致的数据重复读取或丢失问题。

2025-09-29

CAN-发送处理(Tx Handling)

Tx Handling 是 M_CAN 发送链路中枢,协调专用 Tx Buffer、Tx FIFO、Tx Queue 与 CAN Core 的数据流,确保消息按优先级传输,平衡 CPU 配置与总线速率,支持 Classic CAN/CAN FD

2025-09-29

CAN-接收处理(Rx Handling)

详细阐述了 M_CAN(控制器局域网)接收处理(Rx Handling)的完整机制,Rx Handler 作为接收链路的 “总控制器”,负责协调从 CAN 总线接收数据到存储至 Message RAM 的全流程。

2025-09-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除