CN104007979A - 一种Bootloader层驱动无线网络的方法 - Google Patents

一种Bootloader层驱动无线网络的方法 Download PDF

Info

Publication number
CN104007979A
CN104007979A CN201410258542.9A CN201410258542A CN104007979A CN 104007979 A CN104007979 A CN 104007979A CN 201410258542 A CN201410258542 A CN 201410258542A CN 104007979 A CN104007979 A CN 104007979A
Authority
CN
China
Prior art keywords
driver
wireless
bootloader
boot loader
network
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.)
Pending
Application number
CN201410258542.9A
Other languages
English (en)
Inventor
熊永华
吴敏
王慧昭
黄素珍
李天远
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Central South University
Original Assignee
Central South University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Central South University filed Critical Central South University
Priority to CN201410258542.9A priority Critical patent/CN104007979A/zh
Publication of CN104007979A publication Critical patent/CN104007979A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明提出了一种Bootloader层驱动无线网络的方法,该方法实现了在Bootloader下的无线通信,即在操作系统启动之前,在硬件结构上实现信息的无线互传,该方法包括:在linux kernel中对无线网络驱动进行裁剪、重写,裁剪之后的driver文件,包含加载、初始化、打开关闭、数据传输等功能模块;在Bootloader下对网络驱动程序加载的修改设置方法,包括对config命令的预设、裁剪后的driver文件的位置配置。对driver的加载,发生在Bootloader启动的第二阶段,Bootloader顺序启动,加载相对应的网卡接口检测程序,在网卡与接口握手成功后,Bootloader主程序跳转至driver入口,通信开始。

Description

