首页> 中国专利> 基于非x86平台在Linux操作系统下显示的方法

基于非x86平台在Linux操作系统下显示的方法

摘要

本发明实施例公开了一种基于非x86平台在Linux操作系统下显示的方法,其方法包括:对非x86平台的嵌入式系统进行扩展;对非x86平台的嵌入式系统上电;基于PCI总线检测显卡是否与非x86平台的嵌入式系统可通信;在系统初始化阶段,为非x86平台加入x86模拟器;基于PCI总线将显卡BIOS的物理地址和Frame buffer的物理地址进行PCI地址映射;将PCI总线信息和拷贝到内存BIOS镜像信息保存到X86模拟器的寄存器;启动linux内核;启动Linux操作系统内核显卡驱动,驱动显卡正常工作,完成图形界面的显示。实施本发明实施例,通过在非x86平台的嵌入式硬件条件下,驱动显卡正常工作,从而提高图形显示界面的显示效果。

著录项

  • 公开/公告号CN106155689A

    专利类型发明专利

  • 公开/公告日2016-11-23

    原文格式PDF

  • 申请/专利权人 广东中兴新支点技术有限公司;

    申请/专利号CN201610520138.3

  • 申请日2016-07-02

  • 分类号G06F9/44(20060101);G06F3/14(20060101);

  • 代理机构佛山市广盈专利商标事务所(普通合伙);

  • 代理人杨乐兵

  • 地址 510663 广东省广州市天河科技园高唐新建区高普路1021号第6层

  • 入库时间 2023-06-19 00:56:20

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-04-12

    授权

    授权

  • 2016-12-21

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20160702

    实质审查的生效

  • 2016-11-23

    公开

    公开

说明书

技术领域

本发明涉及计算机嵌入式系统技术领域,尤其涉及一种基于非x86平台在Linux操作系统下显示的方法。

背景技术

人机交互在现代计算机的意义至关重要,计算机加电启动后的第一要务就是显示输出,并向用户报告系统是否健康。计算机系统的显示输出一般由显示控制器设备完成,由于历史原因,显示控制器常简称为显卡。显卡在加电后,需要由CPU对其进行初始化配置,才能进入正常的显示数据转换和信号输出状态,此时显示器上才会有信息输出。因此显卡的初始化速度是影响计算机开机显示速度的重要因素。

随着嵌入式系统的不断发展和应用,嵌入式系统的对图形界面的要求越来越高,许多企业也基于嵌入式硬件上提出了可视化图形界面的要求。现有的非x86平台的嵌入式系统因为其专用性的限制,无法满足可视化图形界面的应用。通用的Linux桌面操作系统无法应用在工业领域的苛刻环境中。这使得需要找到一种方法,通过较少的硬件扩展和软件配置,让嵌入式硬件满足工业领域可视化的需求。

发明内容

本发明的目的在于克服现有技术的不足,本发明提供了一种在非x86平台的嵌入式硬件条件下,通过少量的硬件扩展和软件配置,使系统的图形界面性能能达到更高的要求。

为了解决上述问题,本发明提出了一种基于非x86平台在Linux操作系统下显示的方法,包括如下步骤:

对非x86平台的嵌入式系统进行扩展,将显卡通过PCI总线接口接入非x86平台的嵌入式系统;

对非x86平台的嵌入式系统上电,启动系统初始化,并在系统初始化过程中对显卡进行控制初始化;

基于PCI总线检测显卡是否与非x86平台的嵌入式系统可通信,在检测到显卡处于可通信时,PCI总线接口获取显卡设备信息;

在系统初始化过程中,为非x86平台加入x86模拟器,并完成x86模拟器初始化过程,X86模拟器模拟x86的硬件寄存器、操作码、中断向量,为模拟器分配内存;

基于PCI总线将显卡BIOS的物理地址和Frame buffer的物理地址进行PCI地址映射;

将显卡中的BIOS镜像拷贝到内存,解除BIOS镜像的地址映射;

将PCI总线信息和拷贝到内存BIOS镜像信息保存到X86模拟器的寄存器,X86模拟器模拟x86中断,执行显卡BIOS代码,完成Linux内核代码启动前对显卡初始化;

