【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】

在编写我们的操作系统之前,我们需要明确一些事情。比如说,这个系统的运行环境是什么?怎么编译?基本中断环境是什么?上下文怎么切换?准备实现那些内容?基本数据类型是什么?等等。

(1)你的嵌入式操作系统准备叫什么名称?运行环境是什么?可以在实际环境上面运行吗?

我们准备把这个嵌入式操作系统称之为MiniOS。虽然这个操作系统实现的功能不多,但是麻雀虽小,五脏俱全。一般操作系统该有的功能,MiniOS都会有这个功能。起初,我们会在linux上运行MiniOS,之后我们会把MiniOS移植到51单片机上去。

(2)操作系统怎么编译?

MiniOS系统采用基本的C语言进行编写,没有汇编语言,但是移植到51上面需要一些汇编语言。编写完C语言文件后,我们需要一个简单的makefile文件,这样就可以实现自动化编译,进一步提高我们开发的效率。

(3)基本中断环境是什么?

因为MiniOS起初是在linux实现运行的,所以它是依靠SIGALRM实现中断调度的。当然在OS中还会有I/O操作,这里我们用信号进行仿真。SIGINT就是一种方法,每当我们使用键盘输入ctrl+C的时候,就会调用相应的函数。这和外设的中断是一模一样的。

(4)上下文怎么切换?

上下文的切换就是堆栈的切换。要弄清楚堆栈的切换,首先你要明白函数,函数里面的数据是怎么安排的,压栈是怎么回事,退栈是怎么回事。这些知识点,我们在后面都会一一介绍。

(5)MiniOS要实现哪些内容?

MiniOS虽然比较小巧,但是操作系统该有的功能它都会有。因此,我们准备实现的下面这些内容,比如说中断开关、互斥量、定时器、线程调度、内存分配都会拥有。

(6)基本数据类型是什么?

为了移植的方便,我们需要对基本数据进行重新定义一下基本数据类型。

#define UINT32 unsigned int
#define INT32  signed int
#define UINT16 unsigned short
#define INT16  signed short
#define UINT8  unsigned char
#define INT8   signed char
#define TRUE 1L
#define FALSE 0L
#define OK   0L
#define ERROR ~0L
#define BOOLEAN UINT32
#define STATUS  UINT32

(7)把MiniOS移植到51单片机需要做些什么?

其实把MiniOS移植到51上面,其实不困难,只要做到这几个方面就可以了。a)基本数据类型重新定义;b)中断开关重新进行设置;c)任务切换的压栈、出栈处理。要是做到这里,我们就可以在51单片机上面把自己的OS跑起来了,那是多么开心的一件事情啊。

嵌入式操作系统内核原理和开发(基础)相关推荐

  1. 嵌入式操作系统内核原理和开发

    嵌入式操作系统内核原理和开发(开篇) 操作系统是很多人每天必须打交道的东西,因为在你打开电脑的一刹那,随着bios自检结束,你的windows系统已经开始运行了.如果问大家操作系统是什么?可能有的人会 ...

  2. 嵌入式操作系统内核原理和开发(总结篇)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 很多朋友都喜欢嵌入式操作系统的内容,但是如何实现和仿真这样一个系统一直是困扰我们的难题.现在郑 ...

  3. 嵌入式操作系统内核原理和开发(地址空间)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 不管是什么样的嵌入式cpu,它必然有自己的访问地址空间.至于这个具体的访问空间是什么,那cpu ...

  4. 嵌入式操作系统内核原理和开发(信号量)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 之前因为工作的原因,操作系统这块一直没有继续写下去.一方面是自己没有这方面的经历,另外一方面就 ...

  5. 嵌入式操作系统内核原理和开发(头文件调整)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 很长一段时间,我个人对头文件的功能了解得不是很明白.虽然在平时的开发中,对于头文件也没有犯过什 ...

  6. 嵌入式操作系统内核原理和开发(cpu的那些事)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] cpu是数字处理系统中的一个重要环节.在我看来,单片机.微处理器.dsp都可以称作是cpu,只 ...

  7. 嵌入式操作系统内核原理和开发(开篇)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 操作系统是很多人每天必须打交道的东西,因为在你打开电脑的一刹那,随着bios自检结束,你的wi ...

  8. 嵌入式操作系统内核原理和开发(实时系统中的定时器)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 关于定时器的内容,其实我们之前也讨论过,也书写过相应的代码,但是表达得比较晦涩,效率也比较低. ...

  9. 嵌入式操作系统内核原理和开发(消息队列)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 消息队列是线程交互的一种方法,任务可以通过消息队列来实现数据的沟通和交换.在嵌入式系统上,这可 ...

最新文章

  1. C# Idioms: Enum还是Enum Class(枚举类)
  2. CVPR 2021:记一次神奇的 Rebuttal 经历
  3. 8.Layout布局应用
  4. ACM模板--邻接矩阵 无向图 搜索算法
  5. mysql数据库元表_mysql中元数据库information_schema学习之TABLES表
  6. 【英语学习】【WOTD】palimpsest 释义/词源/示例
  7. php目录遍历漏洞复现,nginx解析漏洞,配置不当,目录遍历漏洞环境搭建、漏洞复现...
  8. linux驱动程序之电源管理之新版linux系统设备架构中关于电源管理方式的变更
  9. 一副眼镜一千多贵吗_一副近视眼镜的成本大概多少?
  10. Taro从零创建微信小程序步骤
  11. 集线器、交换机、路由器、猫
  12. php数据统计模板,PHP如何使用Echarts生成数据统计报表
  13. WIN10解包分区和磁盘分区教程
  14. 求解1-1/2+1/3+...1/99-1/100的和
  15. python获取时间戳算法_Python 获取时间,时间戳,时间差
  16. 知识图谱最新论文清单(附论文解读)
  17. 计算机网络资源共享功能,计算机网络最基本功能有( )和资源共享
  18. super.getClass()与this.getClass()的问题
  19. bootstrap 精美_基于Bootstrap 4和Vuejs构建的精美资源
  20. 【汇正财经】沪深创缩量调整

热门文章

  1. SpringMVC连接MongoDB操作数据库
  2. 详解RecyclerView下拉刷新与上拉更多
  3. 实战突击:PHP项目开发案例整合(第2版)
  4. 电子政务方向:We7.Cloud政府云门户
  5. [哀悼]5.12地震后把网站改成灰色的方法
  6. 确认取消按钮{删除接口循环返回的数据}
  7. 第三周读书笔记《程序员修炼之道》
  8. js中的cookie的读写操作
  9. 数据可视化(3)--Google Charts
  10. 【数学、dp】bigcoin 2013广东省赛E题