MCU

MCU是Microcontroller Unit(微控制器单元)的缩写,它是一种集成了中央处理器(CPU)、存储器(ROM、RAM)、输入/输出端口(I/O)、定时器(Timer)、串行通信接口(UART、SPI、I2C等)和其他外围设备控制器的单个芯片。MCU通常用于嵌入式系统中,用于控制各种电子设备和系统。

由于其集成度高、体积小、功耗低以及成本相对较低等特点,MCU被广泛应用于各种嵌入式系统中,例如智能家居设备、医疗设备、汽车电子系统、工业自动化等。MCU的选择通常基于应用的需求,如处理性能、功耗、外设接口等因素。

瑞萨电子在2023年10月底推出强大的RA8系列MCU,具备突破性的3000 CoreMark,并可满足客户应用所需的完全确定性、低延迟及实时操作要求。RA8系列MCU同时也是业界首款采用Arm® Cortex®-M85处理器的产品,能够提供卓越的6.39 CoreMark/MHz性能——这一性能水平将使系统设计人员能够使用RA MCU替代应用中常用的微处理器(MPU)。全新系列产品是广受欢迎的基于Arm Cortex-M处理器的RA产品家族中的一员。此外,为其它RA产品构建的现有设计可以轻松移植到新型RA8 MCU上。

新型RA8系列MCU部署了Arm Helium™技术,即Arm的M型矢量扩展单元(M-profile Vector Extension——MVE)。MVE是ARM v8.1M架构中非常重要的一部分。目前ARM v8.1M架构下的内核包括Cortex®-M52、Cortex®-M55、Cortex®-M85三种。下面的表格Arm Cortex-M Processor Comparison Table详细展示了从Arm®v6到Arm®v8.1M内核之间的不同。可以容易地发现,Cortex®-M85是目前性能最强的Arm® Cortex®-M内核MCU。

1.jpg

您可点击链接打开获取该表格原文:

Arm Cortex-M Processor Comparison Table

https://armkeil.blob.core.windows.net/developer/Files/pdf/product-brief/arm-cortex-m-processor-comparison-table.pdf 

Arm v8.1-M架构是Arm v8-M架构的扩展版本。除了新的矢量指令集架构(Helium)以外,还有几个其他新特性:

  • 循环和分支增强的附加指令集(低开销分支扩展,Low Overhead Branch Extension)。

  • 支持半精度浮点指令。

  • 调试功能增强,包括性能监测单元(Performance Monitoring Unit,PMU)和针对信号处理应用程序开发的调试附加功能支持。

  • 用于FPU的TrustZone管理增强指令集。

  • 非特权调试扩展。

  • 内存保护单元(Memory Protection Unit,MPU)提供了一个新的内存属性,即“特权模式下永不执行”(Privileged eXecute Never,PXN)的属性。这允许当CPU处于特权模式下时阻止执行任意代码,而这些代码可能已经写入了用户空间。这是一个重要的安全特性。

  • 可靠性、可用性及可维护性(Reliability,Availability and Serviceability,RAS)扩展。

引入Helium是为了在Cortex®-M内核MCU上实现更高效的DSP类和机器学习操作。它和Cortex®-A内核MPU中Neon有很多相似之处。Neon和Helium都使用FPU中的寄存器作为矢量寄存器。两者都使用128位向量,并且许多向量处理指令对于两种体系结构都是通用的。然而,Helium是一种全新的设计,可在小型处理器中实现高效的信号处理性能。它为嵌入式用例提供了许多新的架构功能,因为它针对面积(成本)和功耗进行了优化,为M-Profile架构带来了类似Neon的功能(Cortex-A的SIMD注指令)。Helium经过优化,可有效利用较小Cortex-M内核中的所有可用硬件。下表详细给出了Helium和Neon之间的对比信息。

Helium与Neon对比表

2.jpg

注:SIMD(Single Instruction Multiple Data)即单指令多数据,表示在该硬件中的多个处理单元中可以同时对多个数据项执行相同的操作,也就是说,CPU可以同时执行并行计算,但只有一个指令正在执行。这是数据级的并行。

目前有许多系统将Cortex-M处理器和专用可编程的DSP处理器结合来使用。Helium允许这样的系统只用一个处理器来实现。这样做有如下优点:

  • 从软件开发的角度来看,它允许使用单个工具链,而不是分别对CPU和DSP使用各自的编译器和调试器。这就意味着程序员只需要熟悉一种架构。

  • 消除了对处理器间通信的需求,这点可能非常重要,因为要对实时交互的两个运行时处理器中的不同软件进行调试既困难也耗时。

  • Cortex-M系列的CPU相比专用DSP而言,更易于编程。

  • 在硬件设计层面,使用一个处理器(而不是两个处理器)可以简化系统,从而减少芯片面积和成本,并缩短开发周期。