设置Linux内核启动参数,启动linux内核;

启动Linux操作系统内核显卡驱动,驱动显卡正常工作,完成图形界面的显示。

所述PCI总线接口获取显卡设备信息包括:

PCI总线接口获取到显卡设备ID、供应商、型号、显卡属性和地址空间信息。

所述完成x86模拟器初始化过程中还包括:

记录显卡的IO寄存器和内存的写操作指令。

所述基于PCI总线将显卡BIOS的物理地址和Frame buffer的物理地址进行PCI地址映射包括:

根据PCI总线上的信息,查询显卡ROM中的BIOS镜像的物理地址和Frame buffer的物理地址以及它们所对应的长度;

将显卡中BIOS镜像的物理地址、Frame buffer的物理地址和它们的长度保存在PCI总线上;

将BIOS镜像的物理地址、Frame buffer的物理地址做PCI地址映射;

将BIOS镜像和frame buffer映射后的地址和长度保存到PCI总线上,然后延时等待下一步的执行。

所述方法还包括:

在基于PCI总线检测到显卡处于不可通信时,基于非x86平台报警提醒显卡故障。

在本发明实施例中,通过在非x86平台的嵌入式硬件条件下,通过少量的硬件扩展和软件配置,其通过外接显卡,通过x86的模拟器和Linux操作系统的显卡驱动,驱动显卡正常工作,使系统的图形界面性能能达到更高的要求,嵌入式系统能正确启动并识别显卡,显卡能够和系统的其他硬件相互配合工作,从而提高图形显示界面的显示效果,满足嵌入式硬件在工业领域对图形界面苛刻要求。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1是本发明实施例中的基于非x86平台在Linux操作系统下显示的方法流程图;

图2是本发明实施例中的基于非x86平台在Linux操作系统下显示方法的软件流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例中所涉及的基于非x86平台在Linux操作系统下显示的方法,其通过对非x86平台的嵌入式系统进行扩展,将显卡通过PCI总线接口接入非x86平台的嵌入式系统;对非x86平台的嵌入式系统上电,启动系统初始化,并在系统初始化过程中对显卡进行控制初始化;基于PCI总线检测显卡是否与非x86平台的嵌入式系统可通信,在检测到显卡处于可通信时,PCI总线接口获取显卡设备信息;在系统初始化阶段,为非x86平台加入x86模拟器,并完成x86模拟器初始化过程,X86模拟器模拟x86的硬件寄存器、操作码、中断向量,为模拟器分配内存;基于PCI总线将显卡BIOS的物理地址和Frame buffer的物理地址进行PCI地址映射;将显卡中的BIOS镜像拷贝到内存,解除BIOS镜像的地址映射;将PCI总线信息和拷贝到内存BIOS镜像信息保存到X86模拟器的寄存器,X86模拟器模拟x86中断,执行显卡BIOS代码,完成Linux内核代码启动前对显卡初始化;设置Linux内核启动参数,启动linux内核;启动Linux操作系统内核显卡驱动,驱动显卡正常工作,完成图形界面的显示。

相应的,图1示出了本发明实施例中的基于非x86平台在Linux操作系统下显示的方法流程图,该流程图包括如下步骤:

S101、对非x86平台的嵌入式系统进行扩展;

具体实施过程中,首先对嵌入式系统进行扩展,将显卡通过PCI总线接口接入非X86平台的嵌入式系统。

S102、对非x86平台的嵌入式系统上电;

非X86平台的嵌入式系统上电,启动系统初始化,并在系统初始化的过程中对显卡进行控制初始化。

S103、基于PCI总线检测显卡是否与非x86平台的嵌入式系统可通信,如果显卡处于可通信时,则进入S104,否则进入S111;

具体实施过程中,在初始化过程中,PCI总线端口可以通过侦测的方式探测到显卡是否能实现与x86平台的通信功能,其保障了显卡接入能正常工作。

S104、在检测到显卡处于可通信时,PCI总线接口获取显卡设备信息;

在PCI总线检测到显卡,PCI总线接口获取到显卡设备ID、供应商、型号、显卡属性和地址空间信息。

