You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
一.鼠标驱动
字符输入设备,与键盘类似,核心是编写鼠标中断处理程序。
1.鼠标中断入口程序的设置, 编写鼠标中断处理函数, 用宏完成IDT编写, set_trap_gate, 位置与键盘中断初始化设置语句放在一起con_init() 控制台设备初始化函数。
2.中断函数实现, 类似的创建一个汇编文件mouse.s, 加文件修改Makefile
二.图形工作模式
1.启动图形模式
2.设置分辨率
3.像素点阵和显存的映射
1.启动图形模式
BIOS( 基本输入输出系统) 检测显卡硬件, 支持什么图形模式。setup.s中功能号0x0F中。。。可以读取显卡信息, 返回AL寄存器存放当前显卡的显示模式。存放在0x90006中。
控制台设备的初始化函数con_init( ) 用宏定义ORIG_VIDEO_MODE得到( 从0x90006取出一个字节) 。后得到VGA标准, 读手册。得到:
图形控制器( 0x3CE) , 拼装器( 0x3C4) , CRT控制器( 0x3D4)
图形控制器把总线地址数据存放在显存上
拼装器从四个64KB显存片取出还原( 对应图形控制器)
CRT控制器将信息扫描输出
2.设置分辨率
320*200分辨率, 靠CRT, 水平垂直计数器
0x3D4 0x3D5完成设置控制扫描线长度
3.像素点阵和显存的映射
采取线性256色模式, 一个字节一个像素点。
+至此做成显示器图形模式初始化系统调用sys_init_graphics( ) 进入Mode 0x13图形模式。
4.开始绘制屏幕
起始位置设置屏幕最左上角像素从哪里取
三.消息驱动框架
1.操作系统收集各种事件 2.放入系统消息队列中 3.用户进程不断查看并作出相应的动作。一个while循环。
由消息触发,由于消息队列在操作系统中故对消息的获取是一个系统调用
内核中的构造工作就是 1.定义队列 2.post 3.get( 内核函数) 4.新消息的创建( 正确的转换操作) switch
注意内核消息队列是一个多进程共享队列, 用临界区机制保护, 开关中断即可cli( ) , sti( ) 。
四.可视化应用程序的设计与实现
1.定义对象
2.定时器:定时重画
3.无限循环
4.get系统调用取出系统消息, 是定时就判断 失败? 对象位置,并重画,画面同步。是左键就更新位置。