CN103853586B - 一种在uefi层实现无线网卡驱动的方法 - Google Patents
一种在uefi层实现无线网卡驱动的方法 Download PDFInfo
- Publication number
- CN103853586B CN103853586B CN201410078135.XA CN201410078135A CN103853586B CN 103853586 B CN103853586 B CN 103853586B CN 201410078135 A CN201410078135 A CN 201410078135A CN 103853586 B CN103853586 B CN 103853586B
- Authority
- CN
- China
- Prior art keywords
- uefi
- wireless network
- interface
- network card
- drives
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Mobile Radio Communication Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种在UEFI层实现无线网卡驱动的方法,包括:移植和修改无线网卡驱动,添加无线网卡检测和初始化代码并实现网络协议接口;进行代码重新编写、编译和烧写至开发板;系统上电,UEFI固件运行,硬件初始化,并为上层接口实现所需要的所有UEFI规范中定义的各种服务。UEFI 启动管理器加载UEFI Shell。UEFI Shell加载无线网卡驱动,并加载TCP/IP协议栈模块,无线网络通信环境建立,通过无线网络远程引导操作系统。本发明可以在无操作系统环境下实现对无线网络设备的检测、初始化和数据读写,解除了无线网络设备的使用对操作系统的依赖。
Description
技术领域
本发明涉及无线网络技术领域,特别是一种在UEFI层实现无线网卡驱动的方法。
背景技术
目前传统BIOS(Basic Input/Output System,基本输入输入系统)固化了基本驱动程序,而其他驱动需要依靠操作系统内核加载。其中无线网卡驱动尤为明显,它对操作系统有很强的依赖性,无限网卡驱动集成在操作系统的内核中,操作系统启动后才能对无线网络设备进行识别和数据读写。
UEFI(Unified Extensible Firmware Interface,统一可扩展固件接口)是Intel提出的下一代PC BIOS架构,它为独立BIOS和硬件厂商等提供BIOS标准和驱动开发接口,还构建了一个C语言执行环境,可以通过UEFI Shell调用设备驱动。从而允许在pre-boot阶段实现所有设备驱动。
目前UEFI下已经在pre-boot阶段实现了有线网卡的驱动,完成了在操作系统加载与运行前连接有线网络,而无线网卡驱动尚未实现,未能完成在操作系统加载与运行前连接无线网络。但是随着平板电脑、智能手机等移动设备的不断发展与普及,在UEFI下开发无线网卡驱动显得十分有必要。
综上所述,目前的无线网络设备主要是在操作系统启动后才能运行,国内外尚未有在UEFI层针对无线网卡驱动进行的研究。
发明内容
本发明所要解决的技术问题是,针对现有技术不足,提供一种在UEFI层实现无线网卡驱动的方法,实现在无操作系统环境下对无线网络设备的支持,解决无线网络设备只能在操作系统启动后使用的问题。
为解决上述技术问题,本发明所采用的技术方案是:一种在UEFI层实现无线网卡驱动的方法,该方法为:
1)开发无线网卡驱动;
2)开发板上电,初始化硬件平台,UEFI固件运行,并提供相应协议、驱动服务,UEFI初始化准备层,启动必备硬件资源,准备层将所述必备硬件资源信息传递给固件驱动执行层,初始化所有硬件,并为上层接口实现所需要的所有UEFI规范中定义的各种服务,UEFI启动管理器加载UEFI Shell;
3)UEFI Shell加载无线网卡驱动,并加载TCP/IP协议栈模块;
4)建立无线网络通信环境,通过无线网络远程引导操作系统。
开发无线网卡驱动的具体过程如下:
1)移植无线网卡驱动:删除操作系统内核中的无线网络驱动代码中与操作系统内核相关的部分,得到删除操作后的无线网络驱动代码;
2)添加无线网卡的检测代码:在所述删除操作后的无线网络驱动代码中添加检测各种接口无线网卡的函数,检测是否有接口型无线网卡,检测各种接口型无线网卡的优先顺序为:PCI-E接口型,SPI接口型,SDIO接口型,USB接口型;若有无线网卡,则进入3);否则,退出;
3)调用UEFI规范定义的相应接口协议,初始化无线网卡;
4)调用SNP协议实现网络协议接口;
5)利用UEFI开发包编译UEFI程序,得到重新编译后的无线网卡驱动文件,将重新编译后的无线网卡驱动文件烧写到开发板ROM中。
与现有技术相比,本发明所具有的有益效果为:本发明实现了无操作系统环境下对无线网络设备的支持,使无线网络设备的使用摆脱了对操作系统的依赖,实现了底层对无线网络设备的支持,在裸机环境的UEFI OS Loader运行阶段实现对无线网络设备的读取和数据写入,解决了无线网络设备只能在操作系统启动后使用的问题。
附图说明
图1 为本发明方法整体流程图;
图2为本发明方法无线网卡驱动开发流程图;
图3 为本发明实施例四种接口类型的无线网络设备检测流程;
图4为UEFI驱动体系图。
具体实施方式
如图1所示,本发明实施例的方法步骤如下:
步骤一:开发无线网卡驱动,详见图2。
S1:移植无线网卡驱动:修改无线网卡驱动代码,删除操作系统内核中的无线网络驱动代码中与操作系统内核相关的部分;
S2:添加无线网卡的检测代码:代码中添加检测各种接口无线网卡的函数,检测是否有无线网卡。检测各种接口型无线网卡的优先顺序为:PCI-E接口型,SPI接口型,SDIO接口型,USB接口型,具体流程详见图3。检测到设备后对设备进行初始化,未检测到设备则退出对网卡的操作。其中代码的编写需按UEFI规范编写。程序的编写主要包括两部分:c文件和makefile文件。驱动虽然依然是完全是用C语言编写,但是它的程序入口不是main函数,而是按UEFI规范编写。在同一目录下新添加一个makefile文件,makefile文件指定c源文件、文件存放路径、库函数路径、程序入口点、编译方式、生成的可执行文件名等。
S3:检测到无线网卡,并判断设备所属的接口类型后,调用UEFI规范定义的相应接口协议,对网卡进行初始化操作,并根据无线网卡的基本信息对相应寄存器进行设置。该接口协议除了初始化相关寄存器外,还下载固件到该接口设备以及进行该接口设备地址空间的读写。
S4:网络协议接口的实现:调用SNP协议,将SNP协议对网络数据包的四个处理函数send(),receive(),open(),close()进行相应完善,其中,receive()采用中断的方式轮询网卡地址、网络数据包的长度和状态进行网络数据包的接收。
S5:编译和烧写。Intel为开发者准备了UEFI开发包(UEFI Development Toolkit,UDK)用于开发和编译UEFI程序,开发包内则附带了大量的库函数及实用的工具,通过build和nmake命令编译源文件,生成*.efi文件。将重新编译后的无线网卡驱动文件通过Dediprog工具烧写到开发板ROM中。
步骤二:开发板上电,硬件平台初始化,UEFI固件运行,提供相应协议、驱动等服务。UEFI驱动体系图如图4所示。
UEFI下整个驱动体系的层次分工是:
UEFI 初始化准备层,是启动最少量的必备硬件资源,这些必备硬件资源可以满足启动固件驱动执行层即可,基本硬件初始化层会把启动的硬件资源信息传递给固件驱动执行层。UEFI 初始化准备阶段即对应于基本 UEFI 初始化准备层,它通过执行一个个的基本初始化模块来完成这个阶段的初始化工作。
固件驱动执行层,彻底完成所有硬件初始化,并为上层接口实现所需要的所有UEFI规范中定义的各种服务。驱动层将通过查找一个个驱动模块来完成所有硬件的登记,并在服务被调用时实际执行相应功能的驱动模块。固件驱动执行阶段即对应固件驱动执行层,本发明开发的无线网卡驱动在此阶段执行,无线网卡被检查并登记。
UEFI 启动管理器负责从 UEFI 文件系统中或UEFI 映像中载入服务来加载 UEFI应用程序或UEFI驱动程序。UEFI 定义了非易失性随机访问存储器(Non-Volatile RandomAccess Memory,NVRAM)变量用来指向要被加载的文件。应用程序UEFI Shell在这个阶段加载。
UEFI Shell为用户提供一个交互环境,用户可以选择boot到UEFI Shell而不是操作系统。UEFI Shell可以加载UEFI设备驱动,打开UEFI应用程序和启动操作系统。此外,UEFI Shell还提供了一组基本的命令,用于管理文件和系统环境变量等。
步骤三:UEFI Shell加载无线网卡驱动,并加载TCP/IP协议栈模块。UEFI Shell下通过load命令加载无线网卡驱动以及TCP/IP驱动模块。TCP/IP 协议栈在 EFI BIOS 中以UEFI协议的形式被UEFI Shell调用。通过UEFI套接字协议接口可以访问 TCP/IP 协议栈。TCP/IP 协议栈模块记为tcp/ip.efi,以UEFI驱动程序的形式被加载。
步骤四:无线网络通信环境建立,通过无线网络远程引导操作系统
本发明实施例通过把无线网卡驱动修改并移植到UEFI中,实现在UEFI 层对各种接口类型的无线网卡的检测识别、初始化和数据收发。其中UEFI Shell就是一个UEFI应用程序,属于启动时服务,当操作系统启动之后自动退出,不再运行。而本发明中开发的无线网卡驱动是一个UEFI驱动程序,属于运行时服务,即在启动时和启动后都保持运行状态。
由于不同的网卡硬件其驱动会有差别,所以本发明实施例针对 Intel 发布的兼容网卡来实现,在未来成熟的符合UEFI BIOS规范的产品中,将会有更多的网卡厂商提供网卡驱动的支持。
与现有技术相比,本发明的方法通过修改无线网卡驱动,移植无线网卡驱动到UEFI层,修改代码、编译等,实现了在无操作系统环境下对无线网络设备的识别和读写。实现了无线网络设备的使用不依赖操作系统的特性。
Claims (2)
1.一种在UEFI层实现无线网卡驱动的方法,其特征在于,该方法为:
1)开发无线网卡驱动;
2)开发板上电,初始化硬件平台,UEFI固件运行,并提供相应协议、驱动服务,UEFI 初始化准备层,启动必备硬件资源,准备层将所述必备硬件资源信息传递给固件驱动执行层,初始化所有硬件,并为上层接口实现所需要的所有UEFI规范中定义的各种服务,UEFI 启动管理器加载UEFI Shell;
3)UEFI Shell加载无线网卡驱动,并加载TCP/IP协议栈模块;
4)建立无线网络通信环境,通过无线网络远程引导操作系统;
所述步骤1)中,开发无线网卡驱动的具体过程如下:
a)移植无线网卡驱动:删除操作系统内核中的无线网络驱动代码中与操作系统内核相关的部分,得到删除操作后的无线网络驱动代码;
b)添加无线网卡的检测代码:在所述删除操作后的无线网络驱动代码中添加检测各种接口无线网卡的函数,检测是否有接口型无线网卡,检测各种接口型无线网卡的优先顺序为:PCI-E接口型,SPI接口型,SDIO接口型,USB接口型;若有无线网卡,则进入c);否则,退出;
c)调用UEFI规范定义的相应接口协议,初始化无线网卡;
d)调用SNP协议实现网络协议接口;
e)利用UEFI开发包编译UEFI程序,得到重新编译后的无线网卡驱动文件,将重新编译后的无线网卡驱动文件烧写到开发板ROM中。
2.根据权利要求1所述的在UEFI层实现无线网卡驱动的方法,其特征在于,所述开发板为支持UEFI规范的x86架构移动设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410078135.XA CN103853586B (zh) | 2014-03-05 | 2014-03-05 | 一种在uefi层实现无线网卡驱动的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410078135.XA CN103853586B (zh) | 2014-03-05 | 2014-03-05 | 一种在uefi层实现无线网卡驱动的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103853586A CN103853586A (zh) | 2014-06-11 |
CN103853586B true CN103853586B (zh) | 2017-02-08 |
Family
ID=50861278
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410078135.XA Expired - Fee Related CN103853586B (zh) | 2014-03-05 | 2014-03-05 | 一种在uefi层实现无线网卡驱动的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103853586B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10896047B2 (en) | 2015-12-28 | 2021-01-19 | Hewlett-Packard Development Company, L.P. | Booting a computer using a wireless network connection |
CN106060901B (zh) * | 2016-05-17 | 2020-03-31 | 深圳芯智汇科技有限公司 | 嵌入式无线网络系统及其接入无线网络的方法 |
CN105933160B (zh) * | 2016-06-23 | 2020-02-18 | 四川长虹电器股份有限公司 | 在Android智能电视上实现有线网络快速连接的方法 |
CN107592631A (zh) * | 2017-10-24 | 2018-01-16 | 济南浪潮高新科技投资发展有限公司 | 一种基于uefi层蓝牙驱动的实现方法 |
CN107741854A (zh) * | 2017-10-25 | 2018-02-27 | 合肥联宝信息技术有限公司 | 一种电子设备的网卡驱动的安装方法及装置 |
CN109062542A (zh) * | 2018-03-15 | 2018-12-21 | 山东超越数控电子股份有限公司 | 一种国产万兆网卡实现网络通讯的方法 |
US10616944B2 (en) * | 2018-07-06 | 2020-04-07 | American Megatrends International, Llc | Computer system and method thereof for sharing of wireless connection information between UEFI firmware and OS |
CN109656628A (zh) * | 2018-12-24 | 2019-04-19 | 中国科学院电子学研究所 | 一种基于网络接口的数据加载方法 |
CN109992317A (zh) * | 2019-04-12 | 2019-07-09 | 苏州浪潮智能科技有限公司 | 一种tpm初始化方法及相关装置 |
CN110083363B (zh) * | 2019-04-22 | 2022-04-01 | 珠海网博信息科技股份有限公司 | 一种Linux内核动态注入方式截取无线数据包的方法 |
CN111328091A (zh) * | 2020-02-25 | 2020-06-23 | 深圳市中科联合通信技术有限公司 | 一种基于rndis协议的无线通信装置的配置方法 |
CN113064655B (zh) * | 2021-04-26 | 2023-02-28 | 山东英信计算机技术有限公司 | 一种bios网络启动方法、装置和计算机可读存储介质 |
CN113377566A (zh) * | 2021-06-22 | 2021-09-10 | 新华三技术有限公司合肥分公司 | 一种基于uefi的服务器启动方法、装置及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1257591A (zh) * | 1997-03-20 | 2000-06-21 | 凤凰技术有限公司 | 远程管理没有一个运行的操作系统的计算机的网络增强型bios |
CN101834888A (zh) * | 2010-04-02 | 2010-09-15 | 清华大学 | 一种通过无线局域网远程启动透明计算系统客户端的方法 |
CN103250144A (zh) * | 2010-09-24 | 2013-08-14 | 英特尔公司 | 在计算装置的预启动阶段期间便于无线通信的系统和方法 |
US8560822B1 (en) * | 2011-05-26 | 2013-10-15 | Phoenix Technologies Ltd. | Pre-boot operating environment |
-
2014
- 2014-03-05 CN CN201410078135.XA patent/CN103853586B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1257591A (zh) * | 1997-03-20 | 2000-06-21 | 凤凰技术有限公司 | 远程管理没有一个运行的操作系统的计算机的网络增强型bios |
CN101834888A (zh) * | 2010-04-02 | 2010-09-15 | 清华大学 | 一种通过无线局域网远程启动透明计算系统客户端的方法 |
CN103250144A (zh) * | 2010-09-24 | 2013-08-14 | 英特尔公司 | 在计算装置的预启动阶段期间便于无线通信的系统和方法 |
US8560822B1 (en) * | 2011-05-26 | 2013-10-15 | Phoenix Technologies Ltd. | Pre-boot operating environment |
Also Published As
Publication number | Publication date |
---|---|
CN103853586A (zh) | 2014-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103853586B (zh) | 一种在uefi层实现无线网卡驱动的方法 | |
CN103324498B (zh) | 用于引导裸机计算设备的方法和设备 | |
US9411601B2 (en) | Flexible bootstrap code architecture | |
US20080082976A1 (en) | Usage of virtualization software for shipment of software products | |
US8082436B2 (en) | Enhanced UEFI framework layer | |
CN103761088A (zh) | 一种适用于arm架构移动设备的多操作系统切换方法 | |
CN103645945A (zh) | 一种虚拟网卡的自动探测及驱动加载方法 | |
CN104391726A (zh) | 一种基于Bootloader的SFP光模块升级方法 | |
CN109426527B (zh) | 在uefi固件及作业系统间分享蓝牙数据的电脑系统及其方法 | |
US6961848B2 (en) | System and method for supporting legacy operating system booting in a legacy-free system | |
US20170337064A1 (en) | System and method for booting an information handling system | |
CN107122219A (zh) | 安装文件的获取方法和装置 | |
CN106569854B (zh) | 一种设置设备固件和实现厂测的方法及系统 | |
EP3207453B1 (en) | Api versioning independent of product releases | |
Ramon | Intel Galileo and Intel Galileo Gen 2: API Features and Arduino Projects for Linux Programmers | |
US9965292B2 (en) | Method of bluetooth pairing with UEFI firmware and computer system thereof | |
CN104461638B (zh) | 一种基于Bootloader的XFP光模块升级方法 | |
CN110688235B (zh) | Uefi固件与os间共享无线连接信息的系统及方法 | |
CN110221840B (zh) | 应用程序的功能实现方法及装置、设备及存储介质 | |
CN112631915B (zh) | 一种pcie设备软件仿真的方法、系统、设备及介质 | |
CN109614156A (zh) | 支持启动类外部设备的驱动的方法、装置和系统 | |
KR20120056472A (ko) | 모바일 웹 어플리케이션 프레임워크 | |
Ye | Android System Programming | |
CN103019753A (zh) | 一种移动终端的启动控制方法、装置及移动终端 | |
Kumar et al. | Porting and BSP Customization of Linux on ARM Platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170208 Termination date: 20180305 |
|
CF01 | Termination of patent right due to non-payment of annual fee |