CN104007979A - 一种Bootloader层驱动无线网络的方法 - Google Patents
一种Bootloader层驱动无线网络的方法 Download PDFInfo
- 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
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提出了一种Bootloader层驱动无线网络的方法,该方法实现了在Bootloader下的无线通信,即在操作系统启动之前,在硬件结构上实现信息的无线互传,该方法包括:在linux kernel中对无线网络驱动进行裁剪、重写,裁剪之后的driver文件,包含加载、初始化、打开关闭、数据传输等功能模块;在Bootloader下对网络驱动程序加载的修改设置方法,包括对config命令的预设、裁剪后的driver文件的位置配置。对driver的加载,发生在Bootloader启动的第二阶段,Bootloader顺序启动,加载相对应的网卡接口检测程序,在网卡与接口握手成功后,Bootloader主程序跳转至driver入口,通信开始。
Description
技术领域
本发明属于操作系统技术领域,涉及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顺序执行过程中,首先启动板级硬件,检测网络接口,由网络接口程序跳转至无线驱动接口。
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)
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系统启动过程中存储介质的驱动方法和装置 |
-
2014
- 2014-06-12 CN CN201410258542.9A patent/CN104007979A/zh active Pending
Cited By (5)
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 |