嵌入式开发「坑」太多?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ÿ…

使用 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 等数据结构,然后再介绍字符串处理和正则表达式࿰…

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

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 代码中使用早期绑定
以往,开发人员喜欢使用 Visual Basic、VBScript 和 JScript 的原因之一就是它们所谓“无类型”的性质。变量不需要显式类型声明,并能够简单地通过使用来创建它们。当从一个类型到另一个类型进行分配时,转换将自动执行。不过,这种便…

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----…
算法对建筑业的影响,不仅仅是画图
拿什么来拯救,这些奇葩的设计?奇葩造型位于英国伦敦芬乔奇街 20 号的一座摩天大楼,由于造型像「对讲机」,被取外号「对讲机大楼」。其实造型奇葩倒没什么,也有一些人觉得还挺好看。但问题是,建成之后&#…

如何参与团队合作?
现在,团队合作就是竞争力。随着市场竞争的日益激烈,企业更加强调团队精神,建立群体共识,以达到更高的工作效率。特别是有遇到大型项目时,想凭借一己之力去取得卓越的成果,可能非常困难。想必你也意识到&…
200 个工具分析机器学习十年:开源是大势,工程师是核心
【编者按】人工智能和机器学习经过十年多的发展,在过去的几年间,各类工具数量迎来了持续的爆发式的增长,机器学习也正式由科研走进工业生产阶段。本文作者 —— 来自硅谷一家初创公司的计算机科学家 Chip Huyen 梳理挖掘出 202 个机器学习工具…

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

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

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

算术运算中隐式类型转换
转载于:https://www.cnblogs.com/strider/articles/2220313.html
高文、张钹、杨强隔空论道:AI精度与隐私的博弈
出品 | AI科技大本营(ID:rgznai100)AI时代,如何保护大众的隐私?以联邦学习为代表的AI技术能否实现AI协作,提升模型精度的同时,实现数据隐私的保护?中国如何抢占人工智能安全发展的制高点&#x…

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

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

centos下安装apache + subversion(转)
目录: 一.安装apr跟apr-util 二.安装apache服务器 三. 安装subversion 四. 配置subversion 五. 配置apache的httpd.conf 六. 验证安装 七.导入数据到资料库八.版本库服务器的同步(新加入的) 附:安装过程中遇到的问题 一.安装apr、…
真香!3个月0基础转型大厂数据分析师,他做对了什么?
年初的黑天鹅打乱了我的求职阵脚,专业不对口,无实习经验,在求职路上的竞争优势几乎为0,然而,开启自救模式后,我顺利成为了头条数据分析师,下面我就讲讲人生是怎么开挂的。随着人工智能普及&…

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

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

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

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

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

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

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