RSS

USB安全钥功能扩展与优化设计

来源:网络 作者:匿名 时间:2007-01-05 Tag: 点击:

第2步,在PC上实现修改KeyID功能。调用HID类库Set_Report(Feature),将新的KeyID发送到安全钥中,具体指标如表2所示。

表2 调用HID类库发送KeyID到SK

bmRequestType bRequest wValueL wValueH wIndex wLength Data
00100001B($21) Set_Report($09) Zero Feature($03) Zero 8 KeyID

2.3 如何设计安全钥端新功能的USB固件

USB固件(Firmware),就是USB安全钥硬件上采用的单片机和其他处理器中有关USB通信的程序。这里采用Motorola公司的8位单片机MC68HC908JB8作为USB安全钥的控制器芯片。MC68HC908JB8带有USB接口,8K的Flash,支持USB 1.1版本中的低速(Low Speed)设备,资源有限,主要用于实现USB通信,价格比较低廉。因此,很适合于USB安全钥。MC68HC908JB8中USB通信的程序模块,包含在实现MC68HC908JB8所有功能的汇编程序中。

图2是经典的USB固件的流程图。考虑到USB安全钥中USB数据通信量很小,不需要考虑通信时间,采用中断传输方式。整个程序就是在等待数据传输要求的中断到来,从而进入数据传输模块。读/写数据缓冲区,往USB端点(Endpoint)中读/写数据,交给USB模块收发数据。当USB安全钥不需要传输数据时,就进入挂起状态(Suspend)。在得到PC主机远程唤醒后启动,继续工作。

新增功能中,主要完成的两个功能就是KeyID的读取和修改,即实现Get_KeyID和Set_KeyID功能。程序构思大致是:对于Get_KeyID,在接收到PC端发来的读取KeyID的中断后,立即从端点1发送8字节的KeyID,这一段没有什么特别之处;对于Set_KeyID,在接收到信号后,立即转入Set_KeyID子程序。首先将存储KeyID的Flash去保护,然后寄存器置位,即在硬件上给Flash一个高电平,接着进行擦除,再将保存于缓冲区的PC发来的新KeyID存储到Flash中。最后,置Flash状态寄存器位,给Flash加保护。

2.4 PC端新增功能的USB驱动程序设计

Windows 98的驱动程序从结构上来说分为两层:内核层和用户层。USB的客户驱动程序属于用户层,而USB类驱动程序和底层驱动程序则属于内核层。目前,USB还属于起步阶段,Windows对USB的支持还不够完善,仅支持内核层。USB开发人员所要做的,就是开发客户驱动程序,直接与类驱动程序打交道。

HID属于USB设备类中的一个子类,Windows对它提供了非常强大的支持,尤其是在用户层提供了Hid.dll,其中包含了用户层驱动程序与类驱动程序通信需要的各种功能模块,将它们以API的形式提供给用户函数接口。这样,在编写客户驱动程序的时候就可以直接调用这些API函数来完成诸如IN、OUT等功能,大大降低了编写驱程序的难度。

HID客户驱动程序访问HID类驱动程序,由HID类驱动程序完成大多数工作,而硬件交互由HID小驱动程序HidUsb.sys处理,HID小驱动程序调用USB底层驱动程序USBD.sys访问设备。

这里介绍用户模式的HID客户驱动程序设计过程。它主要包括三个方面的工作:

?查找所有HID设备;

?对于查找到的每一个HID设备,检查其功能,判断是否为感兴趣的设备;

?根据用户需要读取HID输入Report(Feature)或者写HID输出Report(Feature)。

程序流程如下:

(1)查找USB安全钥设备;

(2)读取HID设备功能;

(3)具体实现Get_KeyID和Set_KeyID子函数;

BOOL CusbKey::GetKeyID() //Get_KeyID子程序{…

result=HidD_GetFeature(HidDevice,ReadBuffer,0x09);

//调用此函数,获取从端点1发来的8字节KeyID的16进制检查代码

for(i=0;i<8;i++)

WriteBuffer[i+1]=DataBuffer[2*i]+DataBuffer[2*i+1];

result=HidD_SetFeature(HidDevice,WriteBuffer,0x09);

return TRUE;

}

(4)程序运行结果。

编译连接之后,最终会生成可执行文件KEYDEMO.exe。执行它即可SK通信,实现各种功能。


1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.


最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
教程下载