S105、在系统初始化过程中,为非x86平台加入x86模拟器,对X86模拟器初始化;

由于非X86平台的嵌入式系统无法直接执行显卡BIOS代码(显卡的BIOS代码是X86框架的二进制码)。在系统初始化过程中,即uboot启动过程中,加入X86模拟器并初始化,完成x86模拟器初始化过程,X86模拟器模拟x86的硬件寄存器、操作码、中断向量,为模拟器分配内存。在具体实施过程中,在初始化过程中还记录了显卡的IO寄存器和内存的写操作指令。在非X86平台的嵌入式系统初始化的阶段,加入了X86模拟器,启动显卡驱动前的控制初始化。解决了非X86平台的嵌入式系统无法识别和启动显卡驱动前的控制初始化问题,使嵌入式操作系统能驱动显卡工作。在非X86平台的嵌入式系统启动中加入的X86模拟器,模拟x86的硬件寄存器、x86的操作码(即指令集)和X86的执行流程,X86的执行流程包括寻址和执行指令。解决了非X86平台的嵌入式系统不能识别显卡中固化的X86显卡初始化程序的问题。

S106、基于PCI总线将显卡BIOS的物理地址和Frame buffer的物理地址进行PCI地址映射;

具体实施过程中,根据PCI总线上的信息,查询显卡ROM中的BIOS镜像的物理地址和Frame buffer的物理地址以及它们所对应的长度。将显卡中BIOS地址、Frame buffer地址和他们的长度保存在PCI总线上。将两个地址(BIOS地址和Frame buffer地址)做PCI地址映射。将BIOS镜像和frame buffer映射后的地址和长度保存到PCI总线上,然后延时等待下一步的执行。

S107、将显卡中的BIOS镜像拷贝到内存,解除BIOS镜像的地址映射,;

S108、将PCI总线信息和拷贝到内存BIOS镜像信息保存到X86模拟器的寄存器,执行显卡BIOS代码;

具体实施过程中,将PCI总线信息和拷贝到内存BIOS镜像信息保存到X86模拟器的寄存器,X86模拟器模拟x86中断,执行显卡BIOS代码,完成Linux内核代码启动前对显卡初始化;

S109、设置Linux内核启动参数,启动linux内核;

S110、启动Linux操作系统内核显卡驱动,驱动显卡正常工作,完成图形界面的显示。

S111、基于非x86平台报警提醒显卡故障。

该步骤实施,可以提醒接入显卡存在故障,提醒操作人员进行相应操作。

在完成以上步骤以后,嵌入式系统能正确启动并识别显卡,显卡能够和系统的其他硬件相互配合工作,从而提高图形显示界面的显示效果,满足嵌入式硬件在工业领域对图形界面苛刻要求。

图2示出了本发明实施例中的基于非x86平台在Linux操作系统下显示方法的软件流程图,其包括如下:

S201、系统初始化start_uboot;

S202、设备初始化devices_init;

S203、显卡初始化drv_video_init;

S204、镭显卡探测radeon_probe;

S205、PCI总线获取显卡信息pci_find_devices;

S206、基于PCI总线将显卡BIOS的物理地址和Frame buffer的物理地址进行PCI地址映射PCI_mapBIOSImage;

S207、将显卡中的BIOS镜像拷贝到内存memcpy;

S208、解除BIOS镜像的地址映射PCI_unmapBIOSImage;

S209、执行显卡BIOS代码callRealMode;

S210、设置内核参数,启动linux内核;

S211、启动显卡驱动,完成图形显示。

在整个具体实施过程中,通过在非x86平台的嵌入式硬件条件下,通过少量的硬件扩展和软件配置,其通过外接显卡,通过x86的模拟器和Linux操作系统的显卡驱动,驱动显卡正常工作,使系统的图形界面性能能达到更高的要求,嵌入式系统能正确启动并识别显卡,显卡能够和系统的其他硬件相互配合工作,从而提高图形显示界面的显示效果,满足嵌入式硬件在工业领域对图形界面苛刻要求。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁盘或光盘等。

另外,以上对本发明实施例所提供的基于非x86平台在Linux操作系统下显示的方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号