嵌入式操作系统内核
文章平均质量分 60
ifreecoding
这个作者很懒,什么都没留下…
展开
-
底层工作者手册之嵌入式操作系统内…
源码请在https://github.com/ifreecoding/MbedRtos.git下载我在写本手册前没有任何有关操作系统内核的知识,有的仅仅是简单的使用过2个操作系统的经验,也仅限于对操作系统应用层一些功能的简单了解。我在写操作系统内核时也只能从这些应用经验出发,参考一些资料,更多的是自己想办法用最顺其自然的代码实现操作系统的这些内核功能。因此,你要相信,既然我能在原创 2017-06-29 22:35:06 · 1417 阅读 · 1 评论 -
第3章第2节 ;任意任务间的切换
源代码请在https://github.com/ifreecoding/MbedRtos.git下载第2节任意任务间的切换上一节我们使用2个固定的任务验证了操作系统任务切换的功能,但这些代码并不具有通用性,如果要扩充其它任务,就必须修改操作系统函数,这显然是不可接受的。操作系统作为独立于用户原创 2017-06-29 22:35:42 · 489 阅读 · 1 评论 -
第3章第3节 ;用户代码入口——根任务…
源码请在https://github.com/ifreecoding/MbedRtos.git下载第3节用户代码入口——根任务经过上节的修改,Wanlix操作系统可以建立任意多个任务,但是在操作系统运行之前必须得先建立一个任务,然后再调用WLX_TaskStart函数从非操作系统状态切换到原创 2017-06-29 22:35:45 · 480 阅读 · 0 评论 -
第3章第4节 ;使用Wanlix编写交通红…
源码请在https://github.com/ifreecoding/MbedRtos.git下载第4节使用Wanlix编写交通红绿灯控制系统至此我们已经实现了一个非常简单、小巧的操作系统——Wanlix,简单到它只具备任务切换这一项任务管理功能,而且需要用户自己主动切换,实时性较差。但无原创 2017-06-29 22:35:47 · 463 阅读 · 0 评论 -
第3章第5节 ;发布Wanlix操作系统
源代码请在https://github.com/ifreecoding/MbedRtos.git下载第5节发布Wanlix操作系统经过前面3.1~3.3节循序渐进的开发,我们已经使Wanlix操作系统具备了最基本的任务切换功能,并在3.4节使用Wanlix开发了一个交通红绿灯控制系统,到此为原创 2017-06-29 22:35:50 · 704 阅读 · 1 评论 -
第4章 ;Mindows操作系统
源码请在https://github.com/ifreecoding/MbedRtos.git下载第4 章Mindows操作系统在第3章中,我们实现了一个简单的操作系统——Wanlix,这个操作系统是一种非抢占式操作系统,任务之间的切换需要用户主动调用任务切换函数WLX_TaskSwitch来实现。从本章开始,我们将编写一个实时抢占的嵌入式操作系统——Mindows,它原创 2017-06-29 22:35:53 · 481 阅读 · 0 评论 -
第4章第1节 ;Mindows的文件组织结构
源码请在https://github.com/ifreecoding/MbedRtos.git下载第1节Mindows的文件组织结构在第3章,我们依据任务切换的原理编写了Wanlix操作系统,Wanlix很简单,只实现了任务切换功能,从本章开始,我们将编写Mindows操作系统,Mindows将会实现更多的功能,相对Wanlix来说要复杂一些,文件也更多一些,因此,Min原创 2017-06-29 22:35:55 · 518 阅读 · 1 评论 -
第4章第2节 ;定时器触发的实时抢占…
源码请在https://github.com/ifreecoding/MbedRtos.git下载第2节定时器触发的实时抢占调度在第3章,我们依靠用户代码主动调用任务切换函数WLX_TaskSwitch实现了任务切换功能,这种任务调度方式的调度时机是固定死的,只有代码运行到WLX_TaskSw原创 2017-06-29 22:35:58 · 524 阅读 · 1 评论 -
第4章第2节 ;定时器触发的实时抢占…
源码请在https://github.com/ifreecoding/MbedRtos.git下载本节中新增的重要内容已经介绍的差不多了,下面我们来看看使用tick中断的任务上下文切换过程。在本节中,tick中断被配置为使用Timer1产生IRQ中断。产生tick中断时,硬件会自动将PC指针指向I原创 2017-06-29 22:36:01 · 401 阅读 · 0 评论 -
第4章第3节 ;实时事件触发的实时抢…
源码请在https://github.com/ifreecoding/MbedRtos.git下载第3节实时事件触发的实时抢占调度在上节中我们成功的实现了任务的ready状态,并用tick中断实现了实时调度,但由于只有ready这一种状态,使得我们的例子只能不断的运行最高优先级任务。在这一节我们引原创 2017-06-29 22:36:03 · 432 阅读 · 1 评论 -
第4章第3节 ;实时事件触发的实时抢…
源码请在https://github.com/ifreecoding/MbedRtos.git下载下面来看一下MDS_TaskDelay函数的代码:00196U32MDS_TaskDelay(U32uiDelayTick)00197{00198M_CHAIN*ps原创 2017-06-29 22:36:06 · 365 阅读 · 1 评论 -
第3章第1节 ;两个固定任务之间的切…
源码请在https://github.com/ifreecoding/MbedRtos.git下载第1节两个固定任务之间的切换程序的执行只与指令和数据相关,指令是不可修改的,编译后就确定了,能改变的只有数据,但指令需要对数据进行判断,走不同的指令分支,因此,如果我们需要控制程序的执行过程,原创 2017-06-29 22:35:39 · 636 阅读 · 0 评论 -
第3章 ;Wanlix操作系统
源码请在https://github.com/ifreecoding/MbedRtos.git下载第3 章Wanlix操作系统有了前面章节的铺垫,本章开始正式编写操作系统!本章将实现Wanlix操作系统,从零起步,先实现2个固定任务的互相切换来验证操作系统的切换功能,然后再不断的加入新功能,由浅入深,一步步将操作系统充实起来。每一个功能的加入都是一个独立的阶段性,读者可以通原创 2017-06-29 22:35:37 · 521 阅读 · 0 评论 -
前言
源码请在https://github.com/ifreecoding/MbedRtos.git下载前言目前我所见的绝大部分介绍操作系统的书籍只是从应用的角度告诉读者应该如何使用操作系统,而且相当一部分书籍只是把原有的用户手册整理了一下便出书了,这样的书籍只能当做一本使用手册去查,从学习的角度来说意义不大,一不介绍实现背景、原理,二不介绍应用例子,无法让读者深刻体会操作系统的用法。原创 2017-06-29 22:35:09 · 515 阅读 · 1 评论 -
第1章 ;操作系统基础知识
源码请在https://github.com/ifreecoding/MbedRtos.git下载第 1 章操作系统基础知识有很多嵌入式系统设备的资源非常少,几十K的ROM,几K的RAM,这种小系统设备上的软件功能也非常简单,软件只要按照设定好的功能周而复始的运行就可以了。这种小系统设备不需要操作系统,也几乎没有合适的操作系统能运行在资源如此少的设备上。当芯片资源越来越丰富,原创 2017-06-29 22:35:12 · 449 阅读 · 0 评论 -
第1章第1节 ;为什么要使用操作系统
源码请在https://github.com/ifreecoding/MbedRtos.git下载第1节为什么要使用操作系统在没有操作系统的情况下,C语言是以函数为单位实现功能的,一个函数一个函数串行的执行,一个完整的功能会由多个函数共同完成。然而当软件系统的功能变得多而庞大的时候,这种方法几乎无法使用,因为此时各个功能之间必然会有千丝万缕的联系,不可能依次串行的完成每个原创 2017-06-29 22:35:14 · 738 阅读 · 0 评论 -
第1章第2节 ;操作系统的分类
源码请在https://github.com/ifreecoding/MbedRtos.git下载第2节操作系统的分类操作系统是管理整个软硬件系统的软件系统,从不同的角度操作系统可以有很多种划分,比如按与用户对话的界面分类可分为命令行界面操作系统和图形用户界面操作系统,按支持用户数的多少可以分为单用户和多用户操作系统,按功能可以分为嵌入式操作系统和PC机通用操作系统,按调度的原创 2017-06-29 22:35:17 · 684 阅读 · 1 评论 -
第2章 ;写操作系统前的预备知识
源码请在https://github.com/ifreecoding/MbedRtos.git下载第2 章写操作系统前的预备知识通过前面章节的介绍我们对操作系统有了初步的了解,但这也只是停留在概念阶段,这些知识对于写一个操作系统来说是远远不够的。从现在的章节开始,我们将从无到有,一步一步一个功能一个功能的写出操作系统。本章我们就先了解一下写操作系统所需要的知识,会涉及到一原创 2017-06-29 22:35:20 · 433 阅读 · 0 评论 -
第2章第1节 ;ARM7芯片基本结构
源码请在https://github.com/ifreecoding/MbedRtos.git下载第1节ARM7芯片基本结构ARM7芯片构架比较简单,32bits线性地址空间统一排列,任何地址都是唯一的,不同的片上资源及外设被分配到不同的地址空间,不同数据结构的指针固定为4字节长度,这相对51芯片来说方便很多也清晰很多,从用户编程的角度来看入手比较简单,因此本手册首先选用原创 2017-06-29 22:35:23 · 757 阅读 · 0 评论 -
第2章第2节 ;ARM7汇编语言简介
源码请在https://github.com/ifreecoding/MbedRtos.git下载第2节ARM7汇编语言简介ARM7芯片有2种汇编语言指令集,一种叫做ARM指令集,字长为32bits,另一种叫THUMB指令集,字长为16bits。这两种指令集各有优缺点,它们可以单独使用也可以混合在一起使用,在ARM7芯片上,我们将只使用ARM指令集,在后续的Cortex芯片上原创 2017-06-29 22:35:25 · 1361 阅读 · 1 评论 -
第2章第3节 ;ARM7芯片的函数调用标…
源码请在https://github.com/ifreecoding/MbedRtos.git下载第3节ARM7芯片的函数调用标准在上节,我们最后用汇编语言写了一个函数,但该函数没有入口参数,那么C语言函数、汇编函数之间是如何传递参数和返回值的?函数在执行过程中是如何使用栈的?它们需要遵守什么规则?本节我们将介绍这方面的内容。如果我们不是在编写操作系统,只是编写正常原创 2017-06-29 22:35:28 · 457 阅读 · 0 评论 -
第2章第4节 ;Wanlix的文件组织结构
源码请在https://github.com/ifreecoding/MbedRtos.git下载第4节Wanlix的文件组织结构说起写软件,还是比较容易入门的,现在电脑这么普及,随便找本软件的书籍就可以在电脑上编程了,实现一些功能,但这仅仅是编写软件的最初级阶段,一部分人可能一辈子只会停留在这个阶段,全局变量满天飞,函数没有层次结构,文件关系混乱。能够发展下去,能够编出满足功原创 2017-06-29 22:35:31 · 379 阅读 · 0 评论 -
第2章第5节 ;Wanlix的开发环境
源码请在https://github.com/ifreecoding/MbedRtos.git下载第5节Wanlix的开发环境芯片使用的是ADI公司的Aduc7024,前面已经做过一些介绍。软件开发环境使用的是KeilMDK4.20。Keil是德国软件公司Keil(现已被ARM公司收购)开发的嵌入式系统开发平台,Keil开发平台支持许多厂家的芯片,提供基本的最小软件系统,原创 2017-06-29 22:35:34 · 365 阅读 · 0 评论 -
第4章第3节 ;实时事件触发的实时抢…
源码请在https://github.com/ifreecoding/MbedRtos.git下载本节用户代码在打印输出方面做了较大的修改,从本节开始,串口打印功能不再由任务实时向串口打印,而是由任务先将字符串打印到内存,然后使用一个低优先级的任务从内存中取出字符串打印到串口。串口是一个低速率的外设,960原创 2017-06-29 22:36:08 · 283 阅读 · 0 评论