CN111984334A - 一种轻量的操作系统内核与驱动分离方法 - Google Patents

一种轻量的操作系统内核与驱动分离方法 Download PDF

Info

Publication number
CN111984334A
CN111984334A CN202010830266.4A CN202010830266A CN111984334A CN 111984334 A CN111984334 A CN 111984334A CN 202010830266 A CN202010830266 A CN 202010830266A CN 111984334 A CN111984334 A CN 111984334A
Authority
CN
China
Prior art keywords
unit
kernel
operating system
driver
api
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
CN202010830266.4A
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.)
Shanghai Rt Thread Electronic Technology Co ltd
Original Assignee
Shanghai Rt Thread Electronic Technology Co ltd
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 Shanghai Rt Thread Electronic Technology Co ltd filed Critical Shanghai Rt Thread Electronic Technology Co ltd
Priority to CN202010830266.4A priority Critical patent/CN111984334A/zh
Publication of CN111984334A publication Critical patent/CN111984334A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种轻量的操作系统内核与驱动分离方法,用于解决当操作系统内核单元与驱动单元一起编译链接时操作系统内核与驱动互相耦合的问题。主要包括驱动单元,操作系统内核单元。采用本发明提供的一种轻量的操作系统内核单元与驱动单元分离方法,可以实现操作系统内核单元与驱动单元的独立编译链接,可以实现各个单元的代码段和数据段分离,进而可以对操作系统内核单元与驱动单元进行单独升级,进而可以避免操作系统内核单元与驱动单元的数据区在小范围内存越界时修改了其他单元的数据,进而在程序出现问题时可以根据地址所在的地址空间快速定位问题。

Description

