开云-BPO行业整合方案提供者
专业化、科技化、国际化;高标准、广覆盖、全流程
了解更多[导读]新编程说话的呈现凡是是为了填补现有说话的不足,而这些不足凡是与机能、易用性或没法撑持新兴计较机科学概念有关。在嵌入式电子范畴,特殊是环绕微节制器的范畴,Rust编程说话的呈现首要是为了填补几十年来在嵌入式系统开辟范畴一向稳居主导地位的C说话的诸多缺点。 新编程说话的呈现凡是是为了填补现有说话的不足,而这些不足凡是与机能、易用性或没法撑持新兴计较机科学概念有关。在嵌入式电子范畴,特殊是环绕微节制器的范畴,Rust编程说话的呈现首要是为了填补几十年来在嵌入式系统开辟范畴一向稳居主导地位的C说话的诸多缺点。 (图源:mirsad/stock.adobe.com) C说话降生在20世纪70年月初,缺少现今软件开辟人员所依靠的很多现代功能。下面重点罗列了嵌入式系统开辟中C说话的一些首要缺点: •保证理:Rust供给Cargo构建系统和保证理器,而C说话却没有官方的保证理解决方案。保证理撑持代码重用,由于库(在Cargo中称为“crate”)可以轻松集成到新项目中。与从头最先编写代码比拟,利用颠末验证的现有代码库可以下降开辟风险。 •更好的内存治理:Rust的内存所有权和借用系统消弭了内存泄露的风险,和其他内存相干毛病,而C说话因为依靠不太靠得住的垃圾收受接管手艺,就比力轻易碰到这些风险和毛病。 •并发性:Rust的所有权系统和数据布局可以或许实现更平安、更高效的并发性,这在嵌入式系统中相当主要。 •无空指针解援用:Rust经由过程对可能为空的值利用Option类型,消弭了空指针解援用,而这是C说话中常见的毛病缘由。 •现代化数据布局:Rust撑持泛型 (generic) 和特点 (trait) 等数据布局概念,提高了源代码的可保护性。 固然C说话存在诸多缺点,但它依然是现今的主流说话。是以,Rust的建立者确保了这类新兴说话可以与C说话代码互操作,答应嵌入式系统开辟人员在Rust利用法式中利用现有的C说话库。 Rust:从收集到微节制器 Rust是Graydon Hoare的创意,他在2006年在Mozilla工作时代就最先设计这类编程说话,作为本身的小我项目。那时他存眷的是提高复杂并行计较使命的机能和靠得住性,这在那时的收集阅读器中已成为一个严重问题。快进到2022年,Rust已然成了继汇编说话和C说话以后,用在开辟Linux内核的第三编程说话。 2018年,Rust用户群成立了Embedded Rust工作组,负责监视Rust轻量级版本的开辟。该版本专为Arm Cortex -M、MSP430和RISC-V等嵌入式平台而设计。Embedded Rust开辟东西可用在Windows、macOS和浩繁Linux刊行版,当前的很多代码编纂器(如Visual Studio Code、Sublime、Atom、RustOver 和Eclipse)也撑持Rust。在查看Embedded Rust的实例之前,我们先来领会几个怪异概念,它们可能有助在传统软件开辟人员向嵌入式系统开辟过渡: •外设拜候箱 (PAC):PAC为microchip的外围装备供给直接接口。用户凡是不会与PAC交互,除非他们正在为新的微节制器开辟硬件抽象层,或更高的层没法知足利用法式的需求。 •硬件抽象层 (HAL):HAL构建在芯片的PAC之上,并供给不需要深切领会芯片怪异行动的抽象。凡是,它们将全部外围装备抽象成一个布局(也称struct),例如可用在向片上外围装备发送数据或从其发送数据的同一布局。 •板级撑持Crate (BSC):在其他嵌入式开辟情况中被称为板级撑持包,BSC抽象全部电路板。是以,它必需为电路板上的微节制器和任何外围装备(如传感器和LED)建立抽象。在年夜大都环境下,工程师仅利用芯片的HAL,然后为外围装备编写驱动法式,或在crate聚合站上搜刮驱动法式。 STMicroelectronics电路板的实例 Rust嵌入式生态系统最要害的部门是embedded-halRust库,它供给了一个公共接口来利用分歧微节制器平台的硬件外设。embedded-hal的方针是在为嵌入式系统开辟软件时,实现代码的可移植性和可重用性。embedded-hal界说GPIO引脚、SPI、I²C、UART、按时器等常见嵌入式硬件外设的特点和抽象。这些特点供给尺度化的API以便与外设交互,从而简化了可移植嵌入式代码的编写。 embedded-hal的首要长处之一是它的平台无关性。利用embedded-hal编写的代码可在各类微节制器架构和开辟板上运行,无需点窜,只要方针平台具有所需的特点便可。 embedded-hal除供给通用抽象外,还答应定制。假如某个微节制器或平台具有怪异的功能或特征,您可觉得这些功能实现embedded-hal特点,以供给一致的接口。 下面的示例展现了若何在Rust代码中利用embedded-hal: use embedded_hal::digital::v2::{OutputPin, InputPin}; use stm32f4xx_hal::{gpio::gpioa::PA5, stm32}; fn main() { // Initialize the microcontroller let dp = stm32::Peripherals::take().unwrap(); let cp = cortex_m::peripheral::Peripherals::take().unwrap(): let mut rcc = dp.RCC.constrain(); let _clocks = rcc.cfgr.freeze(); // Configure a GPIO pin using embedded_hal let gpioa = dp.GPIOA.split(); let mut led = gpioa.pa5.into_push_pull_output(); // Blink the LED loop { led.set_high().unwrap(); cortex_m::asm::delay(1_000_000); led.set_low().unwrap(); cortex_m::asm::delay(1_000_000); 在本例中,我们利用embedded-hal特点(如OutputPin)来节制一个毗连到GPIO引脚的LED。代码的编写体例使其可以在分歧的STM32微节制器上反复利用,只要按照所需的电路板更改第二行代码便可。留意,只要平台撑持GPIO引脚的embedded-hal特点并具有所需的外围装备,就没问题。 Rust编程说话是为了填补C说话的不足而设计,特殊是在嵌入式系统中。凭仗保证理、更好的内存治理、平安的并发和现代化的数据布局等特征,Rust比C说话有了显著改良。Rust与C说话的互操作性还答应开辟人员操纵现有的C说话库。Embedded Rust工作组和东西(如embedded-hal库)的建立兑现了Rust对加强嵌入式系统开辟的许诺,它供给了一种不依靠平台且可定制的方式,可提高代码在分歧微节制器平台之间的可移植性和可重用性。 作者简介 专业工程师Michael Parks是Green Shoe Garage的所有者。Green Shoe Garage是一家供给定制电子设计的工作室和手艺咨询机构,位在马里兰州南部。Michael Parks开办了《S.T.E.A.M. Power Podcast》播客来晋升公家对科技的认知。他具有马里兰州专业工程师天资,并具有约翰·霍普金斯年夜学的系统工程硕士学位。
欲知详情,请下载word文档 下载文档北京2024年8月27日 /美通社/ -- 在8月23日举行的2024年长三角生态绿色一体化成长示范区结合招商会上,软通动力信息手艺(团体)股分有限公司(以下简称 软通动力 )与长三角投资(上海)有限...
要害字: BSP 信息手艺上海2024年8月26日 /美通社/ -- 本日,高端全合成润滑油品牌美孚1号联袂品牌体验官周冠宇,开启全新路程,助力泛博车主经由过程驾驶去摸索更广漠的世界。在全新发布的品牌视频中,周冠宇和分歧布景的消费者表达了对驾驶的酷爱...
要害字: BSP 汽车制造