APP下载

自主可控环境下的集成开发环境

2022-06-16陈玮彤黄天一丁吕繁

现代计算机 2022年7期
关键词:嵌入式软件源代码插件

陈玮彤,黄天一,丁吕繁,杨 曦

(1.四川大学计算机学院,成都 610041;2.成都创腾软件有限公司,成都 610095)

0 引言

自主可控是保障网络安全、信息安全的前提,只有提高关键核心技术的创新能力,关键零部件、各类核心软件实现安全可控,我国数字经济发展才能不受制于人。中兴、华为断供事件作为敲响中国软硬件发展的“警钟”,使得国家充分认识到了自主可控的重要性。在各行业自主研发的大趋势下,国产CPU、操作系统等技术已经趋于成熟,国产CPU 公司包括龙芯、飞腾等,国产操作系统如银河麒麟等,都在不断发展以提高核心竞争力,增强自主可控能力。

本论文研究的课题旨在实现一个支持国产嵌入式、桌面、服务器操作系统的自主可控的软件集成开发环境平台。课题的需求包括满足在飞腾计算机平台、银河麒麟操作系统上的运行要求,从而解决国产处理器生态不成熟、操作系统对国产处理器支持薄弱等问题,打破国外组织、机构对操作系统配套软件集成开发环境的垄断。

1 自主可控计算环境下的集成开发环境统一架构技术

本课题的集成开发环境由满足工业嵌入式应用软件开发、满足工业桌面操作系统应用和满足工业服务器操作系统应用开发的一组功能模块和第三方软件组成:

针对工业嵌入式软件开发的特点,集成开发环境集成了多种交叉工具链运行环境、多种交叉工具链,实现了上位机与目标机之间的通信代理,向开发人员提供了项目管理、代码管理、代码编辑、交叉编译器参数设置、编译器调用、交叉调试参数设置、目标机端程序调试、文件下载、二进制固化等图形化操作界面,以开发面向多硬件平台、工业嵌入式操作系统的静态库、动态库以及应用程序。

针对工业桌面操作系统、工业服务器操作系统应用开发的特点,集成开发环境支持了多种编程语言,集成了多种第三方软件开发SDK、多种单元测试框架、性能分析工具、调试环境、运行环境、部署环境以及过程控制平台等,以便支持开发人员进行窗体应用开发、后台应用开发、Web 应用开发,开展项目管理、需求分配、任务管理等活动。

1.1 集成开发环境组成

依据统一、开放、灵活的架构思路,课题设计了集成开发环境。如图1所示,组成集成开发环境的软件模块和应用遵循OSGi 模块化规范、以Equinox平台为运行时环境、以Eclipse开发工具为插件开发环境。

图1 集成开发环境组成

1.2 Eclipse平台简介

Eclipse 作为一种通用的工具平台,它将各个功能模块连接起来,提供标准的接口,接收各个模块的请求并且控制程序的运行。整个Eclipse 平台建立在插件机制之上,除了一些平台运行时的内核,Eclipse 平台所有的功能都由插件实现。由于课题实现的工业嵌入式软件开发环境和工业服务器操作系统软件开发环境都是基于Eclipse 实现的,因此本小节主要介绍Eclipse的运行机制和体系结构。

1.2.1 工作机制

Eclipse 平台的主要任务是为开发者提供各种编程工具集成的机制和规则,这些机制通过应用程序接口(API)、类和方法表现出来。本质上,Eclipse 是一组松散绑定、但互相连接的代码块。搞清楚这些代码块之间的相互调用和连接方法,也就理解了Eclipse结构的基本原理。Eclipse 平台的结构如图2 所示,它的组件包括平台运行库(platform runtime)、工作台(workbench)、工作区(workspace)、团队组件(team)、调试(debug)和帮助(help)。

图2 Eclispe体系结构图

1.2.2 Eclipse插件机制

模块化的设计让Eclipse 自身被分解为不同的功能块,这些功能块能更容易地被重用于创建超出原始开发人员设想的应用程序,就像不同版本的Eclipse 分别为特定的功能而设计。Eclipse 附带了标准的插件集,包括Java 开发工具JDK,还包括插件开发环境PDE。

希望被其他插件扩展的插件都会声明一个扩展点,扩展点机制使得Eclipse平台架构具有更好的灵活性,扩展是Eclipse平台上提供各种功能的来源,插件利用扩展点向Eclipse新添功能。可用的插件在事先确定后,进行插件间信息交换,无需激活它们,平台就可以为每个插件提供丰富的关于它运行的上下文的相关信息。

1.3 SWT/JFace与图形化操作环境

SWT具有本地JNI调用机制,使得程序具有很快的响应速度;轻量级的API 使得开发人员调用简单、易于上手,因此课题选用SWT/JFace图形化界面开发框架作为集成开发环境的统一界面开发框架。

JFace 用来在SWT库顶部提供常见的应用程序用户界面功能。JFACE 采用MVC 的模式对SWT 进行了封装,增加了对复杂界面组件的支持,并且极大地丰富了SWT 的组件功能。它提供一些类和接口,以处理与使用SWT 来对动态用户界面编程相关联的许多常见任务。

2 自主可控环境下的软件集成开发环境总体架构

2.1 嵌入式软件开发环境

本论文实现的嵌入式软件开发环境由两大部分构成,分别为主机端支撑环境和图形化操作系统,主要结构如图3。其中主机端支撑环境为交叉工具链提供了运行环境、为集成开发环境提供了与目标机端的通信代理、为集成开发环境提供了交叉调试工具。图形化操作环境则由一组与嵌入式软件开发密切相关的软件模块组成。

