还未设置个性签名
成为VIP会员 享9项特权: 开通会员

完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>

3天内不再提示

使用SPARK和Ada进行代码清理

星星科技指导员 来源:嵌入式计算设计 作者:Quentin Ochem 2022-06-29 14:33 次阅读

您能以多快的速度将软件推出并准备好?

长期以来,这个单一的问题推动了大部分嵌入式工业行业。按时发布此年度版本,满足该功能里程碑。只要软件功能相对简单或次于系统功能,就可以了。

但随着系统复杂性和互连性的日益增加,曾经是良性的小故障或“故障”现在正在造成威胁,有时甚至危及人的生命。无人机自动驾驶汽车和医疗设备是这一趋势的三个非常重要的代表。那么问题就不再是软件能否按时交付,而是正确、安全、可靠的软件能否及时交付。这是一个完全不同的野兽。

除了验证它正在做它应该做的事情之外,没有太多可以做的事情来交付正确的软件。不幸的是,传统的软件开发方法并不是为了简化正式规范或优化验证成本而设计的。而且越晚检测到问题,修复的成本就越高,以至于在第一天需要几分钟才能解决的问题可能会在集成过程中持续数月。是的,使用传统语言和环境编写极其强大的软件是可能的,但成本高得离谱。

特别是对于在微控制器 (MCU) 上运行的嵌入式应用程序,一个更加复杂的因素是编写测试的难度。当涉及低级嵌入式功能时,编写甚至运行广泛的测试活动可能是不切实际的。任何可以在这些程序之前帮助清除问题或确保正确性的东西都可以节省大量成本。

另一方面,从一开始就利用表达性和正式的规范,使实施者更容易尊重需求,提供自动验证,从而防止问题或在开发周期的早期发现问题。

Ada 和 SPARK 语言在这方面提供了独特的解决方案,将规范、编码和验证集成到一个通用的形式中。这些语言的核心原则是在软件级别尽可能多地指定,以便在实现时可以验证尽可能多的组件。

下面逐步检查实际的 Ada 或 SPARK 实现。

规格

在将 Ada 和 SPARK 语言与替代语言进行比较时,突出的一件事是可以添加到软件源代码中以捕获除实际功能之外的约束和意图的信息量。数据类型不仅仅是一个整数或浮点数:它是一个语义实体,可以与一组有效值、一组操作、最小精度、内存表示,甚至物理维度相关联。同样,函数不仅仅是一种从参数计算值的方法:它有一组可以调用的条件,在它返回时提供一组保证,并对它的环境(参数和全局变量)产生影响)。

Ada 和 SPARK 有很多特性可以用来丰富规范,但是为了本文的目的,我们选择一个例子:

poYBAGK78nGAD0OmAABUGzjQXjE060.png

这个简单的过程在其属性和行为方面揭示了很多:

首先,C 是一个in out参数,所以它必须在被调用之前被初始化,并且它的值在子程序中被修改。请注意,没有指示它是通过复制还是引用传递,这是由编译器根据语言约束和效率自动决定的。

E 是输入参数,或不打算修改的输入值。一个前提条件是在调用之前容器未满。就设计而言,这是一个极其重要的转变,就像在其他语言中的Push过程可能负责检测错误的调用上下文(如果容器已满)并实施缓解技术(或防御性代码)。另一方面,使用先决条件,该过程可以安全地假设容器未满(否则它会被静态或动态检测到,但稍后会详细介绍)并避免这些额外的代码。验证输入的责任隐含在调用者身上,然后调用者可以将其提升给自己的调用者,直到到达代码中数据验证确实有意义的地方。

后置条件提供了有关过程行为的关键属性——这里,E 包含在修改后的容器中并且计数增加的事实。

查看与嵌入式开发相关的一些约束,另一个有用的方面是指定内存映射约束。Ada 允许声明式表示法来指定数据结构在内存中的布局方式和地址,从而避免容易出错的按位操作和一致性检查。例如:

pYYBAGK78niAFDibAAD08l6mA7w598.png

上面声明了一个数据结构以及一些与边界相关的字段:

数据的大小固定为 16 位,接下来的两个方面(具有值High_Order_First)基本上告诉编译器使用大端表示。

