基于网芯一号处理器的锐华操作系统适配

2020-04-01 20:21任占广张学敏
计算机与网络 2020年22期

任占广 张学敏

摘要:网芯一号处理器是我国自主研制的一款高性能通信处理器芯片,具有指标性能高、环境适应性强和综合能耗低等特点。面向该处理器在嵌入式领域的实时性需求,开展锐华操作系统适配技术研究,突破基于自主芯片之上的自主可控实时操作系统关键技术。研究结果表明,锐华操作系统可以较好适配网芯一号处理器,满足系统的实时性需求。

关键词:自主可控;网芯一号处理器;嵌入式实时操作系统

中图分类号:TP311文献标志码:A文章编号:1008-1739(2020)22-58-4

0引言

现有通信设备中大量使用国外进口的软硬件产品,可能存在内置后门和未知漏洞,对我国信息网络造成严重的安全隐患。为此,推进自主可控的产品成为解决国家网络安全问题的战略举措。

网芯一号处理器是我国自主研制的一款高性能通信处理器芯片,目前Linux操作系统已经完成对网芯一号处理器的适配,但在嵌入式领域,Linux操作系统在实时性上不能完全满足需求,有必要进一步拓展网芯一号处理器在嵌入式领域的应用。

目前绝大部分功能较复杂的嵌入式系统都基于嵌入式实时操作系统(Embedded Real-time Operating System)进行开发[1-2],相较其他国产嵌入式实时操作系统,锐华嵌入式实时操作系统(ReWorks)在应用范围、功能完备、技术支持、应用移植的方便性等方面都有较大优势,但目前锐华嵌入式实时操作系统还没有适配网芯一号处理器。

1系统简介

1.1网芯一号处理器

网芯一号处理器具有指标性能高、环境适应性强和综合能耗低等特点,一方面可作为控制处理器,应用于控制交换板和业务接口板,支撑战略网络固定汇聚/接入级、车载/搬移式以及战术网核心/接入级通信网络技术研发与装备研制。另一方面可作为专用分组报文处理器,支撑战术接入级通信网络技术研发与装备研制。另外,该芯片还可用于网络安全和数据链等领域的装备研制,实现百兆以上级分组报文处理。

面向网芯一号处理器在嵌入式领域的实时性需求,开展锐华操作系统适配技术研究,突破基于自主芯片之上的自主可控实时操作系统关键技术,研制形成嵌入式实时自主可控处理平台。

1.2锐华嵌入式操作系统

锐华操作系统是国内领先的具有自主知识产权的嵌入式实时操作系统,该产品核心代码自主可控,能为不同领域的用户提供差异化的定制服务[3-5]。

锐华嵌入式操作系统集成开发套件包括锐华嵌入式实时操作系统[4]和集成开发环境[5]两部分。锐华嵌入式实时操作系统是一个高可靠、强实时嵌入式操作系统,采用微内核及组件技术,能根据应用需要对操作系统内核进行配置、裁剪、扩展与定制,具备较强伸缩能力;锐华嵌入式应用集成开发环境(ReDe)具有开放性、跨平台、一体化等特点。因此,锐华嵌入式实时操作系统能够更好地满足网芯一号处理器在嵌入式领域的实时性需求。

2基于网芯一号处理器的锐华操作系统适配技术

基于网芯一号处理器的锐华操作系统适配技术利用网芯一号处理器应用开发系统硬件平台,通过在锐华操作系统进行板级支持包(BSP)和驱动程序的开发,实现锐华操作系统的适配工作,系统组成如图1所示。

2.1概述

BSP是介于底层硬件和上层软件之间的底层软件开发包,主要功能是屏蔽硬件、提供操作系统的驱动和硬件驱动[6]。锐华操作系统定义了BSP开发模板,提供了一系列模块接口,通过实现模块接口完成BSP的开发工作。

基于网芯一号处理器的锐华操作系统适配项目中,BSP控制所有硬件,包括芯片、网口、串口、硬盘和PCI-E总线,向上提供虚拟的硬件平台,主要功能包括上电时硬件的初始化锐华、操作系统上设备的驱动程序,并为操作系统访问硬件提供接口支持,为应用程序提供相关程序入口,可以使其访问底层硬件,把硬件相关软件和无关软件整合在锐华操作系统内核中。BSP在整个内核中的位置如图2所示。

