自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (1)
  • 问答 (2)
  • 收藏
  • 关注

原创 基于RH850系列芯片的AutoSAR OS讲解 - 专栏介绍

为了帮助大家更好学习以及理解AutoSAR OS的内核以及工作原理,本专栏会从三个方向进行讲解,由浅及深的让大家更好的理解AutoSAR OS。如专栏标题所示,博主主要是基于RH850系列的芯片上集成ETAS的AutoSAR OS来做讲解,如果是其他系列的芯片或者其他家的AutoSAR OS源码,RTA_OS的工作原理基本大同小异。本专栏于2024年初创建,会定期更新现计划章节以及后续计划的章节。

2024-03-03 10:23:40 1306 3

原创 【C编程问题集中营】使用数组指针时容易踩得坑

直接说结论,以&TestArray方式获取数组首地址指针,其指针类型为整个数组大小对应的指针类型,在对其指针进行+1操作时,其指针偏移直接偏移了整个数组的大小,即偏移到了数组的首地址位置,所以再去提取数据时就取到了数组的第一个和第二个元素。而为什么调用函数,在函数内部进行+1操作就没有问题呢,是因为传参时相当于进行的强制类型转换,将其指针类型强转为,因此后续对其进行+1操作时只偏移了一个字节的地址;

2025-02-09 22:56:36 313

原创 RTA_OS内核源码解析 3.9-任务激活