下一个子句提供特定的位表示(例如,Size从索引位1到4的字节0开始。

最后,为R提供了它在内存中的地址。

实施(在 SPARK/Ada 或 C 中)

Ada 和 SPARK 语言提供了现代命令式语言的大部分功能。这些功能如何实现的最显着特性是它们为编译器解释提供的空间很小并且避免了捷径。例如,没有隐式转换,并且轻松地执行指针运算之类的操作需要 5 行代码。但是,在实际编码阶段花费的额外时间很容易通过易于验证来重新获得,无论是用于代码阅读、测试还是静态分析。

在讨论的这一点上,值得一提的是房间里的大象:对于新开发的代码来说,使用一种新语言可能是一个好主意,但通常存在一个不容忽视的预先存在的环境。这通常是来自其他项目或现成库的代码。这段代码可能是用 C 语言或 C++ 创建的。仅此一项就经常驱动开发语言的选择。

幸运的是,SPARK 和 Ada 已被设计为与 C 环境很好地集成。一些指令可以将 C 直接映射到 Ada,反之亦然,而无需任何包装代码的开销。这种映射甚至可以自动生成。

因此,如果不推荐的话,在 SPARK 或 Ada 中仅开始开发几个组件,而在其他情况下保留在 C 环境中是完全合理的。

目前可用于 Ada 和 SPARK 的主要编译器技术是 GCC,但也可以提供其他编译器技术。这意味着 SPARK 和 C 代码可以使用相同的技术进行编译,具有相同的优化和代码生成通道。结果,C 和 SPARK 代码之间的性能几乎没有差异,并且没有从一种语言到另一种语言的控制流的损失。

谈到我们之前的一个例子,让我们假设正在使用一个用 C 实现的容器。我们试图与之交互的 C 代码如下所示:

poYBAGK78oKATkTCAAAToRMnhxI551.png

除了来自 C 的实现声明之外,规范在 Ada/SPARK 中完全相同。

pYYBAGK78omATLbXAABqTT0eGgk084.png

Ada 或 SPARK 代码可以像在 Ada 中实现一样使用此过程。与导入类似,导出允许 C 调用用 Ada 编写的子程序。如果需要,这些接口层可以通过绑定生成器自动生成。

尽管将 SPARK 和 C 一起编译解决了许多用例,但仍然存在最终代码必须是 C 的情况。确实,一些用户虽然对使用 SPARK 进行开发感兴趣,但仍需要将 C 代码交付给他们的客户。

可以使用一个特殊的编译器来覆盖这个用例,即“GNAT 通用代码生成器”。它本质上将 Ada 语言的一个子集编译为 C。借助这项技术,SPARK 几乎成为一种建模语言,其输出集成在 C 环境中。它也可以被视为一种交付形式验证的 C 代码的方式,验证在 SPARK 级别执行。

在数据表示示例(寄存器案例)中,在代码中使用这段数据非常简单。分配一个值如下所示:

poYBAGK78pGAb2ocAAALyR35hnM557.png

这里不需要按位运算,因为编译器会在后台自动生成适当的代码。

确认

Ada 和 SPARK 在源代码中提供了大量信息,可供各种检查器使用。例如,作为第一道防线,编译器将检测到许多不一致之处,并可以在测试阶段自动在可执行文件中插入动态验证。有了这个级别的信息,就可以超越经典的静态分析并应用程序验证技术来演示整个应用程序的属性。

对于较低级别的数据结构,也会进行自动一致性验证。编译器验证特定大小是否足以实现所需的数据范围,没有数据重叠等。此外,形式证明可用于验证分配的值是否始终在任何分配的范围内。

继续前面的另一个示例,假设在我们想要验证的一段代码中调用了Push 。例如,我们可以让以下语句从输入文件中读取数字,直到它达到 0:

pYYBAGK78peANHeCAABDFxa3C4Q122.png

这个Push调用将被 SPARK 工具标记为不正确,因为无法知道循环不会达到容器 C 的最大容量。证明者无法证明Push的前提条件,这显然应该在调用,而不是在被调用的过程中。如果到达文件末尾而没有击中0 ,则示例代码中可能会出现另一个潜在错误。如果指定了适当的先决条件,证明者将能够判断循环中缺少检查以验证是否仍需要读取输入。

这种问题通常会在某个时候发生。如果覆盖极端案例的单元测试足够广泛,那么问题将在该级别得到解决。然而,当真正的数据开始输入系统时,他们可以找到自己的方式进行集成测试,或者当用户试图破坏系统时进行 beta 测试。在最坏的情况下,其中一些错误会通过部署找到并需要在客户报告后进行追踪。问题不是它们是否会被发现,而是当它们被发现时修复它们的成本会有多高。越晚发现,越多的人参与到链条中,需要更多的调查来确定源头、修复问题、证明修复的合理性、测试修复、重新交付产品等。使用技术早期集成验证 - 在这种情况下,

旧的又是新的

Ada 和 SPARK 方法的独特之处在于它集成了软件规范、实现和验证,提供了一种以现代系统所需的完整性级别生产软件的经济高效的方法。医疗、汽车和工业物联网 (IIoT) 等行业一直在寻找传统 C 语言开发的替代方案,Ada 和 SPARK 提供了经过验证的解决方案。

作为 Ada 语言的提供者,AdaCore 在过去几年中观察到对该技术的新兴趣。今天的限制提供了一个尝试新事物的好机会——或者正在卷土重来的旧事物。

审核编辑:郭婷

  • 物联网
    +关注

    关注

    2824

    文章

    32309

    浏览量

    335938
  • C语言
    +关注

    关注

    165

    文章

    5989

    浏览量

    112441
  • 编译器
    +关注

    关注

    1

    文章

    963

    浏览量

    45283
收藏 人收藏

    评论

    相关推荐

    探究一下C语言中main函数各种不同的写法

    main函数是C程序的入口函数,即程序的执行是从main函数开始,对其他函数的调动也是直接或间接地在....
    发表于 08-07 17:26 17次 阅读
    探究一下C语言中main函数各种不同的写法

    C语言可变长的数据缓存方法有吗

    变长数组的实际意思是以变量作为长度的数组,区别于以常数作为长度的数组。英文Variable-Leng....
    发表于 08-07 17:10 53次 阅读

    我们正处于智能家居时代的前夜

    随着物联网技术的快速发展,智能家居作为其中最具潜力的应用市场,也因此而受益。尤其在消费电子市场中,智....
    的头像 Simon观察 发表于 08-07 01:54 572次 阅读

    C语言switch中的case标签简析

    最近在看一些开源的东西,发现switch中的case标识仅仅只是一个标签,跟使用goto语句所定义的....
    发表于 08-05 17:43 7次 阅读
    C语言switch中的case标签简析

    利用MPPT制作基于物联网的太阳能监测系统

    在这个项目中,我们将通过结合基于MPPT (最大功率点跟踪器)的电池充电技术来制作基于物联网的太阳能....
    发表于 08-05 16:56 69次 阅读
    利用MPPT制作基于物联网的太阳能监测系统

    基于物联网的语音控制智能火箭点火器

    随着冬季的临近;每年庆祝灯节的时候到了 。是的,我们谈论的是排灯节,这是一个真正的印度节日,在全球范....
    的头像 科技观察员 发表于 08-05 16:47 282次 阅读
    基于物联网的语音控制智能火箭点火器

    如何在c语言代码中使用HTTP代理IP

    如何在c语言代码中使用HTTP代理IP,示例代码demo直接可用(步骤注释清晰)
    的头像 华益云HTTP爬虫IP 发表于 08-05 16:31 116次 阅读

    美格智能与高通物联网技术开放日成功举办

    8月4日,由美格智能与高通共同举办的物联网技术开放日在深圳华侨城洲际大酒店成功举办,本次大会汇聚了美....
    的头像 1655199132.853000 发表于 08-05 15:29 717次 阅读

    10个超赞的C语言开源项目

    UNIX V6 的内核源代码包括设备驱动程序在内约有 1 万行,这个数量的源代码,初学者是能够充分理....
    的头像 小麦大叔 发表于 08-05 14:32 51次 阅读

    WLCSP和无线MCU组合的物联网设计

    对比 M3,M4F 内核集成了 FPU 硬件协助引擎和 DSP 扩展指令集。所以,这种内核满负荷工作....
    发表于 08-05 12:37 82次 阅读
    WLCSP和无线MCU组合的物联网设计

    大华股份助力吉林银行智慧安保、运营管理及场景金融等智慧服务

    近日,吉林银行股份有限公司副行长王宏一行莅临大华股份总部参观考察。大华股份董事长兼总裁傅利泉、国内营....
    的头像 大华股份 发表于 08-05 11:52 237次 阅读

    如何在C程序中采用面向对象编程

    为了显示自己的技巧,也在自己的程序中用过几次。渐渐发现这样的技巧带来的好处是有代价的,破坏了程序的结....
    发表于 08-05 11:35 69次 阅读

    嵌入式功率计构建有效的分表计量解决方案

     多核 MCU 的出现为更复杂的单芯片亚表设计提供了有吸引力的解决方案。借助多核器件,设计人员可以在....
    发表于 08-05 10:56 71次 阅读
    嵌入式功率计构建有效的分表计量解决方案

    doctest基本用法

    用现代C++测试工具链:doctest+FakeIt+nanobench, 可以完美地替代gtest....
    发表于 08-05 10:43 61次 阅读

    通过 USB 或 PoE 为 IoT 端点供电可以提供更大的便利性和经济性

    USB和以太网等有线数据连接也可以提供有效且方便的解决方案,为当今要求最严苛的物联网端点供电。 物联....
    的头像 成尔秩 发表于 08-05 10:20 89次 阅读
    通过 USB 或 PoE 为 IoT 端点供电可以提供更大的便利性和经济性

    RT-Thread call stack一直在乱飞是怎么回事

    12年开发的一个项目一直在使用rt-thread,因为客户要求修改产品功能。只在应用程序中增加了一行代码。却导到芯片一直复位。J-L...
    发表于 08-05 10:20 931次 阅读

    在汇编中调用C函数

    大多数情况下,可能只需要一到两个简单的汇编函数,所以就想将这些汇编代码嵌入C代码的文件中。多数开发工....
    发表于 08-05 10:07 41次 阅读

    数字音视企业深圳市智微智能科技登录资本市场

    成立于2011年9月的深圳市智微智能科技股份有限公司(智微JWIPC)是国内物联网硬件解决方案商的开....
    发表于 08-04 18:33 204次 阅读
    数字音视企业深圳市智微智能科技登录资本市场

    磁性材料与创新:过去、现在和未来

    根据思科的年度互联网报告,到 2023 年将有近 300 亿台联网设备(2018 年约为 184 亿....
    的头像 李鸿洋 发表于 08-04 15:34 91次 阅读
    磁性材料与创新:过去、现在和未来

    “Wi-SUN物联网新生态研讨会”在2022表计大会中举办 联芯通发布OFDM/FSK 并发的 Wi-SUN FAN RF Mesh SoC

    杭州市 – 2022年8月3日 –由环球表计主办的“2022表计行业年度大会”于8月2-3日在无锡盛....
    发表于 08-04 14:25 71次 阅读
    “Wi-SUN物联网新生态研讨会”在2022表计大会中举办 联芯通发布OFDM/FSK 并发的 Wi-SUN FAN RF Mesh SoC

    剥离超百亿业务后,海尔旗下海尔智家再入《财富》世界500强

    8月3日,《财富》(Fortune)官网公布了2022年世界500强榜单。海尔集团旗下——海尔智家股....
    的头像 科讯视点 发表于 08-04 14:21 154次 阅读

    紫光展锐携手行业伙伴共同开启穿戴智能化独立时代

    近期,紫光展锐完成了穿戴RTOS平台升级,进一步丰富智能穿戴的应用生态,将为智能穿戴用户带来更佳的体....
    发表于 08-04 14:18 188次 阅读

    基于物联网技术的基站能耗监控解决方案

    摘 要:随着社会的不断发展和进步,人们对通信基站的需求增加。随着通信基站大规模的建设和使用,基站内....
    的头像 Acrel安跃强 发表于 08-04 14:15 122次 阅读
    基于物联网技术的基站能耗监控解决方案

    农业物联网系统建造玻璃智慧温室系统

    伴随着现代化农业的发展趋势,温室大棚建筑用愈来愈多,尤以山东、浙江等地为最,智慧温室是对传统大棚的一....
    发表于 08-04 11:20 17次 阅读

    虹科物联网数据采集与监控方案在石油罐区的应用

    2022年7月,为期3天的2022年中国国际石油石化技术装备展览会在深圳国际会展中心圆满落下帷幕。本....
    发表于 08-04 10:56 60次 阅读

    传感器应用设计工程师面临的挑战

    随着系统变得越来越以数据为中心,工业、物联网、家庭医疗可穿戴式、健身和健康方面的监控器正在经历爆炸性....
    发表于 08-04 10:27 46次 阅读

    用于电力电子的LabVIEW调试工具

    与编程一样,调试 LabVIEW 应用程序也非常直观。例如,用户可以交互式地观察数据如何在 LabV....
    的头像 哼小曲 发表于 08-04 09:08 46次 阅读
    用于电力电子的LabVIEW调试工具

    “模组+天线”全栈解决方案,提速物联网终端高效部署

    在万物互联的5G时代,物联网生态连接趋向高速率、低延迟、大带宽的无线通信,并对泛在无线覆盖提出新需求....
    的头像 Fibocom小通 发表于 08-03 18:30 527次 阅读
    “模组+天线”全栈解决方案,提速物联网终端高效部署

    数字孪生博物馆有哪些特点?

    在数字孪生技术的帮助下,各行各业正在实现真实和虚拟的交互。作为连接人类过去、现在和未来的文化场所,博....
    的头像 tyhrvrar 发表于 08-03 16:58 161次 阅读
    数字孪生博物馆有哪些特点?

    远程桌面导致的程序卡死

    使用C#写的TCP服务器接收软件,放在阿里云服务器上面(系统为:Windows Server 2012 R2)运行,连接远程桌面打开软件,运...
    发表于 08-03 15:32 505次 阅读

    无线充电技术市场

    Wired & Wireless Technologies (WAWT) 的思想领袖网络研讨会系列展....
    发表于 08-03 14:33 78次 阅读
    无线充电技术市场

    媒体物联网的技术架构

    感知层主要实现物体的识别与感知功能,主要包括各类传感器(包括读卡器),利用传感器获取实物影像或编码图....
    的头像 讯维官方公众号 发表于 08-03 14:20 219次 阅读

    编译器工程师眼中的好代码(1):Loop Interchange

    编者按:C/C++代码在编译时,编译器将源码翻译成CPU可识别的指令序列并生成可执行代码,而最终代码的运行效率取决于由编译...
    发表于 08-03 14:08 3967次 阅读

    编译器把代码转化为机器码的过程

    编译器,是把高级语言转化为机器语言的工具软件。
    的头像 一口Linux 发表于 08-03 13:56 132次 阅读

    广和通提供全栈式物联网无线通信解决方案

    在万物互联的5G时代,物联网生态连接趋向高速率、低时延、大带宽的无线通信,并对泛在无线覆盖提出新需求....
    的头像 广和通FIBOCOM 发表于 08-03 13:44 188次 阅读

    智慧养殖系统应用说明

    肉鸡智慧养殖系统,依托物联网、无线通讯、智能感知等技术,通过大量感知设备,在线监测鸡舍的环境参数,数....
    发表于 08-03 11:43 11次 阅读

    智慧玻璃温室保温措施介绍

    智慧玻璃温室的透光性好,使用寿命长,是不少蔬菜种植基地的首选。而随着温室大棚智能控制系统的应用,升级....
    发表于 08-03 11:39 9次 阅读

    构建物联网的多种不同实现方式

    随着 Internet 连接的出现,现在有更广泛的用于楼宇自动化的底层协议。其中许多基于 IEEE8....
    发表于 08-03 11:33 69次 阅读
    构建物联网的多种不同实现方式

    RT-Thread操作系统互斥量的使用方法与场合介绍

    互斥量 互斥量又叫相互排斥的信号量,是一种特殊的二值信号量。互斥量类似于只有一个车位的停车场:当有一辆车进入的时候,将停...
    发表于 08-03 11:26 750次 阅读

    从简单的有线传感器到物联网设备

    在工业中,物联网提供了一种工具来弥合工厂车间事件之间的鸿沟,知识经理需要实时做出日常决策并计划长期维....
    发表于 08-03 11:15 118次 阅读
    从简单的有线传感器到物联网设备

    如何实施无线诊断工业物联网

    RF 内核能够自主处理低功耗蓝牙无线电协议的时间关键方面,减少主 CPU 的负载并为用户应用程序留出....
    发表于 08-03 11:05 101次 阅读
    如何实施无线诊断工业物联网

    Loop Interchange如何帮助编译器生成更高效的可执行代码

    C/C++代码在编译时,编译器将源码翻译成CPU可识别的指令序列并生成可执行代码,而最终代码的运行效....
    发表于 08-03 10:56 75次 阅读

    边缘物联网设备的能量收集

    各种形式的智能生活是提高生活质量和可持续性的关键,随着组织接近数字化转型,物联网部署正在继续取得进展....
    的头像 douyin8 发表于 08-03 10:32 55次 阅读
    边缘物联网设备的能量收集

    浅谈物联网应用中的密钥安全

    对于使用具有这些安全功能的 MCU 的设计,Atmel AT88SC6416C 提供了类似的功能。作....
    发表于 08-03 10:30 65次 阅读
    浅谈物联网应用中的密钥安全

    云鹿智能门P系列为入户安全打造一体化解决方案

    一体化、真智能,P系列智能门开辟市场新版图借助5G、物联网、人工智能、云计算等技术,云鹿成功打开了高....
    发表于 08-03 10:28 64次 阅读

    ​安培龙通过创业板上市委审核 募集4.94亿元投向智能传感器产业园项目

    此次安培龙聘请华泰联合为保荐机构,为其创业板上市保驾护航,计划公开发行约1892万股面值为1元的人民....
    发表于 08-03 09:24 45次 阅读

    物联网的核心技术

    物联网的核心技术有:射频识别(RFID)技术、互联网协议(IPv6)新技术、蓝牙技术、红外线技术、无....
    的头像 讯维官方公众号 发表于 08-02 16:14 262次 阅读

    如何用微控制器简化嵌入式安全

     嵌入式安全可以被认为是一个利基领域,因为在物联网之前安全并不是一个问题。设备曾经被断开连接,这极大....
    发表于 08-02 15:35 165次 阅读
    如何用微控制器简化嵌入式安全

    什么是Matter认证?

    这意味着人们每天都可能将数字风险带入他们的家中,并将网络威胁带到他们所去的最敏感的地方。此外,他们几....
    的头像 物联网智慧城市D1net 发表于 08-02 14:59 65次 阅读

    AWTK GUI框架可轻松做出炫酷效果的GUI引擎

    AWTK面世4年有余,作为一款开源且商用免费的GUI框架,越来越被业界熟识并选用。已经与NXP、GD....
    的头像 city_prolove 发表于 08-02 14:21 308次 阅读

    基于C语言开发的GUI框架

    HPM6000系列作为已量产的全球性能顶级的实时RISC-V微控制器,该系列旗舰产品HPM6750采....
    发表于 08-02 14:19 87次 阅读

    【杰神说说】物联大师2.0版本预告

    物联大师正式版本已经发行3个多月,获得了不少人关注,已经有多家公司在尝试和使用。 为了能够满足更多....
    的头像 张杰一 发表于 08-02 12:25 78次 阅读
    【杰神说说】物联大师2.0版本预告

    什么指令集支持原子操作

    这个是在面试的时候遇到的问题,当时没有答出来。回到家以后查了查,整理记录下来。 原问题:什么指令集支....
    的头像 city_prolove 发表于 08-02 11:48 137次 阅读

    物联网 (IoT) 的预测性维护开发应用

    运用 STMicroelectronics 样例应用程序,开发人员可以快速评估预测性维护特性和功能。....
    发表于 08-02 11:19 50次 阅读
    物联网 (IoT) 的预测性维护开发应用

    ESP32物联网开发板

    描述 ESP32 IOT 彩色 CoinCell 这款 ESP32 物联网开发板具有加速度计、80x160 像素 0.96" 彩色 TFT ...
    发表于 08-02 06:13 691次 阅读

    在RTT中利用C语言实现对Python接口底层硬件的操作

    具体实现自己的Python接口有另种方法,一种是用现有的Python函数基础上,使用Python的语法直接封装,实现自己的功能,这种实现...
    发表于 08-01 15:52 923次 阅读

    SystemVerilog编码层面提速的若干策略SoC芯片简析

    1、SystemVerilog编码层面提速的若干策略介绍 频繁的函数/任务调用会增加开销 比如:用foreach遍历方式计数(foreach有内置函...
    发表于 08-01 15:13 1057次 阅读

    Armv8-M上PAC和BTI的功能扩展分析

    PACBTI是受到A-profile构架的两个功能的启发, Pointer Authentication 在Armv8.3-A构架中引入,Branch Target Id...
    发表于 08-01 14:56 923次 阅读

    基于物联网的农业PCB项目分享

    描述 基于物联网的农业项目PCB 我们的项目是为了帮助农民。众所周知,农民正面临着过度浇水或少浇水的问题。他们不知道地里...
    发表于 07-29 06:57 854次 阅读

    【社区之星】钱智恒:热爱与坚持,永远是成就自我的不变真理

    嘉宾介绍:钱智恒(论坛号:),产品研发,从2010年起工作,进入当时刚刚兴起的物联网行业,第一份工作做的是技术支持,但是当时心...
    发表于 07-27 15:41 3911次 阅读
    【社区之星】钱智恒:热爱与坚持,永远是成就自我的不变真理