当前位置: 首页 > 编程日记 > 正文

嵌入式开发「坑」太多?MathWorks 高级工程师教你 debug

文/ 朱雪妍

据博思数据发布的《2018-2023年中国嵌入式软件行业市场发展现状调研与投资趋势前景分析报告》表明:2018年上半年我国嵌入式系统软件收入达4240.2亿元,累计增长6.6%,并将持续保持高速增长。嵌入式系统是当前最热门、最具发展前途的IT应用领域之一。包括手机、电子字典、可视电话、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、甚至航天航空设备等,都是典型的嵌入式系统。

因此,通过嵌入式技能培训成为专业的嵌入式技术人才,其职业发展空间较大。对传统IT领域的开发者来说,随着竞争的日趋激烈,如今掌握嵌入式开发,才能更好地为未来「万物互联」做好准备。

嵌入式开发「坑」太多,怎么办?

但嵌入式软件并不只是单纯的软件,有许多和硬件结合的地方。在软件开发和软件测试过程中会有很多问题出现,一旦出现,企业损失会比较大;并且许多软件问题在实际操作过程中,非常难以察觉。

软件测试是有效发现软件缺陷的重要方法之一,嵌入式软件测试按照是否执行被测系统,将测试类型分为静态测试和动态测试。静态测试不需要编译执行源程序,对源程序进行词法语法、编程规范、数据流、控制流、度量等分析,获取程序的结构和特性,利用形式化方法验证、证明程序是否符合安全规则,能够较为全面的获取程序的特征。动态测试需要通过获取程序的动态信息来分析软件的缺陷,如分析程序的内存状态、覆盖率和执行结果,更有利于理解程序的动态行为特征。

很多代码缺陷产生于程序运行过程中,具有隐蔽性和不可预见性,比如数组越界,动态存储分配,内存溢出,指针非法引用,类型不一致的隐式转换等,这些错误都是在编译阶段不能被编译器检查发现的错误。

因此,在大规模和复杂度极高的软件中,完全依赖于“人工检查方式”可能会因为人为等主观原因造成问题被遗漏无法发现。将现有常见多发问题形成缺陷模式库植入工具中,由工具自动化检测代码缺陷,能够高效提升测试效率,避免问题重复发生大幅减轻测试人员工作量。

为了保证交付的产品稳定、可靠、安全是嵌入式设备开发企业的始终追求,其中涉及到诸如研发流程、周期、成本、认证等制约,如何在有限条件下,破解嵌入式软件质量的难题是软件开发与测试团队必须应对的挑战。

MathWorks技术大咖,亲授如何玩转嵌入式

为了帮助开发者掌握,如何快速查找和debug,甚至证明代码零缺陷的各种高级操作;如何使用Polyspace的强大功能;如何提高软件的可靠性,安全性和稳定性。

6月30日,由MathWorks发起的「破解嵌入式软件质量难题:C/C++代码静态分析技术」课程将在线上发起。

课程将以C/C++代码静态分析技术为出发点,带您了解各种运行时的错误,带你快速查bug,证明代码零缺陷的各种操作。此外,课程还将带领大家全面了解Polyspace的强大功能,为打造高安全完整性系统保驾护航。

本课程的讲师均来自于Polyspace母公司MathWorks:

1.胡乐华 MathWorks中国高级应用工程师

拥有航空航天制造工程硕士学位。加入MathWorks前,在霍尼韦尔,BlueSky从事直升机飞行动力学和涡轴发动机系统的仿真开发。

2 樊朝祥 MathWorks中国高级应用工程师

毕业于重庆理工大学,专业方向为软件工程。曾就职于Valeo,从事汽车电子嵌入式软件开发工作,在嵌入式软件开发,基于模型的设计,软件架构,软件项目管理领域有多年工作经验。

3 周拥华 MathWorks中国技术经理 

