文章目錄 1 編譯驅動和設備程序 2 編譯應用測試程序 3 運行測試 1 編譯驅動和設備程序 和前面章節(jié)中驅動測試程序一樣需要一個Makefile文件,只是將obj-m的值改為led_device.o led_driver.o,Makefile文件內容如下:
首先我們在終端輸入兩個命令(設置兩個環(huán)境變量):
然后執(zhí)行“make”命令編譯模塊,編譯完成生成led_device.ko和led_driver.ko模塊文件。
2 編譯應用測試程序 輸入如下命令編譯應用測試程序: arm-linux-gnueabihf-gcc -o led_test led_test.c 編譯完成后,會生成led_test可執(zhí)行文件。
3 運行測試 啟動開發(fā)板,將編譯好的led_device.ko、led_driver.ko模塊文件和led_test應用測試程序拷貝到/lib/modules/4.1.15目錄下(檢查開發(fā)板根文件系統(tǒng)中有沒有“/lib/modules/4.1.15”這個目錄,如果沒有的話需要自行創(chuàng)建一下。開發(fā)板中使用的是光盤資料里面提供的busybox文件系統(tǒng),光盤資料的“i.MX6UL終結者光盤資料\08_開發(fā)板系統(tǒng)鏡像\03_文件系統(tǒng)鏡像\01_Busybox文件系統(tǒng)”目錄下)。輸入下面命令加載模塊:
驅動加載成功后,在根文件系統(tǒng)中/sys/bus/platform/目錄下保存著當前板子 platform 總線下的設備和驅動,其中devices 子目錄為 platform 設備,drivers 子目錄為 plartofm 驅動。查看/sys/bus/platform/devices/目錄,看看我們的設備是否存在,我們在 led_device.c 中設置 leddevice(platform_device 類型)的name 字段為“imx6ul-led”,也就是設備名字為 imx6ul-led,因此肯定在/sys/bus/platform/devices/目錄下存在一個名字“imx6ul-led”的文件,否則說明我們的設備模塊加載失敗,結果如圖 3.1所示:
同理,查看/sys/bus/platform/drivers/目錄,看一下驅動是否存在,我們在 led_driver.c 中設置led_driver (platform_driver 類型)的 name 字段為“imx6ul-led”,因此會在/sys/bus/platform/drivers/目錄下存在名為“imx6ul-led”這個文件,結果如圖 3.2所示:
驅動模塊和設備模塊加載成功以后 platform 總線就會進行匹配,當驅動和設備匹配成功以后就會輸出如圖 3.3所示信息:
設備和驅動匹配成功后,使用led_test應用程序來測試一下,命令如下:
通過這兩條命令來驗證一下LED的platform平臺下的驅動是否正確。
|