smile__xu 发表于 2008-7-9 15:27:14

做EC有段时间了! 有个问题想请教???

一直不明白USB键盘的工作方式,对于EC是否回去处理USB键盘的数据也只知道一点点.我用的是ene 公司的KBC控制芯片!
对于NoteBook来讲键盘(一般情况)有IKB和外部的USB键盘两种:
先说IKB,当键按下或松开都有MatrixValue产生,然后就该送到PS2模块,再到KBC吗?
ikb --> ps2 --> KBC 都是通过一种什么样机制来的呢!

再说USB键盘,当键按下或松开.USB键盘如何将数据送到KBC,再由系统读取的呢? 这里我非常不清楚? 请高手解答!

想跟前辈们学习啊??

amty.wang 发表于 2008-7-10 18:48:04

关于IKB,我知道的是键盘直接接在EC的GPIO上,EC会定期做scan GPIO的动作,用于detect是否有键按下
不过T/P倒是接在PS/2的接口上,不知LZ那是怎么设计的:)

USB键盘不了解,感觉不走EC的,scancode直接丢去N/B了

smile__xu 发表于 2008-7-11 08:20:09

按照我的看法.ikb是挂在GPIO上,但是当有键按下的时候会有IKB 中断产生,然后才會有一系列的动作. 不应该是polling ,这样会浪费资源.

USB键盘应该是没有键盘控制器8042的,而对于NB来说.唯一的8042集成在EC中.所以.个人看法USB键盘也会走KBC.

有没有前辈再帮忙解释一下啊!! 好想知道!

zhangnengjun 发表于 2008-7-13 23:34:25

回复:做EC有段时间了! 有个问题想请教???

键盘至少可以通过3种以上方式接入notebook计算机系统:a,usb;b,ec Internal keyboard;c,ec ps2接口。如果做有supper io的还可以通过它上面的串口或并口接鼠标。usb键盘接南桥,属于usb低速设备类,不走ec。bios在post的时候会做键盘初始化,发FF命令到键盘控制器(ec)找键盘,如果找到键盘就会把键盘Enable起来,如果这个时候ec不响应这个命令,那么usb键盘也将不能使用(dos下),但是就算初始不过,在windows下还是可以使用usb键盘。这两个类键盘可以独立工作,但是状态却要保持一致,状态包括大小写,数字键盘,scock lock等,就像一个房间里控制同一个灯灯的两个开关。 接在ec上的Internal keyboard和ps2是ec的两个功能模块,他们也是独立工作,最后将收到的数据通过同一个端口送给南桥。

smile__xu 发表于 2008-7-14 08:11:49

谢谢:zhangnenegjun

那我的问题又来了,usb键盘产生的数据是如何送到OS的呢? (从matrixaddress 到 SET1); 这里的code转换是由谁来执行的?

amty.wang 发表于 2008-7-14 16:53:50

4# ......
强人出现:lol

xtdumpling 发表于 2008-7-14 17:13:36

USB键盘就不是EC管了,

5#的问题,建议发到BIOS谈论区,
谁仔细研究过UHCI,OHCI或者EHCI和键盘的,请帮忙解答:lol

smile__xu 发表于 2008-7-15 11:10:55

This method requires that SMM code be invoked based on the incoming USB data. The SMM code manages the
USB data queues, takes the received data, and writes it into the 8042 device using the "D2" (keyboard) or "D3"
(mouse) commands. This instructs the 8042 controller to process the incoming data as if it had come from the
standard PS/2 keyboard or mouse. Once the data is placed in its registers, the 8042 controller generates the
appropriate interrupt (IRQ1 for the keyboard or IRQ12 for the mouse). The data is then processed by the normal
interrupt handlers.

bini 发表于 2008-7-15 11:25:45

楼上的述说是正解,感谢!:victory:,其实这问题在spec里讲了。楼主做EC的想到了去usb spec中看,做EC做到这里,感觉楼主强悍喔:)

此问题在:Universal Host Controller Interface (UHCI) Design Guide,第5章 KEYBOARD AND MOUSE LEGACY SUPPORT 有讲到。

smile__xu 发表于 2008-7-16 08:26:14

没有办法,最近案子碰到个问题!
开机后在按键选择BootMenu时,键盘会死掉! 此时EC.BIOS都没有死.只是键盘死掉了!(用的是USB键盘).
兄弟们,帮小弟分析一下如何?

smile__xu 发表于 2008-7-16 16:26:00

补充一下,此时usb 键盘和internal keyboard 都死掉了:
另外:
IRQ1 = 0
OBF = 1
PS2口被disable. PS2Clock 为 LOW
PS2 Pending Flag = 1

[ 本帖最后由 smile__xu 于 2008-7-16 17:17 编辑 ]

smile__xu 发表于 2008-7-17 16:35:55

又发现BIOS 通过64port ,发送0x20给KBC,导致KBC将IRQ1 关闭.

mashimaro 发表于 2008-8-1 15:58:39

浏览这个坛子有一个礼拜了,发现真的蛮多强人的,要向各位好好学习!
就这个帖子问个弱弱的问题,:P
DOS底下把scan code set1转成对应的ASCII码这个事情是谁在做??
Keyboard Driver??还是BIOS???
USB keyboard在没有USB driver的DOS底下为什么可以用??

smile__xu 发表于 2008-8-4 08:53:38

1:BIOS int 9 将scancode + ASCII 放在BDA中.
2:此问题在:Universal Host Controller Interface (UHCI) Design Guide,第5章 KEYBOARD AND MOUSE LEGACY SUPPORT 有讲到。简易看看这篇文章http://www.microsoft.com/taiwan/whdc/archive/usbhost.mspx?pf=true#usbh1

garywang9 发表于 2009-1-11 15:44:25

ITE的编译器是汇编的还是c语言的?

最近找EC芯片,看ITE的IT8512和IT8513还不错,但不知道编译器是汇编的还是C语言的?
有没有人用过?

蓝色永恒 发表于 2009-1-11 18:16:43

回复 4# 的帖子

学习了,
不过有些不理解的是为什么要根据 USB DATA来调用SMM CODE呢?能不能具体分享一下当有按键到处理完该按键事件的整个过程步骤?
       是不是这样USB KB data 应该是先被南桥的USB interface 读取吧?然后出发SMI,根据读入的USB data 调用不同的SMM CODE,之后通过 “D2” COMMAND 模拟这些USB data是KBC产生的,然后产生标准的KBC中断IRQ1来告知HOST,相应的interrupt handlers 就回去处理该中断?
还有 8042 controller是位于哪里的啊?EC中的吗?,如果是的话,USB KB 还是通过了EC来处理了啊/?是这样的吗?
刚开始学做EC,请多指教,谢谢了!!

蓝色永恒 发表于 2009-1-11 22:12:32

回复 16# 的帖子

晚上抽空看了一下Universal Host Controller Interface (UHCI) Design Guide,第5章,发现确实是这样,USB Controller将keystroke or mouse movement. 产生的data 放在 main memory中,(而非USB KB或mouse产生的data是放在I/O LOCATION),然后产生SMI# ,然后依照4楼所述往下走,不知道我理解的对不对,请各位指教!!
不过还有点疑惑是:The USB controller must also be
able to generate an SMI# based on the data being stored to main memory,对这句话而言,难道不同的数据会产生不同的SMI# 吗(是不是不同的数据会引起调用不统的SMM code)?对SMI 概念还没理清~~呵呵,
请各位前辈指教~~~
多谢
页: [1]
查看完整版本: 做EC有段时间了! 有个问题想请教???