CN105159696A - 一种独立于Linux内核的硬件驱动实现方法及装置 - Google Patents
一种独立于Linux内核的硬件驱动实现方法及装置 Download PDFInfo
- Publication number
- CN105159696A CN105159696A CN201510400360.5A CN201510400360A CN105159696A CN 105159696 A CN105159696 A CN 105159696A CN 201510400360 A CN201510400360 A CN 201510400360A CN 105159696 A CN105159696 A CN 105159696A
- Authority
- CN
- China
- Prior art keywords
- hardware
- linux kernel
- module
- kernel
- interface
- 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
本发明涉及通信电子技术领域,尤其涉及一种独立于Linux内核的硬件驱动实现方法及装置,用于解决访问难度和工作难度加大的问题。该方法包括:在Linux系统启动时,Linux内核中的程序加载模块从Linux内核外的硬件模块处获取将要执行操作的硬件的操作接口;将获取到的操作接口提供给所述Linux内核。可见该方法可以解决访问难度和工作难度加大的问题。
Description
技术领域
本发明涉及通信电子技术领域,尤其涉及一种独立于Linux内核的硬件驱动实现方法及装置。
背景技术
现有的linux设备驱动程序基本实现方式是基于Linux内核所提供的接口,使用Linux内核的不同机制,将对硬件进行操作的代码放在Linux内核源码中,作为Linux内核的一部分统一编译运行。如图1所示,Linux操作系统管理是用于控制计算机硬件资源和软件资源的计算机程序,按照程序的运行环境可分为用户空间和内核空间,用户空间的程序通过系统调用的方式来切换到内核空间运行,内核空间的代码可通过内核接口以及硬件驱动程序直接访问硬件资源。
但本发明人发现,这种模式对于现有的Linux设备驱动程序开发工作而言,对驱动程序开发人员的要求较高,驱动开发人员在至少掌握Linux内核的基本原理和各种机制的同时,还要熟悉硬件模块的工作原理才能够完成Linux设备驱动开发的工作,这样将使得访问难度和工作难度都加大。
发明内容
本发明实施例提供一种独立于Linux内核的硬件驱动实现方法及装置,该方法用于解决访问难度和工作难度加大的问题。
一种独立于Linux内核的硬件驱动实现方法,所述方法包括:
在Linux系统启动时,Linux内核中的程序加载模块从Linux内核外的硬件模块处获取将要执行操作的硬件的操作接口;
将获取到的操作接口提供给所述Linux内核。
一种独立于Linux内核的硬件驱动装置,所述装置包括:
程序加载模块,用于在Linux系统启动时,从Linux内核外的硬件模块处获取将要执行操作的硬件的操作接口;并将获取到的操作接口提供给所述Linux内核;
硬件模块,用于执行相应的硬件操作。
可见本发明实施例提供的方法,使得硬件模块包含的是针对具体硬件控制器操作的代码,该部分的代码与内核代码独立开来,单独编写、编译,它不依赖于内核的机制,不能使用内核提供的函数,它直接控制硬件,编写时不需要考虑内核的架构,因此对于开发而言更加简单。它的运行地址可自己指定,因此可将模块接口部分的代码指定放在一个位置,由程序加载模块获取接口。可见该方法可以解决访问难度和工作难度加大的问题。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为现有技术中Linux内核的结构图;
图2为本发明实施例提供的一种独立于Linux内核的硬件驱动实现方法流程图;
图3为本发明实施例提供的Linux内核的结构图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术方案作进一步详细的说明。
本发明实施例提供的方法,使得硬件模块包含的是针对具体硬件控制器操作的代码,该部分的代码与内核代码独立开来,单独编写、编译,它不依赖于内核的机制,不能使用内核提供的函数,它直接控制硬件,编写时不需要考虑内核的架构,因此对于开发而言更加简单。它的运行地址可自己指定,因此可将模块接口部分的代码指定放在一个位置,由程序加载模块获取接口。可见该方法可以解决访问难度和工作难度加大的问题。如图2所示,该方法包括:
步骤21,在Linux系统启动时,Linux内核中的程序加载模块从Linux内核外的硬件模块处获取将要执行操作的硬件的操作接口;
步骤22,将获取到的操作接口提供给所述Linux内核。
具体的,所述操作接口为预先设置的与硬件唯一对应的接口。
具体的,所述程序加载模块是所述Linux内核代码的一部分,与所述Linux内核共同进行编译。
具体的,所述硬件模块独立于所述Linux内核。
如图3所示,本发明实施例一种独立于Linux内核的硬件驱动装置,所述装置包括:
程序加载模块31,用于在Linux系统启动时,从Linux内核外的硬件模块处获取将要执行操作的硬件的操作接口;并将获取到的操作接口提供给所述Linux内核;
硬件模块32,用于执行相应的硬件操作。
所述操作接口为预先设置的与硬件唯一对应的接口。
所述程序加载模块是所述Linux内核代码的一部分,与所述Linux内核共同进行编译。
所述硬件模块独立于所述Linux内核。
本设计方案是结合现有Linux设备驱动实现的方式,将对硬件模块的编程代码与内核代码独立开来,使其不依赖于Linux内核的机制和各种架构,从而提高硬件模块代码的效率,通过约定硬件模块与Linux内核间通信接口的方式,让内核可以使用硬件模块的功能,从而实现了一种独立于Linux内核的设备驱动的编写方式。
本设计主要针对架构中的硬件驱动程序的编写方式做了改变,原有的硬件驱动程序代码与内核代码在一起编译,编译后的模块的运行地址不固定,对于需要让硬件模块的代码运行在特殊位置的项目来说,这样处理很不方便。因此将硬件驱动程序分为两个部分,一部分独立于内核的硬件模块代码组成,另一部分由Linux的程序加载模块组成。
程序加载模块是内核代码的一部分,与内核共同编译,程序加载模块与硬件模块约定一组操作接口,在系统启动过程中,程序加载模块获得硬件具体硬件的操作接口,提供给内核代码调用。
硬件模块是针对具体硬件控制器操作的代码,该部分的代码与内核代码独立开来,单独编写,编译,它不依赖于内核的机制,不能使用内核提供的函数,它直接控制硬件,编写时不需要考虑内核的架构,因此对于开发而言更加简单。它的运行地址可自己指定,因此可将模块接口部分的代码指定放在一个位置,由程序加载模块获取接口。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种独立于Linux内核的硬件驱动实现方法,其特征在于,所述方法包括:
在Linux系统启动时,Linux内核中的程序加载模块从Linux内核外的硬件模块处获取将要执行操作的硬件的操作接口;
将获取到的操作接口提供给所述Linux内核。
2.如权利要求1所述的方法,其特征在于,所述操作接口为预先设置的与硬件唯一对应的接口。
3.如权利要求1所述的方法,其特征在于,所述程序加载模块是所述Linux内核代码的一部分,与所述Linux内核共同进行编译。
4.如权利要求1所述的方法,其特征在于,所述硬件模块独立于所述Linux内核。
5.一种独立于Linux内核的硬件驱动装置,其特征在于,所述装置包括:
程序加载模块,用于在Linux系统启动时,从Linux内核外的硬件模块处获取将要执行操作的硬件的操作接口;并将获取到的操作接口提供给所述Linux内核;
硬件模块,用于执行相应的硬件操作。
6.如权利要求5所述的装置,其特征在于,所述操作接口为预先设置的与硬件唯一对应的接口。
7.如权利要求5所述的装置,其特征在于,所述程序加载模块是所述Linux内核代码的一部分,与所述Linux内核共同进行编译。
8.如权利要求5所述的装置,其特征在于,所述硬件模块独立于所述Linux内核。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510400360.5A CN105159696A (zh) | 2015-07-09 | 2015-07-09 | 一种独立于Linux内核的硬件驱动实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510400360.5A CN105159696A (zh) | 2015-07-09 | 2015-07-09 | 一种独立于Linux内核的硬件驱动实现方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105159696A true CN105159696A (zh) | 2015-12-16 |
Family
ID=54800562
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510400360.5A Pending CN105159696A (zh) | 2015-07-09 | 2015-07-09 | 一种独立于Linux内核的硬件驱动实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105159696A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106027487A (zh) * | 2016-04-28 | 2016-10-12 | 广州广电运通金融电子股份有限公司 | 一种硬件设备的访问管理方法及系统 |
CN108205503A (zh) * | 2016-12-16 | 2018-06-26 | 龙芯中科技术有限公司 | 硬件驱动兼容方法及终端 |
WO2024037417A1 (zh) * | 2022-08-16 | 2024-02-22 | 蔚来汽车科技(安徽)有限公司 | 驾驶系统及其构建方法、车辆、存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1964525A (zh) * | 2005-11-09 | 2007-05-16 | 中兴通讯股份有限公司 | 一种智能加载手机硬件驱动程序的系统 |
CN102866966A (zh) * | 2012-08-28 | 2013-01-09 | 大唐移动通信设备有限公司 | 一种Linux操作系统的设备驱动控制方法和装置 |
CN103593189A (zh) * | 2013-11-14 | 2014-02-19 | 昆明理工大学 | 一种嵌入式Linux下用户态驱动程序的实现方法 |
-
2015
- 2015-07-09 CN CN201510400360.5A patent/CN105159696A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1964525A (zh) * | 2005-11-09 | 2007-05-16 | 中兴通讯股份有限公司 | 一种智能加载手机硬件驱动程序的系统 |
CN102866966A (zh) * | 2012-08-28 | 2013-01-09 | 大唐移动通信设备有限公司 | 一种Linux操作系统的设备驱动控制方法和装置 |
CN103593189A (zh) * | 2013-11-14 | 2014-02-19 | 昆明理工大学 | 一种嵌入式Linux下用户态驱动程序的实现方法 |
Non-Patent Citations (1)
Title |
---|
董占杰: "嵌入式Linux网络设备用户态驱动的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106027487A (zh) * | 2016-04-28 | 2016-10-12 | 广州广电运通金融电子股份有限公司 | 一种硬件设备的访问管理方法及系统 |
CN106027487B (zh) * | 2016-04-28 | 2019-07-23 | 广州广电运通金融电子股份有限公司 | 一种硬件设备的访问管理方法及系统 |
CN108205503A (zh) * | 2016-12-16 | 2018-06-26 | 龙芯中科技术有限公司 | 硬件驱动兼容方法及终端 |
WO2024037417A1 (zh) * | 2022-08-16 | 2024-02-22 | 蔚来汽车科技(安徽)有限公司 | 驾驶系统及其构建方法、车辆、存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102236621B (zh) | 计算机接口信息配置系统及方法 | |
US20180365035A1 (en) | Method for starting embedded apparatus, and apparatus | |
US10054922B2 (en) | Apparatus and a system for controlling sensors | |
CN105373407A (zh) | 嵌入式系统dsp和fpga在线升级方法 | |
KR101673299B1 (ko) | 운영 시스템 복구 방법 및 장치, 그리고 단말기기 | |
CN105159696A (zh) | 一种独立于Linux内核的硬件驱动实现方法及装置 | |
CN104407878A (zh) | C6000数字信号处理器在线升级方法 | |
KR101771289B1 (ko) | Plc 프로그램 관리 장치 | |
CN107463388A (zh) | 一种uefi无盘启动方法 | |
CN101030241A (zh) | 基于Keil C51的软件保护开发的方法和系统 | |
CN106020905A (zh) | 一种微控制器固件开发与更新的方法及系统 | |
CN104133706B (zh) | 固件修改方法及固件修改装置 | |
ES2772675T3 (es) | Método de compilación óptima de un comando de PLC | |
US20160224325A1 (en) | Hiding compilation latency | |
CN108089844A (zh) | 一种云端打包app方法及装置 | |
KR20190078681A (ko) | 인공신경망 학습/시뮬레이션 시스템 및 방법 | |
CN103034501A (zh) | 一种linux平台的函数调用方法及函数调用装置 | |
JP5619331B1 (ja) | プログラミング装置及び実行コード生成方法 | |
CN103631585A (zh) | 一种用于开发应用程序的方法及系统 | |
JP6295914B2 (ja) | プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ | |
CN102023879A (zh) | 一种龙芯刀片南桥sata控制器bios的实现方法 | |
CN104281443B (zh) | 利用tcm实现代码、数据替换的方法 | |
CN101097515A (zh) | 软件的系统架构及应用程序处理方法 | |
CN104866368B (zh) | 一种Makefile文件生成方法和装置 | |
KR20110110509A (ko) | 원격 프로그래밍 시스템 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20151216 |
|
WD01 | Invention patent application deemed withdrawn after publication |