智能座舱架构与芯片- (12) 软件篇 中

三、智能座舱操作系统

3.1 概述

车载智能计算平台自下而上可大致划分为硬件平台、系统软件硬件抽象层+OS内核+中间件)、功能软件库组件+中间件)和应用算法软件等四个部分。狭义上的OS特指可直接搭载在硬件上的OS内核;而广义OS从下至上包括从BSP、操作系统内核、中间件及库组件等硬件和上层应用之间的所有程序。

  • 硬件抽象层

硬件抽象层里包含BSP和Hypervisor。

Hypervisor 是一种运行在基础物理服务器操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件,也可叫做VMM( virtual machine monitor ),即虚拟机监视器。Hypervisors是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括磁盘和内存在内的所有物理设备

BSP(board support package)即板级支持包,也是介于主板硬件操作系统之间的一层,主要目的是支持操作系统,使之能够更好的运行于硬件主板。

  • 操作系统内核

OS内核又称为“底层OS”,提供操作系统最基本的功能,负责管理系统的进程、内存、设备驱动程序、文件网络系统,决定着系统的性能和稳定性

智能座舱作为新能源汽车的核心部分,通常需要运行多个不同的软件应用和服务,例如车辆信息娱乐系统、导航系统、车辆诊断系统、驾驶辅助系统等。这些应用和服务需要在智能座舱中使用不同的操作系统内核来管理系统资源、控制硬件设备提供系统服务。以下是一些常见的操作系统内核的例子:

  1. Linux内核:Linux是一种开源的操作系统内核,广泛应用于各种嵌入式系统和移动设备中,包括新能源汽车智能座舱。Linux内核具有高度的可定制性和灵活性,可以根据座舱系统的需求进行定制和优化。例如,很多智能座舱系统使用基于Linux内核的Android Automotive操作系统,提供丰富的应用和服务支持。
  2. QNX内核:QNX是一种实时操作系统内核,被广泛应用于汽车领域。QNX内核具有高度的实时性和可靠性,适用于对系统响应时间稳定性要求较高的智能座舱应用,例如车辆的安全和驾驶辅助系统。
  3. AUTOSAR(Automotive Open System Architecture)内核:AUTOSAR是一种开放的汽车电子系统架构,包括了一系列的软件规范和标准。AUTOSAR内核是一种用于汽车电子系统的标准化操作系统内核,可以提供统一的软件接口服务,实现不同硬件和软件模块之间的互操作性和可替换性。许多新能源汽车厂商使用AUTOSAR内核来构建其智能座舱系统。
  4. Windows内核:作为一种常见的桌面操作系统,Windows内核在某些新能源汽车智能座舱中也有应用。例如,一些电动汽车厂商采用基于Windows内核的操作系统来构建其车辆信息娱乐系统,提供丰富的图形界面多媒体功能
  • 中间件

中间件,作为底层操作系统和这些应用程序之间的桥梁,是对软硬件资源进行管理分配调度的平台,充当着软件和硬件解耦的关键角色。 具体来说,中间件通常对传感器、计算平台等资源进行抽象,对算法、子系统、功能采取模块化的管理,通过提供的统一接口,让开发人员能够专注于各自业务层面的开发,而无需了解无关的细节。这为开发者快速、高效、灵活地开发和集成自动驾驶软件提供了极大的便利。

因此,从系统软件的角度来说,车载操作系统主要考虑的就是BSP,Hypervisor,OS内核,以及中间件等因素。目前座舱新应用层出不穷,和手机关联度也比较高, Android是最佳选择,但考虑到安卓背后的谷歌一家独大,车厂无力掌控,日本和欧洲车厂更倾向于 Linux。中美厂家都拥抱安卓, 中国厂家尤其注重生态系统,因此几乎全部选择手机版的安卓做一些微小修改。美国厂家则多选择车机版安卓。因为谷歌的某些应用在国内无法使用,国内一般不使用完整的车机版安卓。

QNX几乎不会作为独立的智能座舱操作系统而被选用,一般可以与Android共同作为Hypervisor之上的虚拟机VM而协同工作。

3.2 Android

Android是发行版本的Linux, 系统复杂, 功能强大。Android是由Google公司和开放手机联盟基于Linux开发的操作系统。Android被称为基于Linux开发的最成功的产品之一, 应用生态最为丰富, 主要应用于移动设备,在国内智能座舱操作系统常基于Android开发。

Android的主要优点有:

1) 开源, 对中低端OS开发商具有很强吸引力;

2) 灵活, 可以根据自身需要对原生Android进行定制化改造;

3) 可移植性强, Android手机上的APP不需要经过大的修改就可以应用在车机上, 有利于国内互联网厂商切入汽车领域, 快速建立起车载软件生态。

Android的缺点主要有:

1) 安全性、稳定性差,系统漏洞带来较高风险,技术维护成本高

2) 过度依赖于Google。

在智能座舱操作系统的选择中,虽然还没有哪一个系统的市场份额占据绝对优势,但从软件定义汽车的角度出发,以及新能源汽车的发展历程来看,智能座舱域主要考虑的是应用的生态和智能化的发展。在实践中可以看到,Android系统体现出越来越大的优势。这里面最重要的原因就是智能座舱的生态环境可以与手机等消费类电子产品的生态打通,在手机上流行的应用APP,同样可以移植到汽车的智能座舱环境中来。比如说,导航类APP,音乐类APP,视频类APP,内容类APP,可以方便地实现车机手机统一账户,统一资源等。

Android凭借国内丰富的应用生态切入汽车智能座舱系统。虽然安全性、稳定性不足,但由于车载信息娱乐系统对安全性要求相对较低, Android仍然凭借其上述优点在国内车载信息娱乐系统领域占据主流地位。尤其是各大互联网巨头、自主品牌、造车新势力纷纷基于Android进行定制化改造, 推出了自己的汽车操作系统, 如阿里Al iOS、百度小度车载OS、比亚迪Di Link、蔚来NIO OS、小鹏X martOS等。

  • Android AUTO vs AAOS vs 传统Android

谷歌也分别推出了 Android Auto 和 Android Automotive OS,Android Auto 是一个超级 App,不是一个操作系统,但 Android Automotive OS 就是一个操作系统,简称 AAOS。Android 官网上, Android Auto 这个分类, 是和 Android TV、Web OS by Google 并列。而在 Android 官网开发者页面处,我们能发现更多谷歌意图独立车载系统的想法。 在 Google 官方的「Android developer guide」(安卓开发者引导) 中 , Android Automotive OS 和 Chrome OS 也 是 以 「 OS (operation system,操作系统)」命名的。AAOS 确实是为了解 决 Android 本身在车机方面的一些问题。Automotive OS 采用了 与传统安卓差异较大的显示和交互逻辑 ,「区块」成为 Automotive OS 最基本的设计语言。在操作准确度要求非常高的 车内环境里面,触屏相对孱弱的反馈被谷歌以硕大的图标设计和菜单划分得以补偿。

1. Android Auto

首先,Android Auto 不是 OS。它是集成在 Android OS 里的 feature。当通过 USB、Wi-Fi 将 Android Phone 连接到支持 Android Auto 的车机上后,Android OS 将自动加载支持 Auto 模式下的 App 并将图像投屏到车机屏幕上。

跟 CarPlay 一样,其本质上是投屏。Phone 提供计算、渲染车机只是 Display,Display 和按键回传 Input 的事件,Phone 处理好之后将新的帧数据回传进行 Display。

2. Android automotive OS

Android automotive 是在原手机Android 的系统架构基础上替换为与车相关的模块。主要包括:

  • Car App :包括OEM和第三方开发的App;
  • Car 提供给汽车App特有的接口;
  • Car Service :系统中与车相关的服务;
  • Vehicle Network Service :汽车的网络服务;
  • Vehicle HaL :汽车的硬件抽象层描述。

Android Automotive OS主界面是平均分配的四张功能卡片(Google Map地图、语音助手Google Assistant、电话和应用),随着地图的优先级降低,整体高频车载功能的优先级提高,快捷图标可以最大限度减少驾驶员会分心的情况。车辆重要的功能,如摄像头和车辆控制等放置在靠近驾驶座的左上角,方便司机触达。

3. 传统Android

国内新能源车企,一般采用自研座舱OS的模式,在传统Android版本的基础上修改出具有自身风格的智能座舱操作系统。这样做的好处毋庸讳言,类似手机OS一样,可以带来更大的用户便利性,以及更强的用户黏性。这一点与外资车企具有相当大的不同。我们从国内车企来看,蔚来,小鹏,理想均采用自研OS,基于传统Android版本进行修改。AITO问界采用华为鸿蒙车机,也类似于Android的操作界面。

  • 蔚来

  • 小鹏

  • 理想

  • 问界

那么,厂商根据标准Android版本进行定制化开发,与Android Automotive OS的区别在哪里呢?


咨询ChatGPT的回答如下:

1. 界面设计:Android Automotive OS的用户界面与传统的Android系统有很大的不同。它的界面更加简洁、易于操作,更适合在驾驶过程中使用。

2. 应用程序:Android Automotive OS的应用程序与传统的Android系统也有所不同。它的应用程序更加专注于驾驶和车辆信息,如导航、音乐等,而不是传统Android系统中的社交媒体、游戏等应用。

3. 安全性:Android Automotive OS在安全性方面比传统的Android系统更为重视。它采用了更加严格的安全措施,以确保驾驶过程中的数据和信息安全。

4. 系统架构:Android Automotive OS的系统架构与传统的Android系统也有所不同。它采用了更加模块化的设计,以便于车载设备的集成和维护。

总之,Android Automotive OS是专门为汽车设计的操作系统,相比传统的Android系统,更加注重驾驶和车辆信息的应用,同时也更加注重安全性和系统架构的优化。


目前,还很难说Android automotive OS与厂家基于Android自研修改的OS哪个能脱颖而出。但或许基于不同的市场环境和用户生态,这些智能座舱OS都还在埋头发展,零和游戏的时刻尚未到来。

3.3 Linux

这里的Linux特指非Android的Linux发行版软件,或者基于开源Linux内核所修改而来的厂商自研OS。虽然说Android也是架构在Linux 内核之上的,但由于它早已具有独立而强大的生态,因此一般单独介绍。我们通常提的基于Linux开发新的操作系统是指基于Linux Kernel进一步集成中间件、桌面环境和部分应用软件。

Linux 领域再分为三类:一类是完全独立的开发版本,如特斯拉;二是松散联盟性质的 Genivi;最后是车规级 Linux 的 AGL。

  • 独立开发的Linux

这里的代表之作为Tesla。Tesla的座舱采用x86 CPU+Linux版本。对于不同的车型来说,Telsa交替采用英特尔或AMD的SOC芯片作为座舱SOC,采用自研FSD芯片作为ADAS SOC。它的软件平台基于Linux 内核所打造。

特斯拉的座舱软件平台使用的是基于Linux的自主开发操作系统,称为Tesla OS。这个操作系统是特斯拉自己开发的,基于Debian Linux,但是经过了大量的修改和自定义,以适应特斯拉车辆的特殊需求和功能。Tesla OS不仅包括车辆的座舱软件平台,还包括车辆的控制系统和网络系统等。特斯拉的座舱软件平台是由一组定制的应用程序组成的,包括导航、娱乐、通信、驾驶辅助和车辆设置等。这些应用程序都是基于Tesla OS开发的,可以通过车载屏幕、语音控制和手机应用程序等方式进行访问和操作。

Tesla OS采用Linux 4.4开源操作系统, 支持PyTorch的深度学习编程框架, 基于Kafka开源流实时数据处理平台, 可支持信息娱乐系统(IVI) 和驾驶辅助系统(ADAS) 等。特斯拉选择Linux一方面由于Linux开源自由的优点, 避免受制于操作系统厂商;另一方面则发挥其内核紧凑高效、可以充分发挥硬件性能的优点,满足了特斯拉对汽车性能的要求。

  • Genivi

GENIVI是一个开源的汽车软件联盟,致力于开发和推广开放标准和技术,以支持汽车电子系统的开发和集成。该联盟成立于2009年,由一些主要的汽车制造商、供应商和软件开发公司组成,包括宝马、戴姆勒、通用汽车、飞利浦、英特尔、纳芙特、Wind River、Harman和Bosch等。GENIVI的目标是创建一个基于开放标准的汽车软件平台,以促进汽车电子系统的发展和创新。

