一、嵌入式工程师学习操作系统的准备之路
? 本人是从事嵌入式软件方面,日常的软件工作都会和具体的处理器,电路板相结合。所以在思考以及去做一个操作系统的时候,除了学习操作系统本身的算法或者逻辑之外,还需要耗费很大的精力去做一些硬件的准备工作。毕竟我也更喜欢实践,希望自己的逻辑可以跑起来,看看实际的效果。
1、准备一个合适的开发板
硬件的准备工作需要耗费很多的资源,首先你要购买开发板,还要购买下载器。开发板还有考虑使用什么性能的,是CONTEX-M3 这种单片机,还是CONTEX-A7等一些待遇MMU、CACHE等高级配置的处理器,亦或者是ARMV8架构,aarch64指令集的更高级的处理。当然,上述都仅限于arm架构,因为这里比较熟悉一些。
上面介绍的处理器根据性能,外设配置不同,对应的开发板的价格也有所不同
- CONTEX-M3 一般100元以内可以搞定,但是这种基本是最小系统,引出串口和一些GPIO
- CONTEX-A7 这个架构的可以称为应用处理器,价格应该要100元以上了,但是架构低的引出的接口也会相应比较少
- ARMV8架构 这个类型的处理器一般可能有300元以上才能买到
处理器架构 | 价格(基本是按照最低价估计,无上限) | 烧录调试功能 | 其他 |
---|
CONTEX-M3 | 100元以内 | 烧录和调试比较方便 可以购买下载器,价格20-100元都有 一般可以通过软件一键下载,操作简单 | 无MMU、CACHE 可以学习任务管理调度 可以学习内存分配管理 以及大部分操作系统特性 | CONTEX-A7 | 100元以上 | 调试和下载需要看具体开发板设计,一般可能会需要配合硬件处理进行下载 调试功能应该不太贵 | 带MMU 可以了解学习虚拟地址、页表等 可以在内存管理中支持更多高级功能 | ARMV8 | 300元以上 | 调试器比较贵,不适合个人使用 | 带MMU 可以了解学习虚拟地址、页表等 可以在内存管理中支持更多高级功能 |
2、准备基础的软件功能
在正式开始编写操作系统的代码之前,还要去学习了解开发板的基础使用,然后做一些基础的软件准备工作
满足了上面描述的几个条件,就可以进行操作系统的学习与开发了,这是我认为的一个操作系统最小系统,操作系统最基本的功能就是多任务,很多其他的功能也是依赖于任务的。所以我们第一步需要实现的就是任务的创建与调度功能 ?
3、操作系统,第一步做什么
任务就是一个个无限循环的函数体,通过操作系统的调度,让这些任务在微观上分时执行,在宏观上并行运行。真正的操作系统需要去考虑任务调度的合理性,实时性等,我们先去实现任务的功能,调度策略可以使用最简单的轮流顺序调度。 ?
思考一下,如何实现多个内部无线循环的函数提,不使用主动调用的方式,通过我们的操作系统实现切换执行。让每一个无限循环都可以有被cpu执行到。其实每一个循环体就是我们所说的任务了。 ?
读到现在,是不是想跃跃欲试要去coding了,我要马上写一个任务切换出来,突然发现手上还没有一块称手的开发板,难道又要去淘宝网购,花钱事小,我不能马上实践,等待多么焦虑。 ?
好吧,大家都是性情中人,给大家推荐一个资源,可以马上行动,还不花一分钱 https://github.com/jhbdream/armv8_os 这个仓库提供了使用qemu模拟器运行的软件代码,参考readme搭建环境就可以编译执行,还可以马上实现你的操作系统代码
|