今天,我們就站在巨人的肩膀上,利用內(nèi)核開發(fā)者已經(jīng)寫好的驅(qū)動(dòng)來實(shí)現(xiàn)我們想要的功能。
應(yīng)用層控制
除了可以在shell中通過echo
、cat
的方式控制Led,我們也可以在寫一個(gè)應(yīng)用層程序來操作/sys/class/leds/
下的節(jié)點(diǎn),應(yīng)用層代碼:
#include < stdio.h >
#include < stdlib.h >
#include < unistd.h >
#include < errno.h >
#include < fcntl.h >
#include < string.h >
#include < sys/stat.h >
#include < sys/types.h >
#define LED_DEV_PATH "/sys/class/leds/led%d/brightness"
#define ON
#define OFF
int fs4412_set_led(unsigned int lednum, unsigned int mode)
{
int fd;
int ret;
char devpath[128];
char *on = "1n";
char *off = "0n";
char *m = NULL;
snprintf(devpath, sizeof(devpath), LED_DEV_PATH, lednum);
fd = open(devpath, O_WRONLY);
if (fd == -1) {
perror("fsled- >open");
return -1;
}
if (mode == ON)
m = on;
else
m = off;
ret = write(fd, m, strlen(m));
if (ret == -1) {
perror("fsled- >wrtie");
close(fd);
return -1;
}
close(fd);
return 0;
}
int main(int argc, char *argv[])
{
unsigned int lednum = 2;
while(1){
fs4412_set_led(lednum, on);
usleep(500000);
fs4412_set_led(lednum, OFF);
usleep(500000);
lednum++;
if (lednum > 5)
lednum = 2;
}
return 0;
}
上述應(yīng)用層代碼執(zhí)行后,led2會(huì)閃爍。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
led
+關(guān)注
關(guān)注
240文章
22999瀏覽量
654850 -
驅(qū)動(dòng)
+關(guān)注
關(guān)注
12文章
1813瀏覽量
85051 -
Linux
+關(guān)注
關(guān)注
87文章
11177瀏覽量
208497 -
應(yīng)用層
+關(guān)注
關(guān)注
0文章
46瀏覽量
11483
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
嵌入式Linux字符驅(qū)動(dòng)LED燈設(shè)計(jì)
要寫一個(gè)應(yīng)用層的測試程序,用來測試驅(qū)動(dòng)程序。我的測試程序?yàn)閙yled_test.c,要求在shell下能夠通過該測試程序來控制LED燈的亮滅。如:./myled_test on表示燈全
發(fā)表于 02-03 14:28
鴻蒙Hi3516 純手工打造從應(yīng)用層到驅(qū)動(dòng)層示例
在vendor\huawei\hdf\ 目錄,新建驅(qū)動(dòng)層LED目錄,vendor\huawei\hdf\LED ;新建LED.c文件
發(fā)表于 11-06 09:56
鴻蒙Hi3516dv 從應(yīng)用層驅(qū)動(dòng)GPIO 點(diǎn)亮LED燈
再從寄存器級(jí)別重新寫驅(qū)動(dòng),可以直接調(diào)用。2.在驅(qū)動(dòng)層文件 LED.c 中 添加gpio接口的頭文件;不能在
發(fā)表于 11-07 14:22
【HiSpark AI Camera】鴻蒙Hi3516 純手工打造從應(yīng)用層到驅(qū)動(dòng)層示例
vendor\huawei\hdf\ 目錄,新建驅(qū)動(dòng)層LED目錄,vendor\huawei\hdf\LED ;新建LED.c文件
發(fā)表于 11-07 15:41
學(xué)習(xí)嵌入式Linux應(yīng)用層的開發(fā)
1 應(yīng)用層與驅(qū)動(dòng)層要想學(xué)習(xí)嵌入式Linux應(yīng)用層的開發(fā),首先要區(qū)分好應(yīng)用層和
發(fā)表于 11-02 10:20
如何在嵌入式linux中應(yīng)用層操作gpio口
嵌入式linux文件io方式操作gpio口示例在嵌入式linux中應(yīng)用層操作gpio口,如果懶得寫驅(qū)動(dòng)或者懶得翻寄存器手冊(cè),有一種簡單的方式
發(fā)表于 12-16 06:19
Linux驅(qū)動(dòng)層的相關(guān)資料下載
// 再說明一下哈,你簡歷上寫了你會(huì)驅(qū)動(dòng)層,面試官才問,你不寫,一般不會(huì)問。1、UBOOT的作用2、驅(qū)動(dòng)包括哪幾種3、yaffs、jffs文件系統(tǒng)的不同4、應(yīng)用層與
發(fā)表于 12-24 07:25
【學(xué)習(xí)打卡】OpenHarmony的應(yīng)用層說明
應(yīng)用程序進(jìn)行通信。關(guān)于OSI(開放系統(tǒng)互連)網(wǎng)絡(luò)模型標(biāo)準(zhǔn),可以參考下圖,OSI 網(wǎng)絡(luò)模型層是從硬件開始的較低級(jí)別到較高級(jí)別進(jìn)行排列。需要注意的是應(yīng)用層不是應(yīng)用。相反,它其實(shí)是應(yīng)用程序中的一個(gè)組件,我們可以
發(fā)表于 07-14 08:44
Linux驅(qū)動(dòng)到底能不能在應(yīng)用層開發(fā)驅(qū)動(dòng)
的驅(qū)動(dòng)程序也要跟著重新編譯,太麻煩了。因此,我建議同事把驅(qū)動(dòng)寫到APP里面。同事大驚,Linux能在應(yīng)用層開發(fā)驅(qū)動(dòng)?
linux spi應(yīng)用層驅(qū)動(dòng)以及回環(huán)測試代碼
linux spi應(yīng)用層驅(qū)動(dòng)以及回環(huán)測試代碼
發(fā)表于 10-22 15:47
?2次下載
嵌入式Linux應(yīng)用層開發(fā)教程(一)基本概念
1 應(yīng)用層與驅(qū)動(dòng)層要想學(xué)習(xí)嵌入式Linux應(yīng)用層的開發(fā),首先要區(qū)分好應(yīng)用層和
發(fā)表于 11-01 17:59
?14次下載
嵌入式Linux驅(qū)動(dòng) GPIO操作 包括驅(qū)動(dòng)和應(yīng)用層程序?qū)?b class='flag-5'>驅(qū)動(dòng)進(jìn)行測試
文章目錄代碼驅(qū)動(dòng)層代碼應(yīng)用層代碼 測試驅(qū)動(dòng)Makefile這里記錄的是嵌入式linux驅(qū)動(dòng)對(duì)gp
發(fā)表于 11-02 14:36
?10次下載
Linux應(yīng)用層操作寄存器
應(yīng)用層操作寄存器 驅(qū)動(dòng)中操作寄存器,需要先進(jìn)行映射將物理地址轉(zhuǎn)為虛擬地址。 但如果想在應(yīng)用層中操作寄存器,也是可以實(shí)現(xiàn)的。
Linux應(yīng)用層操作寄存器
--- > [*] /dev/mem virtual device support Linux應(yīng)用層操作寄存器 除了直接使用devmem,我們也可以在Linux應(yīng)用層自己實(shí)現(xiàn)一個(gè)de
Linux應(yīng)用層控制外設(shè)的兩種不同的方式
眾所周知,linux下一切皆文件,那么應(yīng)用層如何控制硬件層,同樣是通過 文件I/O的方式來實(shí)現(xiàn)的,那么應(yīng)用層
評(píng)論