结构PCMCIA_CHIP中的各个元素 函数库pcmciaLib - longkai/lab.newgxu.cn GitHub Wiki
socket控制芯片的中断初始化和中断实时处理功能,都是基于通用接口PCMCIA_CTRL结构来实现的。
在使用pcmciLib之前必须调用pcmciaInit()函数进行初始化,而且pcmciaInit()函数只能调用一次,这一次调用通常是在usrConfig.c文件的usrRoot()函数中完成的。
- STATUS pcmciaInit (void)
该函数安装了事件处理接口并且运行了pcmciad()进程,pcmciad()进程是用类专门处理那些需要在任务级(相对于中断级)进程中执行的函数。而且他还创建了相应的消息队列并以此和pcmciad()进行通信。
pcmciaInit()主要完成了如下工作:
l 创建消息队列
l Spawn pcmciad()函数,该函数是一个无限循环,它不停地检查消息队列,如果有新的消息出现,则执行消息中的函数。
l 为计算机系统的socket芯片安装驱动。它采用用不同的驱动(存放在数组pcmciaAdapter[]中,这个数组在文件pccarkLib.c中定义)来尝试,如果尝试成功,同时也就安装好了socket芯片驱动函数。
l 连接CSC (Card Status Change)中断处理handler。
l 搜索所有socket,如果发现了PC 卡,则获取卡的 CIS (Card Information Structure)信息,决定卡的类型。如果该卡能够被支持需要分配相应的资源,并enable该卡。
l enable CSC中断。
结构PCMCIA_ADAPTER的定义
typedef struct pcmciaAdapter
{
int type; /* PCMCIA适配器的芯片类型如intel的82365L等 */
int ioBase; /* IO 基地址 */
int intVec; /* CSC 中断向量 */
int intLevel; /* CSC 中断 level */
FUNCPTR initRtn; /* 初始化函数 */
FUNCPTR showRtn; /* show函数 */
} PCMCIA_ADAPTER;
该结构的作用是识别系统中PCMCIA的控制芯片,如果能够正确识别则返回OK。