<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>

    Rss & SiteMap

    曙海教育集團論壇 http://www.bjzhda.cn

    曙海教育集團論壇
    共1 條記錄, 每頁顯示 10 條, 頁簽: [1]
    [瀏覽完整版]

    標題:嵌入式Linux下IC卡接口設計與驅動開發

    1樓
    wangxinxin 發表于:2010-11-24 9:38:29
    中斷處理函數中采用語句
    queue_task(&timer_task,&tq_immediate); <!--ecms.*-->
    mark_bh(IMMEDIATE_BH);
    實現了任務隊列timer_task加入內核tq_immediate的任務隊列處理。內核在合適的時間會自動調用timer_task的例行處理函數timer_do_taskletO進行中斷的后續處理。   
    在time r dO_ta sklet()處理函數中,有一條語句wake up interruptible(&icde v.writeq)與ic_poll函數中的D011_wait(flip,&icdev.writeq,wait)相對應。當中斷發生時,將等待時間隊列icdev.writeq激活;而poll_wait函數則針對此隊列進行監控
    。一旦被激活,則可以傳遞給用戶插卡操作信息,在用戶應用軟件中可立即調用讀函數進行讀卡操作。這樣就實現了對卡的實時操作監控。


         (5)模塊注銷函數的實現
    static void_exit
    remove_ic(void){ 
    m8xx_timer_stop(); 
    cpm_free_handler(CPMVEC_TIMERl); 
    unregister_chrdev(majorl,“IC”);
    }   
    這個函數也是模塊驅動開發中必不可少的函數之一,用于模塊卸載時進行資源的釋放,并注銷此模塊。如上函數所示,首先進行了中斷的停止、釋放中斷資源,同時進行了字符設備的注銷。
    (6)設備讀、寫、監控等子函數
    用來實現對卡的操作,主要是通過實現卡的各種操作時序。也即在ic_fop s結構體中定義的4個操作函數:icopen用于打開卡設備,進行一些數據的初始化操作;icread()用于插卡操作時讀取卡數據;icwrite()用于寫卡;icpoll()用于實現卡的實時監控。   
    綜上所述,卡驅動模塊的基本實現原理是:申請中斷資源,當有插卡操作發生時,引發中斷,進行讀卡操作。在拔卡操作時也能引發中斷,同時進行相應數據處理。同時提供poll()函數接口,用戶可采用此函數對設備進行監控,從而實現有卡操作發生時馬上進行卡數據的更新。
    注:驅動程序源碼見本刊網站WWW.dpj.tom.cn。5  驅動模塊開發的編譯調試    以開發平臺和編譯器為例編寫簡單的makefile文件為:
    CC=ppc 8xx_gcc
    DD=.nostdinc.DMODULE-D_KERNEL_I/mykeme Finclude.Wall-Wstrict-prototypes-Wno-trigraphs-02-fomit-frame-pointer-fno-strict-aliasing-fno-common-I/mykernel/arch/ppc-fsigned-char-resort-float-pipe-ffixed-r2-Wno-uninitialized-mmultiple-mstring-fno-builtin-I/Opt/hardhat/devkit/ppc/8xx/target/usr/lib/gcc-lib/powerpc-hardhat-linux/3.2.1/include ie.o:ic.C 
    $(CC)$(DD)-C ic.c
    install:   
    make ic.o
    clean:   
    rn*o   
    執行命令make install,便可以實現驅動模塊的動態編譯。      
    內核提供了兩個應用程序insmod和rmmod來實現內核模塊的動態加載和去除。在模塊編譯當前目錄下執行命令
    mknod/dev/charmodule c2540   
    建立與此設備模塊對應的設備文件節點。c表示為字符設備,254表示主設備號,0表示子設備號。
    執行命令insmod ic.o,可實現模塊動態加載;而命令rmmod ic可實現模塊的動態去除。
     
           6  驅動模塊的靜態編譯進內核
    ①將模塊驅動源文件拷貝進/drivers/char/目錄下;
    ②修改/drivers/char/Makefile文件,添加obj-$(CONFIG_MYMODULE)+=ic.o
    ③在/drivers/char/config.in文件中添加config CONFIG_MYMODULE
    bool “IC”CONFIG_MYMODULE
    ④進入編譯內核目錄,執行make menuconfig。
    在character devices 目錄下即可見到IC選項。選擇,然后執行編譯命令,即可編入內核或僅編譯模塊:
    make mrproper
    make menuconfig
    make CROSS_COMPILE=ppc_8xx-gcc
    make modules CROSS_COMPILE=ppc_8xx-gcc
    即可只編譯內核。在源文件目錄下可見到ic.o。
     
          7  總結
         用基本的字符設備實現IC卡設備的驅動模塊開發。內核驅動模塊的開發是與硬件直接接觸的。針對硬件的不同,其內部處理方法也千變萬化。對于內核模塊開發,最有效的學習途徑和最好的學習文檔就是Linux的內核源代碼。同時,加入一些Linux的郵件開發組也將獲益匪淺。
     


    嵌入式Linux下IC卡接口設計與驅動開發
    共1 條記錄, 每頁顯示 10 條, 頁簽: [1]

    Copyright © 2000 - 2009 曙海教育集團
    Powered By 曙海教育集團 Version 2.2
    Processed in .01563 s, 2 queries.
    主站蜘蛛池模板: 一区二区三区欧美日韩国产| 一区二区三区福利| 国产小视频福利| 女老丝袜脚摩擦阳茎视频| 旧番拯救精灵森林第四集| 真实子伦视频不卡| 国内自拍视频一区二区三区| 老牛精品亚洲成av人片| 国产成人精品自线拍| 欧美成人免费网站| 久久se精品动漫一区二区三区| 免费a级毛视频| 免费黄在线观看| 厨房掀起馊子裙子挺进去视频| 又硬又粗又大一区二区三区视频| 无码不卡中文字幕av| 蜜柚最新在线观看| 久久综合亚洲鲁鲁五月天| 国产精品日本一区二区在线播放| 天美麻花视频大全| 8050午夜二级毛片全黄app| 亚洲老妈激情一区二区三区 | 亚洲视频欧美视频| 啊老师太深了好大| 国产午夜无码片在线观看| 国产午夜一区二区在线观看| 国产特级毛片aaaaaa| 在线观看免费大黄网站| 永久免费毛片手机版在线看| 三个黑人上我一个经过| 一区二区三区欧美日韩| aaa毛片免费观看| 两性高清性色生活片性高清←片 | 国产亚洲欧美日韩亚洲中文色| 国产极品美女视频| 无码精品日韩中文字幕| 奇米四色77777| 国产香蕉97碰碰视频VA碰碰看| 国产无遮挡裸体免费视频| 国产凌凌漆国语| 国产乱码在线观看|