原创:MapuSoft
在当前的“软件集成”时代,语言转换、图形分析和其他自动化编程工具已成为必不可少的工具。
软件开发的格局正在发生改变。它不再只是从头开始创建新软件。在当今的编程环境中,工程师们通常会采用现有的软件应用程序,并使用新的特性和功能对其进行更新。但是,有一个陷阱。这些新特性和新的应用程序要求(例如更新的硬件,新的编程语言、新的操作系统或RTOS)的增加一起添加。但是,软件工程师们在当今项目中所需的工具库与过去所需要的工具有很大不同。
软件世界正处于一个新的高度。在过去的30年中,软件的可用性呈指数级增长。由于多种原因,这就产生了对软件工程师需要具备不同技能的需求。
首先,随着新的硬件供应商推出新的硬件平台和半导体,他们通常会提供软件作为演示代码,来展示硬件的各种功能。随着时间的推移,此演示代码不断演变并变得更加复杂,包含启动代码、高级演示和初始化例程。后来,更多的中间件供应商开始只提供软件,并引入介绍了中间件软件包和库代码的创建。当然,Web使得几乎任何人都可以使用这些代码。这种可用性和共享通过开源运动获得了主流的关注。现在可以找到足够多的代码“片段”来为几乎所有项目创建一个坚实的起点。
其次,行业正在向软件集成转变,而不是始终从头开始编写应用程序。正如嵌入式国防行业的许多人所知,商业和政府项目通常不会“从头开始”。在花费金钱、时间和精力来构建和调试软件应用程序之后,管理人员和项目负责人通常要求软件开发人员使用已经部署的现有项目中的软件来启动新项目。这些项目不是从头开始重建的,而是从本质上“调试为存在”。当将新参数(包括硬件、新功能、新语言、新中间件或新的RTOS)引入到现有的运行的代码库中时,就会发生这种情况。要求团队采用现有代码,并使用新定义的操作参数使其运行。
让我们来看看这种新的编码集成范例的三个关键要素,并研究现代编程工具适用于哪些地方:
1.调试为存在,而不是为了错误而调试
2.在优化之前,保持最低的性能水平
3.消除非生产性工作
一、调试为存在
将“调试为存在”与“为了错误而调试”相比较。初次编写软件应用程序时,程序员会花费一定时间调试程序,同时检查是否符合原始编写的说明书的操作问题和功能。在集成软件时,他们正在调试, 以使应用程序在具有新硬件或新操作系统或RTOS的新环境中运行。这种集成方法要求使用不同的调试方法,因为它需要熟悉所有新组件。这是一个问题,因为所有这些学习都给开发进度增加了更多时间。在这种情况下,使用语言转换或移植工具来处理一些代码转换, 可以节省数周、数月甚至数年的时间。
让我们看一个在应用程序中创建任务的简单示例。下面是一个对通用RTOS应用程序函数的示例调用。
void SampleCreateTask( void* 参数)
该调用将指针传递给一个控制块,该控制块保存任务的各个参数。从一个RTOS切换到另一个RTOS时,程序员不仅必须了解调用此函数的次数,而且还必须对每个RTOS中的两个任务结构有深刻的了解。当您将这些知识扩展到RTOS的所有组件(初始化、任务、调度、邮箱、队列等)时,使用语言转换工具来自动进行转换就很有意义。
二、保持最小的预优化性能
在软件应用程序的初始开发过程中,优化和性能投入了大量工作。通常情况下,要花很多时间来调整软件应用程序, 以使其尽可能小或运行地尽可能快。在更新或集成项目时,最初的目标不是使应用程序尽可能快地运行,而是至少以应用程序先前版本的速度一样快地运行。这是怎么做到的?使用代码内的钩子来计时和执行速度,然后使用图形化分析工具来帮助指出新代码中的瓶颈。
为了对应用程序进行性能分析,程序员可以手动将钩子插入代码中。这通常包括搜索应用程序代码,并在函数调用的入口和出口插入适当的分析函数。当应用程序包含成千上万个函数和数百万行代码时,此方法是让人无法抗拒的。当在应用程序和RTOS中使用高级分析工具时,可以自动将钩子插入RTOS和应用程序代码中。最终结果是许多重要时序和性能指标的图形视图,包括进行函数调用次数、在函数内部花费的时间、内存使用率等。图1显示了一个用于自动完成该过程的图形分析工具的示例报告。
图1:图形分析工具生成的图形视图,显示了调用函数的次数
三、消除无效工作
当更改应用程序中的一个组件(例如RTOS或硬件组件)时,某些工作可以自动化,而有些则不能。例如,使用“搜索和替换”来更新函数名称很容易出错,而且很乏味。更改编程语言时,当程序员试图将一种语言手动转换为另一种语言时,就存在容易出错的工作。之所以引起争议,是因为许多软件开发人员认为他们所做的所有工作都很重要。但是,实际上,有一些工具可以帮助在将软件应用程序移至新的RTOS或新的硬件时,自动执行大部分软件工作。
例如,考虑C / C ++和Ada语言。两者都很强大,并用于许多军事软件应用程序中。目前,许多现有应用程序都在集成Ada代码和C / C ++代码。当程序员试图手动集成或翻译代码时,就会出现问题。两种语言之间的差异很大,一个简单的示例可以说明其中的许多差异。表1显示了C / C ++和Ada中的各种运算符。尝试手动转换代码是徒劳的工作,因为有诸如MapuSoft的Ada-C / C ++ Changer之类的工具,是一种可以自动执行此操作的语言转换工具。最好将程序员的时间花在项目的其他地方。此外,想象一下,如果手动转换的代码中有很小的差错,那么就需要尝试调试软件应用程序。依靠自动化工具进行此类工作似乎更好。使用自动化工具可能会将数周, 甚至数月的手动代码转换压缩到几个小时。
表1:C / C ++和Ada的运算符差异很大。Ada侧的空白单元格表明在C / C ++中没有直接的对应项。
四、编程和工具的角色转变
在过去的几年中,编程的角色发生了巨大变化。现在的大部分工作是针对新情况来集成和更改代码,而不是从头开始创建新软件。因此,工程师必须配备新的工具库,包括能够调试成为存在、保持最小的预优化应用程序性能水平、以及消除无用的手动程序的工具。MapuSoft 技术公司的转换工具, 包括其OS PAL产品(OS 移植和抽象库, 即AppCOE集成开发环境IDE)有助于适应这一变化。
MapuSoft Technologies, Inc公司的产品清单
跨OS 开发平台
OS改变者移植包 (OS ChangerPorting Kit)
OS版本升级包(OS Version UpKit): 升级嵌入式程序到操作系统当前的版本
自动语言转换器: 自动软件语言转换且文件生成
RTOS仿真器(大学和企业两款): 在主机和目标硬件上面仿真, 开发和调试嵌入式应用
OS萃取器 OSAL : 从OS & 硬件平台上面分离代码
LinuxOK (Linux 优化包): 提升了Linux程序的性能和可靠性
Ada- C/C + + / Java改变器: Ada语言应用程序至C/C++ 或者Java的自动转换
AppCOE应用程序共同操作环境
OS仿真器: 在主机和目标硬件上面仿真, 开发和调试嵌入式应用
视频备注:一小时学会AppCOE应用程序共同操作环境(ApplicationCommon Operating Environment)
9'03 开发C和C++项目
12'25 懂得源代码, 配置设定, 构建和运行项目
28'37 调试项目
35'53 AppCOE的分析器
39'00 目标代码生成
51'30 完整包库生成器
54'45 导入遗产的代码: 将10年前的代码, 30年前的代码移植到新的平台
相关阅读
MapuSoft Technologies, Inc 样品&购买&技术&演示请咨询代理商:
座机 0755-82565851
邮件 dwin100@dwintech.com
手机 156-2521-4151
网站 www.dwintech.com/MapuSoft.html
深圳市南频科技有限公司
D-Win Technology(HongKong) Co.,Ltd
长按此二维码,识别并关注此公众号来获得售前售后支持,以及最新器件发布,应用手册,参考设计视频,白皮书,成功案例,行业信息-MapuSoft减少时间,力气,成本
首页home 产品product 新品发布news 参考设计ref.d 联系contact 应用笔记app note