![](https://img-blog.csdnimg.cn/direct/9b1f2407cfa044de97b5d13b99480ba8.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
基于RH850系列芯片的AutoSAR OS讲解
文章平均质量分 94
为了帮助大家更好学习以及理解AutoSAR OS的内核以及工作原理,本专栏会从三个方向进行讲解,由浅及深的让大家更好的理解AutoSAR OS。本专栏于2024年初创建,会定期更新现计划章节以及后续计划的章节。
优惠券已抵扣
余额抵扣
还需支付
¥99.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
浩如烟海·灿若星辰
一名专注于分享嵌入式软件领域技术的程序猿。️
能力标签:"MCU"、"OS"、"AutoSAR"、"嵌入式软件开发"
展开
-
基于RH850系列芯片的AutoSAR OS讲解 - 专栏介绍
为了帮助大家更好学习以及理解AutoSAR OS的内核以及工作原理,本专栏会从三个方向进行讲解,由浅及深的让大家更好的理解AutoSAR OS。如专栏标题所示,博主主要是基于RH850系列的芯片上集成ETAS的AutoSAR OS来做讲解,如果是其他系列的芯片或者其他家的AutoSAR OS源码,RTA_OS的工作原理基本大同小异。本专栏于2024年初创建,会定期更新现计划章节以及后续计划的章节。原创 2024-03-03 10:23:40 · 497 阅读 · 1 评论 -
RH850系列芯片深度剖析 1.1-异常和中断
异常是一种特殊的事件,强制将操作从当前程序转移到另一个程序。位于给定异常的分支目的地的程序被称为“异常处理程序”。RESET异常被触发当输入一个复位信号;响应事件而从当前正在运行的程序分支到不同程序的行为称为异常。FE 级不可屏蔽中断 (FENMI):即使已生成另一个 FE 级中断 FEINT,FENMI 中断也会被确认。即使 CPU 系统寄存器 PSW.NP = 1,FENMI 中断也会被应答。无法从 FENMI 中断返回,并且在发生多个中断时禁用恢复。原创 2024-03-03 11:08:53 · 317 阅读 · 0 评论 -
RH850系列芯片深度剖析 1.2-电源架构以及工作模式
本节介绍RH850/U2A-EVA系列的电源和电源域。本节介绍了微控制器运行所需的外部电压连接和内部电压分配。电源电路具有POC(Power On Clear)电路,可安全启动。内部电路分为两个独立的电源域:常开区域(AWO)和隔离区域(ISO)。在所有操作模式和待机模式下,Always-On 区域的电源始终处于开启状态。根据待机模式的类型,可以关闭隔离区域的电源以降低整体功耗。系统逻辑和片上稳压器的电源电压 SYSVCC。电压调节器的输出电压提供给常开区域电源域中的数字电路;原创 2024-03-10 23:44:26 · 408 阅读 · 0 评论 -
RH850系列芯片深度剖析 1.3-时钟树解析
当主 OSC 稳定计数器达到预定义值时,主 OSC 被认为是稳定的,MOSC_CLKEN/MOSC_CLMAEN 信号从 0 切换到 1,以启用主 OSC 时钟 CLK_MOSC 和时钟监视器 CLMA0。系统时钟(CLK_SYS)通过 CKSC_CPUC 寄存器设置从 PLL 时钟(CLK_PLLO)和内部 OSC 时钟(CLK_IOSC)中选择,CPU 系统时钟(CLK_CPU、CLK_SBUS、CLK_HBUS、CLK_UHSB、CLK_HSB、CLK_LSB)从系统时钟(CLK_SYS)分频得来。原创 2024-03-14 00:23:36 · 127 阅读 · 0 评论 -
RH850系列芯片深度剖析 1.4-通用寄存器以及复位控制器解析
程序寄存器包括通用寄存器(r0 至 r31)和程序计数器(PC)。r0 始终保留 0。复位后通用寄存器 r1 至 r31 的值未定义。复位后PC的值就是RBASE寄存器的值。复位控制器控制影响设备复位行为的所有因素。根据重置的区域,设备有多种复位类别。每个复位类别均由一个或多个复位源触发。复位类别及其对应的复位源之间的关系如下表所示:复位类别与初始化区域的关系如下表所示:(√:复位(初始化),一:没有复位)原创 2024-03-16 17:58:14 · 219 阅读 · 0 评论 -
RH850系列芯片深度剖析 1.5-链接(ld)文件解析
基础编译过程分为四个阶段:预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)、链接(Linking)。执行这四个阶段的程序(预处理器、编译器、汇编器、和链接器)一起构成了编译系统。CONSTANTS接下来的内存空间定义部分会使用这些常量来定义内存空间的范围,理论上来说不定义常量也没有影响,直接用魔鬼数字代替,定义常量的主要目的就是方便理解以及方便修改;从示例中可以看出,常量的值可以为16进制或者10十进制,而且10进制支持数量级单位(k级,M级);原创 2024-03-30 14:29:12 · 111 阅读 · 1 评论 -
RH850系列芯片深度剖析 1.6-OptionBytes(OPBT)配置解析
RH850芯片在复位启动时会从配置区域读取配置数据信息进行应用,此配置信息即OptionBytes,OptionBytes包含在MCU的硬件属性区域(Hardware Property Area),MCU的硬件属性区由七个区域组成(扩展数据区、配置设置区、安全设置区、块保护区、切换区、TAG 区和擦除计数器区)。OptionBytes属于配置设置区。配置设置区、安全设置区、块保护区、切换区和TAG区支持专用编程/擦除命令。配置设置区和安全设置区可以以 4 字节为单位设置 OTP(一次性编程)。原创 2024-04-05 11:25:00 · 189 阅读 · 0 评论 -
RH850系列芯片深度剖析 1.8-内存管理之MPU
内存保护功能由 MPU(内存保护单元)提供,通过检测和防止不可靠程序未经授权使用系统资源、失控事件等来维持系统的平稳运行。原创 2024-07-05 22:17:16 · 117 阅读 · 0 评论 -
RH850系列芯片深度剖析 1.9-ghs编译器之特殊数据区域优化
特殊数据区优化将某些数据放在一个特殊的内存块中,可以通过使用基地址的偏移来访问该内存块。在大多数情况下,访问该内存块中的数据比访问其他数据更有效率。这种优化不会改变程序的基本功能。V850 和 RH850 支持小数据区 (SDA) 优化和一种称为零数据区 (ZDA) 优化的专门 SDA 版本。本章节将介绍这些优化,并说明如何将数据分配到特殊数据区。要将变量分配到自定义特殊数据区段,请在 C 代码块中使用 #pragma ghs 段。int e = 3;int g = 10;原创 2024-04-14 11:32:43 · 14 阅读 · 0 评论 -
RTA_OS基础功能讲解 2.1-什么是AutoSAR OS
RTA-OS 是一种静态可配置、抢占式实时操作系统 (RTOS),适用于高性能、资源受限的应用程序。RTAOS 完全实现了开放标准 AUTOSAR R3.x、AUTOSAR R4.0(包括多核)和 AUTOSAR R4.1 操作系统规范,并且完全符合 OSEK/VDX 操作系统标准 2.2.3 版。高性能:内核非常小而且速度非常快。内核的内存占用及其运行时性能处于领先地位,使得 RTA-OS 特别适合大批量制造的系统,在这些系统中,必须满足对硬件成本非常严格的限制,并且任何最终产品都必须正确运行。原创 2024-03-24 21:52:44 · 94 阅读 · 1 评论 -
RTA_OS基础功能讲解 2.2-任务(上)
必须同时执行许多不同活动的系统称为并发系统。这些活动可能有一些软件部分,因此提供它们的程序必须同时执行。这些程序必须在必要时进行协作,例如,当它们需要共享数据时。实时系统中的每个并发活动都由一个任务表示。大多数应用程序代码存在于任务中。如果您有多个必须同时执行的任务,则需要提供一种允许并发的方法。实现此目的的一种方法是为每个任务配备一个单独的处理器。您可以使用并行计算机,但此解决方案对于许多应用程序来说过于昂贵。实现并发行为的一种更具成本效益的方法是在单个处理器上一次运行一个任务。原创 2024-03-25 23:01:24 · 33 阅读 · 0 评论 -
RTA_OS基础功能讲解 2.3-任务(下)
但是,在进入 ISR 时,会从堆栈指针的当前值中减去 ISR 激活的堆栈开销 (SpPreemption),以检查抢占任务或 ISR 是否超出其堆栈使用量。如果某个任务在 2 类 ISR 中激活,并且该任务的优先级高于任何当前正在运行的任务,则对于某些目标,操作系统可能需要使用比激活较低优先级任务时稍微多的堆栈。在使用扩展任务时,您可以通过仅分配足够的缓冲区空间来保存最坏情况的“等待事件堆栈”上下文,而不是任务所需的绝对最坏情况的空间,从而最大限度地减少 RTA-OS 保留的 RAM 大小。原创 2024-03-26 22:39:09 · 40 阅读 · 0 评论 -
RTA_OS基础功能讲解 2.4-中断
中断提供了应用程序与现实世界中发生的事情之间的接口。例如,可以使用中断来捕捉按下的按钮、标记时间的流逝或捕捉其他刺激。当中断发生时,处理器通常会查看内存中被称为向量的预定义位置。向量通常包含相关中断处理程序的地址。包含应用程序中所有向量的内存块称为向量表。RTA-OS 支持两类中断: 1 类和 2 类。第 1 类 ISR 是绕过 RTA-OS 的普通嵌入式系统中断。因此,它们不能与操作系统交互,也禁止调用(大部分) RTA-OS API。应使用 CAT1_ISR 宏标记它们。原创 2024-04-19 23:16:47 · 30 阅读 · 0 评论 -
RTA_OS基础功能讲解 2.5-任务栈架构讲解
在使用扩展任务时,您可以通过仅分配足够的缓冲区空间来保存最坏情况的“等待事件堆栈”上下文,而不是任务所需的绝对最坏情况的空间,从而最大限度地减少 RTA-OS 保留的 RAM 大小。注:如上图所示,更高优先级任务(Task E)使用的栈超过了最坏情况抢占点的堆栈大小,会覆盖扩展任务(Task D)进入等待态前的栈内容,如果有一些关键的局部变量被覆盖,则无法恢复,扩展任务恢复运行时可能会出现异常,用户应在软件实现方面尽可能避免这种场景;您可以使用 RTA-OS 的堆栈测量功能来获取堆栈分配的准确值。原创 2024-04-26 17:00:57 · 33 阅读 · 0 评论 -
RTA_OS基础功能讲解 2.6-资源锁和自旋锁
访问需要在任务和 ISR 之间共享的硬件或数据可能不可靠、不安全。这是因为当优先级较低的任务或 ISR 正在更新共享数据时,可能会发生任务或 ISR 抢占。这种情况被称为竞争条件,极难测试。访问共享数据的语句序列称为关键部分。要安全访问关键部分中引用的代码和数据,就需要执行互斥。换句话说,必须确保系统中没有其他任务或第 2 类 ISR 能够在关键部分期间抢占正在执行的任务。你可以将任务声明为非抢占式任务,这样就可以避免互斥问题。原创 2024-05-01 11:51:52 · 18 阅读 · 0 评论 -
RTA_OS基础功能讲解 2.7-事件
在 AUTOSAR 操作系统中,事件用于向任务发送信号信息。本章节将解释什么是事件、如何配置事件以及如何在运行时使用事件。事件可用于为扩展任务提供多个同步点。同步的可视化示意图如下图所示。扩展任务可以等待事件,事件会导致任务进入等待状态。当系统中的任务或 ISR 设置了一个事件时,等待中的任务就会转入就绪状态。当它成为优先级最高的就绪任务时,RTA-OS 就会选择运行它。事件由与其关联的扩展任务所有。通常,扩展任务会以无限循环的方式运行,其中包含一系列针对其拥有事件的等待调用。原创 2024-05-04 14:15:24 · 24 阅读 · 0 评论 -
RTA_OS基础功能讲解 2.8-Tick计数器
计数器以 ticks 为单位记录操作系统中发生了多少 “事情”。tick 是一个抽象单位。你可以自行决定你希望 tick 代表什么意思,从而决定计数器所计算的 "事情 "是什么。时间,例如毫秒、微秒、分钟等,然后计数器会告诉你经过了多少时间。旋转,例如以度或分钟为单位,在这种情况下,计数器会告诉你某个东西旋转了多少圈。按键,在这种情况下,计数器会告诉你按键被按下了多少次。错误,在这种情况下,计数器将计算错误发生的频率。一个 ISR(有时是一个任务)用于驱动一个计数器。原创 2024-06-06 23:03:10 · 255 阅读 · 0 评论 -
RTA_OS基础功能讲解 2.9-警报器
使用 ISRs 可以构建以不同速度激活任务的系统。然而,对于复杂的系统来说,这样做可能会变得低效和不切实际。警报器提供了一种更方便、更可移植的系统调度方式。计数器;一个或多个与计数器相连的警报器。警报器要指定在达到特定计数器值时要执行的操作。系统中的每个计数器都可以附加任意数量的警报器。当计数器的值等于附加到该计数器上的警报值时,就表示警报已过期。过期时,RTA-OS 将执行与警报相关的操作。该操作可以是激活任务、执行警报回调例程、设置事件或对软件计数器计数。原创 2024-06-15 19:29:42 · 70 阅读 · 0 评论 -
RTA_OS基础功能讲解 2.10-调度表
在警报器章节中,我们看到可以比较容易地构建需要周期性和非周期性行为的系统。但是,警报的一个限制是每个警报只能执行一个操作。如果你需要构建一个系统,其中有分阶段的任务激活序列,并保证在时间上有一定的间隔(时间间隔),那么你就需要非常小心地启动和停止警报。虽然可以通过警报来构建这样一个系统,但除了通过代码审查之外,没有任何其他方法可以防止应用程序的时序属性在运行时被意外修改。此外,如果你想在一个时间点上定义多个任务激活,就不得不创建多个警报,而你真正想做的是通过一个警报激活多个任务。原创 2024-06-22 16:13:38 · 49 阅读 · 0 评论 -
AutoSAR系列之基础篇 4.1-BSW之WdgM
SE(Supervised Entities)是WdgM的监控单元,每一个SE可以使用不同的监控功能或者它们之间的组合,如上图所示,在一个SE中每一个监控功能都会返回一个结果,如蓝色部分所示。Alive Supervision主要被用于对周期运行的函数或者周期调度的task进行监控,周期运行或者调度也就意味着固定时间内运行的次数是固定的,Alive Supervision就是提供了一种在固定时间内监控软件运行的次数是否满足规定值的监控功能。当一直停留在OK状态时,某一个监控功能检测出异常,如果。原创 2023-03-29 22:59:53 · 101 阅读 · 0 评论 -
AutoSAR系列之基础篇 4.2-BSW之CanTp
N_SDU参数RangeMtype参数Mtype应用于识别地址信息的类型和范围包括在服务调用中的参数。N_SA用于识别发送方00-FF hexN_TA用于识别接收方00-FF hexN_TAtype目标地址寻址方式N_AE地址扩展,只有Mtype设置为Remote diagnostic时,N_AE才扩展成为地址的一部分。00-FF hexLength数据发送或接收的长度信息1-4095和上层的交互数据Parameter网络层的参数STmin, BS。原创 2023-05-21 16:29:46 · 23 阅读 · 0 评论 -
AutoSAR系列之基础篇 4.3-BSW之Dcm(一)
诊断通信管理(DCM)主要包括三个子模块:诊断会话层(Diagnostic Session Layer,DSL)、诊断服务调度(Diagnostic Service Dispatcher, DSD)、诊断服务处理(Diagnostic Service Processing, DSP)。诊断会话层:DSL子模块确定诊断数据请求和响应的数据流,监控和确保诊断请求和响应的时序,管理诊断状态(尤其是诊断会话和安全状态);原创 2024-03-23 11:56:10 · 90 阅读 · 0 评论 -
AutoSAR系列之基础篇 4.4-BSW之Dcm(二)
DSD子模块主要用于诊断服务的分配、诊断服务执行环境以及条件的判断,从DSL子模块接收诊断请求数据并识别请求的服务类型,跟踪服务请求执行的进度。DSD子模块仅处理有效诊断请求,拒绝无效请求。这是正常通信(“ping-pong”)的标准用例。服务器接收诊断请求消息。DSD子模块确保请求消息的有效性。在这个用例中,请求是有效的,响应是积极的。请求将被转发到DSP子模块中的数据处理器。当数据处理器完成所有数据处理动作后,触发DSD子模块发送响应消息。原创 2024-03-23 12:15:44 · 48 阅读 · 0 评论