亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于非x86平臺在Linux操作系統(tǒng)下顯示的方法與流程

文檔序號:11828911閱讀:559來源:國知局
基于非x86平臺在Linux操作系統(tǒng)下顯示的方法與流程

本發(fā)明涉及計算機(jī)嵌入式系統(tǒng)技術(shù)領(lǐng)域,尤其涉及一種基于非x86平臺在Linux操作系統(tǒng)下顯示的方法。



背景技術(shù):

人機(jī)交互在現(xiàn)代計算機(jī)的意義至關(guān)重要,計算機(jī)加電啟動后的第一要務(wù)就是顯示輸出,并向用戶報告系統(tǒng)是否健康。計算機(jī)系統(tǒng)的顯示輸出一般由顯示控制器設(shè)備完成,由于歷史原因,顯示控制器常簡稱為顯卡。顯卡在加電后,需要由CPU對其進(jìn)行初始化配置,才能進(jìn)入正常的顯示數(shù)據(jù)轉(zhuǎn)換和信號輸出狀態(tài),此時顯示器上才會有信息輸出。因此顯卡的初始化速度是影響計算機(jī)開機(jī)顯示速度的重要因素。

隨著嵌入式系統(tǒng)的不斷發(fā)展和應(yīng)用,嵌入式系統(tǒng)的對圖形界面的要求越來越高,許多企業(yè)也基于嵌入式硬件上提出了可視化圖形界面的要求?,F(xiàn)有的非x86平臺的嵌入式系統(tǒng)因為其專用性的限制,無法滿足可視化圖形界面的應(yīng)用。通用的Linux桌面操作系統(tǒng)無法應(yīng)用在工業(yè)領(lǐng)域的苛刻環(huán)境中。這使得需要找到一種方法,通過較少的硬件擴(kuò)展和軟件配置,讓嵌入式硬件滿足工業(yè)領(lǐng)域可視化的需求。



技術(shù)實現(xiàn)要素:

本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,本發(fā)明提供了一種在非x86平臺的嵌入式硬件條件下,通過少量的硬件擴(kuò)展和軟件配置,使系統(tǒng)的圖形界面性能能達(dá)到更高的要求。

為了解決上述問題,本發(fā)明提出了一種基于非x86平臺在Linux操作系統(tǒng)下顯示的方法,包括如下步驟:

對非x86平臺的嵌入式系統(tǒng)進(jìn)行擴(kuò)展,將顯卡通過PCI總線接口接入非x86平臺的嵌入式系統(tǒng);

對非x86平臺的嵌入式系統(tǒng)上電,啟動系統(tǒng)初始化,并在系統(tǒng)初始化過程中對顯卡進(jìn)行控制初始化;

基于PCI總線檢測顯卡是否與非x86平臺的嵌入式系統(tǒng)可通信,在檢測到顯卡處于可通信時,PCI總線接口獲取顯卡設(shè)備信息;

在系統(tǒng)初始化過程中,為非x86平臺加入x86模擬器,并完成x86模擬器初始化過程,X86模擬器模擬x86的硬件寄存器、操作碼、中斷向量,為模擬器分配內(nèi)存;

基于PCI總線將顯卡BIOS的物理地址和Frame buffer的物理地址進(jìn)行PCI地址映射;

將顯卡中的BIOS鏡像拷貝到內(nèi)存,解除BIOS鏡像的地址映射;

將PCI總線信息和拷貝到內(nèi)存BIOS鏡像信息保存到X86模擬器的寄存器,X86模擬器模擬x86中斷,執(zhí)行顯卡BIOS代碼,完成Linux內(nèi)核代碼啟動前對顯卡初始化;

設(shè)置Linux內(nèi)核啟動參數(shù),啟動linux內(nèi)核;

啟動Linux操作系統(tǒng)內(nèi)核顯卡驅(qū)動,驅(qū)動顯卡正常工作,完成圖形界面的顯示。

所述PCI總線接口獲取顯卡設(shè)備信息包括:

PCI總線接口獲取到顯卡設(shè)備ID、供應(yīng)商、型號、顯卡屬性和地址空間信息。

所述完成x86模擬器初始化過程中還包括:

記錄顯卡的IO寄存器和內(nèi)存的寫操作指令。

所述基于PCI總線將顯卡BIOS的物理地址和Frame buffer的物理地址進(jìn)行PCI地址映射包括:

根據(jù)PCI總線上的信息,查詢顯卡ROM中的BIOS鏡像的物理地址和Frame buffer的物理地址以及它們所對應(yīng)的長度;

將顯卡中BIOS鏡像的物理地址、Frame buffer的物理地址和它們的長度保存在PCI總線上;

將BIOS鏡像的物理地址、Frame buffer的物理地址做PCI地址映射;

將BIOS鏡像和frame buffer映射后的地址和長度保存到PCI總線上,然后延時等待下一步的執(zhí)行。

