工作这些年接触过很多硬件,驱动,系统,软件。
干过的活也不少,画板子,焊芯片,各种单片机上写驱动,移植操作系统,协议栈。写过各种平台的软件,Windows,Linux,Vxworks,Android, 还折腾过web开发。
回想下,搞了这么些,有没有自己真正精通的?估计连焊芯片都不算。。。。。。
后来下定决心深入研究操作系统,虽然分析过ucos,freedos,linux。但都是纸上谈兵,分析完了,也写不出那样的系统。
想真正精通操作系统还得实战,自己动手写!
结合以前玩单片机的经历,很多小型系统需求不高,只需要操作系统能够支持多任务,分时调度即可。
这样的系统实现起来应该不难,何不动手写一个这样的操作系统。。。。。。。。。。。。
OK,既然准备写了,开发环境以及运行环境就是第一步。
开发环境: NASM, Turbo C (NASM编译汇编,Turbo C编译C代码) 运行环境: 普通PC,系统工作在实模式
这样的开发环境很好搭建,运行环境要求也不高,直接在电脑上运行。编写的操作系统工作在X86 实模式,
只用到16位的386模式(毕竟是第一步,只是演练,没必要让系统跑在保护模式下)。而且方便移植到其它单片机上。
基础知识
用Turbo C编译生成的系统内核是EXE文件的,也就是说编写的操作系统在Windows下可以直接运行,调试非常方便。
注意,EXE文件只是内核。一个完整的操作系统(PC平台),还需要引导盘将内核从文件系统中读取到内存才行。
但这些都不难,文件系统可以用FAT12,引导代码可以参考freedos。
所以了解这些东西,请参考我之前的文章:
深入分析FreeDos -- 编译 深入分析FreeDos -- Image分析 深入分析FreeDos -- 引导代码 uCOS的bootloader (PC机)