在详细介绍Helium之前,我们现在来聊聊标量和矢量的概念。

数学和物理世界中的观点

标量是一个只要大小的量

- 比如纯数字,质量,速率,温度,体积等

矢量是一个有大小而且有方向的量

- 比如速度,加速度,位移,重力,摩擦力等

计算机科学世界中的观点

标量(处理器)是一次性处理一个数据元素的处理器。

- 通常用来处理通用的计算任务,如文字处理和电子表格。

- 功耗低,价格便宜。

矢量(处理器)是一次性对多组数据(每组一般为两个数据)成批地进行同样的运算,得到一批结果的处理器。如一次将100个加数与100个被加数相加,同时得到100个和的运算。

- 对于图像,视频,音频数据处理等需要并行处理大量数据的任务特别有用。

- 也可用于科学计算,加速复杂算法的处理。

- 功耗高,价格稍高。

Helium寄存器、数据类型和通道

Helium寄存器是128位的,一共有8个Helium寄存器,寄存器数量不可修改。它和浮点单元(FPU)共同使用。在FPU中使用S0~S31来访问32个单精度(32位)寄存器,同样的硬件寄存器也可看做16个双精度(64位)寄存器D0~D15。例如,D0和S0、S1共用64位相同的硬件寄存器。在Helium架构中,Helium使用8个矢量寄存器Q0~Q7。这就意味着,Helium寄存器Q0和S0~S3、D0~D1浮点寄存器使用相同的物理寄存器,Q1和S4~S7、D2~D3浮点寄存器使用相同的物理寄存器,其他Helium寄存器以此类推。因为Helium寄存器重用了标量FPU寄存器,所以当发生异常时无须使用额外的资源去保存和恢复这些寄存器(同样不影响中断延迟)。

3.png

每个Helium寄存器都可以划分为8位,16位,32位宽的通道。每个通道可以被一条指令看作:

  • 整型数值(8/16/32位宽)

  • 定点饱和值(Q7/Q15/Q31)

  • 浮点数值(半精度FP16/单精度FP32)

4.png

下图是一个矢量寄存器相加的示例。Helium寄存器q5和q0都是8个int16的元素数据(8个通道),将他们相加的结果存在q0中。

5.png

Helium允许矢量中的每个通道有条件地执行,这称作通道预测。矢量预测状态和控制寄存器(VPR)保存每个通道的条件值。某些矢量指令(比如矢量比较VCMP)可以改变VPR中的条件值,当这些条件值被设置好以后,接下来就可以使用VPT(矢量条件预测)指令,以每个通道为基础在矢量预测中实现条件执行。

来源:瑞萨嵌入式小百科

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 38

有时候,我们不想让程序存储在起始的位置,比如我们有一段bootloader,对应的app(应用程序)存储的位置就会有一个偏移地址。

那么,我们如何让程序存储在指定的偏移地址呢?

下面结合STM32,讲述在Keil和IAR开发环境中设置起始地址0x08010000的方法。

Keil配置方法

打开工程目标选项:Project -> Options for Target -> Target。

修改目标ROM起始地址。如下图:

1.png

说明:

1.勾选的IROM即对应的存储区域;

2.起始地址(Start)和大小(Size)根据你实际情况进行配置;

IAR配置方法

类似方法,进入配置界面:A.进入配置界面:Pooject -> Options -> Linker -> Config;B.勾选上“Override default”;C.点击“Edit”,修改ROM起始地址为;D.点击“Save”保存(第一次修改后,xxx.icf文件名和路径都选择默认)。具体如下图:

2.png

验证代码存储地址

对于STM32芯片来说,可以直接使用STM32 ST-LINK Utility(或者STM32CubeProg)工具读取FLASH数据验证代码是否存储在相应地址位置。

其他厂家芯片可以使用对应可以读取FLASH数据的工具来验证。

如下图:

3.png

从上图可以看见,代码是从0x08010000 起始存储的。查看前面的存储区域,可以发现数据全是0xFFFF,也就是说没有被代码占用这些扇区。

来源:strongerHuang

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 45
5月13日,雅特力推出全新车载型AT32A423系列MCU,高度整合各种外设资源,具有高效能、多尺寸封装和功能丰富等特点,并已通过AEC-Q100车规级可靠度认证,加强实现车载应用的功能性和可靠性。