锐华操作系统根据设备访问方式不同,将设备分为字符设备、块设备和网络设备3类。字符设备是以字符为单位进行读写访问的,比较典型的有串口设备、键盘设备等;块设备是以块为单位进行读写访问的,比较典型的有硬盘、SD卡等;网络设备是一种比较特殊的设备,依赖网络协议栈实现。

锐华操作系统提供了I/O模块,通过实现该模块的应用程序API,可以访问字符设备、网絡设备、(通过文件系统)块设备等;通过该模块的驱动,API可以开发和管理驱动程序;通过该模块的文件系统,API可以管理文件系统。锐华操作系统的设备驱动工作原理是操作硬件相关寄存器,并为应用层提供一套标准的接口:对上提供一套内核标准接口响应函数,对下提供硬件驱动和硬件中断响应函数,可以通过实现I/O模块相关API完成驱动程序的开发工作。

2.2 BSP设计

锐华集成开发环境是一个集嵌入式软件设计、开发、调试、测试、集成部署于一体的开发平台,为基于锐华嵌入式实时操作系统的嵌入式软件与运行提供全过程支持[5]。基于锐华集成开发环境可以更高效地进行BSP开发和驱动程序开发。在锐华集成开发环境下,BSP的开发流程如下:

①选择与网芯一号处理器型号相近的BSP包作为BSP开发模板,根据目标板卡外围器件进行修改或添加代码,满足项目的应用,并创建BSP库工程;

②实现用于调试的printk()函数;

③根据BSP的开发需要,通过锐华集成开发环境ReDe进行资源配置。如BSP开发网卡驱动时,需要网络协议栈,可通过添加“增强型网络协议栈”资源,将网卡设备驱动相关的资源纳入到BSP开发工程中,在编译生成的ReWorks目标镜像中就会包含增强型网络协议栈相关信息;

④编写start.s的预初始化代码,完成操作系统运行环境初始化、驱动初始化,最后执行用户代码的一系列流程;编写printk调试输出模块代码、中断控制器模块代码、系统时钟模块代码、CACHE和MMU配置模块代码等;

⑤对工程进行编译构建,编译完毕产生ReWorks目标镜像文件,下载至目标板上进行BSP调试;

⑥BSP工程发布。在锐华集成开发环境中,开发完成的BSP将以“资源组件”的形式提交发布,通过定制BSP资源组件工程与目标板资源工程将BSP集成到锐华集成开发环境中,然后生成自引导程序,并完成自引导程序的相关配置信息,编译生成ReWorks目标镜像文件。

2.3驱动程序设计

根据网芯一号处理器外设需求,需要开发串口驱动、网口驱动、硬盘驱动和PCI-E总线驱动。本节通过网卡驱动的实例具体说明设备驱动程序的开发过程。

(1)网卡驱动的挂接与配置

建立网卡驱动挂接对象:

staticstructrtos_bsdnet_ifconfigconfig_em0= {“em0”, em_attach,NULL,0,0,0,0,0,0,0,0,0,0};

调用rtos_bsdnet_attach(&config_em0)函数实现网卡驱动挂接操作。

其中em_attach()是网卡驱动入口函数,用于识别硬件类型,并分配所有相关资源、初始化硬件设备配置。通常此函数通过调用em_setup_interface()函数还可以实现对网络协议栈的ifnet对象的赋值等初始化操作。

通过ifconfig()函数配置网卡IP地址和子网掩码,通过hostAdd()函数配置网卡IP地址所对应的主机。通过以上操作,系统就可以将网卡驱动和网络协议栈挂接起来,实现网卡的基本功能。

(2)网络协议栈的ifnet对象挂接

调用em_setup_interface()函数创建网络设备描述符结构体和注册接口,并为网络协议栈的ifnet对象赋值,ifnet对象通过em_init()函数初始化接口,创建发送/接收任务,初始化接收描述符等;通过em_start()函数启动网卡设备,然后em_setup_interface()函数将ifnet对象挂接到网络协议栈,网络协议栈通过挂接的接口调到网卡底层驱动,当协议栈有数据包发送时,会通过ifnet结构体中if_start ()函数指向的em_start()函数实现数据发送功能。

(3)设备读/写操作

