现在的位置: 首页 > 综合 > 正文

Orange’s TTY

2013年01月21日 ⁄ 综合 ⁄ 共 666字 ⁄ 字号 评论关闭

       一、TYY任务本质就是增加了一个进程,并且运行在ring1,且优先级调高了。并且设置了键盘中断用于接收键盘输入,并将扫描码存放在缓冲区。task_tyy也就是新加入的进程,循环执行读写缓冲区。

       现在TYY任务和用户进程依次执行(时钟中断),并且TYY任务的优先级高。当遇到系统调用,切换到ring0,执行到内核态不能被时钟中断打断,执行后返回刚才的进程。

       每遇到有键盘输入,和上面的过程一样,往键盘缓冲区输入扫描码。

       

       

       二、tty.c,keyboard.c,console.c的关系

       


       

        

       三、printf系统调用

       细节请参考http://blog.csdn.net/jltxgcy/article/details/8766537

        

  

       四、键盘Make Code和Break Code

       Make Code是键盘按下时产生的码,Break Code是键盘放开时产生的码,Break Code是Make Code与0x80相或后的结果。键盘每个按键对应的Make Code和Break Code如下图

       

       我们用的时候参考keymap.h,其中的一行为

       /* 0x1D - l. Ctrl*/ CTRL_L,CTRL_L, CTRL_R

       第一列为Make Code,第二列为!SHIFT对应的按键值,第三列为SHIFT对应的按键值,第四列为Make Code前面带E0的按键值,观察上图R_Ctrl的Make Code为E0,1D,找到第二列和第三列用代码实现。

抱歉!评论已关闭.