Linux driver
This presentation is the property of its rightful owner.
Sponsored Links
1 / 17

Linux Driver PowerPoint PPT Presentation


  • 142 Views
  • Uploaded on
  • Presentation posted in: General

Linux Driver. SD Card 期末報告. Team4 : 694415016 曹啟訓 490415046 許弘達. Architecture. PC. SD card. net. UART. Command line (SPI). MI0101. Program outline. Use Block device driver architecture The SPI messages consist of command 、 response and data-block tokens

Download Presentation

Linux Driver

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Linux driver

Linux Driver

SD Card 期末報告

Team4:

694415016 曹啟訓

490415046 許弘達


Architecture

Architecture

PC

SD card

net

UART

Command line

(SPI)

MI0101


Program outline

Program outline

  • Use Block device driver architecture

  • The SPI messages consist of command、response and data-block tokens

  • The Card-Specific Data (CSD) register provides information on how to access the card contents

  • Card detect uses GPIO interface to get the value from SD card pin, in order to judge whether SD card exist or not.

  • Write Protect uses GPIO interface to get the value from SD card pin, in order to judge whether SD card write protect exist or not.


Program flowchart

Program flowchart

module_init()

  • driver init

註冊major number、device name,以及記錄操作指令的資訊

sd_driver_init()

連結 request 與 queue

,並且初始化

request queue

Register_blkdev()

blk_init_queue()

sd_card_init( ) :

初始化 sd card

Sd_card_config( ) :

得到 sd card 特定資料

Set timer

確認sd card是否偵測到 ?

清除sd_driver_init( )的設定

yes

no

Sd_init()

check media()

Sd_exit()


Program flowchart cont

Program flowchart (cont.)

得到 sd card 和 buffer 的位址;再判斷 command來做

read和 write的動作。

request

Sd_request()

一次讀取 512 bytes 的資料

CMD READ

mmc_read_block

一次寫入 512 bytes 的資料

CMD WRITE

mmc_write_block

1:成功

0:失敗

end_request()


Program flowchart cont1

Program flowchart (cont.)

  • exit function

module_exit()

delete timer

sd_driver_exit()

指定 major number和device name

unregister_blkdev()

釋放 request queue

blk_cleanup_queue()

清除sd_driver_init( )的設定

sd_exit()


Linux driver

實驗步驟 1

  • 將SD驅動程式,sd.c、crc.h以及spi_reg.h放置於block資料夾中。

    # cp sd.c crc.h spi_reg.h /data/develop/uClinux/uClinux- dist.20020502/linux-2.4.x/drivers/block/

  • 註冊device name, major number, minor number

    # vi /data/develop/uClinux/uClinux-dist.20020502/vendors/

    Mcrolinks/ML-i0101/Makefile

    加上這一行mmca,b,121,0 mmca1,b,121,1 \

  • 定義三態,按鈕名稱,對應Makefile的名子

    # vi /data/develop/uClinux/uClinux-dist.20020502/linux-2.4.x/drivers/block/Config.in

    加入這一行 tristate 'SD/MMC card support' CONFIG_BLK_DEV_SD

  • 定義名子和對應的.o檔

    # vi /data/develop/uClinux/uClinux-dist.20020502/linux-2.4.x/drivers/block/Makefile

    加入這一行 obj-$ (CONFIG_BLK_DEV_SD)+= sd.o


Linux driver

實驗步驟 2

  • 選取kernel支援的模組

    [/uClinux-dist.20020502/]# make xconfig


Linux driver

實驗步驟 3

選取 Block devices -> SD/MMC Card Support,勾選”m”,將SD/MMC卡驅動程式編寫成模組(modules)的型態


Linux driver

實驗步驟 4

新增加的SD card 選項

選取module 的形式


Linux driver

實驗步驟 5

  • 完成基本設定,開始編譯image檔

    [/uClinux-dist.20020502/]# make dep ; make

  • 等待10到30分鐘左右,新的image檔將會產生在/data/devplop/uClinux/uClinux-dist.20020502/images

  • 執行minicom,連到I0101後,再載入新的 image 檔

  • I0101重新開機後,將模組化的SD/MMC driver,使用insmod指令安裝於作業系統上,輸入指令如下:

    /> insmod sd.o


Linux driver

實驗步驟 6

  • 將SD device掛載到系統card A點上,輸入指令如下:

    /> mount –t vfat /dev/mmca1 /card/A

  • 查看SD卡裡面的檔案:

    /># ls /card/A

    /># cp /usr/10.mp3 /card/A

    /># ls /card/A

  • 使用者若要移除SD/MMC driver可以在minicom終端機執行以下指令:

    /># umount /card/A

    /># rmmod sd


Linux driver

END

Thanks


  • Login