当用户调用write()函数进行写操作时,I/O系统调用在驱动程序表中注册的函数em_wirte(),该函数将拷贝需要发送的数据到网络缓冲区MBUF中,并调用if_start ()启动发送,em_start()将数据拷贝到设备缓冲区中,并放置到设备的发送队列,完成发送操作。数据发送流程如图3所示。

当驱动程序接收到数据包时,会调用接收中断服务程序,中断服务程序em_intr()启动em_process_recve_interrupts(),将RBD中的数据拷贝到缓冲区MBUF中,当用户调用read()函数进行读操作时,I/O系统调用在驱动程序表中注册的函数em_read(),该函数会将消息队列中的内容读入用户缓冲区,完成接收操作。数据接收流程如图4所示。

(4)關闭设备

关闭操作是打开操作的逆过程,当需要关闭网卡时,系统会调用函数em_stop()来完成,该函数释放中断向量,停止接收和发送寄存器的DMA处理,并将电源放置到低功耗。

(5)设备中断管理

设备进行读/写操作时使用,当设备接收到数据或数据发送结束时,通过触发中断信号,向系统报告这一状态,系统便执行中断服务函数em_intr()进行相应处理。

3测试与实验结果

基于网芯一号处理器的锐华操作系统适配中,利用编译生成的包含BSP的ReWorks镜像,下载至搭载网芯一号处理器的板卡上,对BSP的各项功能进行测试,测试结果均能满足要求;同时分别进行了各项驱动程序测试,均能正确实现各项驱动程序的功能。

基于自主研发的网芯一号处理器的硬件平台上,分别进行Linux操作系统、VxWorks实时操作系统[7]和锐华嵌入式实时操作系统的典型性能对比测试,其中2项重要性能指标测试结果如表1所示。

根据设备技术指标需求:系统中断响应/恢复时间和任务响应/恢复时间需小于3μs;软硬件完全自主可控。从测试结果可以看出,基于网芯一号处理器的硬件平台,Linux嵌入式系统的2项技术指标均不满足需求;VxWorks实时操作系统满足第1项技术指标需求,但不满足第2项指标需求;锐华嵌入式实时操作系统可以同时满足2项技术指标需求,系统中断响应/恢复时间和任务响应/恢复时间技术指标不仅优于Linux操作系统,而且与国外主流实时操作系统的性能相当,甚至在部分功能测试上具有明显优势。

通过对基于网芯一号处理器的锐华操作系统的适配测试结果可知,锐华操作系统可以较好地适配网芯一号处理器,并能够满足嵌入式系统的实时性需求。同时,锐华操作系统提供的VxWorks兼容层模块,极大地方便了使用VxWorks接口的应用程序或驱动开发的移植工作。

4结束语

本文主要面向网芯一号处理器在嵌入式领域的实时性需求,开展锐华操作系统适配技术研究,主要包括BSP研究和驱动程序研究,并基于自主研发的网芯一号处理器的硬件平台,进行锐华嵌入式实时操作系统的移植;对高层软件进行修改移植,验证了锐华嵌入式操作系统满足嵌入式操作系统的实时性需求。

基于网芯一号处理器的锐华操作系统适配技术,突破了基于自主芯片之上的自主可控实时操作系统关键技术,研制形成了嵌入式实时自主可控处理平台。

参考文献

[1]林建民.嵌入式操作系统技术发展趋势[J].计算机工程, 2001,27(10):114-118.

[2]许海燕,付炎.嵌入式系统技术与应用[M].北京:机械工业出版社,2002.

[3]胡明星,肖博峰,游夏.国产平台嵌入式高性能图形方案的研究与应用[J].数字技术与应用,2018,36(2):94-96.

[4]李浩正,罗利强,周游,等.基于锐华嵌入式实时操作系统雷达数据处理软件设计[J].火控雷达技术,2018,47(1):54-57.

[5]丁如艺,张激,李嘉伟.嵌入式系统平台抽象层设计与接口实现[J].计算机系统应用,2020,29(3):108-113.

[6]陳怀民,王哲,程鹏飞,等.VxWorks下设备驱动程序开发技术研究[J].现代电子技术,2015,38(10):38-41.

[7]林嘉树,蒋铃鸽.VxWorks操作系统BSP和BootLoader介绍[J].电信快报,2005(7):47-50.