所述方法還包括:

在基于PCI總線檢測到顯卡處于不可通信時,基于非x86平臺報警提醒顯卡故障。

在本發(fā)明實施例中,通過在非x86平臺的嵌入式硬件條件下,通過少量的硬件擴(kuò)展和軟件配置,其通過外接顯卡,通過x86的模擬器和Linux操作系統(tǒng)的顯卡驅(qū)動,驅(qū)動顯卡正常工作,使系統(tǒng)的圖形界面性能能達(dá)到更高的要求,嵌入式系統(tǒng)能正確啟動并識別顯卡,顯卡能夠和系統(tǒng)的其他硬件相互配合工作,從而提高圖形顯示界面的顯示效果,滿足嵌入式硬件在工業(yè)領(lǐng)域?qū)D形界面苛刻要求。

附圖說明

為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其它的附圖。

圖1是本發(fā)明實施例中的基于非x86平臺在Linux操作系統(tǒng)下顯示的方法流程圖;

圖2是本發(fā)明實施例中的基于非x86平臺在Linux操作系統(tǒng)下顯示方法的軟件流程圖。

具體實施方式

下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。

本發(fā)明實施例中所涉及的基于非x86平臺在Linux操作系統(tǒng)下顯示的方法,其通過對非x86平臺的嵌入式系統(tǒng)進(jìn)行擴(kuò)展,將顯卡通過PCI總線接口接入非x86平臺的嵌入式系統(tǒng);對非x86平臺的嵌入式系統(tǒng)上電,啟動系統(tǒng)初始化,并在系統(tǒng)初始化過程中對顯卡進(jìn)行控制初始化;基于PCI總線檢測顯卡是否與非x86平臺的嵌入式系統(tǒng)可通信,在檢測到顯卡處于可通信時,PCI總線接口獲取顯卡設(shè)備信息;在系統(tǒng)初始化階段,為非x86平臺加入x86模擬器,并完成x86模擬器初始化過程,X86模擬器模擬x86的硬件寄存器、操作碼、中斷向量,為模擬器分配內(nèi)存;基于PCI總線將顯卡BIOS的物理地址和Frame buffer的物理地址進(jìn)行PCI地址映射;將顯卡中的BIOS鏡像拷貝到內(nèi)存,解除BIOS鏡像的地址映射;將PCI總線信息和拷貝到內(nèi)存BIOS鏡像信息保存到X86模擬器的寄存器,X86模擬器模擬x86中斷,執(zhí)行顯卡BIOS代碼,完成Linux內(nèi)核代碼啟動前對顯卡初始化;設(shè)置Linux內(nèi)核啟動參數(shù),啟動linux內(nèi)核;啟動Linux操作系統(tǒng)內(nèi)核顯卡驅(qū)動,驅(qū)動顯卡正常工作,完成圖形界面的顯示。

相應(yīng)的,圖1示出了本發(fā)明實施例中的基于非x86平臺在Linux操作系統(tǒng)下顯示的方法流程圖,該流程圖包括如下步驟:

S101、對非x86平臺的嵌入式系統(tǒng)進(jìn)行擴(kuò)展;

具體實施過程中,首先對嵌入式系統(tǒng)進(jìn)行擴(kuò)展,將顯卡通過PCI總線接口接入非X86平臺的嵌入式系統(tǒng)。

S102、對非x86平臺的嵌入式系統(tǒng)上電;

非X86平臺的嵌入式系統(tǒng)上電,啟動系統(tǒng)初始化,并在系統(tǒng)初始化的過程中對顯卡進(jìn)行控制初始化。

S103、基于PCI總線檢測顯卡是否與非x86平臺的嵌入式系統(tǒng)可通信,如果顯卡處于可通信時,則進(jìn)入S104,否則進(jìn)入S111;

具體實施過程中,在初始化過程中,PCI總線端口可以通過偵測的方式探測到顯卡是否能實現(xiàn)與x86平臺的通信功能,其保障了顯卡接入能正常工作。

S104、在檢測到顯卡處于可通信時,PCI總線接口獲取顯卡設(shè)備信息;

在PCI總線檢測到顯卡,PCI總線接口獲取到顯卡設(shè)備ID、供應(yīng)商、型號、顯卡屬性和地址空間信息。

S105、在系統(tǒng)初始化過程中,為非x86平臺加入x86模擬器,對X86模擬器初始化;

