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