一种轻量的操作系统内核与驱动分离方法
技术领域
本公开涉及嵌入式领域和实时操作系统领域,具体而言是指涉及一种轻量的操作系统内核与驱动分离方法。
背景技术
在传统的嵌入式实时操作系统上,操作系统内核单元和驱动单元都是通过编译链接在一起的,操作系统内核单元与驱动单元中的函数以及数据是混合在一起的,所以,即便只修改了某一小部分的代码并重新编译链接后,也需要升级整个操作系统,当未修改部分占据了大多数空间时这是很不方便的。同时,在操作系统内核单元与驱动单元分离后,当驱动单元中发生小范围的内存访问越界时,只会干扰到驱动单元自身,而不影响操作系统内核单元的稳定性。
发明内容
本发明所要解决的技术问题在于提供一种轻量的操作系统内核与驱动分离方法,以解决当操作系统内核单元与驱动单元一起编译链接时操作系统内核单元与驱动单元互相耦合的问题。
本发明提供的实现一种轻量的操作系统内核与驱动分离方法,包括:
操作系统内核单元,其用于提供操作系统的核心功能:线程调度、内存管理、以及文件系统等系统服务,同时也处理cpu的异常;
驱动单元,其用于提供对设备进行操作的回调函数,同时也处理设备的中断;
进一步地,所述的操作系统内核单元与驱动单元是独立编译链接的,代码段和数据段是独立的,可以进行单独升级。
进一步地,所述的操作系统内核单元与驱动单元可以分别处理异常和中断,异常中断向量表由操作系统内核单元负责拼接到一起。
进一步地,所述的操作系统内核单元向驱动单元提供内核api调用入口和内核api列表,驱动单元通过内核api调用入口使用操作系统内核单元提供的内核api。
进一步地,所述的驱动单元需要将驱动提供的回调函数通过操作系统内核单元提供的设备注册api注册到操作系统内核单元。
进一步地,所述的操作系统内核单元通过调用驱动单元注册的回调函数实现对设备的操作。
附图说明
为了更加清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单介绍,应当理解,以下附图仅仅示出了本公开的某些实施例,因此不应被看作是对本发明的限定,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获取前提相关的附图。
图1为本发明具体实施方式的实现方法的框架图。
图2为本发明具体实施方式的初始化过程的流程图。
图3为本发明具体实施方式的运行过程的流程图。
图4为本发明具体实施方式的操作系统内核单元与驱动单元初始化完成后的示意图。
具体实施方式
下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整的描述,显然所描述的实施仅仅是本发明的部分实施,而不是全部的实施例。提供的实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。因此,以下对在附图中提供的本发明的实施的详细描述并非旨在限制要求保护的本发明的范围,而仅仅表示本发明的选定实施例。基于本发明的实施例,本领域的普通技术人员在没有做出创造性劳动的前提下所有获得的前提实施例,都属于本发明保护的范围。
本发明实施例提供一种轻量的操作系统内核与驱动分离方法说明,如图1所示,该方法是由操作系统内核单元11、驱动单元12组成。
操作系统内核单元11,其用于提供操作系统的核心功能:线程调度、内存管理、以及文件系统等系统服务,同时也处理cpu的异常并向驱动单元提供内核api调用入口和内核api列表;
驱动单元12,其用于向操作系统内核单元提供对设备进行操作的回调函数,同时也处理设备的中断;
图2操作系统内核单元与驱动单元初始化过程的流程图。所述流程从步骤S201开始。
在步骤S201中,操作系统内核单元从bootloader或者其他方式获得驱动单元的起始地址并保存,然后开始执行完操作系统内核的早期初始化工作;
在步骤S202中,操作系统内核单元提取驱动单元的中断向量表,并与操作系统的异常向量表合并为新的异常中断向量表后放到内存中,然后将cpu的异常中断向量地址设置到新的异常中断向量表;
在步骤S203中,操作系统内核单元将内核api调用入口地址作为参数调用驱动单元的初始化函数,在驱动单元的初始化函数中初始化驱动SDK并依次注册驱动;
在步骤S204中,在驱动单元初始化完成后,返回操作系统内核单元继续进行剩余的初始化工作,直到第一个启动任务。
图3为操作系统内核单元与驱动单元运行过程的示意图。所述流程从步骤S301开始。
在步骤S301中,应用程序向操作系统内核单元发起操作设备的请求,操作系统内核单元查找驱动单元内对应设备注册的回调函数;
在步骤S302中,操作系统内核单元调用驱动单元内对应设备注册的驱动回调函数;
在步骤S303中,开始执行驱动单元内的回调函数,驱动单元中的驱动SDK向驱动提供了操作系统内核api的接口函数,当需要使用到操作系统内核单元的api时,先进入驱动SDK中的内核api接口函数;
在步骤S304中,在驱动SDK的接口函数中将内核api序列号作为参数,调用操作系统内核单元中的内核api调用入口函数;
在步骤S305中,内核api调用入口函数将参数转换为操作系统内核单元中对应的内核api函数地址;
在步骤S306中,调用内核api函数执行操作;
在步骤S307中,内核api函数执行完毕后,返回驱动单元中继续执行;
在步骤S308中,在驱动单元中的函数执行完毕后,返回内核中继续执行,最后把执行结果返回给应用程序。
图4为操作系统内核单元与驱动单元初始化完成后的示意图。所述流程从步骤S401开始。
在步骤S401中,展示的是操作系统内核单元的数据段在内存中的分布,包含全局与静态变量、动态内存、以及步骤S402展示的异常与中断向量表;
在步骤S402中,展示的是异常与中断向量表,该表由步骤S405的操作系统内核单元异常向量表和411表示的驱动单元中断向量表所表示;
在步骤S403中,展示的是驱动单元的数据段在内存中的分布,包含全局与静态变量、动态内存;
在步骤S404中,展示的是操作系统内核单元的代码段分布;
在步骤S405中,展示的是操作系统内核单元异常向量表,用于指定异常的处理函数;
在步骤S406中,展示的是操作系统内核单元的初始化函数入口,操作系统的初始化是从这里开始的;
在步骤S407中,展示的是操作系统内核单元的内核api调用入口函数,该函数处理所有驱动单元调用的内核api,通过步骤S408展示的内核api列表将内核api序号转化为具体内核api函数,并执行该函数;
在步骤S408中,展示的是操作系统内核单元的内核api列表,该列表被步骤407所使用;
在步骤S409中,展示的是操作系统内核单元的内核核心,负责线程调度、进程管理、文件系统、内存管理、网络协议等;
在步骤S410中,展示的是驱动单元的代码段分布;
在步骤S411中,展示的是驱动单元的中断向量表,存放各个驱动中指定的中断处理函数;
在步骤S412中,展示的是驱动单元的初始化函数,该函数被操作系统内核单元所调用,参数是步骤S407的内核api调用入口函数的地址,该函数将会将所有驱动都注册到操作系统内核单元中去;
在步骤S413中,展示的是驱动单元的一个驱动;
在步骤S414中,展示的是驱动单元的一个驱动中的回调函数;
在步骤S415中,展示的是驱动SDK,所有驱动单元都通过该驱动SDK实现对内核api的调用。

Claims (5)

1.一种轻量的操作系统内核与驱动分离方法,其特征在于,操作系统内核单元与驱动单元分别独立编译链接,内核单元与驱动单元之间的耦合度低,在操作系统内核单元与驱动单元初始化后,操作系统内核单元可以调用驱动单元注册的回调函数,驱动单元也可以使用操作系统内核单元提供的内核api。
2.根据权利要求1所述的轻量的操作系统内核与驱动分离方法,其特征在于:驱动单元可以通过操作系统内核单元提供的提供内核api列表实现对内核api的调用。
3.根据权利要求1所述的轻量的操作系统内核与驱动分离方法,其特征在于:驱动单元向操作系统内核单元注册回调函数,然后操作系统内核单元就可以调用驱动单元内的回调函数。
4.根据权利要求1所述的轻量的操作系统内核与驱动分离方法,其特征在于:操作系统内核单元与驱动单元是独立链接且互不干扰的,在保持接口不变的情况下可以进行独立升级。
5.根据权利要求1所述的轻量的操作系统内核与驱动分离方法,其特征在于:操作系统内核单元与驱动单元可以分别处理异常和中断。
CN202010830266.4A 2020-08-17 2020-08-17 一种轻量的操作系统内核与驱动分离方法 Pending CN111984334A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010830266.4A CN111984334A (zh) 2020-08-17 2020-08-17 一种轻量的操作系统内核与驱动分离方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010830266.4A CN111984334A (zh) 2020-08-17 2020-08-17 一种轻量的操作系统内核与驱动分离方法

