NVIDIA ADAS-英伟达Orin芯片介绍

NVIDIA ADAS-英伟达Orin芯片介绍 上篇文章NVIDIA ADAS-英伟达DriveOS入门介绍了英伟达的软件本篇文章来说明下现在英伟达在智能驾驶上已商用最新的硬件芯片****Orin。目前Orin订单火爆上汽的R和智己理想L9、蔚来ET7、小鹏新一代P7威马M7、比亚迪、沃尔沃XC90还有自动驾驶卡车公司智加科技Robotaxi等众多明星企业Cruise、Zoox、滴滴、小马智行、AutoX、软件公司Momonta等等都搭载Orin平台进行开发看阵容就不可小觑可谓地表最强算力芯片。1. 英伟达智驾SoC芯片发展史从2015年开始英伟达开始进入车载SoC和车载计算平台领域为自动驾驶提供基础计算能力。此后英伟达几乎每隔两年发布一款车规级SoC芯片且不断拉升算力水平。2020年Xavier芯片算力为30 TOPS2022年发布的Orin算力为254 TOPS2022秋季GTC大会上发布了新自动驾驶芯片Thor算力为2000TFLOPSFP8、4000TOPSINT8取代了之 前发布的算力达1000TOPS的Altan。也就是说目前商用最新的芯片就是Orin。英伟达使用的车企****阵容强大如下图1.1 Xavier平台NVIDIA在2018年CES上推出了Xavier平台作为Driver PX2 的进化版本。NVIDIA称Xavier 是“世界上最强大的SoC片上系统”Xavier可处理来自车辆雷达、摄像头、激光雷达和超声波等传感器的自主驾驶感知数据能效比市场上同类产品更高体积更小。“NVIDIA® Jetson AGX Xavier™ 为边缘设备的计算密度、能效和 AI 推理能力树立了新的标杆。”2020年4月上市的小鹏汽车P7成为首款搭载 NVIDIA DRIVE AGX Xavier 自动驾驶平台的量产车型小鹏 P7 配备了13 个摄像头、5 个毫米波雷达、12 个超声波雷达集成开放式的 NVIDIA DRIVE OS 操作系统。Xavier SoC基于台积电12nmFinFET工艺集成90亿颗晶体管芯片面积350平方毫米CPU采用NVIDIA自研8核ARM64架构代号Carmel 集成了Volta架构的GPU512个CUDA核心支持FP32/FP16/INT820W功耗下单精度浮点性能1.3TFLOPSTensor核心性能20TOPs解锁到30W后可达30TOPs。Xavier是一颗高度异构的SoC处理器集成多达八种不同的处理器核心或者硬件加速单元。使得它能同时、且实时地处理数十种算法以用于传感器处理、测距、定位和绘图、视觉和感知以及路径规划等任务负载。除了强大的计算资源外Xavier SoC拥有丰富的IO接口资源Xavier的主处理器可以达到ASIL-B级别的功能安全等级需求。Ecotron公司基于NVIDIAXavierSoC和InfineonTC297MCU打造、面向L3/L4级别自动驾驶领域的高性能中央计算平台。按照设计方案考虑Xavier智能处理器用于环境感知、图像融合、路径规划等TC297 MCU用于满足ISO26262功能安全需求ASIL-C/D级别的控制应用场景也即作为Safety Core比如安全监控、冗余控制、网关通讯及整车控制。双XavierTC297 MCU的方案结构图此用法虽然是旧平台的但是其方案之后也是一直继承的即TCXXX的车控芯片独立运行AUTOSAR这里画出了两个域智驾域NVIDIA车控域TC座舱一般直接使用成熟便宜的手机安卓技术了。就看未来是否有中央式架构实现的可能了目前还是三域架构。1.2 Orin平台2019年12月英伟达发布了新一代面向自动驾驶和机器人领域Orin芯片和计算平台。具有ARM Hercules CPU内核和英伟达下一代GPU架构。Orin SoC包含170亿晶体管晶体管的数量几乎是Xavier SoC的两倍具有12个ARM Hercules内核将集成Nvidia下一代Ampere架构的GPU提供200 TOPSINT8性能接近Xavier SoC的7倍Orin SOC将在2021年提供样片2022年正式面向车厂量产。2020年5月GTC上英伟达介绍了即将发布的新一代自动驾驶Drive AGX Orin平台它可以搭载两个Orin SoC和两块NVIDIA Ampere GPU可以实现从入门级ADAS解决方案到L5级自动驾驶出租车Robotaxi系统的全方位性能提升平台最高可提供2000TOPS算力。未来L4/L5级别的自动驾驶系统将需要更复杂、更强大的自动驾驶软件框架和算法借助强劲的计算性能Orin计算平台将有助于并发运行多个自动驾驶应用和深度神经网络模型算法。作为一颗专为自动驾驶而设计的车载智能计算平台Orin可以达到ISO 26262 ASIL-D等级的功能安全标准。借助于先进的7nm制程工艺Orin拥有非常出色的功耗水平。在拥有200TOPS的巨大算力时TDP仅为50W。NVIDIA Orin处理器功能模块图下表是Jetson AGX Orin的片上系统的性能参数image.png1.3 Thor平台NVIDIA DRIVE Thor是NVIDIA新一代集中式车载计算平台可在单个安全、可靠的系统上运行高级驾驶员辅助应用和车载信息娱乐应用。DRIVE Thor 超级芯片借助我们新的 CPU 和 GPU 突破可提供出色的 2000 万亿次浮点运算性能同时降低总体系统成本计划于2025年开始量产。可以看到三域开始变两域了智驾和座舱统一了一统天下看来指日可待了就需要利用安全技术解决最后一个车控MCU就可以了。DRIVE Thor 还在深度神经网络准确性方面实现了令人难以置信的飞跃。Transformer 引擎是NVIDIA GPU Tensor Core的新组件。Transformer 网络将视频数据作为单个感知帧进行处理使计算平台能够随着时间的推移处理更多数据。该SoC能够进行多域计算这意味着它可以划分自动驾驶和车载信息娱乐的任务。这种多计算域隔离可以让并发的时间关键进程不间断地运行。在一台计算机上车辆可以同时运行Linux、QNX和Android。通常这些类型的功能由分布在车辆各处的数十个电子控制单元控制。制造商现在可以利用 DRIVE Thor隔离特定任务的能力来整合车辆功能而不是依赖这些分布式ECU。所有车辆显示器、传感器等都可以连接到这个单一SoC从而简化了汽车制造商极其复杂的供应链。参考https://blogs.nvidia.com/blog/drive-thor/2. Orin架构介绍以 Orin-x 为例其中的 CPU 包括基于Arm Cortex-A78AE的主CPU 复合体它提供通用高速计算能力以及基于Arm Cortex-R52的功能安全岛FSI它提供了隔离的片上计算资源 减少了对外部 ASIL D 功能安全 CPU 处理的需求。GPU 则是NVIDIA®Ampere GPU为 CUDA 语言提供高级并行处理计算能力并支持多种工具 如 TensorRT一种深度学习推理优化器和运行时可提供低延迟和高吞吐量。Ampere 还提供最先进的图形功能包括实时光线跟踪。域特定硬件加速器DSA是一组专用硬件引擎旨在从计算引擎中卸载各种计算任务并以高吞吐量和高能效执行这些任务。整个芯片内部架构设计主要是按分块进行功能设计区分。包括操作系统底层软件QNX BSP时钟Clock源系统重启、CAN/SPI/I2C/GPIO/UART控制器、配置寄存器、系统配置、实时运行系统QNX RTOS、Nv多媒体处理模块传感器处理模块MCUR5、PVA、DLA、Audio Processor、MCU R5配置实时相机输入、经典Autosar处理模块用于Safety Island Lock-Step R52s、安全服务Safety ServiceARM Cotex-A78AE CPU Complex、CPU Switch fabric Coherent、信息安全PSC、神经网络处理模块CUDA TensorRT。下图显示了 SoC 的高级架构分为三个主要处理复合体CPU、GPU 和硬件加速器。2.1 CPU相关Orin系统架构中CPU从之前自研的Carmel架构回到了到5纳米工艺的ARM Cortex-A78上。Orin-x中CPU包括12个Cortex-A78可以提供通用的目标高速计算兼容性。同时Arm Cortex R52基于功能安全设计FSI可以提供独立的片上计算资源这样就可以不用增加额外的 CPUASIL D芯片用来提供功能安全等级。CPU 族群所支持的特性包括 Debug 调试电源管理Arm CoreLink 中断控制器错误检测与报告。CPU需要对芯片进行整体性能监控每个核中的性能监控单元提供了六个计算单元每个单元可以计算处理器中的任何事件。基于 PMUv3 架构上在每个 Runtime 期间这些计算单元会收集不同的统计值并运行在处理器和存储系统上。2.2 GPUOrin采用了新一代的Ampere架构GPU由2个GPCGraphics Processing Clusters图形处理簇组成。每个GPC又包含4个TPCTexture Processing Clusters 纹理处理簇每个TPC由2个SMStreaming Multiprocesor流处理器组成下图为Orin的GPU架构。每个SM有192KB的L1缓存和4MB的L2缓存包含128个CUDACore和4个TensorCore。因此Orin总计2048个CUDACore和64个Tensor CoreINT8稀疏算力为170 TOPSTensor Core提供INT8稠密算力为54TOPSFP32算力为5.3TFLOP由Cuda Core提供。NVIDIA Ampere GPU 可以提供先进的并行处理计算架构。开发者可以使用 CUDA 语言进行开发后续将对CUDA架构进行详细说明并支持 NVIDIA 中各种不同的工具链如开发 Tensor Core 和 RT Core 的应用程序接口。一个深度学习接口优化器和实时运行系统可以传递低延迟和高效输出。Ampere GPU 同时可以提供如下一些的特性来实现对高分辨率、高复杂度的图像处理能力如实时光流追踪。稀疏化细粒度结构化稀疏性使吞吐量翻倍减少对内存消耗。浮点处理能力每个时钟周期内可实现 2 倍 CUDA 浮点性能。缓存流处理器架构可以增加 L1 高速缓存带宽和共享内存减少缓存未命中延迟。提升异步计算能力后 L2 缓存压缩。2.3 加速器特定域硬件加速器DSAs、DLA、PVA是一组特殊目的硬件引擎实现计算引擎多任务、高效、低功率等特性。计算机视觉和深度学习簇包括两个主要的引擎可编程视觉加速器 PVA和深度学习加速器 DLA而在最新的中级算力 Orin n 芯片则取消了 DLA 处理器。PVA 是第二代 NVIDIA视觉DSP架构它是一种特殊应用指令矢量处理器这种处理器是专门针对计算机视觉、ADAS、ADS、虚拟现实系统。PVA 有一些关键的要素可以很好的适配预测算法领域且功耗和延迟性都很低。Orin-x需要通过内部的R核Cortex-R5子系统可以用于 PVA 控制和任务监控。一个 PVA 簇可以完成如下任务双向量处理单元VPU带有向量核指令缓存和 3 矢量数据存储单元。每个单元有 7 个可见的插槽包含可标量和向量指令。此外每个 VPU 还含有 384 KBytes的3端口存储容量。DLA 是一个固定的函数引擎可用于加速卷积神经网络中的推理操作。Orin-x 单独设置了 DLA 用于实现第二代 NVIDIA 的 DLA架构。DLA支持加速 CNN 层的卷积、去卷积、激活、池化、局部归一化、全连接层。最终支持优化结构化稀疏、深度卷积、一个专用的硬件调度器以最大限度地提高效率。2.4 第二代视觉加速器PVA和VICOrin中对PVA进行了升级包括双7路VLIW超长指令字矢量处理单元、双DMA和Cortex-R5支持计算机视觉中过滤、变形、图像金字塔、特征检测和FFT等功能。Orin还包含一个Gen 4.2视频成像合成器(Video Imaging CompositorVIC) 2D 引擎支持镜头畸变校正和增强、时间降噪、视频清晰度增强、像素处理色彩空间转换、缩放、混合和合成等图像处理功能。为了调用Orin SoC上的多个硬件组件PVA、VIC、CPU、GPU、 ENC等英伟达开发了视觉编程接口( Vision Programming InterfaceVPI)。作为一个软件库VPI附带了多种图像处理算法如框过滤、卷积、图像重缩放和重映射和计算机视觉算法如哈里斯角检测、KLT 特征跟踪器、光流、背景减法等。2.5 内存和通讯image.png上图显示了Orin各组件中通过内存控制器结构Fabric和DRAM如何通讯和数据交互。Orin最高支持64GB的256位LPDDR5和64GB的eMMC。DRAM支持3200MHz的最大时钟速度每个引脚6400Gbps支持204.8GB/s的内存带宽是Xavier内存带宽 memory bandwidth 的1.4倍、存储storage的2倍。3. 基于Orin的自动驾驶平台架构设计常规的 SOC 系统架构通常是包含有常规的 SOCMCU 双芯片甚至三芯片的方式进行设计的。SOC 由于计算性能上的优势一般在前端感知、规划中的计算应用场景比 MCU 更好。MCU由于具备较高的功能安全等级可以作为控制执行的校验输出。业界对于英伟达芯片是否可以单纯作为类似 TDA4 一样的超异构芯片而独立承担任务 一直都是褒贬不一的。原则上从无论 Xavier 还是 Orin 系列英伟达系列芯片设计都兼具丰富的 AI 和 CPU 算力能力。考虑 L2级别以上的自动驾驶系统开发而言这种能力都是可以完全适配整个方案设计的。可能是对于安全要求较高的车控MCU不光是技术上先进就可以替代主要还是装机量需要用起来安全才可以。3.1 安全考虑可以看到基本R52核实现的安全岛达到了ASIL-D其他基本还是只满足ISO 26262。所以需要一个SMCU作为辅助实现车控域。如英飞凌 Aurix TC系 列瑞萨的 RH850 系列都可以充当 MCU 实现对 Orin 的 SMCU 接入。这样的 SMCU 实际是可以充当整个系统开发的电源控制和严重失效故障规避的。在英伟达卖的开发平台上就可以看到SMCU TC397的身影如下图通过可信安全加载技术ATF中BL1存入ROM里面有BL2的安全校验然后形成链式安全加载。包括 u-boot 在内的所有低级引导步骤都可以通过签名的二进制文件来确保安全。它们的密钥可以存储在 CPU 中的一次性可编程保险丝中。U-boot 本身可以配置为使用签名的FIT 映像从而提供一个安全的引导链一直到 Linux 内核。初始 ROM 引导加载程序和 TegraBoot 也都支持完全冗余的引导路径。3.2 FSI介绍上图显示了如何在英伟达系列芯片中加载 FSI 及底层相关模块驱动引导程序。英伟达系列芯片在功能安全设计上Orin 系列通过制定目标实现 ASIL D 系统能力设计和ASIL B/D 随机错误管理能力设计。包括基于 SOC 芯片硬件的 ASIL 分解需求到各个核确保核间设计一致性可以满足 ASIL D 需求并应用标准的 ASIL D 开发流程到整个功能安全设计中从底之上分别对安全流程、Drive AGX、操作系统 Drive OS、Drive Work、传感器、冗余架构设计、安全策略几个方面分别进行相应的安全设计。英伟达系列芯片的**功能安全岛FSI**是一个包含Cortex-R52和Cortex-R5F real的处理器集群并具有专用 I/O 控制器的时间处理器的核心。例如Orin-X 中的 FSI 模块具有自己的电压轨、振荡器和PLL、SRAM以确保与 SOC 内部的其他模块相互作用最小并实现如上模块相互之间无干扰。Cortex-R52处理器也称为安全CPU具有 DCLS双核锁步模式下的 4 个内核共 8 个物理内核可运行经典 AUTOSAR 操作系统实现错误处理、系统故障处理和其他客户工作负载综合性能约为 10KDMIPs。Cortex-R5F处理器也称为加密硬件安全模块CHSM用于通过 CAN 接口运行加密 和安全用例如安全车载通信SecOC。整个FSI机制上总体包含有如下的一些安全指令和控制接口信息1、安全和 CHSM CPU 每个核心的紧密耦合内存、指令和数据缓存。2、安全岛上总共有 5MB 的片上专用 RAM以确保代码执行和数据存储可以保持在 FSI 内。3、岛上有专门用于与外部组件通信的专用 I/O 接口。包含1个 UART4 个 GPIO 口。4、硬件安全机制如 FSI 内所有 IP 的 DLS、CRC、ECC、奇偶校验、超时等。专用热、电压和频率监测器。5、逻辑隔离确保与 SoC 的其他部分有足够的错误恢复时间FFI。3.3 TESCTegra是英伟达芯片中特有的信息安全芯片内核Tegra Security Controller(TESC)是一种信息安全子系统他有自己的可信任根ROM、IMEM、DMEMCrypto 加速器AES、SHA、RNG、PKA关键链路和关键存储。TSEC 提供了一个**片上TEE可信任执行环境**可以运行NVIDIA-标记的为处理代码。TSEC是一种典型的安全视频回放解决方案下载信息安全运行所需的HDCP1.x 和2.x连接授权和完整的线端连接检测。1线端HDMI 1.4上的HDCP 1.4和 线端HDMI 2.3上的HDCP 2.0 2.1HDCP连接管理没有暴露受保护的内容也无需运行在CPU上的软件钥匙。用于 HDCP 链路管理的两个软件可编程独立指令队列最多可容纳 16 条指令整个芯片能够独立于播放器在 HDCP 状态检查失败时禁用 HDMI 输出。2平台安全控制器他是一个高安全子系统他可以保护和管理SOC中的资产钥匙、保险丝、功能、特性并提供可信任的服务提升自由的抵御对 SOC 的攻击并可以提高对子系统本身的软件和硬件攻击的保护水平。3钥匙管理和保护PSC 将是唯一可以访问芯片中最关键秘钥的机制。该子系统代表了 Orin-x 中最高级别的保护并且该子系统本身对各种软件和硬件攻击具有高度的弹性。4授信服务例如在 SOC 安全启动期间主要的 PSC 服务可以完成有效的安全身份验证、提供额外的密钥/ID/数据、密钥访问和管理、随机数生成和授信的时间报告。5信息安全监控。PSC 将负责定期的安全管理任务包括持续评估 SOC 的安全状态主动监控已知或潜在的攻击模式例如电压故障或热攻击降低硬件攻击风险并在检测到有攻击的情况下采取有效的措施。PSC 将能够接受各种软件更新来作为解决方法以提高现场系统的稳健性。3.4 安全引擎SE安全引擎SE中有两种情况针对软件使用是有用的。其一TZ-SE只能被可信任区域软件所访问。其二NS/TZ-SE可配置用来被可信任的软件区域或非安全软件所访问。安全引擎SE可以为各种加密算法提供硬件加速以及硬件支撑密钥保护。SE提供的加密算法可以被软件用来建立加密协议和安全特性。所有加密运算都是基于国际标准技术协会NIST批准的加密算法。英伟达的安全引擎SE可支持包含如下的所有信息安全保障能力NIST合规的对称以及非对称加密和哈希算法、侧信道对策AES/RSA/ECC、独立并行信道、硬件钥匙访问控制KAC基于规则增强硬件访问控制的对称钥匙、16xAES4xRSA/ECC钥匙孔、硬件密钥隔离仅针对AES钥匙孔、读保护仅针对AES钥匙孔、硬件钥匙孔函数、密钥包装/解包功能AES-AES钥匙孔、钥匙从钥匙孔分离KDF-AES钥匙孔、随机钥匙生成RNG-AES钥匙孔。4. GPU编程CUDAimage.png上图表示了 CUDA 架构示意图表示了CPUGPU应用程序CUDA 开发库运行环境驱动之间的关系4.1 GPU软件架构自动驾驶领域使用的 AI 算法多为并行结构。AI 领域中用于图像识别的深度学习、用于决策和推理的机器学习以及超级计算都需要大规模的并行计算更适合采用 GPU 架构。由于神经网络的分层级数通常隐藏层的数量越多神经网络模拟的结果越精确会很大程度的影响其在预测结果。擅长并行处理的 GPU 可以很好的对神经网络算法进行处理和优化。因为神经网络中的每个计算都是独立于其他计算的这意味着任何计算都不依赖于任何其他计算的结果所有这些独立的计算都可以在 GPU 上并行进行。通常 GPU 上进行的单个卷积计算要比 CPU 慢但是对于整个任务来说CPU 几乎是串行处理方式需要要逐个依次完成因此其速度要大大慢于 GPU。因此卷积运算可以通过使用并行编程方法和GPU来加速。英伟达通过CPUGPUDPU形成产品矩阵全面发力数据中心市场。利用 GPU 在AI 领域的先天优势英伟达借此切入数据中心市场。针对芯片内部带宽以及系统级互联等诸多问题英伟达推出了 Bluefield DPU 和 Grace CPU提升了整体硬件性能。对于英伟达的GPU而言一个GPC中有一个光栅引擎ROP和 4 个纹理处理集群TPC每个引擎可以访问所有的存储。4.2 CUDA编程CUDACompute Unified Device Architecture统一计算架构作为连接 AI 的中心节点CUDAGPU 系统极大推动了 AI 领域的发展。搭载英伟达 GPU 硬件的工作站Workstation、服务器Server和云Cloud通过 CUDA软件系统以及开发的 CUDA-XAI 库为自动驾驶系统 AI 计算所需要的机器学习、深度学习的训练Train和推理Inference提供了对应的软件工具链来服务众多的框架、云服务等等是整个英伟达系列芯片软件开发中必不可少的一环。CUDA 是一个基于英伟达 GPU 平台上面定制的特殊计算体系/算法一般只能在英伟达的 GPU 系统上使用。这里从开发者角度我们讲讲在英伟达 Orin 系列芯片中如何在 CUDA架构上进行不同软件级别开发。从CUDA 体系结构的组成来说它包含了三个部分开发库、运行期环境和驱动。“Developer Lib 开发库”是基于 CUDA 技术所提供的应用开发库。例如高度优化的通用数学库即cuBLAS、cuSolver 和 cuFFT。核心库例如 Thrust 和 libcu通信库 例如 NCCL 和 NVSHMEM以及其他可以在其上构建应用程序的包和框架。“Runtime 运行期环境”提供了应用开发接口和运行期组件包括基本数据类型的定义和各类计算、类型转换、内存管理、设备访问和执行调度等函数。“Driver 驱动部分”是 CUDA使能GPU的设备抽象层提供硬件设备的抽象访问接口。CUDA 提供运行期环境也是通过这一层来实现各种功能的。在 CUDA 架构下一个程序分为两个部份host端和device端。Host端是指在 CPU 上执行的部份而 device端则是在显示芯片GPU上执行的部份。Device 端的程序又称为 “kernel”。通常 host 端程序会将数据准备好后复制到显卡的内存中再由显示芯片执行 device 端程序完成后再由 host 端程序将结果从显卡的内存中取回。这里需要注意的是由于 CPU 存取显存时只能透过 PCI Express 接口因此速度较慢 PCI Expressx16 的理论带宽是双向各 4GB/s因此不能经常进行以免降低效率。基于以上分析可知针对大量并行化问题采用 CUDA 来进行问题处理可以有效隐藏内存的延迟性 latency且可以有效利用显示芯片上的大量执行单元同时处理上千个线程 thread。因此如果不能处理大量并行化的问题使用 CUDA 就没办法达到最好的效率了。对于这一应用瓶颈来说英伟达也在数据存取上做出了较大的努力提升。一方面优化的CUDA 改进了DRAM 的读写灵活性使得GPU与CPU的机制相吻合。另一方面CUDA提供了片上on-chip共享内存使得线程之间可以共享数据。应用程序可以利用共享内存来减少 DRAM 的数据传送更少的依赖 DRAM 的内存带宽。此外CUDA 还可以在程序开始时将数据复制进GPU 显存然后在 GPU 内进行计算直到获得需要的数据再将其复制到系统内存中。为了让研发人员方便使用 GPU 的算力英伟达不断优化 CUDA 的开发库及驱动系统。操作系统的多任务机制可以同时管理 CUDA 访问 GPU 和图形程序的运行库其计算特性支持利用 CUDA 直观地编写 GPU 核心程序。#参考资料https://zhuanlan.zhihu.com/p/624945555https://www.dongchedi.com/article/7082163191400219149https://icv.51cto.com/posts/820https://icv.51cto.com/posts/1445https://www.nvidia.cn/self-driving-cars/hardware/后记对于软件开发人员学习SoC架构也是非常有用的在制定软件方案的时候需要参考硬件上有那些通路性能是否可以满足有那些硬件可以利用来支撑功能实现。在驱动开发的时候需要罗列那些硬件模块的需求需要开发驱动对上层提供的服务要达到什么程度形成封装API接口。本篇文章为了更加全面准确的介绍Orin除了参考官网的资料外参考了大量他人的文章见参考资料章节对于芯片更细节的东西需要注册英伟达官网账号甚至购买后有芯片的data sheet和FAE支持这里不涉及。芯片研发和使用需要大量人力物力这里虽只是冰山一角都这么多也写的比较流水账大家多多担待。声明大家可能注意到我在文章中插入了广告不过基本不影响大家的阅读。这里说下本公众号的初衷这里算卖个情怀学习老美的技术帮助国人。即使有商业化也不会影响大家的学习阅读本公众号也不搞付费阅读卖课等影响大家学习的事所有的知识不用付一分钱都可以看到。本人也不属于任何商业集团不搞错误的商业引导实现自己的价值更加重要任何其他公众号都可以申请全局****零成本的转载不忘初衷持续分享。“啥都懂一点啥都不精通干啥都能干干啥啥不是专业入门劝退堪称程序员杂家”。欢迎各位有自己公众号的留言申请转载多谢后续会继续更新纯干货分析欢迎分享给朋友欢迎点赞、收藏、在看、划线和评论交流公众号“那路谈OS与SoC嵌入式软件”欢迎关注个人文章汇总https://thatway1989.github.io