讀書筆記(七)

LED燈的閃爍,控制發光二極管:數組

    在上章咱們已經瞭解了開發 Linux 驅動程序的步驟,並給了個示例來演示如何開發一個完 整的 Linux 驅動。但這個 Linux 驅動只簡單演示了實現 Linux 驅動的步驟。而對於大多數 Linux 動來講,須要直接與硬件交互。在本章會完成個真正意義上的 inux 驅動。該 Linux 驅動用來控 制開發版上的 LED 小燈。也就是說經過向 Linux 驅動發送數據能夠控制 LED 小燈的開關。函數

    LED驅動的實現原理:儘管 Linux 驅動直接與硬件打交道,但並非 Linux 驅動直接向硬件中的內存寫數據 而是與 本機的 ν0 內存(νO Memory ,位於內核空間〉進行交互。所謂 1/0 內存是經過各類接口(PCI 、 USB 、藍牙、以太網口等〉鏈接到主機( PC 、手機〉的硬件〈網卡、聲卡、攝像頭等〉在主機內 存中的映射。例如,在 Ubuntu Linux 運行的驅動只須要訪問運行 Ubuntu Linux 的主機中的 νo 內存便可,而後 Linux 內核會利用 1/0 內存中的數據硬件交互。每個鏈接 Linux 的硬件在 ν0 內存中都會有映射首地址。在使用 ioread32 io ead32 等函數讀寫 I/0 內存時須要指定這些首地址。 開發板上的 LED 也有其 映射首地址。blog

   編寫LED驅動:驅動與上章給出的 word count 驅動的實現步驟相似。只是某些功能使用了不一樣的實現方法例如,LED 驅動並朱使用 misc_register 創建設備文件,而是使用了更靈活的方式建立了設備文件。 驅動還提供了兩種交互方式 命令和讀寫設備文件。建立LED驅動的設備文件,:使用cedv_init 函數初始化cedv;指定設備號;使用cdev_add 函數將字符設備添加到內核中的字符設備數組中;使用clascreat 宏建立 struct class;使用 devce_creat 函數建立設備文件;接口

  卸載 LED 驅動的設備文件:卸載 Linux 驅動的設備文件稍微簡單些,須要依次調用 device destroy 、 class destroy 和 unreg ister_chrdev region 方法。內存

  http://home.cnblogs.com/u/lkm-6398/開發

相關文章
相關標籤/搜索