嵌入式操作系统内核原理和开发(基础)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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跑起来了,那是多么开心的一件事情啊。
嵌入式操作系统内核原理和开发(基础)相关推荐
- 嵌入式操作系统内核原理和开发
嵌入式操作系统内核原理和开发(开篇) 操作系统是很多人每天必须打交道的东西,因为在你打开电脑的一刹那,随着bios自检结束,你的windows系统已经开始运行了.如果问大家操作系统是什么?可能有的人会 ...
- 嵌入式操作系统内核原理和开发(总结篇)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 很多朋友都喜欢嵌入式操作系统的内容,但是如何实现和仿真这样一个系统一直是困扰我们的难题.现在郑 ...
- 嵌入式操作系统内核原理和开发(地址空间)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 不管是什么样的嵌入式cpu,它必然有自己的访问地址空间.至于这个具体的访问空间是什么,那cpu ...
- 嵌入式操作系统内核原理和开发(信号量)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 之前因为工作的原因,操作系统这块一直没有继续写下去.一方面是自己没有这方面的经历,另外一方面就 ...
- 嵌入式操作系统内核原理和开发(头文件调整)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 很长一段时间,我个人对头文件的功能了解得不是很明白.虽然在平时的开发中,对于头文件也没有犯过什 ...
- 嵌入式操作系统内核原理和开发(cpu的那些事)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] cpu是数字处理系统中的一个重要环节.在我看来,单片机.微处理器.dsp都可以称作是cpu,只 ...
- 嵌入式操作系统内核原理和开发(开篇)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 操作系统是很多人每天必须打交道的东西,因为在你打开电脑的一刹那,随着bios自检结束,你的wi ...
- 嵌入式操作系统内核原理和开发(实时系统中的定时器)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 关于定时器的内容,其实我们之前也讨论过,也书写过相应的代码,但是表达得比较晦涩,效率也比较低. ...
- 嵌入式操作系统内核原理和开发(消息队列)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 消息队列是线程交互的一种方法,任务可以通过消息队列来实现数据的沟通和交换.在嵌入式系统上,这可 ...
最新文章
- C# Idioms: Enum还是Enum Class(枚举类)
- CVPR 2021:记一次神奇的 Rebuttal 经历
- 8.Layout布局应用
- ACM模板--邻接矩阵 无向图 搜索算法
- mysql数据库元表_mysql中元数据库information_schema学习之TABLES表
- 【英语学习】【WOTD】palimpsest 释义/词源/示例
- php目录遍历漏洞复现,nginx解析漏洞,配置不当,目录遍历漏洞环境搭建、漏洞复现...
- linux驱动程序之电源管理之新版linux系统设备架构中关于电源管理方式的变更
- 一副眼镜一千多贵吗_一副近视眼镜的成本大概多少?
- Taro从零创建微信小程序步骤
- 集线器、交换机、路由器、猫
- php数据统计模板,PHP如何使用Echarts生成数据统计报表
- WIN10解包分区和磁盘分区教程
- 求解1-1/2+1/3+...1/99-1/100的和
- python获取时间戳算法_Python 获取时间,时间戳,时间差
- 知识图谱最新论文清单(附论文解读)
- 计算机网络资源共享功能,计算机网络最基本功能有( )和资源共享
- super.getClass()与this.getClass()的问题
- bootstrap 精美_基于Bootstrap 4和Vuejs构建的精美资源
- 【汇正财经】沪深创缩量调整