AT32A423系列搭载ARM®Cortex®-M4内核,主频高达150MHz,内建单精度浮点运算FPU,带MPU和DSP指令集,提高数据处理效率;高达256KB Flash和48KB SRAM,提供多容量存储空间,便于添加开发新功能,成为新能源车用电子产品中优化设备的理想选择,广泛用于行车记录仪、车用影音、ADAS辅助驾驶、360全景、汽车中控、脚踢尾门控制、充电桩等各式车用场景。

1.png

AT32A423系列整合高效模拟组件,提供5.33 Msps高速ADC、2组12-bit DAC和14个通道高速DMA控制器,提升数据交互传输效率,功能反馈更实时。为减化系统设计,片上集成多个通讯接口,提供8个USART,便于对接多种传感器,且TX/RX可配置引脚互换;带3个I²C,3个SPI,均可复用为半双工I²S模式;内建可校准的增强型RTC实时时钟,具有自动唤醒、闹钟、亚秒级精度、及硬件日历等功能,并支持高精度定时计数器,使其灵活运用扩展功能。同时提供2组CAN、USB OTG、IRTMR和多达87个快速GPIO口等,且XMC作为LCD并口,兼容于8080/6800模式,可用于TFT LCD控制器及各种多媒体接口,充份满足车载影音多媒体、仪表板等应用需求。此外,AT32A423系列工作温度范围-40~105℃,对复杂的工作环境适应性强,符合车用电子高可靠性和稳定性需求。

2.png

近日,国际公认的测试、检验和认证机构SGS为雅特力科技颁发了AEC-Q100认证证书。作为全球汽车电子行业的黄金标准,AEC-Q100的严苛测试确保了AT32A423系列产品在不同极端环境下的可靠性和耐久性,不仅彰显了雅特力科技在汽车电子领域的卓越品质和技术实力,也为其在汽车电子领域的应用打开了广阔的前景。

3.png

▲SGS为雅特力科技颁发AEC-Q100认证证书

4.png


▲AEC-Q100颁证合影

雅特力完善丰富的生态系统为产品开发提供有力的支持,包括AT32调试量产工具、技术文件、软硬件平台,如AT-START开发板、AT-Link Family编程调试工具等,以及BSP标准库、ICP/ISP程序烧写工具、AT32 IDE、AT32 Workbench等图形化(GUI)开发工具软件资源,同时支持Keil、IAR、Eclipse等第三方开发工具平台与RT-Thread、FreeRTOS及LVGL等OS/UI平台,供Tier1等方案商快速开发车规应用项目,简化产品量产时程和成本。

AT32A423是继首款AT32A403A车规级MCU后,推出的第二款车规级系列MCU,两款产品均通过AEC-Q100车规级可靠性认证,满足车载用户日益增长的产品需求,为汽车行业提供更加智能、高效的解决方案。AT32A423系列提供了LQFP100、LQFP64、LQFP48、QFN48、QFN32等多个封装和型号供选择,目前已开始提供样片和开发板,并正式投入量产供货。

来源:AT32 MCU 雅特力科技

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 15

2024年4月24日上午,武汉芯源半导体有限公司与上海科学技术职业学院共同举办的“CW32嵌入式创新实验室揭牌仪式”在上海科学技术职业学院第二会议室隆重举行。

1.png

活动现场,武汉芯源半导体与上海科技职业学院的领导及嘉宾齐聚一堂,共同见证了这一历史时刻。武汉芯源半导体北中区销售总监孙秀艳、CW32产业应用专家李家庆、CW32生态社区李工,以及上海科学技术职业学院教务处处长邵汝军、继续教育学院院长张华、通信与电子工程学院院长褚结等领导出席了揭牌仪式。

2.png

作为中国本土的MCU厂商,武汉芯源半导体始终坚持以创新驱动发展,专注32位MCU芯片设计,致力于提供本土化、工业级、高品质、低成本的集成电路产品。而上海科学技术职业学院作为培养高素质技术技能人才的摇篮,对嵌入式技术领域的教育和培训同样倾注了极大的心血。此次揭牌仪式的成功举办,体现了双方在推动嵌入式技术创新和人才培养上的共同理念和坚定决心,为培养集成电路创新型应用人才、推动国产芯片产业发展注入新动力。

3.png