图3 嵌入式软件集成开发环境

2.1.1 嵌入式应用软件调试模块

提供基于汇编的调试和基于源代码的调试;提供任务栈显示功能;提供汇编断点、源代码断点管理功能;提供调试会话管理功能;提供被调试的应用软件的内存查看、修改功能;提供变量值查看、修改功能;提供表达式添加、运算功能;提供单步、运行、挂起功能。

2.1.2 二进制文件下载&运行模块

提供将主机端的二进制文件下载到目标机端的内存或文件系统中的功能;提供从主机端执行目标机端指定文件的功能;提供运行参数设置功能。

2.1.3 源代码编译模块

源代码编译模块根据开发人员在创建项目时所指定的编译信息,调用主机端中相关的工具链对项目中的源代码进行预处理、编译、汇编、链接生成可执行文件或库文件。在编译过程中,系统会将工具链的输出信息输出到界面中进行显示,根据编译错误将错误信息与源代码进行关联并显示错误信息。

2.1.4 目标机通信管理模块

基于主机端与目标机端的通信协议,建立主机端与目标机端的通信通道,向上提供通信接口。

2.2 桌面和服务器系统的应用开发环境

银河麒麟操作系统下桌面应用和服务器应用的开发环境如图4所示,其中部分软件模块的功能描述如下。

图4 银河麒麟应用开发环境

2.2.1 项目创建向导

为开发人员创建窗体应用项目、Web 应用项目、控制台应用项目等类型的项目提供引导, 提供项目名称输入、项目类型选择、项目模板选择等操作界面。

2.2.2 项目管理

提供当前工作空间中所有项目信息的展示功能;提供项目导入/导出功能;提供项目重命名功能;提供项目删除功能;提供项目关闭/打开功能等。

2.2.3 源代码编译

根据项目类型以及开发人员在创建项目时所设置的信息,调用相应的编译器(如:Python编译器、Java 编译器、Qt编译器)对源代码进行编译。

2.2.4 目标机管理

管理用于运行、调试、安装应用的目标机,并向外提供通信接口供其它模块调用。

3 实现集成开发环境的关键技术

3.1 crosstool-NG制作交叉编译工具链

在嵌入式软件开发过程中,一个十分重要的部分是交叉编译工具的构建,课题基于银河麒麟操作系统,使用crosstool-NG 工具实现了针对mips架构嵌入式开发板的交叉编译工具链。

使用crosstool-NG 得到需要的交叉编译工具链有以下几个步骤:下载crosstool-NG 源码、编译crosstool-NG 源码并安装、配置需要的交叉工具链参数、编译生成需要的交叉工具链。

其中,crosstool-NG 工具的源码下载和安装过程,与普通的Linux 环境下软件的安装过程类似,都需要下载源码之后在本机进行编译安装。

在使用安装好的crosstool-NG 生成需要的交叉工具链之前,需要进行的配置包括宿主机使用的CPU 架构类型、目标平台的操作系统、使用的C 库等。使用ct-ng list-samples 命令查看当前已经包含了哪些默认的示例配置,部分结果如图5所示。

图5 使用ct-ng list-samples命令的部分结果

在所有的配置工作都完成之后,使用ct-ng build命令生成交叉工具链。

3.2 Qt桌面软件开发框架

我们使用流行的Qt 框架实现桌面软件集成开发环境,可以较为方便地进行银河麒麟操作系统下桌面软件的开发,开始界面如图6所示。

图6 使用Qt框架实现桌面软件集成开发环境的开始界面

Qt 是一个跨平台的C++开发库,支持市面上大多数操作系统,主要用于开发有图形化界面的程序,同时也可以用于命令行程序和服务器端程序的开发。

Qt 开发库基于现有的一些工具链制作,其使用的编译器、链接器、调试器都是现成的,使用的工具包括GNU 工具集、MinGW、CMake等,Qt 官方的开发环境安装包里也内置了专门的开发工具。

Qt的类库目录如图7所示。

图7 Qt的类库目录

4 结语

本课题开发的集成开发环境,基于OSGi 规范开发,运行于Equinox 环境,包括工业嵌入式软件开发、工业桌面软件开发、工业服务器应用开发三个部分,集软件设计、开发、调试与集成部署为一体,将开发平台和运行平台有机地结合在一起。其中嵌入式软件开发部分基于插件机制开发,支持在银河麒麟操作系统中开发国产龙芯、飞腾处理器的应用;桌面软件开发环境基于Qt 开发,支持基于C/C++、Python、Java 的控制台应用开发;服务器应用开发环境基于插件机制开发,支持Java、HTML、CSS、JavaScript 等语言的程序开发。通过使用开发集成环境,用户可以高效地在银河麒麟操作系统中进行嵌入式软件、桌面软件、服务器软件的开发,课题丰富了银河麒麟操作系统的软件生态。

猜你喜欢

嵌入式软件源代码插件
基于TXL的源代码插桩技术研究
用好插件浏览器标签页管理更轻松
浅析嵌入式软件技术的现状与发展动向
刍议嵌入式软件开发模式与软件架构
请个浏览器插件全能管家
基于jQUerY的自定义插件开发
基于模型检查的嵌入式软件构件化分析与验证
保护好自己的“源代码”
解密别克安全“源代码”
嵌入式软件在计算机软件开发过程中的运用