熟悉产品研发与工程实践,在电力(许继)、通信(华为)和轨道交通(GE)等领域有二十多年的系统仿真分析、系统架构设计、软件产品开发及研发项目与团队管理经验。

作为拥有丰富一线实战经验的嘉宾,这些技术大咖的分享无疑会让你对嵌入式开发的理解更加深入。无论你是C/C++软件产品的开发、测试、认证、管理人员;还是产品涉及重大经济/社会责任,产品联网,涉及信息安全,用于以上领域的嵌入式OS、BSP、支撑软件开发相关人员;亦或是涉及复杂计算且重要的桌面/服务器产品的软件开发相关人员。

本次课程都是为你量身打造的!

赶紧扫描下方二维码学起来吧!

长按下方二维码或点击阅读原文,即可报名参会)

相关文章:

[转]cocos2d-js 3.0 屏幕适配方案 分辨率适应

首先介绍一个api和相应的参数: cc.view.setDesignResolutionSize(1024, 768, cc.ResolutionPolicy.FIXED_WIDTH); 这里设置游戏制作的目标尺寸和显示的模式。 模式包括: cc.ResolutionPolicy {// The entire application is visible in the specified a…

两个程序员的泰国普吉岛之行

十一长假后,我和女朋友一起去了普吉岛游玩(作为两个程序员,不能每天敲代码,也应该放松下自己),玩的很Happy,也是我们第一次出国,所以更带有许多兴奋。也许是由于玩的太High&#xff…

使用 HttpServerUtility.Transfer 方法在同一应用程序的页面间重定向

采用 Server.Transfer 语法,在页面中使用该方法可避免不必要的客户端重定向。

90行Python代码,让张小龙的微信地球转起来

作者 | xiaorang来源 | 数据分析与统计学之美1.微信地球手机重启后打开微信的一瞬间,会看到一幅有名的图片,上面站着一个张小龙。你可曾想过这样一个问题,如果上面那个地球转起来会是怎样?2.效果图效果简直不要太酷炫,…

70.打印所有Spring boot载入的bean【从零开始学Spring Boot】

【从零开始学习Spirng Boot—常见异常汇总】 问题的提出: 我们在开发过程当中,我们可能会碰到这样的问题:No qualifying bean 就是我们定义的bean无法进行注入,那到底是什么原因呢,有时候挺难定位的,当然这…

了解 C# “.NET研究”4 中的 Dynamic 关键字

dynamic 关键字和动态语言运行时 (DLR) 是 C# 4 和 Microsoft .NET Framework 4 中的重大新增功能。 这些功能在宣布时就引起了人们的极大兴趣,并伴随着许多疑问。 同时人们也给出了很多答案,但这些答案现在已散布于各种文档以及各种技术博客和文章之中。…

“我,懂数据,不怕被裁”:这项核心能力到底有多香?

我见过市面上很多的 Python 讲解教程和书籍,他们大都这样讲 Python 的:先从 Python 的发展历史开始,介绍 Python 的基本语法规则,Python 的 list, dict, tuple 等数据结构,然后再介绍字符串处理和正则表达式&#xff0…

使请求管线内的所有模块尽可能高效

请求管线内的所有模块在每次请求中都有机会被运行。因此,当请求进入和离开模块时快速地触发代码至关重要,特别是在不使用模块功能的代码路径里。分别在使用及不使用模块和配置文件时执行吞吐量测试,对确定这些方法的执行速度非常有用。

PHP smarty缓存

缓存一个页面 test.php <?php//定义该页面缓存文件存放的路径 $filename "../cache/cachetest.html";//定义缓存有效期 $cachetime 5;//判断缓存文件是否存在 if(!file_exists($filename) || filemtime($filename)$cachetime<time()) {//开启内存缓存ob_sta…

在 Visual Basic .NET 或 JScript 代码中使用早期绑定

以往&#xff0c;开发人员喜欢使用 Visual Basic、VBScript 和 JScript 的原因之一就是它们所谓“无类型”的性质。变量不需要显式类型声明&#xff0c;并能够简单地通过使用来创建它们。当从一个类型到另一个类型进行分配时&#xff0c;转换将自动执行。不过&#xff0c;这种便…

Use MVS Dsbame convensions. windows下ftp.exe客户端上传错误

环境:主机 220-FTPD1 IBM FTP CS V1R11 at BT11 windows下的ftp.exe客户端 现象:windows下ftp.exe命令上传文件,报"Use MVS Dsbame convensions." 错误 原因: 主要是IBM FTP Server 文件系统的命名规范造成的: 8个基本字符 解决: 通过 cd 根目录.目录1.目录2----…

算法对建筑业的影响,不仅仅是画图

拿什么来拯救&#xff0c;这些奇葩的设计&#xff1f;奇葩造型位于英国伦敦芬乔奇街 20 号的一座摩天大楼&#xff0c;由于造型像「对讲机」&#xff0c;被取外号「对讲机大楼」。其实造型奇葩倒没什么&#xff0c;也有一些人觉得还挺好看。但问题是&#xff0c;建成之后&#…

如何参与团队合作?

现在&#xff0c;团队合作就是竞争力。随着市场竞争的日益激烈&#xff0c;企业更加强调团队精神&#xff0c;建立群体共识&#xff0c;以达到更高的工作效率。特别是有遇到大型项目时&#xff0c;想凭借一己之力去取得卓越的成果&#xff0c;可能非常困难。想必你也意识到&…

200 个工具分析机器学习十年:开源是大势,工程师是核心

【编者按】人工智能和机器学习经过十年多的发展&#xff0c;在过去的几年间&#xff0c;各类工具数量迎来了持续的爆发式的增长&#xff0c;机器学习也正式由科研走进工业生产阶段。本文作者 —— 来自硅谷一家初创公司的计算机科学家 Chip Huyen 梳理挖掘出 202 个机器学习工具…

将调用密集型的 COM 组件迁移到托管代码

.NET Framework 提供了一个简单的方法与传统的 COM 组件进行交互。其优点是可以在保留现有投资的同时利用新的平台。但是在某些情况下&#xff0c;保留旧组件的性能开销使得将组件迁移到托管代码是值得的。每一情况都是不一样的&#xff0c;决定是否需要迁移组件的最好方法是对…

性能优化工具 MVC Mini Profiler

MVC MiniProfiler是Stack Overflow团队设计的一款对ASP.NET MVC、WebForm 以及WCF 的性能分析的小程序。可以对一个页面本身&#xff0c;及该页面通过直接引用、Ajax、Iframe形式访问的其它页面进行监控,监控内容包括数据库内容&#xff0c;并可以显示数据库访问的SQL&#xff…

刷新UITableView

【from】http://www.superqq.com/blog/2015/08/18/ios-development-refresh-uitableview/ UITableView对于iOS开发者来说一定不会陌生&#xff0c;很有可能你的APP很多界面都用到它。关于UITableView的文章&#xff0c;想必已经不计其数&#xff0c;没事可以多看看。特别是UITa…

算术运算中隐式类型转换

转载于:https://www.cnblogs.com/strider/articles/2220313.html

高文、张钹、杨强隔空论道:AI精度与隐私的博弈

出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;AI时代&#xff0c;如何保护大众的隐私&#xff1f;以联邦学习为代表的AI技术能否实现AI协作&#xff0c;提升模型精度的同时&#xff0c;实现数据隐私的保护&#xff1f;中国如何抢占人工智能安全发展的制高点&#x…

避免单线程单元 (STA) COM 组件

默认情况下&#xff0c;ASP.NET 不允许任何 STA COM 组件在页面内运行。若要运行它们&#xff0c;必须在 .aspx 文件内将 ASPCompattrue 属性包含在 Page 指令中。这样就将执行用的线程池切换到 STA 线程池&#xff0c;而且使 HttpContext 和其他内置对象可用于 COM 对象。前者…

将 SQL Server 存储过程用于数据访问

在 .NET Framework 提供的所有数据访问方法中&#xff0c;基于 SQL Server 的数据访问是生成高性能、可缩放 Web 应用程序的推荐选择。使用托管 SQL Server 提供程序时&#xff0c;可通过使用编译的存储过程而不是特殊查询获得额外的性能提高。

centos下安装apache + subversion(转)

目录&#xff1a; 一.安装apr跟apr-util 二.安装apache服务器 三. 安装subversion 四. 配置subversion 五. 配置apache的httpd.conf 六. 验证安装 七.导入数据到资料库八.版本库服务器的同步&#xff08;新加入的&#xff09; 附&#xff1a;安装过程中遇到的问题 一.安装apr、…

真香!3个月0基础转型大厂数据分析师,他做对了什么?

年初的黑天鹅打乱了我的求职阵脚&#xff0c;专业不对口&#xff0c;无实习经验&#xff0c;在求职路上的竞争优势几乎为0&#xff0c;然而&#xff0c;开启自救模式后&#xff0c;我顺利成为了头条数据分析师&#xff0c;下面我就讲讲人生是怎么开挂的。随着人工智能普及&…

OpenStack快速入门

OpenStack云计算快速入门&#xff08;1&#xff09;该教程基于Ubuntu12.04版&#xff0c;它将帮助读者建立起一份OpenStack最小化安装。我是五岳之巅&#xff0c;翻译中多采用意译法&#xff0c;所以个别词与原版有出入&#xff0c;请大家谅解。我不是英语专业&#xff0c;我觉…

将 SqlDataReader 类用于快速只进数据游标

SqlDataReader 类提供了一种读取从 SQL Server 数据库检索的只进数据流的方法。如果当创建 ASP.NET 应用程序时出现允许您使用它的情况&#xff0c;则 SqlDataReader 类提供比 DataSet 类更高的性能。情况之所以这样&#xff0c;是因为 SqlDataReader 使用 SQL Server 的本机网…

微软小冰从上海音乐学院音工系毕业,师从于阳、陈世哲

6月29日&#xff0c;经上海音乐学院音乐工程系评定&#xff0c;人工智能微软小冰和她的人类同学——上音音乐工程系音乐科技专业毕业生一起毕业&#xff0c;并授予微软小冰上海音乐学院音乐工程系2020届“荣誉毕业生”称号。微软小冰和上海音乐学院的毕业生们一起参加了于6月29…

Typedef用法学习

不管实在C还是C代码中&#xff0c;typedef这个词都不少见&#xff0c;当然出现频率较高的还是在C代码中。typedef与#define有些相似&#xff0c;但更多的是不同&#xff0c;特别是在一些复杂的用法上&#xff0c;就完全不同了&#xff0c;看了网上一些C/C的学习者的博客&#x…

开发板tftp:timeout问题

想要从PC上面tftp文件的时候遇到了tftp:timeout的问题&#xff1a; >: tftp -gr gprsapp 192.168.1.38tftp: timeout 检查了网络&#xff0c;可以ping的通PC。PC的tftp服务器也已经打开了&#xff0c;测试从开发板上面向PC上tftp传送数据也是可以的&#xff1a;说明开发板上…

选择适合页面或应用程序的数据查看机制

根据您选择在 Web 窗体页显示数据的方式&#xff0c;在便利和性能之间常常存在着重要的权衡。例如&#xff0c;DataGrid Web 服务器控件可能是一种显示数据的方便快捷的方法&#xff0c;但就性能而言它的开销常常是最大的。在某些简单的情况下&#xff0c;您通过生成适当的 HTM…

Android强制设置横屏或竖屏

全屏 在Activity的onCreate方法中的setContentView(myview)调用之前添加下面代码requestWindowFeature(Window.FEATURE_NO_TITLE);//隐藏标题 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏 横屏 …