GENIVI的软件平台基于开放标准的Linux操作系统,包括许多开源软件组件和工具,如QT、GStreamer、DBus、WebKit、BlueZ、Systemd等。GENIVI的软件平台提供了许多功能,如车载娱乐、导航、通信、驾驶辅助、车辆诊断和远程服务等。该平台还提供了一个开发框架,使开发人员可以快速开发和部署汽车应用程序和服务。

许多汽车制造商和供应商正在使用GENIVI的软件平台,以开发其汽车电子系统。一些使用GENIVI的汽车制造商包括宝马、戴姆勒、通用汽车、PSA、雷诺等。同时,一些汽车供应商和软件开发公司也在使用GENIVI的软件平台,如飞利浦、英特尔、纳芙特、Wind River、Harman、Bosch等。

  • AGL

AGL 即 Automotive Grade Linux,车规级 Linux。成立于 2016 年 1 月,但是第一版 AGL 发布是在 2014 年的 6 月 30 日,实际 上就是 Tizen 的修改版,Tizen 源自三星,Tizen 是三星电子开发 的一款基于 Linux 核心的开放源代码移动操作系统,可适用设备 包括智能手机、平板电脑、智能手表、上网本、车载消息娱乐 设备(IVI)和智能电视。该项目最初由 Linux 基金会以及 LiMo 基金会合力推出,目的在于取代 MeeGo 与 LiMo 平台。在 Linux 基金会中,由技术指导小组(TSG)管理。

AGL 的顶级白金会员有亚马逊、马自达、电装、瑞萨、铃木、丰田、松下。白银会员则有爱信精机、奔驰、福特、高通、 上汽、大众。其他重要会员还有阿尔派、ARM、博世、BOSE、 中国移动、大陆、德赛西威、富士通、本田、现代、三星哈曼、 HERE、日立、GreenHills、英特尔、JVC 建伍、李尔、LG、马瑞 利、Mentor、Microchip、三菱、NEC、东软、日本精机、NXP、 英伟达、三星、先锋、索尼、东芝、Telechips、德州仪器。 目前采用 AGL 的车型主要有新一代奥迪 MIB3TOP、丰田凯美瑞、马自达 3 和斯巴鲁傲虎及力狮。还有一款奔驰的 MPV。 大众在 2019 年 4 月加入 AGL。

AGL 的主要优势之一是它的统一代码库(UCB),这是一个 新的 Linux 发行版,它基于 AGL 和另外两个汽车开源项目:Tizen 和 GENIVI Alliance。UCB 是第二代 Linux 汽车系统。它从底层开 始开发,一直到特定的汽车应用软件。完成了操作系统大约 70% 的工作。

目前 AGL 应用都在 IVI(In-Vehilcs Infotainment)上,AGL 正 努力开拓在仪表和 ADAS 领域,不过这两个领域对实时性要求较高,阻力很大。

  • YOCTO

Yocto是一个开源的嵌入式Linux发行版,它提供了一个开发框架,可以帮助开发人员快速构建定制的Linux系统。Yocto的目标是使嵌入式Linux开发更加简单、快速和可靠,使开发人员能够轻松地创建定制的Linux发行版,以满足特定的嵌入式设备需求。

Yocto项目包括一个工具集,可以用于构建和管理嵌入式Linux系统,包括构建工具链、交叉编译器、调试器、库、应用程序和文件系统等。Yocto还提供了一个强大的软件包管理系统,可以让开发人员轻松地添加、删除和更新软件包。

许多汽车厂商目前仍在使用Yocto,特别是在车载娱乐系统和智能座舱软件的开发中。Yocto提供了一个灵活的开发框架,使开发人员能够快速构建和定制Linux系统,以满足特定的汽车应用需求。同时,Yocto还提供了丰富的软件包和工具,使开发人员能够快速开发和部署嵌入式应用程序。

使用Yocto的汽车厂商有:通用,丰田,福特,雷克萨斯,捷豹路虎等。

根据以上信息可以看到,很多汽车厂商都曾经使用了不止一个Linux发行版本来作为自己旗下车型的智能座舱软件平台。这说明在Linux系统在传统汽车企业中的地位。

3.3 QNX

QNX是目前车载软件中使用得最多的操作系统。

Gordon Bell和Dan Dodge在1980年成立了Quantum Software Systems公司,他们根据大学时代的一些设想写出了一个能在IBM PC上运行的名叫QUNIX(Quick UNIX)的系统,直到AT&T发律师函过来才把名字改成QNX。从QNX的最初命名可以看出,QNX是一种类UNIX的操作系统,其遵守POSIX规范,也就是说在Linux(也遵守POSIX规范)上编写的应用程序可以不作修改重新编译后可以直接在QNX上运行。

2004年,音响设备制造商 Harman 国际工业公司收购了QNX。2010年,黑莓手机(BlackBerry)制造商RIM宣布收购哈曼国际工业集团旗下的QNX软件公司。

在汽车领域,QNX早已是最大的操作系统供应商。据不完全资料显示,QNX在车用市场占有率达到75%,目前全球有超过230种车型使用QNX系统,包括哈曼贝克、德尔福、大陆、通用电装、爱信等知名汽车电子平台都是在QNX系统上搭建的。几乎全球所有的主要汽车品牌包括讴歌、阿尔法-罗密欧、奥迪、宝马、别克、凯迪拉克、雪弗兰、克莱斯勒、戴姆勒、道奇、菲亚特、福特、通用汽车、本田、悍马、现代、英菲尼迪、捷豹、吉普、蓝旗亚、马自达、马赛地、迷你宝马、三菱、尼桑、欧宝、庞迪克、保时捷、萨博、土星、双龙、丰田和大众汽车等目前都采用了基于QNX技术的系统。

QNX的特点

QNX是一个微内核,嵌入式,非开源,安全实时的操作系统。它的软件架构分层如图所示:

从上图可以看到,在硬件层之上,QNX提供了板级支持包BSP,RTOS微内核,软件中间件,以及支撑应用的增强服务层等。

  • 微内核

QNX是典型的微内核结构操作系统, 有一个非常小的微内核Neutrino 约为12K。内核提供了中断处理,定时器处理,线程的建立与调度等任务。另外有一个进程process manager来负责进程的建立和地址空间管理的功能, 与内核运行在内核空间。其他功能模块运行在用户空间。QNX对所有的进程均提供了内存保护, 包括文件系统, 资源管理器, 应用程序等。

QNX是一个典型的RTOS系统,其内核支持实时抢占式调度。

QNX 使用基于优先级的虚拟 CPU 共享模式,每个虚拟 CPU 拥有自己的优先级和时间任务安排序列(scheduling),确保高安全优先级 OS 能够从低优先级 OS 那里抢占更多的物理 CPU 资源。虚拟 CPU 拥有估计资源预算能力,进而在物理 CPU 上实现自适应分区。能够最大化利用硬件资源。

  • 半虚拟化

QNX Hypervisor采用半虚拟化的方式来支持硬件设备的虚拟化操作。在一个双内核虚拟机架构体系中,VM2为Android 虚拟机,VM1 为QNX Host 虚拟机, Hypervisor为 QNX提供的Hypervisor。对于硬件资源的虚拟化,Android VM访问硬件资源可以有2种方式:

1. Front-Back End 服务方式

为避免全虚拟化的性能问题,可以采用 GuestOS 与 Hypervisor 协作的半虚拟化技术。这种技术一般应用于 IO 设备虚拟化, 采用前后端的方式来实现 。在 Guest OS (如 Android VM2) 中实现前端驱动,在 Hypervisor 或 Host OS (如QNX Host VM1) 中实现后端驱动,前后端一般按照 VirtIO 标准来实现,后端驱动作为硬件的实际访问方。

2. Pass-through 直接访问方式

Hypervisor 支持将硬件资源直接分配给其上虚拟机中 VM2 使用,无需通过 Hypervisor 进行地址和指令翻译。例如 : 串口资源、USB 资源等接口比较丰富的资源可以通过 Pass-through 直接分配给某虚拟机使用。设备控制器一般都是以 MMIO 方式来访问的,所以只需要将控制器地址区域映射到 VM 就 可实现设备控制器的分配,同时还需要分配一个设备硬件中断对应的虚拟中断到该 VM,直接透传的方式 就是 VM 独占访问该硬件,所以在性能上是最好的。

  • 功能安全

QNX已经获得了ASIL-D的认证。QNX的安全性和可靠性使其成为满足汽车电子系统安全标准的理想选择。QNX的ASIL-D认证证明了其满足最高级别的汽车安全标准,可以在高度安全性和可靠性的环境中运行。QNX的ASIL-D认证包括QNX Neutrino实时操作系统、QNX Momentics开发工具和QNX Hypervisor虚拟化平台等产品。QNX的ASIL-D认证是基于国际标准ISO 26262开展的,该标准是用于开发汽车电子系统的安全标准。

  • 智能座舱的应用案例

在国内新能源车企的智能座舱软件平台中,由于普遍采用了高通的SOC作为座舱芯片,因此基本会采用QNX+Android双虚拟机的方式。其中一个典型的应用就是QNX实现仪表盘,Android实现中控娱乐屏应用。

底层是采用QNX的hypervisor技术,实现硬件资源的虚拟化。

上层分为2个虚拟机VM。其一是QNX Host,它主要实现仪表盘的图形生成,渲染等任务。根据上述半虚拟化的实现,由QNX实际控制SOC芯片中的GPU和DPU等硬件资源。

由于QNX具有实时性和安全性的特点,它适合为仪表盘功能提供应用服务。

第二个虚拟机是Android VM。由于Android具有良好的生态环境和丰富的应用资源,在中控娱乐屏的使用上具有较大的优势,因此非常适合用于多元化的娱乐域应用场景需求。

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

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

相关文章

SpringCloud 微服务全栈体系(十五)

第十一章 分布式搜索引擎 elasticsearch 五、RestClient 操作文档 为了与索引库操作分离,再次参加一个测试类,做两件事情: 初始化 RestHighLevelClient酒店数据在数据库,需要利用 IHotelService 去查询,所以注入这个接…

【精选】项目管理工具——Maven详解

Maven简介 Maven是一个项目管理工具。它可以帮助程序员构建工程,管理jar包,编译代码,完成测试,项目打包等等。 Maven工具是基于POM(Project Object Model,项目对象模型)实现的。在Maven的管理下…

redis的集群