一般将Task从挂起态切换到就绪态的操作称之为激活,未启用激活队列的前提下,无法对已经处于激活态或运行态的Task再次激活,对已经进入等待态的ECCTask可以调用激活接口进行激活,但是正常项目中不会这么做,因为毫无意义,原因后面会进行介绍。与设置事件接口类似,任务激活接口也分为同步激活和异步激活两种类型,且RTA_OS提供这两种类型的接口,分别是同步激活任务接口()和异步激活任务接口(

2024-12-20 23:55:33 129

原创 RTA_OS内核源码解析 3.8-事件解析

只有可以进入等待态的Task才可以配置有效的事件,即ECCTask。Event_Action_0为第0bit对应的十进制值,Event_Action_1则为第1bit对应的十进制值。在将这两个事件配置到某一个ECCTask时,对应ECCTask的ecc.events:ECCTask由于等待事件从而进入等待态时,用于保存跳转点的缓存;: ECCTask切换到等待态后用于保存当前任务所使用栈的全部数据;:对ECCTask设置的事件;:ECCTask进入等待态后等待的事件;while (1)

2024-12-01 10:04:07 71

原创 RTA_OS内核源码解析 3.7-自旋锁解析

RTA_OS将用户配置以及系统自动生成的自旋锁配置在的结构体数组中,其基础配置类型如下所示(配置为access:访问权限码,主要用于判断是否在当前application中可使用;successor:链表中下一个 OsSpinlock 的引用,该链表决定了 Spinlocks 的嵌套顺序。RTA_OS为每一个用户配置的自旋锁生成一个动态数据,汇总在lock:代表自旋锁本身的数据(获取和释放的真实数据);locker:获取当前自旋锁的任务或中断句柄;

2024-11-10 13:37:24 95

原创 RTA_OS内核源码解析 3.6-资源锁解析

RTA_OS将用户配置的以及系统自动生成的资源锁均配置在这个结构体数组中,结构体类型为dynamic:资源锁动态数据,主要用于记录资源锁获取次数以及保存当前的任务优先级掩码或者中断屏蔽掩码;tpmask:任务优先级掩码,根据资源锁应用配置在哪些任务的优先级所配置的任务优先级掩码;(优先级上限协议)imask:中断掩码,主要根据资源锁应用在对应中断的优先级所配置;access:访问权限码,用于在使用时判断当前资源锁是否可以在当前的application中可以使用;资源锁动态数据的结构体类型为。

2024-10-07 14:13:38 167

原创 RH850系列芯片深度剖析 1.7-启动流程解析

本章节基于型号为RH850 U2A16的芯片(4核)对其启动流程进行讲解(基于ghs编译器),从复位向量执行到main函数入口。以原厂提供的示例代码为基础,介绍使用MULTI(基于ghs编译器)作为集成开发环境的启动过程。注:本章节所参考的示例代码下载链接请见章节末尾。如果创建自己的启动代码,则必须初始化某些关键寄存器,使其指向正确的内存区域。最常需要初始化的寄存器是堆栈指针,因为在调用高级语言函数之前,通常需要一个有效的堆栈。链接器指令(.ld)文件中定义的.stack段指定了运行时栈的位置和大小,

2024-09-01 19:15:30 885 1

原创 RH850系列芯片深度剖析 1.10-功能安全之内存保护

RH850U2A芯片具有内存保护/防护功能,可防止错误访问外设模块内存和控制寄存器中的数据。每个可编程内核(总线主控)都有一个定义软件访问保护的内存保护单元(MPU)。此外,每个资源(总线从控)都有一个保护单元,用于控制任何总线主控的访问,包括那些没有 MPU 的总线主控,如 DMA。下图显示了整个内存保护架构:内存保护架构描述如下:MPU:所有 CPU 内核和 ICUMHA 都会保护内存,防止来自 CPU 内核和 ICUMHA 自身的意外访问。

2024-07-14 15:29:24 640

原创 RH850系列芯片深度剖析 1.8-内存管理之MPU

内存保护功能由 MPU(内存保护单元)提供,通过检测和防止不可靠程序未经授权使用系统资源、失控事件等来维持系统的平稳运行。

2024-07-05 22:17:16 633

原创 RTA_OS基础功能讲解 2.10-调度表

在警报器章节中,我们看到可以比较容易地构建需要周期性和非周期性行为的系统。但是,警报的一个限制是每个警报只能执行一个操作。如果你需要构建一个系统,其中有分阶段的任务激活序列,并保证在时间上有一定的间隔(时间间隔),那么你就需要非常小心地启动和停止警报。虽然可以通过警报来构建这样一个系统,但除了通过代码审查之外,没有任何其他方法可以防止应用程序的时序属性在运行时被意外修改。此外,如果你想在一个时间点上定义多个任务激活,就不得不创建多个警报,而你真正想做的是通过一个警报激活多个任务。

2024-06-22 16:13:38 200

原创 RTA_OS基础功能讲解 2.9-警报器

使用 ISRs 可以构建以不同速度激活任务的系统。然而,对于复杂的系统来说,这样做可能会变得低效和不切实际。警报器提供了一种更方便、更可移植的系统调度方式。计数器;一个或多个与计数器相连的警报器。警报器要指定在达到特定计数器值时要执行的操作。系统中的每个计数器都可以附加任意数量的警报器。当计数器的值等于附加到该计数器上的警报值时,就表示警报已过期。过期时,RTA-OS 将执行与警报相关的操作。该操作可以是激活任务、执行警报回调例程、设置事件或对软件计数器计数。

2024-06-15 19:29:42 150

原创 RTA_OS基础功能讲解 2.8-Tick计数器

计数器以 ticks 为单位记录操作系统中发生了多少 “事情”。tick 是一个抽象单位。你可以自行决定你希望 tick 代表什么意思,从而决定计数器所计算的 "事情 "是什么。时间,例如毫秒、微秒、分钟等,然后计数器会告诉你经过了多少时间。旋转,例如以度或分钟为单位,在这种情况下,计数器会告诉你某个东西旋转了多少圈。按键,在这种情况下,计数器会告诉你按键被按下了多少次。错误,在这种情况下,计数器将计算错误发生的频率。一个 ISR(有时是一个任务)用于驱动一个计数器。

2024-06-06 23:03:10 386

原创 RTA_OS基础功能讲解 2.7-事件

在 AUTOSAR 操作系统中,事件用于向任务发送信号信息。本章节将解释什么是事件、如何配置事件以及如何在运行时使用事件。事件可用于为扩展任务提供多个同步点。同步的可视化示意图如下图所示。扩展任务可以等待事件,事件会导致任务进入等待状态。当系统中的任务或 ISR 设置了一个事件时,等待中的任务就会转入就绪状态。当它成为优先级最高的就绪任务时,RTA-OS 就会选择运行它。事件由与其关联的扩展任务所有。通常,扩展任务会以无限循环的方式运行,其中包含一系列针对其拥有事件的等待调用。

2024-05-04 14:15:24 105

原创 RTA_OS基础功能讲解 2.6-资源锁和自旋锁

访问需要在任务和 ISR 之间共享的硬件或数据可能不可靠、不安全。这是因为当优先级较低的任务或 ISR 正在更新共享数据时,可能会发生任务或 ISR 抢占。这种情况被称为竞争条件,极难测试。访问共享数据的语句序列称为关键部分。要安全访问关键部分中引用的代码和数据,就需要执行互斥。换句话说,必须确保系统中没有其他任务或第 2 类 ISR 能够在关键部分期间抢占正在执行的任务。你可以将任务声明为非抢占式任务,这样就可以避免互斥问题。

2024-05-01 11:51:52 118

原创 RTA_OS基础功能讲解 2.5-任务栈架构讲解

在使用扩展任务时,您可以通过仅分配足够的缓冲区空间来保存最坏情况的“等待事件堆栈”上下文,而不是任务所需的绝对最坏情况的空间,从而最大限度地减少 RTA-OS 保留的 RAM 大小。注:如上图所示,更高优先级任务(Task E)使用的栈超过了最坏情况抢占点的堆栈大小,会覆盖扩展任务(Task D)进入等待态前的栈内容,如果有一些关键的局部变量被覆盖,则无法恢复,扩展任务恢复运行时可能会出现异常,用户应在软件实现方面尽可能避免这种场景;您可以使用 RTA-OS 的堆栈测量功能来获取堆栈分配的准确值。

2024-04-26 17:00:57 151

原创 RTA_OS内核源码解析 3.5-中断管理(下)

是RTA_OS为核0定义好的中断管理函数,每个核都有对应的函数(本章节以核0的中断管理函数进行举例),被定义在文件中,且在:中断触发前的中断优先级屏蔽掩码,用于判断中断结束时是否可以执行一次任务切换;isr:为当前需要执行中断的配置句柄;执行前状态保存;中断处理函数的执行;执行后处理;

2024-04-25 11:06:54 117

原创 RTA_OS内核源码解析 3.4-中断管理(上)

系统异常以及FE级别中断向量表定义;EI级别用户中断向量表定义;RTA_OS会将核0(PE0)的系统级异常以及FE级别异常的中断向量表在链接文件中定义到mov 18,r29.align 16// ... 中间的系统级异常以及FE级别异常定义格式相同mov 18,r29.align 16会在RTA_OS初始化中断时用于设置芯片EBASE寄存器(EBV bit = 1),由于EBASE寄存器的本身对齐特性,所以在赋值时也会自动对齐。虽然将。

2024-04-25 10:58:50 228

原创 RTA_OS内核源码解析 3.3-ECCTask调度源码解析

spnow,depth:用于计算基于的栈使用量,以及用于计算ECCTask的栈偏移值(spoverrun);spoverrun:spoverrun一是用于depth栈使用量超出stack_offset的值计算,二是用于ECCTask的栈偏移值;os_current_core_const,os_current_controlled_core:系统的核数据以及核控制数据;

2024-04-23 13:42:14 163

原创 RTA_OS内核源码解析 3.2-任务调度源码解析

当某个Task的句柄指针赋值给Os_RunningTask,即表明当前Task进入运行态,由于RTA_OS的特殊软件设计,只有在Task运行结束才会把该Task从就绪队列中清除,所以当一个Task正在运行时,就算Task进入了运行态,但是就绪队列中还存在这个Task。以核0举例,RTA_OS通过调用OS_SCH1L API找到就绪队列中优先级最高的Task,然后计算该Task在Os_const_tasks0中的index,把对应的Task句柄赋值给Os_RunningTask;

2024-04-23 11:10:53 169

原创 RTA_OS内核源码解析 3.1-OS启动源码解析

在AutoSAR的软件架构中,OS的启动是在EcuM模块初始化的最后一步进行,通过API来调用StartOS()参数EcuM_Rb_adrConfigPtr_st->DefaultAppMode为EcuM模块索引RTA_OS的Application modes配置,作为参数传递给StartOS,Os_StartOS会实现对Application modes做有效性的判断。for(;;获取当前的SP栈顶存储到Os_StackBase中,

2024-04-22 22:00:49 266

原创 RTA_OS基础功能讲解 2.4-中断

中断提供了应用程序与现实世界中发生的事情之间的接口。例如,可以使用中断来捕捉按下的按钮、标记时间的流逝或捕捉其他刺激。当中断发生时,处理器通常会查看内存中被称为向量的预定义位置。向量通常包含相关中断处理程序的地址。包含应用程序中所有向量的内存块称为向量表。RTA-OS 支持两类中断: 1 类和 2 类。第 1 类 ISR 是绕过 RTA-OS 的普通嵌入式系统中断。因此,它们不能与操作系统交互,也禁止调用(大部分) RTA-OS API。应使用 CAT1_ISR 宏标记它们。

2024-04-19 23:16:47 169

原创 RH850系列芯片深度剖析 1.9-ghs编译器之特殊数据区域优化

特殊数据区优化将某些数据放在一个特殊的内存块中,可以通过使用基地址的偏移来访问该内存块。在大多数情况下,访问该内存块中的数据比访问其他数据更有效率。这种优化不会改变程序的基本功能。V850 和 RH850 支持小数据区 (SDA) 优化和一种称为零数据区 (ZDA) 优化的专门 SDA 版本。本章节将介绍这些优化,并说明如何将数据分配到特殊数据区。要将变量分配到自定义特殊数据区段,请在 C 代码块中使用 #pragma ghs 段。int e = 3;int g = 10;

2024-04-14 11:32:43 455 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 1142

原创 RH850系列芯片深度剖析 1.5-链接(ld)文件解析

基础编译过程分为四个阶段:预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)、链接(Linking)。执行这四个阶段的程序(预处理器、编译器、汇编器、和链接器)一起构成了编译系统。CONSTANTS接下来的内存空间定义部分会使用这些常量来定义内存空间的范围,理论上来说不定义常量也没有影响,直接用魔鬼数字代替,定义常量的主要目的就是方便理解以及方便修改;从示例中可以看出,常量的值可以为16进制或者10十进制,而且10进制支持数量级单位(k级,M级);

2024-03-30 14:29:12 775 1

原创 RTA_OS基础功能讲解 2.3-任务(下)

但是,在进入 ISR 时,会从堆栈指针的当前值中减去 ISR 激活的堆栈开销 (SpPreemption),以检查抢占任务或 ISR 是否超出其堆栈使用量。如果某个任务在 2 类 ISR 中激活,并且该任务的优先级高于任何当前正在运行的任务,则对于某些目标,操作系统可能需要使用比激活较低优先级任务时稍微多的堆栈。在使用扩展任务时,您可以通过仅分配足够的缓冲区空间来保存最坏情况的“等待事件堆栈”上下文,而不是任务所需的绝对最坏情况的空间,从而最大限度地减少 RTA-OS 保留的 RAM 大小。

2024-03-26 22:39:09 158

原创 RTA_OS基础功能讲解 2.2-任务(上)

必须同时执行许多不同活动的系统称为并发系统。这些活动可能有一些软件部分,因此提供它们的程序必须同时执行。这些程序必须在必要时进行协作,例如,当它们需要共享数据时。实时系统中的每个并发活动都由一个任务表示。大多数应用程序代码存在于任务中。如果您有多个必须同时执行的任务,则需要提供一种允许并发的方法。实现此目的的一种方法是为每个任务配备一个单独的处理器。您可以使用并行计算机,但此解决方案对于许多应用程序来说过于昂贵。实现并发行为的一种更具成本效益的方法是在单个处理器上一次运行一个任务。

2024-03-25 23:01:24 159

原创 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 368 1

原创 AutoSAR系列之基础篇 4.4-BSW之Dcm(二)

DSD子模块主要用于诊断服务的分配、诊断服务执行环境以及条件的判断,从DSL子模块接收诊断请求数据并识别请求的服务类型,跟踪服务请求执行的进度。DSD子模块仅处理有效诊断请求,拒绝无效请求。这是正常通信(“ping-pong”)的标准用例。服务器接收诊断请求消息。DSD子模块确保请求消息的有效性。在这个用例中,请求是有效的,响应是积极的。请求将被转发到DSP子模块中的数据处理器。当数据处理器完成所有数据处理动作后,触发DSD子模块发送响应消息。

2024-03-23 12:15:44 170

原创 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 272

原创 RH850系列芯片深度剖析 1.4-通用寄存器以及复位控制器解析

程序寄存器包括通用寄存器(r0 至 r31)和程序计数器(PC)。r0 始终保留 0。复位后通用寄存器 r1 至 r31 的值未定义。复位后PC的值就是RBASE寄存器的值。复位控制器控制影响设备复位行为的所有因素。根据重置的区域,设备有多种复位类别。每个复位类别均由一个或多个复位源触发。复位类别及其对应的复位源之间的关系如下表所示:复位类别与初始化区域的关系如下表所示:(√:复位(初始化),一:没有复位)

2024-03-16 17:58:14 1117

原创 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 570

原创 RH850系列芯片深度剖析 1.2-电源架构以及工作模式

本节介绍RH850/U2A-EVA系列的电源和电源域。本节介绍了微控制器运行所需的外部电压连接和内部电压分配。电源电路具有POC(Power On Clear)电路,可安全启动。内部电路分为两个独立的电源域:常开区域(AWO)和隔离区域(ISO)。在所有操作模式和待机模式下,Always-On 区域的电源始终处于开启状态。根据待机模式的类型,可以关闭隔离区域的电源以降低整体功耗。系统逻辑和片上稳压器的电源电压 SYSVCC。电压调节器的输出电压提供给常开区域电源域中的数字电路;

2024-03-10 23:44:26 1111

原创 RH850系列芯片深度剖析 1.1-异常和中断

异常是一种特殊的事件,强制将操作从当前程序转移到另一个程序。位于给定异常的分支目的地的程序被称为“异常处理程序”。RESET异常被触发当输入一个复位信号;响应事件而从当前正在运行的程序分支到不同程序的行为称为异常。FE 级不可屏蔽中断 (FENMI):即使已生成另一个 FE 级中断 FEINT,FENMI 中断也会被确认。即使 CPU 系统寄存器 PSW.NP = 1,FENMI 中断也会被应答。无法从 FENMI 中断返回,并且在发生多个中断时禁用恢复。

2024-03-03 11:08:53 1485

原创 【嵌入式软件方案】 基于NXP S32K系列芯片的DFlash模拟EEPROM原理简介

首先根据应用需求和MCU内部DFlash的扇区大小和个数,合理设置数据分区的大小和个数,将DFlash的若干扇区分成多个数据分区以供使用。数据分区的大小和个数的设置和DFlash的扇区长度匹配起来,满足以下公式:**分区状态字:**反应数据分区的存储历史时间,不同数据分区存储数据在不同历史时间的拷贝,当前数据分区存储最新的数据拷贝。**数据ID:**即可以作为当前数据条目的标识符,也可以作为当前数据条目的数据状态字,反映该数据所在分区内存储地址是否已经被擦除。

2024-02-22 23:54:27 1812

原创 【C编程问题集中营】枚举类型变量赋值超过其定义数值的表现

关注且发送"102"即可获取完整全文内容;

2024-02-01 22:19:41 844

原创 【C编程问题集中营】在不同编译器下float强转为无符号int的表现

关注且发送"101"即可获取完整全文内容;

2024-01-16 22:57:26 946

原创 【SCons】SCons编译软件工程(一)

SCons是一种用Python实现的软件构建工具,类似与Makefile,它可以自动编译源代码或者代码工程并构建输出可执行文件,除了能对C代码,C++代码以及汇编代码进行构建外,还可以对Fortran,Java等编程语言进行构建;它帮助开发者管理复杂的软件代码工程通过一种灵活的、可扩展的构建系统;所以可以将SCons看作是经典Make实用程序进一步改进后的替代品,SCons是一个更简便、更可靠、更高效的编译软件;由于Python语言编写的开源构建系统,所以具备很强的跨平台特性;

2023-12-23 12:59:13 1839

原创 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 114

原创 【嵌入式经验系列】S32K-CSEc硬件加密模块深度解析

CSEc的主要功能都是在闪存模块(FTFC)的核心中实现的,实现方式如下所示。要启动CSEc功能,必须将器件配置为模拟EEPROM操作。Flash的分区命令(PRGPART)用于启用CSEc,同时还提供了密钥大小的机制。根据密钥的大小,EEERAM的最后128/256/512字节将从仿真EEPROM中减少并变为不可寻址。该存储区域被保护并用于存储加秘密钥,此外,系统中的任何其他主设备都无法访问此存储区域。安全存储区域如图1.1中的灰色部分所示。

2023-04-22 22:40:47 7167 1

原创 【嵌入式软件方案】基于色坐标的RGB灯调光调色算法

如果想要驱动一个三基色LED灯亮出不同的颜色,只需要控制三路PWM的输出即可实现。但是如何控制三路的输出使三基色LED灯亮出我们想要得到的理想目标颜色并且只有很小的色差就没有那么简单了。本文将介绍一种基于色坐标的三基色LED调光算法。

2023-04-09 23:30:09 8317 11

ISO14229-1.pdf

汽车诊断应用层协议 ISO14229-2013 ISO (the International Organization for Standardization) is a worldwide federation of national standards bodies (ISO member bodies). The work of preparing International Standards is normally carried out through ISO technical committees. Each member body interested in a subject for which a technical committee has been established has the right to be represented on that committee. International organizations, governmental and non-governmental, in liaison with ISO, also take part in the work. ISO collaborates closely with the International Electrotechnical Commission (IEC) on all matters of electrotechnical standardization.

2019-09-02

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

TA关注的人

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