话说这种笔记当原创发出来真是惭愧……可没别的选项啊……
从《30天自制操作系统》过来的。30天这本书是偶然所得,当年买c++ primer的时候临时凑单买的,那个时候觉得牛逼啊,操作系统啊,30天,然后,一直没看!多年后,想拿起来了却这桩心结,然而,越翻越觉得这不是我想要的。我想知道技术上的真相,不是一个玩具,然后绕路就绕到了嵌入式…直觉应该是对的?
预感这篇读书笔记感觉可能会太监,方向似乎需要调整了,我不想去搞开发板,我想知道软件是如何驱动硬件的,大致过一下。2020年6月2日 15点33分
一个现代意义的操作系统内核需要什么功能:
- 时间管理
- 中断管理
- 内存管理
- 进程管理
- 设备管理
- 文件系统
内核的架构
- 宏内核:Window,Minix,Mac
- 微内核:Unix,Linux
我们将内核分三个大层
- 内核接口层:一套UNIX接口的子集,检查参数是否合法的代码
- 内核功能层:进程管理,内存管理,中断管理,设备管理
- 内核硬件层:初始化,CPU控制,中断处理,物理内存管理,
内核初始化
- MMU :Memory Management Unit
- 中断向量
- 串口
- 机器数据结构
- 初级内存管理
- 中断
内存管理
文件系统
新建,删除,打开,读取,关闭。
mini2440
- CPU
- MMU
- 内存
- RTC
- 定时器
- UART
- 中断控制器
第九章 驱动模型
主要解决操作系统内核如何管理硬件的问题。操作系统不包含或者只包含最基本、最通用的设备控制代码。把控制设备的代码独立出来,与操作系统内核分开,独立开发。每个设备会对应一个设备控制代码模块。操作系统要控制哪个设备,就加载哪个设备的控制代码模块,不使用该设备了,就可以删除这个设备控制代码模块。设备厂商在发布新设备时,只要随着发布一个与此相关的 设备控制代码模块就行了。这些设备控制代码的专有名词叫做设备驱动程序。驱动程序必须有三个结构:
- 驱动程序入口函数:在驱动程序被内核加载时调用,执行驱动程序的初始化、向内核注册设备;
- 12大操作函数:
- 驱动程序退出函数:在驱动程序退出时被调用,用于释放资源。
边看边写~要有耐心