此次合作,“CW32嵌入式创新实验室”将成为企业和学校之间的桥梁和纽带,双方也将对各自优势资源进行有机结合,为双方共同探索集成电路领域的前沿技术、推动产学研一体化进程提供有力支持。

未来,武汉芯源半导体将与更多高校进行合作,不断完善嵌入式创新实验室的建设和管理,为培养更多优秀的集成电路创新型应用人才、推动国产芯片产业的繁荣和发展做出贡献!

来源:武汉芯源半导体

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 5

基于MCX NMCX A系列微控制器取得的成功,恩智浦发布支持多协议无线连接的MCX W系列。作为MCX广泛产品组合的重要成员,MCX W系列具有与MCX产品其他系列相同的Arm Cortex-M33内核,并与MCX产品其他系列共享外设平台。

1.jpg

MCX W系列的亮点在于其支持多种无线标准,包括Matter、Thread、Zigbee和低功耗蓝牙等,从而为整个MCX产品组合带来无线连接的新可能。MCX W将成为MCX产品组合无线应用的首选解决方案。

目标应用场景广泛,涵盖:

  • 工业和物联网的边缘传感器与控制器

  • 商业楼宇的门禁控制、分布式照明和窗帘等基础设施产品

  • 智能家居设备,如智能锁、灯光控制系统、智能插座、窗帘和各类传感器

  • 个人健康监测与健身产品

  • 电动自行车

  • 通用2.4GHz无线/手持设备

MCX W系列的首款产品是W71家族。W71结合了Cortex-M33核CPU平台和Arm Cortex-M3核CPU。

2.png

CXW71框图

了解恩智浦 MCX W系列MCU如何助力开发下一代智能边缘设备,点击这里>>

W71为无线子系统配备了一个专用MCU核,确保实时、低级别的无线功能与应用代码隔离。这也意味着可以简化无线子系统固件更新,以支持未来的各种无线标准。无论是作为独立MCU,还是作为主MCU或MPU的无线协处理器,MCX W71都非常适合无线边缘设备。

MCX W72即将上市,将提供更多的Flash存储、RAM和GPIO以及额外的无线功能。

3.png

MCXW72框图

MCX W72主CPU及无线子系统中的Flash和RAM容量翻倍。额外的内存使得可以运行大型、功能丰富的应用,并且有足够的空间来实现强大的无线 (OTA) 固件更新,确保应用和无线功能的独立实现。开发Matter等全功能协议时,增加代码存储空间可以带来显著差异。

支持蓝牙信道探测技术

MCX W72支持蓝牙信道探测技术,将带来重大的能力提升。蓝牙信道探测是一项新标准,能够实现两个设备之间的距离/间距测量。

通过分析多个频道上的时间戳数据包和音调相位差,利用一种先进的协调算法,可以测量两个设备之间无线信号的传播时间。信道探测技术能够协调终端设备之间的互动,并利用多达72个无线频道,有效处理室内多径效应和测量推断中的模糊性。

MCX W72是首款支持蓝牙信道探测的无线MCU。它采用恩智浦的定位计算引擎 (LCE),恩智浦的定位计算引擎是一个专用的协处理器,用于降低延迟。此外,MCX W72的无线子系统运行整个蓝牙协议栈,减轻了主应用核的负担。

就MCX W的可扩展性而言,MCX72在7mm x 7mm QFN48封装中将与MCX W71实现引脚兼容。

工业和物联网边缘赋能

MCX W72新增两个CAN-FD接口,拓展到工业物联网领域。无论是工业还是商业应用,广泛采用的CAN数据总线都是不可或缺的。尽管CAN最初起源于汽车领域,但已广泛应用于需要容错通信的场景,包括暖通空调系统、电动自行车、商用车辆跟踪以及可编程逻辑控制器等。

MCX W系列MCU赋能工业和物联网应用,例如办公室智能照明、百叶窗和气候控制等。

EdgeLock安全子系统

MCX W系列的一项重要功能是EdgeLock安全区域内核配置文件。为了应对日益增长的网络安全攻击防护需求,MCX W从一开始就内置了多项安全特性。

4.jpg

EdgeLock安全区域示意图,内核配置文件

这些特性包括ROM内置的安全启动流程、加密加速器、加密与签名验证、真随机数生成器、利用一次性编程 (OTP) 熔丝进行设备生命周期管理、内置安全密钥管理以及硬件信任根。

EdgeLock安全区域的一个显著优势是,客户可以利用恩智浦的EdgeLock 2GO服务平台配置和管理物联网设备。Matter无线物联网协议基于强大且成熟的安全框架。设备在接入Matter网络之前必须验证身份,并通过内置设备认证证书 (DAC) 证明其已通过Matter认证。

作为连接标准联盟 (CSA) 批准的产品认证机构 (PAA),恩智浦为产品制造商提供了Matter认证和安全证书的一站式解决方案,加速Matter产品的开发和部署。

MCUXpresso开发体验

MCX W体验的核心是MCUXpresso软件和工具套件。MCUXpresso套件提供内核软件开发套件(SDK)和集成开发环境(IDE)以及配置工具。

SDK非常灵活,可以与多种IDE配合使用,包括:

  • MCUXpresso for Visual Studio Code (VS Code):带有恩智浦扩展的VS Code,可实现快速、灵活的开发

  • MCUXpresso IDE:为恩智浦MCU定制的基于Eclipse的IDE,使用简便

  • IAR Embedded Workbench:安全认证且高度优化的C/C++编译器和开发环境

利用FRDM EVK进行硬件开发

随着MCX W系列的发布,我们将为MCX W71和W72推出低成本的FRDM开发板。

5.jpg

为了实现快速原型开发,我们提供FRDM开发板。

MCX W系列将于2024年发布

MCX W71将首先发布,W72紧随其后。W71和W72将采用7mm x 7mm QFN48封装,实现引脚和软件的兼容性,为客户提供升级通道,使他们能够在保留现有硬件设计的同时,享受新无线功能的优势。

本文作者

1715330006278537.jpg

Eli Hughes是恩智浦专业支持工程师,为客户提供恩智浦微控制器和应用处理器系列硬件设计和固件方面的支持。除了支持工作,他还创作了一些技术内容,展示了恩智浦产品在实际真实场景中的应用。他借鉴了自己在宾夕法尼亚州立大学应用研究实验室的过往经验,在那里他参与了嵌入式系统、传感器、机器人、水下航行器和空间科学等领域的研究和开发。他也曾在宾夕法尼亚州立大学的电气工程系教授过微控制器、FPGA和电路理论等课程。在业余时间,Eli喜欢弹吉他和玩木工。

来源:NXP客栈

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 9

1715216699388530.jpg

来源:航顺芯片

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 15

来源:瑞萨嵌入式小百科

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 6

知乎上,有一个经典问题讨论非常火热。

一位工程师发现,国外工程师在给demo在做死循环时用的是for(;;),而不是常用的while(1)。这仅仅是个人习惯的问题,还是有更深层次的含义?

没啥区别党:都是心理作用 

大部分网友认为二者并没有什么区别,很多时候,只是心理作用,国外工程师认为while需要经过判断括号里的表达式是否非0才跳转。但经过编译器的精心优化以后,while(1)也会被优化成无条件跳转(jmp指令),所以跟for(;;)没什么区别。

有人表示,for(;;)在英语母语者那里很容易跟forever挂钩。

网友解析,也很有可能是习惯问题,其实while(1),还是for(;;)两个语法上有啥区别,那就是for(;;) 明确就是循环,等价于goto一直跳,没有比较条件。

while不编译支持优化的前提下都需要做cmp运算设置寄存器ZF,才能jne,je指令条件跳转。而for(;;)就是明确的jmp无条件转移eip,没有jne,je条件跳转。

不过其实无所谓的,这根本不能提高任何一点代码执行的性能。因为现代编译器大多优化以后跟for(;;)的结果没得什么区别。

其实你所考虑到的一切优化手段,编译器都能帮你完成,因为编译器(尤其是开源的GCC和LLVM)是由来自全球各地的程序员共同研发并改进的,它们的优化能力远远强于你手动改进代码。

也有网友“Shuax”使用mingw编译,实地测试一番:

for版本

#include<stdio.h>
int main()
{  
    for(;;)  
    {    
        printf("for\n");  
    }
}

生成汇编:

1.png

while版本

#include<stdio.h>
int main()
{  
    while(1)  
    {    
        printf("while\n");  
    }
}

生成汇编:

2.png

你会发现,除了文件名不同,其余都相同。

当然,这里额外说一下,不同代码、不同编译器,以及不同优化等级,可能最终结果有所差异。

正方观点:哪有好的编译器

不过,有人跳出来反驳,现代编译器的确优化很好,二者运行起来没啥区别,但是实际在嵌入式工作中,尤其是MCU编程中,可没有那么好的编译器。

一位工程师表示,很多嵌入式设备只有专用的编译器,而过去这些编译器,尤其是嵌入式编译器没做好优化的情况下,while(1)要比for(;;)多几个语句。