由于非X86平臺的嵌入式系統(tǒng)無法直接執(zhí)行顯卡BIOS代碼(顯卡的BIOS代碼是X86框架的二進(jìn)制碼)。在系統(tǒng)初始化過程中,即uboot啟動過程中,加入X86模擬器并初始化,完成x86模擬器初始化過程,X86模擬器模擬x86的硬件寄存器、操作碼、中斷向量,為模擬器分配內(nèi)存。在具體實施過程中,在初始化過程中還記錄了顯卡的IO寄存器和內(nèi)存的寫操作指令。在非X86平臺的嵌入式系統(tǒng)初始化的階段,加入了X86模擬器,啟動顯卡驅(qū)動前的控制初始化。解決了非X86平臺的嵌入式系統(tǒng)無法識別和啟動顯卡驅(qū)動前的控制初始化問題,使嵌入式操作系統(tǒng)能驅(qū)動顯卡工作。在非X86平臺的嵌入式系統(tǒng)啟動中加入的X86模擬器,模擬x86的硬件寄存器、x86的操作碼(即指令集)和X86的執(zhí)行流程,X86的執(zhí)行流程包括尋址和執(zhí)行指令。解決了非X86平臺的嵌入式系統(tǒng)不能識別顯卡中固化的X86顯卡初始化程序的問題。

S106、基于PCI總線將顯卡BIOS的物理地址和Frame buffer的物理地址進(jìn)行PCI地址映射;

具體實施過程中,根據(jù)PCI總線上的信息,查詢顯卡ROM中的BIOS鏡像的物理地址和Frame buffer的物理地址以及它們所對應(yīng)的長度。將顯卡中BIOS地址、Frame buffer地址和他們的長度保存在PCI總線上。將兩個地址(BIOS地址和Frame buffer地址)做PCI地址映射。將BIOS鏡像和frame buffer映射后的地址和長度保存到PCI總線上,然后延時等待下一步的執(zhí)行。

S107、將顯卡中的BIOS鏡像拷貝到內(nèi)存,解除BIOS鏡像的地址映射,;

S108、將PCI總線信息和拷貝到內(nèi)存BIOS鏡像信息保存到X86模擬器的寄存器,執(zhí)行顯卡BIOS代碼;

具體實施過程中,將PCI總線信息和拷貝到內(nèi)存BIOS鏡像信息保存到X86模擬器的寄存器,X86模擬器模擬x86中斷,執(zhí)行顯卡BIOS代碼,完成Linux內(nèi)核代碼啟動前對顯卡初始化;

S109、設(shè)置Linux內(nèi)核啟動參數(shù),啟動linux內(nèi)核;

S110、啟動Linux操作系統(tǒng)內(nèi)核顯卡驅(qū)動,驅(qū)動顯卡正常工作,完成圖形界面的顯示。

S111、基于非x86平臺報警提醒顯卡故障。

該步驟實施,可以提醒接入顯卡存在故障,提醒操作人員進(jìn)行相應(yīng)操作。

在完成以上步驟以后,嵌入式系統(tǒng)能正確啟動并識別顯卡,顯卡能夠和系統(tǒng)的其他硬件相互配合工作,從而提高圖形顯示界面的顯示效果,滿足嵌入式硬件在工業(yè)領(lǐng)域?qū)D形界面苛刻要求。

圖2示出了本發(fā)明實施例中的基于非x86平臺在Linux操作系統(tǒng)下顯示方法的軟件流程圖,其包括如下:

S201、系統(tǒng)初始化start_uboot;

S202、設(shè)備初始化devices_init;

S203、顯卡初始化drv_video_init;

S204、鐳顯卡探測radeon_probe;

S205、PCI總線獲取顯卡信息pci_find_devices;

S206、基于PCI總線將顯卡BIOS的物理地址和Frame buffer的物理地址進(jìn)行PCI地址映射PCI_mapBIOSImage;

S207、將顯卡中的BIOS鏡像拷貝到內(nèi)存memcpy;

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

S209、執(zhí)行顯卡BIOS代碼callRealMode;

S210、設(shè)置內(nèi)核參數(shù),啟動linux內(nèi)核;

S211、啟動顯卡驅(qū)動,完成圖形顯示。

在整個具體實施過程中,通過在非x86平臺的嵌入式硬件條件下,通過少量的硬件擴(kuò)展和軟件配置,其通過外接顯卡,通過x86的模擬器和Linux操作系統(tǒng)的顯卡驅(qū)動,驅(qū)動顯卡正常工作,使系統(tǒng)的圖形界面性能能達(dá)到更高的要求,嵌入式系統(tǒng)能正確啟動并識別顯卡,顯卡能夠和系統(tǒng)的其他硬件相互配合工作,從而提高圖形顯示界面的顯示效果,滿足嵌入式硬件在工業(yè)領(lǐng)域?qū)D形界面苛刻要求。本領(lǐng)域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于一計算機(jī)可讀存儲介質(zhì)中,存儲介質(zhì)可以包括:只讀存儲器(ROM,Read Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、磁盤或光盤等。

另外,以上對本發(fā)明實施例所提供的基于非x86平臺在Linux操作系統(tǒng)下顯示的方法進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進(jìn)行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1