一种Bootloader层驱动无线网络的方法
技术领域
本发明属于操作系统技术领域,涉及Boot loader开发技术和无线驱动移植技术。 
背景技术
Bootloader是在操作系统内核运行起来之前运行的一段小程序,通过这段小程序,可初始化硬件设备、建立内存空间映射图,为操作系统启动提供基本的运行环境。在嵌入式系统中,整个软件系统的加载启动任务都是由Bootloader来完成的。 
Bootloader加载操作系统过程分为两个阶段。第一阶段使用汇编来实现,它完成一些依赖于CPU体系结构的初始化,并调用第二段的代码;第二段则通常使用C语言来实现,这样可以实现更加复杂的功能,而且代码会有更好的可读性和移植性。Bootloader启动的第一阶段中,首先将硬件初始化,为加载Bootloader第二段代码准备RAM空间,复制第二阶段代码到RAM中,设置好栈,跳转到第二阶段代码的C入口点。在第一阶段的进行的硬件初始化一般包括:关闭WATCHDOG,关中断,设置CPU的速度和时钟频率、RAM初始化等等。在Bootloader启动的第二阶段中,Bootloader首先初始化本阶段所要使用到的硬件设备,检测系统内存映射,将内存映像和文件系统从Flash或者server端读取到RAM中并为内核设置启动参数。 
Linux系统下Wi-Fi模块正常工作所需的Host驱动包括WLAN和SDIO接口驱动两部分。WLAN驱动在整个数据收发过程中充当数据中转的角色,即接收上层用户应用程序的数据流,通过SDIO口转发到Wi-Fi硬件或响应Wi-Fi硬件中断,并从硬件的缓冲区读取数据流,通过驱动程序注册的接口函数,发送到上层应用程序。 
而本发明提出的在Bootloader层驱动无线网络的方法,通过对linux操作系统下无线驱动进行裁剪,配置Bootloader结构,使得无线通信在操作系统之上运行,完成系统内核和板级信息的无线加载,提高了网络操作系统的开发效率。 
发明内容
本发明要解决的技术问题在于克服上述现有技术的不足,提出一种Bootloader层驱动无线网络的方法,完善Bootloader下对无线驱动的支持,从而提高操作系统的开发效率。 
本发明针对上述技术问题而提出的技术方案包括提出一种在Bootloader层驱动无线网络的方法,该技术方法包括以下步骤: 
S1:在linux kernel中对无线网络驱动进行裁剪、重写,裁剪之后的driver主体,包含加载、初始化、打开关闭、数据传输等基本功能模块; 
S2:对linux kernel中无线驱动程序的裁剪过程中,通过拆分结构体,减少程序跳转,和对重要函数重写的方法实现,剔除系统资源相关元素,剔除总线结构。 
S3:在Boot loader下对网络驱动程序加载的设置方法进行修改,包括对config和makefile配置文件的修改。裁剪后的driver驱动文件位于Boot loader源码包中。无线驱动程序位于 Bootloader下drivers文件夹内,包含一个C文件和对应的头文件。无线驱动程序存储与板级flash中,在Bootloader中顺序执行,并且在操作系统启动执行之前,实现数据下载和反馈功能。 
S4:添加对网卡操作的commond指令,无线驱动程序的主程序和头文件由config指令定义时实现封装。 
S5:修改相应板级头文件中对于默认网络驱动程序的指令信息,屏蔽有线加载操作系统的功能,直接跳转至无线加载接口。使Boot loader在顺序执行过程中,首先启动板级硬件,检测网络接口,由网络接口程序跳转至无线驱动接口。 
与现有技术相比,本发明的Uboot下无线网卡通信技术,通过对linux kernel内无线网卡驱动的裁剪与Uboot底层文件的相应配置,使得无线网卡驱动在操作系统启动之前得以运行,实现无线网络驱动脱离系统文件资源运行,节省了网络驱动启动时间,实现了在无操作系统情况下对server端数据的下载通信,提高了网络开发效率。 
附图说明
图1为本发明开发步骤图; 
图2为本发明驱动裁剪流程图; 
图3为本发明无线网卡驱动流程图; 
具体实施方式
下面结合一个方法实例对本发明的技术和有益效果进一步进行阐述。 
该实例是基于开发板OK6410,该移动设备平台包括:ARM架构CPU,型号为S3C6410,存储模块为Nand Flash;无线模块选用WM-G-MR-09(marvell8686)。 
本实例采用Uboot作为Bootloader的实例。驱动无线网络的方法包括在linux kernel中对无线网络驱动进行裁剪、重写。裁剪之后的driver文件包含加载、初始化、打开关闭、数据传输等功能模块;包含在Bootloader下对网络驱动程序加载的修改设置方法;包括对config命令的预设,裁剪后的driver文件的位置配置。 
S101:参见图2,对linux kernel中src_8686文件进行裁剪,剔除了系统资源的总线结构、net_device结构体、注册、加载元素,保持驱动在算法上的稳定性。 
S201:在linux-src_8686裁剪中,首先修改wlan_main.c,将wlan_open()、wlan_close()、wlan_hard_start_xmit()、wlan_tx_timeout()、wlan_get_stats()、wlan_set_mac_address()、wlan_add_card()、wlan_remove_card()、wlan_send_rxskbQ()、wlan_interrupt()这些功能函数的wlan_private*priv=dev->priv;指针语句,修改为赋值语句wlan_orivate=priv。 
S202:在wlan_open()、wlan_close()、wlan_hard_start_xmit()、wlan_tx_timeout()、wlan_get_starts/wlan_set_mac_address()、wlan_add_card()、wlan_remove_card()、wlan_send_rxskbQ()、wlan_interrupt()这些功能函数中修改为包含如下元素的struct net_device结构体:open=wlan_open,close=wlan_close,hard_startxmit=wlan_hard_startxmit. tx_timeout=wlan_tx_timeou,wlan_get_starts,set_mac_address=wlan_set_mac_address,add_card=wlan_add_card,remove_card=wlan_remove_card,send_rxskbQ=wlan_send_rxskbQ,interrupt=wlan_interrupt。去除wlan_cleanup_module()和wlan_ins_module()函数。 
S203:对于wlan_hard_start_xmit(),采用重写的方式,屏蔽掉与总线结构和注册函数以及系统资源调用的元素,仅重写数据接受和传输部分。 
S301:在smk6410文件中,将默认的CONFIG_DRIVER_CS8900替换为CONFIG_DRIVER_8686,完成对默认网络设备的设置。 
S302:在Uboot的顶级目录下的makefile文件中,添加对无线驱动源码的编译过程。在include/configs目录下的smk6410中的CONFIG_COMMANDS的宏定义下添加两个command 命令:wifiopen和wificlose。 
S401:在Uboot的include\command.h中定义两个新的cmd_tbl_t结构体,即定义wiflopen和wificlose的命令,在common/cmd_cache.c文件中实现命令的操作函数。 
S501:在include\configs\中修改板级头文件中对于默认网络驱动程序的指令信息。根据uboot的流程,修改main_loop函数,添加wifiopen命令,使得Uboot的lib_arm/board.c的init_sequence数组预先定义的初始化函数,在uboot第二阶段一开始运行,程序跳转至1ib_arm\board.c中的start_armboot函数,后续函数继续顺序调用,包括flash_init初始化NOR Flash、env_relocate将环境参数读入内存指定位置。然后Uboot跳转到网络设备初始阶段,将CONFIG_DRIVER_8686替换,这样当uboot运用接口检测模块检测到sdio_8686网卡后,跳转到8686.c入口。 
S502:对经过上述步骤裁剪过后的linux_src_8686驱动程序,将8686.c和8686.h的两个文件存放于uboot\driver中。在include/cmd_confdefs.h中定义新命令的标志位。 
上述内容,仅为本发明的较佳实施例,并非用于限制本发明的实施方案,本领域普通技术人员根据发明的主要构思和精神,可以十分方便的进行相应的变通或者修改,故本发明的保护范围应以权利要求书所要求的保护范围为准。 

Claims (6)