Publications (1)

Publication Number Publication Date
CN111984334A true CN111984334A (zh) 2020-11-24

Family

ID=73434723

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010830266.4A Pending CN111984334A (zh) 2020-08-17 2020-08-17 一种轻量的操作系统内核与驱动分离方法

Country Status (1)

Country Link
CN (1) CN111984334A (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1964525A (zh) * 2005-11-09 2007-05-16 中兴通讯股份有限公司 一种智能加载手机硬件驱动程序的系统
CN102799452A (zh) * 2012-06-29 2012-11-28 深圳市安普尔科技有限公司 系统软件升级方法和装置
CN103279441A (zh) * 2013-05-21 2013-09-04 山东超越数控电子有限公司 一种基于国产嵌入式操作系统的usb转cf/sd驱动方法
CN103870326A (zh) * 2012-12-11 2014-06-18 厦门雅迅网络股份有限公司 一种将中断处理程序底半部搬移到应用层的方法及应用
CN104375874A (zh) * 2014-12-11 2015-02-25 北京奇虎科技有限公司 加载Linux内核驱动的方法及装置
US20160132365A1 (en) * 2014-11-12 2016-05-12 Vormetric, Inc. Mechanism for interposing on operating system calls

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1964525A (zh) * 2005-11-09 2007-05-16 中兴通讯股份有限公司 一种智能加载手机硬件驱动程序的系统
CN102799452A (zh) * 2012-06-29 2012-11-28 深圳市安普尔科技有限公司 系统软件升级方法和装置
CN103870326A (zh) * 2012-12-11 2014-06-18 厦门雅迅网络股份有限公司 一种将中断处理程序底半部搬移到应用层的方法及应用
CN103279441A (zh) * 2013-05-21 2013-09-04 山东超越数控电子有限公司 一种基于国产嵌入式操作系统的usb转cf/sd驱动方法
US20160132365A1 (en) * 2014-11-12 2016-05-12 Vormetric, Inc. Mechanism for interposing on operating system calls
CN104375874A (zh) * 2014-12-11 2015-02-25 北京奇虎科技有限公司 加载Linux内核驱动的方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
NL: "LINUX内核与驱动的最新编译方法", pages 1 - 2, Retrieved from the Internet <URL:https://www.elecfans.com/emb/20190402899180.html> *
专注ANDROID开发: "request_irq()|注册中断服务", pages 1 - 6, Retrieved from the Internet <URL:https://blog.csdn.net/wealoong/article/details/7566546#t0> *

Similar Documents

Publication Publication Date Title
US8490070B2 (en) Unified mobile platform
EP0354899B1 (en) Multiprocessing method and arrangement
US5003466A (en) Multiprocessing method and arrangement
US5696970A (en) Architecture for implementing PCMCIA card services under the windows operating system in enhanced mode
US7134007B2 (en) Method for sharing firmware across heterogeneous processor architectures
EP2296089A2 (en) Operating systems
EP1467282A2 (en) Operating systems
WO1996038784A1 (en) Digital data processing method and apparatus for peripheral device control
EP2521033A1 (en) Startup method and device for application program on mobile device
CN109358839B (zh) 一种嵌入式单片机软件开发的方法及存储介质
CN112015522B (zh) 系统功能扩展方法、装置及计算机可读存储介质
CN106598647B (zh) 一种智能装置开发平台
US20220414052A1 (en) Multi-Core Processor, Multi-Core Processor Processing Method, and Related Device
Kanda et al. Spumone: Lightweight cpu virtualization layer for embedded systems
WO2020210301A1 (en) Processor core isolation for execution of multiple operating systems on a multicore computer system
JP5067723B2 (ja) 情報処理装置、情報処理方法およびプログラム
CN111984334A (zh) 一种轻量的操作系统内核与驱动分离方法
US20090241127A1 (en) Method and system for providing access to active objects
US5764956A (en) Computer peripheral function emulator
US8725921B2 (en) Virtual multi-processor system
US7444500B1 (en) Method for executing a 32-bit flat address program during a system management mode interrupt
CN114911538A (zh) 一种运行系统的启动方法及计算设备
US9959225B2 (en) Computer apparatus and control method of computer apparatus
KR20140069936A (ko) 하이퍼바이저 컴퍼넌트를 업그레이드하는 방법 및 그 시스템
CN111913783B (zh) 一种基于面向对象化的单片机usb软件开发系统及方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination