【正文】
define LED_OFF 1int main() { int fd,i,j。 int led_status = 0。 //初始狀態(tài)為熄滅 fd = open(/dev/led, O_RDWR)。 //打開設(shè)備 if (fd 0) { //如果打開設(shè)備失敗,退出 perror(open device led failed !)。 exit(1)。 } printf(led test show. press ctrl+c to exit \n)。 ioctl(fd,LED_OFF)。 while(1){//主循環(huán) read (fd,amp。led_status,1)。 //讀取 LED1 的當(dāng)前狀態(tài)到 led_status if(led_status ==0) //如果是滅的 ioctl(fd,LED_ON)。 //點(diǎn)亮 else if(led_status ==1) //如果是亮的 ioctl(fd,LED_OFF)。 //熄滅 printf(led: on and off\n)。 for(i=0。i300。i++) for(j=0。j10000。j++)。 } close(fd)。 //關(guān)閉設(shè)備 return 0。 } 該測試程序?qū)崿F(xiàn)了控制 SuperARM實(shí)驗(yàn)箱上的 D1 一亮一滅的功能。 ⑹ 編譯測試程序 執(zhí)行下面的命令: gcc o led_test 該命令的意思是使用的交叉編譯器 armlinuxgcc 對驅(qū)動(dòng)程序 進(jìn)行編譯,編譯成功后在 test 目錄下會(huì)生成目標(biāo)機(jī)的可執(zhí)行文件led_test,然后把led_test拷貝到nfs共享目錄(根據(jù)自己實(shí)際設(shè)置情況)。 ⑺ 運(yùn)行測試程序 在目標(biāo)機(jī)的控制臺(tái)中輸入: cd /mnt/nfs./ led_test 可以看到控制臺(tái)會(huì)打印出一行信息: “l(fā)ed test show. press ctrl+c to exit ” 。按“ctrl+c”可以退出測試程序。 測試程序運(yùn)行時(shí),目標(biāo)機(jī)的led燈 D1 一亮一滅,同時(shí),在控制臺(tái)輸出的信息如下: / insmod /mnt/nfs/ led initialized / ./mnt/nfs/led_test led test show. press ctrl+c to exit led: on and off led: on and off led: on and off led: on and off ⑻ 卸載模塊 rmmod 卸載了模塊以后,測試程序便不能正常運(yùn)行了,如果運(yùn)行會(huì)輸出如下信息:“open device led: No such device or address”