高可用方案 1、持久化 2、高可用 主从复制 哨兵模式 集群 主从复制: 主从复制是redis实现高可用的基础,哨兵模式和集群都是在主从复制的基础之上实现高可用 主从复制实现数据的多机备份,以及读写分离(主服务器负责写,从服务器…

人工智能给我们的生活带来了巨大的影响?

1. 人工智能从哪些方面给我们带来了影响? 人工智能出现,极大地影响了人类的生活,下面是人工智能所影响的领域: 1. 日常生活 智能家居: AI驱动的设备,如智能扬声器、灯光、恒温器,正在改变我们与家居环境的…

Moonbeam Network已上线原生USDC稳定币

原生USDC已经通过XCM从波卡来到了Moonbeam,该如何利用?此次集成通过把热门的Circle稳定币带来波卡生态,连接了区块链世界与传统金融。现在,用户和开发者可以在Moonbeam网络中踏寻USDC的强大之处。 Moonbeam生态中的Moonwell、FiD…

CPSC发布关于亚马逊含有纽扣电池或硬币电池产品的相关规则标准!UL4200A

2023年9月21日,美国消费品安全委员会(CPSC)在《联邦公报》上发布了纽扣及硬币电池及相关产品的最终规则(DFR)16 CFR 1263,以保护6岁以下儿童免受电池摄入危害。DFR将于2023年10月23日生效,除非消…

redis的性能管理和雪崩

redis的性能管理 redis的数据是缓存在内存当中的 系统巡检: 硬件巡检、数据库、nginx、redis、docker、k8s 运维人员必须要关注的redis指标 在日常巡检中需要经常查看这些指标使用情况 info memory #查看redis使用内存的指标 used_memory:11285512 #数据占用的…

Visual Studio Code 从英文界面切换中文

1、先安装中文的插件,直接安装。 2、点击右下角的 change language restart, 让软件重启即可以完成了。

leetcode:914. 卡牌分组(python3解法)

难度:简单 给定一副牌,每张牌上都写着一个整数。 此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组: 每组都有 X 张牌。组内所有的牌上都写着相同的整数。 仅当你可选的 X > 2 时返回 tru…

基于单片机温湿度PM2.5报警系统

**单片机设计介绍, 基于单片机温湿度PM2.5报警设置系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 单片机温湿度PM2.5报警设置系统是一种智能化的环境检测与报警系统。它主要由单片机、传感器、液晶显示屏、蜂鸣器…

从暗黑3D火炬之光技能系统说到-Laya非入门教学一~资源管理

我不知道那些喷Laya没有浏览器,嘲笑别人编辑器做不好,是什么水平? 首先目前国内除了WPS和飞书,就没有第三家公司能把编辑器做好。 要是一般的游戏开发者,如我,有一点点引擎代码(某项目&#x…

51单片机LED灯渐明渐暗实验

51单片机LED灯渐明渐暗实验 1.概述 这篇文章介绍使用单片机控制两个LED彩灯亮度渐明渐暗效果,详细介绍了操作步骤以及完整的程序代码,动手就能制作的小实验。 2.操作步骤 2.1.硬件搭建 1.硬件准备 名称型号数量单片机STC12C2052AD1LED彩灯无2晶振1…

我的创作纪念日2048天

机缘 在这特殊的日子里,我要庆祝我的 CSDN 创作纪念日——已经坚持了整整2048天! 在这2048天里,我经历了很多成长和收获。作为一名技术写手,我投入了大量的时间和精力来分享我的知识和经验。我曾经写过关于数据库、数据同步、数…

2023年中职“网络安全“—Web 渗透测试①

2023年中职"网络安全"—Web 渗透测试① Web 渗透测试任务环境说明:1.访问地址http://靶机IP/task1,分析页面内容,获取flag值,Flag格式为flag{xxx};2.访问地址http://靶机IP/task2,访问登录页面。…

智能座舱架构与芯片- (11) 软件篇 上

一、智能汽车基础软件平台分类 汽车软件主要分为应用软件和基础软件。应用软件和业务形态高度关联,不同控制器的应用软件之间差异较大。基础软件介于应用软件和硬件之间,用于屏蔽硬件特性、支撑应用软件。可有效地实现应用软件与硬件之间解耦&#xff0…

2023.11.22 -数据仓库

目录 https://blog.csdn.net/m0_49956154/article/details/134320307?spm1001.2014.3001.5501 1经典传统数仓架构 2离线大数据数仓架构 3数据仓库三层 数据运营层,源数据层(ODS)(Operational Data Store) 数据仓库层&#…

全志R128芯片RTOS调试指南

RTOS 调试指南 此文档介绍 FreeRTOS 系统方案支持的常用软件调试方法,帮助相关开发人员快速高效地进行软件调试,提高解决软件问题的效率。 栈回溯 栈回溯是指获取程序的调用链信息,通过栈回溯信息,能帮助开发者快速理清程序执行…

tomcat (SCI)ServletContainerInitializer 的加载原理

问题:使用WebScoket的时候发现通过ServerEndpoint方式注册上去的url无法访问,报错404 经过排查发现在WsServerContainer这个类中的addEndpoint方法一直没有触发ServerEndpoint注解的扫描 通过该方法来源于StandardContext.startInternal()方法的调用如下…

NOIP2015提高组第二轮T1:能量项链

题目链接 [NOIP2006 提高组] 能量项链 题目描述 在 Mars 星球上,每个 Mars 人都随身佩带着一串能量项链。在项链上有 N N N 颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子&#xff0…

无法创建 8192 MB 的匿名分页文件: 系统资源不足,无法完成请求的服务。

好久没用VMware Workstation,今天突然要用,发现所有的虚机在启动的时候提示都提示: 无法创建 XXXX MB 的匿名分页文件:页面文件太小,无法完成操作。 未能分配主内存。 模块"MainMem"启动失败。 未能启动…