因为while里面是判断啊,就会变成:

label:    
……    
mov a, #1    
jnz label

这种情况而for(;;)的话一般只会是jmp label。

许多人也有类似的经历,并表示,有些私有编译器连 (int)a<<0 这种都能生成非法指令,不由地怀疑配套的破芯片到底能不能受得了各种优化过的指令。

反方观点:这种代码过时了

也有工程师呼吁,不要学习这种编码风格,现在已经是2024年了,用for(;;)表示无限循环已是一种过时的风格了。

从施特劳斯特撸普博士到我国国家军用标准,均认为 for(;;) 是一种不良风格,可参见:

  • GJB 8114-2013 R-1-9-4:无限循环必须使用while(1)语句,禁止使用for(;;)等其他形式

  • CppCoreGuidelines ES.73:Prefer a while-statement to a for-statement when there is no obvious loop variable

  • 360 safe rules: for语句没有明确的循环变量时应改用while句语

这是为什么呢?在较为严格的规范体系内,for 语句专用于实现具有明确循环次数和循环变量的迭代算法,小括号内的三个表达式应分别专注于循环变量的初始化、循环条件的判断、循环变量的增减,这样可以使循环具有清晰的静态结构,便于阅读,利于维护。如果没有明确的循环变量,则应改用 while 循环,避免对代码的维护者造成误导。

有人说for(;;)表示无条件循环,while(1)需要作条件判断,效率比for(;;)慢,有一定道理,但那都是很早以前的事情了,现在即使没有编译器优化,这种开销也不会成为效率的瓶颈,是不值得优化的,保持代码清晰的静态结构更为重要!

类似于国军标这种严格的代码审计规则,可参见:github.com/Qihoo360/safe-rules

3.png

工程师实地测试:和编译器和优化有关

公众号博主“WKJay”也在STM32F103、ARMCC5进行过测试,将两个逻辑分别运行一下(不开编译器优化),查看逻辑分析仪输出的结果。

while(1) 逻辑运行结果:

4.png

for(;;) 逻辑运行结果:

5.png

结果显示,虽然循环体完全相同,但实际运行结果来看,for(;;) 语句执行得更快(45.863ms),比 while(1)(48.643ms) 快了5.7%左右。

根据他的分析,for的指令更精简,而while的指令相对更繁琐,简而言之,for抄了近道,而while弯弯绕绕。

6.png

最后,他开启了编译器的O3优化,结果,二者就几乎不存在差别了(12.505ms):

7.png

从可读性角度来说,while(1)简单清晰,for(;;)就模糊多了。不过,对于一些比较老的专用编译器来说,可能就需要慎重考虑使用哪种形式。

对现代编译器来说,二者完全就是一回事,更何况,高主频的芯片不在乎一两条机器指令了,所以这种情况下,怎么顺眼就怎么写。

参考文献

[1] 知乎:https://www.zhihu.com/question/23043337

[2] WKJay:极致的优化,while(1) 与 for(;;) 到底谁更快?.2024.1.28.https://mp.weixin.qq.com/s/T21DLqOkqe38XuG3Z3I8SQ

[3] 嵌入式专栏:单片机代码中while(1) 和 for(;;)有什么区别?.2023.12.1.https://mp.weixin.qq.com/s/mq6sjy1CMPXHIfPpDOt-_A

[4] 嵌入式Linux:你会用while(1)还是for(;;)写循环代码?.2021.1.20.https://mp.weixin.qq.com/s/4Y2x2Xm_0rc9_DwdLgYWMA

来源:AI电堂

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 24

矽力杰已于近期正式推出符合ISO26262 ASIL-B等级的基于ARM Cortex-M4F内核的SA32Bxx系列MCU,以满足车身系统、汽车仪表、门窗座椅控制、车灯控制、空调控制、低压BMS等应用需求。在众多应用中,AUTOSAR常被提及并作为车规MCU软件生态的重要一环。

AUTOSAR的体系中,和硬件密切相关的部分是MCAL,MCAL的全称是Microcontroller Abstractions Layer,也被称为是微控制抽象层,在AUTOSAR基础软件中属于最底层,其中包含有MCU的外设驱动,MCAL层通常是由芯⽚⼚商开发并提供。矽力杰此次正式推出配套的AUTOSAR MCAL软件包,以满足需要使用AUTOSAR生态开发的相关应用需求。

5.png

6.png

AUTOSAR体系结构在最⾼抽象层上区分了三个软件层: Application(应⽤程序)、Runtime Environment(运⾏时环境)和Basic Software(基础软件)。

AUTOSAR基础软件进⼀步分为Services(服务层)、ECU Abstraction(ECU抽象层)、Microcontroller Abstraction(微控制器抽象层)和Complex Drivers(复杂驱动层)。 

微控制器抽象层(MCAL)

即与实际微处理器间的连接,位于AUTOSAR BSW的最底层,⽤于映射微处理器的功能和外围接⼝。

矽力杰MCAL软件以及子模块的说明

2.png

Notes:目前的MCAL版本为4.3.1

*AUTOSAR各个模块及 Silergy MCAL的各个子模块示意图

矽力杰MCAL模块大致可以分为:基础模块、功能模块、CDD_DRV模块、CDD_SAFETY。

3.png

以上所有模块真正做到了软件的规范化和高通用性,以便客户可以通过最简洁的方式集成我们的MCAL。所有模块从设计到开发再到测试均严格按照内部规范流程,皆通过完善的静态、单元、集成测试,体现了矽力杰MCAL软件开发的高质量性。

MCAL代码包及其配套文件

4.png

以下是针对各子模块的一个概要说明:

1) MCU驱动模块     

MCU驱动提供的服务如下:

       -软件置位;

       -选择微处理器的状态(停止、休眠、挂起等);

       -配置唤醒行为;

       -管理内部PLL时钟单元;

       -给RAM相关地址赋初始值;

2) WDG驱动模块      

该模块为控制和触发看门狗硬件提供服务,由看门 狗管理模块(WdgM)调用。

3) GPT驱动模块      

通用定时器驱动提供了访问片内定时器的接口,用于控制器周期性和单一事件。

4) PORT驱动模块      

该模块负责微处理中所有Port的初始化工作。

5) DIO驱动模块      

数字输入输出驱动提供访问DIO通道、DIO端口和   DIO通道组的读写服务。

6) ADC驱动模块     

ADC驱动用于抽象访问模数转换器。对于每一个输 入通道,其转换参数可配置。

7) CAN驱动模块      

CAN驱动用于CAN控制器的抽象访问,负责报文发 送和接收以及CAN控制器不同状态(休眠/停止等)的切换。

8) CRC驱动模块      

Cyclic Redundancy Check(CRC)驱动是为了给 芯片内数据在传输过程中接收方能够接收到准确的数据提供数据传输检错的功能。

9) Crypto驱动模块     

加密驱动提供标准化的加密功能和安全密钥/证书存储的接口,为汽车电子系统提供一个标准的接口来调用底层的加密硬件。

10) FEE模块    

Flash模拟EEPROM模块,处于内存硬件抽象层(Memory Hardware Abstraction),与Fls模块配合完    成掉电数据保存。

11) FLS驱动模块    

Flash驱动提供独立于硬件访问flash内存的机制,其提供的接口服务可以用于读写、比较和擦除flash块。

12) LIN驱动模块    

LIN驱动提供初始化报文发送(报头、响应、休眠模式和唤醒)的服务,同时还负责接收响应,检查当前状态和验证唤醒事件。

13) PWM驱动模块    

PWM驱动提供初始化和控制微控制器中的PWM通道的服务。

14) SPI驱动模块    

负责处理SPI串口数据交换,主要用于MCU与外部高速器件(例如外部FLASH、SBC)的数据交互。

15) CDD_I2C驱动模块*   

负责处理I2C串口数据交换,主要用于MCU与外部指令器件(例如外部EEPROM、外部看门狗等)的数据交互。

16) CDD_UART驱动模块*   

该模块负责处理UART串口数据交换,主要用于MCU与外部特定器件的数据交互,也可作为Debug的通信口。

17) CDD_DMA驱动模块*    

该模块使系统在CPU 最小干预的情况下,执行复杂高效的数据块传输,以支持高波特率、高实时性通信。

18) CDD SAFETY模块*    

该模块以SAFETY PACK形式呈现,可满足功能安全ASIL-B等级的要求,使用者默认了解ISO2626并已阅读《SA32Bxx_series_safety_manual》。

*对于CDD_Drv和SAFETY模块矽力杰提供详细的集成指南(详情请联系矽力杰代理商及FAE)

AUTOSAR各模块都可以灵活的配置,无论是模块本身还是模块内部的子模块,甚至通用参数也需要高度可配置以满足不同项目的需求。矽力杰 SA32Bxx系列芯片MCAL支持基于AUTOSAR标准架构的系统开发,使用EB Tresos Studio进行灵活的配置,可大大提高软件的复用率,降低开发和维护的门槛,也方便整车厂、Tier1或其他第三方合作伙伴基于矽力杰MCU进行应用开发。

来源:矽力杰半导体

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 48

202457专注于引入新品的全球半导体和电子元器件授权代理商贸泽电子 (Mouser Electronics) 即日起开售Microchip TechnologyPIC32CZ CA MCUPIC32CZ CA是一款32位高性能MCU,具有多种连接选项,是工业网关、图形或汽车应用的理想之选。

microchip-technology-pic32cz-ca80-ca90-microcontrollers-print.jpg

Microchip Technology PIC32CZ CA MCU具有Arm® Cortex®-M7处理器、8MB闪存和1MB SRAM,以及广泛的连接选项,包括高速USBCAN FDSQISDHCI2S™Media LB™总线、EBISERCOMPIC32CZ CA90 MCU还包括一个集成硬件安全模块 (HSM),为工业和消费类应用提供统一的安全解决方案。HSM作为安全子系统运行,内置独立MCU,用于管理固件和安全功能,如硬件安全启动、密钥存储、加密加速等。HSM创建了一个独立于主机MCU的防火墙安全子系统,将所有安全功能与主机MCU分隔开。

PIC32CZ CA MCU还支持安全启动功能,以验证应用代码的真实性和完整性,防止恶意篡改。此外,PIC32CZ CA90的加密硬件还用于验证应用代码及其散列的签名。这种多层次的安全方法可确保器件只执行经过验证且未经篡改的代码,有助于防止未经授权的访问或篡改。

PIC32CZ CA MCU可通过多种连接选项进行配置,包括USART/UARTI2CSPICAN FD、高速USB和千兆以太网。以太网连接选项包括音视频桥接 (AVB) 和基于IEEE 1588标准的精确时间协议 (PTP)。这些MCU采用100/144/176/208引脚TQFPBGA封装,可通过2MB4MB8MB板载闪存、1MB SRAM和纠错码 (ECC) 存储器进行扩展,以减少数据损坏。

PIC32CZ CA80PIC32CZ CA90分别由EV51S73AEV16W43A Curiosity Ultra开发板提供支持,这些开发板也可从贸泽购买。这些开发板为PIC32CZ CA MCU提供了完整的评估和原型开发平台。Curiosity Ultra开发板具有一个嵌入式编程器/调试器,并由MPLAB集成开发环境和MPLAB Harmony提供支持。借助连接器,即可轻松连接Arduino Uno R3MikroElektronika Click板或Xplained Pro扩展板,以便开发蓝牙音频、物联网、机器人和其他概念验证设计。

如需进一步了解PIC32CZ CA MCU,敬请访问https://www.mouser.cn/new/microchip/microchip-pic32cz-ca80-ca90-mcus/

作为全球授权代理商,贸泽电子库存有丰富的半导体和电子元器件并支持随时发货。贸泽旨在为客户供应全面认证的原厂产品,并提供全方位的制造商可追溯性。为帮助客户加速设计,贸泽网站提供了丰富的技术资源库,包括技术资源中心、产品数据手册、供应商特定参考设计、应用笔记、技术设计信息、设计工具以及其他有用的信息。

工程师还可以一键订阅免费的贸泽电子报,及时了解业界新品动态和资讯。在订阅贸泽的电子报时,我们可以根据您不断变化的具体项目需求来提供相关的新闻报道和参考信息。贸泽充分尊重用户的权利,让您能自由掌控想要接收的内容。欢迎登陆https://sub.info.mouser.com/subscriber-sc 注册,及时掌握新兴技术、行业趋势及更多资讯。

关于贸泽电子 (Mouser Electronics)

贸泽电子隶属于伯克希尔哈撒韦集团 (Berkshire Hathaway) 公司旗下,是一家授权电子元器件代理商,专门致力于向设计工程师和采购人员提供各产品线制造商的新产品。作为一家全球代理商,我们的网站mouser.cn能够提供多语言和多货币交易支持,提供超过1200品牌制造商680多万种产品。我们通过遍布全球的28个客户支持中心,为客户提供无时差的本地化贴心服务,并支持使用当地货币结算。我们从占地9.3万平方米的全球配送中心,将产品运送至全球223个国家/地区、超过65万个顾客的手中。更多信息,敬请访问:http://www.mouser.cn

围观 7

页面

订阅 RSS - MCU