1.一种Bootloader层驱动无线网络的方法,本方法实现了在Bootloader下的无线通信,包括在linux kernel中对无线网络驱动进行裁剪、重写,裁剪之后的driver文件,包含加载、初始化、打开关闭、数据传输等功能模块;在Bootloader下对网络驱动程序加载的修改设置方法,包括对conflg命令的预设,裁剪后的driver文件的位置配置。
2.根据权利要求1所述的方法,其特征在于,无线驱动程序运行于操作系统启动之前,驱动文件位于Bootloader源码包中。
3.根据权利要求1所述的方法,其特征在于,无线驱动程序存储于板级flash中,在Bootloader中顺序执行,在操作系统启动执行之前,实现数据下载和反馈功能。
4.根据权利要求1所述的方法,其特征在于,在command文件中添加对网卡操作的指令。
5.根据权利要求1所述的方法,其特征在于,对linux kernel中无线驱动程序的裁剪过程中,通过拆分结构体,减少程序跳转,和对重要函数重写的方法实现。
6.根据权利要求1所述的方法,其特征在于Bootloader顺序执行过程中,首先启动板级硬件,检测网络接口,由网络接口程序跳转至无线驱动接口。
CN201410258542.9A 2014-06-12 2014-06-12 一种Bootloader层驱动无线网络的方法 Pending CN104007979A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410258542.9A CN104007979A (zh) 2014-06-12 2014-06-12 一种Bootloader层驱动无线网络的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410258542.9A CN104007979A (zh) 2014-06-12 2014-06-12 一种Bootloader层驱动无线网络的方法

Publications (1)

Publication Number Publication Date
CN104007979A true CN104007979A (zh) 2014-08-27

Family

ID=51368646

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410258542.9A Pending CN104007979A (zh) 2014-06-12 2014-06-12 一种Bootloader层驱动无线网络的方法

Country Status (1)

Country Link
CN (1) CN104007979A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105652813A (zh) * 2014-11-13 2016-06-08 沈阳高精数控智能技术股份有限公司 一种基于AM335X处理器构建嵌入式实时EtherCAT主站的方法
CN105933160A (zh) * 2016-06-23 2016-09-07 四川长虹电器股份有限公司 在Android智能电视上实现有线网络快速连接的方法
CN108021405A (zh) * 2016-10-28 2018-05-11 福州瑞芯微电子股份有限公司 一种soc系统启动过程中存储介质的驱动方法和装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105652813A (zh) * 2014-11-13 2016-06-08 沈阳高精数控智能技术股份有限公司 一种基于AM335X处理器构建嵌入式实时EtherCAT主站的方法
CN105652813B (zh) * 2014-11-13 2018-08-14 沈阳高精数控智能技术股份有限公司 一种基于AM335X处理器构建嵌入式实时EtherCAT主站的方法
CN105933160A (zh) * 2016-06-23 2016-09-07 四川长虹电器股份有限公司 在Android智能电视上实现有线网络快速连接的方法
CN108021405A (zh) * 2016-10-28 2018-05-11 福州瑞芯微电子股份有限公司 一种soc系统启动过程中存储介质的驱动方法和装置
CN108021405B (zh) * 2016-10-28 2020-11-06 瑞芯微电子股份有限公司 一种soc系统启动过程中存储介质的驱动方法和装置

Similar Documents

Publication Publication Date Title
US9301164B2 (en) Method, system, and terminal for performing system update between mobile communication terminals
KR101963912B1 (ko) 라이브러리 운영체제들과의 애플리케이션 호환성을 가능하게 하는 기법
US8484631B2 (en) Supporting hardware configuration changes in a UEFI firmware component
CN101763279B (zh) 一种BootLoader架构设计方法
TWI396076B (zh) 無線終端機、無線終端機之非揮發性記憶體及診斷資訊之故障安全保存方法
US9411601B2 (en) Flexible bootstrap code architecture
CN106020861B (zh) 一种智能手表的fota升级方法及系统
CN105138382A (zh) 一种Android系统升级的方法及终端
CN103853586A (zh) 一种在uefi层实现无线网卡驱动的方法
CN104375849A (zh) 加载内核的方法及装置
CN103761088A (zh) 一种适用于arm架构移动设备的多操作系统切换方法
WO2012142798A1 (zh) 一种应用程序加载的方法及装置
CN103810416A (zh) 一种软件安装或卸载方法及装置
WO2018209843A1 (zh) 一种执行热补丁的方法、装置及终端
CN104156221A (zh) 芯片、修改芯片配置的方法及装置
WO2021136200A1 (zh) 引导程序的加载方法、存储介质及嵌入式终端
CN106598647B (zh) 一种智能装置开发平台
CN104007979A (zh) 一种Bootloader层驱动无线网络的方法
CN103092654A (zh) 一种基于WebKit的WebOS实现方法和系统
CN103853557A (zh) 一种用Uboot网络启动WinCE的方法
CN114443083B (zh) 系统升级方法、装置、电子设备及存储介质
CN111913753A (zh) 一种windows系统云迁移中启动方式的变更方法及系统
US9495146B2 (en) Host and method of upgrading connection manager of dongles
CN102141915A (zh) 一种基于RTLinux的设备实时控制方法
CN114860393A (zh) 跨平台虚拟机迁移方法、装置和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20140827

WD01 Invention patent application deemed withdrawn after publication