一、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,找到第二列和第三列用代码实现。
本文详细介绍了TYY任务的工作原理,包括其如何通过提高优先级和设置键盘中断来处理键盘输入。同时探讨了tty.c、keyboard.c及console.c三个文件之间的关系,并解释了系统调用中printf的具体实现过程,最后分析了键盘MakeCode和BreakCode的概念及其应用。

被折叠的 条评论
为什么被折叠?



