之前了解了最簡單的驅動程序、但是不易擴展、現在繼續學習、上下分層、左右分離的驅動設計思想。
1、led_dev.c函數
上層函數,①定義一個結構體,存儲函數用來接應app的函數。②定義一個入口函數,將我們接應的函數告訴內核,給這個結構體(包含很多接應函數的)一個位置。③定義一個出口函數,當注銷時候從內核出來。
2、led_opr.h
定義n個結構體,存放對應給個模塊想操作的函數,如:
①按鍵結構體存放:初始化某個按鍵、按鍵掃描等等函數。
②LED結構體存放:初始化某個LED、控制某個KEY等等函數。
3、board_A_led.c
主要作用是為其提供引腳,不涉及硬件操作,例如想點亮某個燈,就把這個板子上燈的引腳給傳出去。
①定義一個platform_device結構體, 里面有資源、資源數量,名字等等,且資源用一個結構體數組表示。②實現出口、入口函數、platform_device_register()等等函數。
4、chip_demo_gpio.c
①主要是先定好一個是將platform_device xxx,結構體內有名字、remove函數、prove函數。②opr結構體定義的函數實現,通過一個結構體接收。
5、led_resource.h
定義選擇引腳的函數,使我們能方便選擇某個引腳