led點燈程序
下面使用一段簡單代碼來演示如何控制LED,并且讓大家了解應用編寫時常用的文件I/O模型:
程序步驟如下:
(一)LED1_BRIGHTNESS、 LED2_BRIGHTNESS兩個宏分別對應LED1、LED2兩個燈的亮度屬性;
(二)使用open分別打開兩個亮度屬性文件,如果錯誤返回報錯;
(三)間隔0.5秒,打開和關閉兩個LED燈;
(四)退出時使用close關閉屬性文件;
編譯源碼
此時就有個問題,我們好不容易寫好的第一個程序怎么放到開發(fā)板執(zhí)行呢?直接把led.c拷貝到開發(fā)板上好像不行,因為led.c是C語言,而開發(fā)板只認識二進制程序。如果使用之前ubuntu中介紹過的gcc編譯工具,用gcc編譯完放到開發(fā)板上會發(fā)現無法執(zhí)行,會提示格式錯誤。
這是因為虛擬機是在電腦上,屬于x86架構,而開發(fā)板是arm架構,不同架構主機上分別編譯運行的話就需要用到交叉編譯鏈。
在虛擬機設置交叉編譯鏈的環(huán)境變量,查看環(huán)境變量$CC:
這個$CC變量就是交叉編譯器arm-poky-linux-gnueabi-gcc + 配置參數。
首先創(chuàng)建led.c文件,將上面代碼添加到led.c文件,保存退出并編譯:
ELF?1板卡驗證
將生成的可執(zhí)行程序led拷貝到開發(fā)板:
在開發(fā)板執(zhí)行程序:
觀察現象,可以看到紅綠燈同時循環(huán)閃爍。